0.3.0 • Published 5 months ago

@bufbuild/protovalidate v0.3.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
5 months ago

@bufbuild/protovalidate

Protovalidate provides standard annotations to validate common rules on messages and fields, as well as the ability to use CEL to write custom rules. It's the next generation of protoc-gen-validate, the only widely used validation library for Protobuf.

With Protovalidate, you can annotate your Protobuf messages with both standard and custom validation rules:

syntax = "proto3";

package banking.v1;

import "buf/validate/validate.proto";

message MoneyTransfer {
  string to_account_id = 1 [
    // Standard rule: `to_account_id` must be a UUID.
    (buf.validate.field).string.uuid = true
  ];

  string from_account_id = 2 [
    // Standard rule: `from_account_id` must be a UUID.
    (buf.validate.field).string.uuid = true
  ];

  // Custom rule: `to_account_id` and `from_account_id` can't be the same.
  option (buf.validate.message).cel = {
    id: "to_account_id.not.from_account_id"
    message: "to_account_id and from_account_id should not be the same value"
    expression: "this.to_account_id != this.from_account_id"
  };
}

Once you've added @bufbuild/protovalidate to your project, validation is simple:

import { create } from "@bufbuild/protobuf";
import { createValidator } from "@bufbuild/protovalidate";
import { MoneyTransferSchema } from "./gen/banking_pb";

const transfer = create(MoneyTransferSchema);

const validator = createValidator();
const result = validator.validate(MoneyTransferSchema, transfer);
if (result.kind !== "valid") {
  // Handle failure.
}

!NOTE

This version is compatible with buf.build/bufbuild/protovalidate v0.13.0

It requires the Protobuf runtime @bufbuild/protobuf.

0.3.0

5 months ago

1.0.0-rc.2

5 months ago

1.0.0-rc.1

5 months ago

0.2.1

5 months ago

0.2.0

5 months ago

0.1.1

6 months ago

0.1.0

6 months ago