Releases: bufbuild/protovalidate-cc
v0.4.0
Breaking Change: The buf::validate::Validator::Validate
method no longer returns a StatusOr
containing a buf::validate::Violations
message, but a StatusOr
containing an instance of the new buf::validate::ValidationResult
class. In most cases, using the proto()
method of the violation is all that needs to be done:
auto result = validator.Validate(message).value();
for (int i = 0; i < result.violations_size(); i++) {
- puts(result.violation(i).GetMessage().c_str())
+ puts(result.violation(i).proto().GetMessage().c_str())
}
buf::validate::ValidationResult
itself also has a proto()
method that returns the protobuf buf::validate::Violations
message equivalent.
The new buf::validate::ConstraintViolation
class provides additional in-memory information about the violation which cannot be serialized to the wire:
field_value()
: Returns anabsl::optional
containing abuf::validate::ProtoField
pointing to the value of the field failing validation, if there is a field corresponding to the violation.rule_value()
: Returns anabsl::optional
containing abuf::validate::ProtoField
pointing to the value of the rule failing validation, if there is a rule corresponding to the violation.
Take, for example, the following protobuf message schema:
message User {
string email = 1 [(buf.validate.field).string.email = true];
}
If you try to validate the message User
with email
set to "invalid"
, the violation's field_value()->variant()
will contain "invalid"
and the rule_value()->variant()
will contain true
.
Some violations do not correspond directly to a field, such as a message constraint failure; in these cases, the field_value()
will return absl::nullopt
.
What's Changed
- Implement structured field and rule paths for violations by @jchadwick-buf in #63
- Add field and rule value to violations by @jchadwick-buf in #64
Full Changelog: v0.3.0...v0.4.0
v0.3.0
Adds support for custom predefined field constraints. See the protovalidate documentation for more information.
Updates protovalidate to v0.8.1. Note that this is a breaking change. You may need to make some adjustments to your code:
- Code that includes the headers
buf/validate/expression.pb.h
orbuf/validate/priv/private.pb.h
now only needs to includebuf/validate/validate.pb.h
. buf::validate::priv::field
was moved tobuf::validate::predefined
and is no longer considered an internal implementation detail.
Note
This release requires Protobuf v27+. Depending on your WORKSPACE
configuration, you may not have a new enough Protobuf version to support Protobuf Editions. For correct functionality, ensure that you set up a repository rule to import a newer version of Protobuf, as well as setting the --proto_compiler
and --proto_toolchain_for_*
Bazel build flags as necessary (see here for an example.)
What's Changed
- Implement predefined field constraints by @jchadwick-buf in #61
Full Changelog: v0.2.0...v0.3.0
v0.2.0
Adds support for the string.host_and_port
CEL utility function and Protobuf Editions, and bumps the versions of various dependencies.
Note
This release requires Protobuf v27+. Depending on your WORKSPACE
configuration, you may not have a new enough Protobuf version to support Protobuf Editions. For correct functionality, ensure that you set up a repository rule to import a newer version of Protobuf, as well as setting the --proto_compiler
and --proto_toolchain_for_*
Bazel build flags as necessary (see here for an example.)
What's Changed
- Bump actions/setup-go from 4 to 5 by @dependabot in #47
- Add string.host_and_port support by @rodaine in #52
- Create add-to-project workflow by @chrispine in #53
- Makefile: fix bazel -> $(BAZEL) for some targets by @jchadwick-buf in #56
- Add macOS testing to CI by @jchadwick-buf in #57
- Protobuf Editions support by @jchadwick-buf in #58
- Bump morrisoncole/pr-lint-action from 1.7.0 to 1.7.1 by @dependabot in #55
- Bump actions/cache from 3 to 4 by @dependabot in #51
New Contributors
- @chrispine made their first contribution in #53
Full Changelog: v0.1.0...v0.2.0
v0.1.0
What's Changed
- Update protovalidate dep by @Alfus in #31
- Only compute field paths for violations by @Alfus in #32
- Update readme with protovalidate-python by @marekbuild in #34
- Update to 0.2.2 by @Alfus in #36
- Support 'for_key' by @Alfus in #37
- Update readme with protovalidate-java link by @marekbuild in #38
- Upgrade protovalidate dependencies by @elliotmjackson in #39
- Add isInf and isNan by @Alfus in #40
- Update to v0.4.2 by @Alfus in #42
- Bump actions/checkout from 3 to 4 by @dependabot in #44
- Add isIpPrefix by @paina in #45
- Update required/ignore_empty behavior to match spec by @rodaine in #46
- Add .bazelversion to pin Bazel version by @jchadwick-buf in #48
New Contributors
- @marekbuild made their first contribution in #34
- @dependabot made their first contribution in #44
- @paina made their first contribution in #45
- @rodaine made their first contribution in #46
- @jchadwick-buf made their first contribution in #48
Full Changelog: https://github.com/bufbuild/protovalidate-cc/commits/v0.1.0