Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Well known type wrappers #99

Merged
merged 7 commits into from
Oct 2, 2023
Merged

Well known type wrappers #99

merged 7 commits into from
Oct 2, 2023

Conversation

vmg
Copy link
Member

@vmg vmg commented Sep 27, 2023

@biosvs pointed out this comment and I quite like the approach. I've implemented it and it took very few changes to the generator code to make it work for all Well-known types.

The generated code is a bit noisy because of the type casting but very efficient in practice. Unless somebody points a glaring issue in this PR, this is how we'll add support for fast (de)serialization of WKTs.

biosvs and others added 7 commits September 7, 2023 16:21
Signed-off-by: Vitalii Levitskii <vitalii@uber.com>
Signed-off-by: Vicent Marti <vmg@strn.cat>
Signed-off-by: Vicent Marti <vmg@strn.cat>
Signed-off-by: Vicent Marti <vmg@strn.cat>
Signed-off-by: Vicent Marti <vmg@strn.cat>
Signed-off-by: Vicent Marti <vmg@strn.cat>
Signed-off-by: Vicent Marti <vmg@strn.cat>
@vmg
Copy link
Member Author

vmg commented Sep 27, 2023

  • Example of a generated type wrapper: https://github.com/planetscale/vtprotobuf/blob/f080268430b80a37547d21886c3a5aecfcf15dcb/types/known/anypb/any_vtproto.pb.go

  • Example of integrating a WKT in an existing struct:

    • Equals:
      func (this *MessageWithWKT) EqualVT(that *MessageWithWKT) bool {
      if this == that {
      return true
      } else if this == nil || that == nil {
      return false
      }
      if !(*anypb1.Any)(this.Any).EqualVT((*anypb1.Any)(that.Any)) {
      return false
      }
      if !(*durationpb1.Duration)(this.Duration).EqualVT((*durationpb1.Duration)(that.Duration)) {
      return false
      }
      if !(*emptypb1.Empty)(this.Empty).EqualVT((*emptypb1.Empty)(that.Empty)) {
      return false
      }
      if !(*fieldmaskpb1.FieldMask)(this.FieldMask).EqualVT((*fieldmaskpb1.FieldMask)(that.FieldMask)) {
      return false
      }
      if !(*timestamppb1.Timestamp)(this.Timestamp).EqualVT((*timestamppb1.Timestamp)(that.Timestamp)) {
      return false
      }
      if !(*wrapperspb1.DoubleValue)(this.DoubleValue).EqualVT((*wrapperspb1.DoubleValue)(that.DoubleValue)) {
      return false
      }
      if !(*wrapperspb1.FloatValue)(this.FloatValue).EqualVT((*wrapperspb1.FloatValue)(that.FloatValue)) {
      return false
      }
      if !(*wrapperspb1.Int64Value)(this.Int64Value).EqualVT((*wrapperspb1.Int64Value)(that.Int64Value)) {
      return false
      }
      if !(*wrapperspb1.UInt64Value)(this.Uint64Value).EqualVT((*wrapperspb1.UInt64Value)(that.Uint64Value)) {
      return false
      }
      if !(*wrapperspb1.Int32Value)(this.Int32Value).EqualVT((*wrapperspb1.Int32Value)(that.Int32Value)) {
      return false
      }
      if !(*wrapperspb1.UInt32Value)(this.Uint32Value).EqualVT((*wrapperspb1.UInt32Value)(that.Uint32Value)) {
      return false
      }
      if !(*wrapperspb1.BoolValue)(this.BoolValue).EqualVT((*wrapperspb1.BoolValue)(that.BoolValue)) {
      return false
      }
      if !(*wrapperspb1.StringValue)(this.StringValue).EqualVT((*wrapperspb1.StringValue)(that.StringValue)) {
      return false
      }
      if !(*wrapperspb1.BytesValue)(this.BytesValue).EqualVT((*wrapperspb1.BytesValue)(that.BytesValue)) {
      return false
      }
      return string(this.unknownFields) == string(that.unknownFields)
    • Marshal:
      func (m *MessageWithWKT) MarshalToSizedBufferVT(dAtA []byte) (int, error) {
      if m == nil {
      return 0, nil
      }
      i := len(dAtA)
      _ = i
      var l int
      _ = l
      if m.unknownFields != nil {
      i -= len(m.unknownFields)
      copy(dAtA[i:], m.unknownFields)
      }
      if m.BytesValue != nil {
      size, err := (*wrapperspb1.BytesValue)(m.BytesValue).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x72
      }
      if m.StringValue != nil {
      size, err := (*wrapperspb1.StringValue)(m.StringValue).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x6a
      }
      if m.BoolValue != nil {
      size, err := (*wrapperspb1.BoolValue)(m.BoolValue).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x62
      }
      if m.Uint32Value != nil {
      size, err := (*wrapperspb1.UInt32Value)(m.Uint32Value).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x5a
      }
      if m.Int32Value != nil {
      size, err := (*wrapperspb1.Int32Value)(m.Int32Value).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x52
      }
      if m.Uint64Value != nil {
      size, err := (*wrapperspb1.UInt64Value)(m.Uint64Value).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x4a
      }
      if m.Int64Value != nil {
      size, err := (*wrapperspb1.Int64Value)(m.Int64Value).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x42
      }
      if m.FloatValue != nil {
      size, err := (*wrapperspb1.FloatValue)(m.FloatValue).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x3a
      }
      if m.DoubleValue != nil {
      size, err := (*wrapperspb1.DoubleValue)(m.DoubleValue).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x32
      }
      if m.Timestamp != nil {
      size, err := (*timestamppb1.Timestamp)(m.Timestamp).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x2a
      }
      if m.FieldMask != nil {
      size, err := (*fieldmaskpb1.FieldMask)(m.FieldMask).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x22
      }
      if m.Empty != nil {
      size, err := (*emptypb1.Empty)(m.Empty).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x1a
      }
      if m.Duration != nil {
      size, err := (*durationpb1.Duration)(m.Duration).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0x12
      }
      if m.Any != nil {
      size, err := (*anypb1.Any)(m.Any).MarshalToSizedBufferVT(dAtA[:i])
      if err != nil {
      return 0, err
      }
      i -= size
      i = encodeVarint(dAtA, i, uint64(size))
      i--
      dAtA[i] = 0xa
      }
      return len(dAtA) - i, nil
      }
    • Size:
      func (m *MessageWithWKT) SizeVT() (n int) {
      if m == nil {
      return 0
      }
      var l int
      _ = l
      if m.Any != nil {
      l = (*anypb1.Any)(m.Any).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.Duration != nil {
      l = (*durationpb1.Duration)(m.Duration).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.Empty != nil {
      l = (*emptypb1.Empty)(m.Empty).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.FieldMask != nil {
      l = (*fieldmaskpb1.FieldMask)(m.FieldMask).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.Timestamp != nil {
      l = (*timestamppb1.Timestamp)(m.Timestamp).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.DoubleValue != nil {
      l = (*wrapperspb1.DoubleValue)(m.DoubleValue).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.FloatValue != nil {
      l = (*wrapperspb1.FloatValue)(m.FloatValue).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.Int64Value != nil {
      l = (*wrapperspb1.Int64Value)(m.Int64Value).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.Uint64Value != nil {
      l = (*wrapperspb1.UInt64Value)(m.Uint64Value).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.Int32Value != nil {
      l = (*wrapperspb1.Int32Value)(m.Int32Value).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.Uint32Value != nil {
      l = (*wrapperspb1.UInt32Value)(m.Uint32Value).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.BoolValue != nil {
      l = (*wrapperspb1.BoolValue)(m.BoolValue).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.StringValue != nil {
      l = (*wrapperspb1.StringValue)(m.StringValue).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      if m.BytesValue != nil {
      l = (*wrapperspb1.BytesValue)(m.BytesValue).SizeVT()
      n += 1 + l + sov(uint64(l))
      }
      n += len(m.unknownFields)
      return n
      }
    • Unmarshal:
      func (m *MessageWithWKT) UnmarshalVT(dAtA []byte) error {
      l := len(dAtA)
      iNdEx := 0
      for iNdEx < l {
      preIndex := iNdEx
      var wire uint64
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      wire |= uint64(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      fieldNum := int32(wire >> 3)
      wireType := int(wire & 0x7)
      if wireType == 4 {
      return fmt.Errorf("proto: MessageWithWKT: wiretype end group for non-group")
      }
      if fieldNum <= 0 {
      return fmt.Errorf("proto: MessageWithWKT: illegal tag %d (wire type %d)", fieldNum, wire)
      }
      switch fieldNum {
      case 1:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field Any", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.Any == nil {
      m.Any = &anypb.Any{}
      }
      if err := (*anypb1.Any)(m.Any).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 2:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field Duration", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.Duration == nil {
      m.Duration = &durationpb.Duration{}
      }
      if err := (*durationpb1.Duration)(m.Duration).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 3:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field Empty", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.Empty == nil {
      m.Empty = &emptypb.Empty{}
      }
      if err := (*emptypb1.Empty)(m.Empty).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 4:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field FieldMask", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.FieldMask == nil {
      m.FieldMask = &fieldmaskpb.FieldMask{}
      }
      if err := (*fieldmaskpb1.FieldMask)(m.FieldMask).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 5:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.Timestamp == nil {
      m.Timestamp = &timestamppb.Timestamp{}
      }
      if err := (*timestamppb1.Timestamp)(m.Timestamp).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 6:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field DoubleValue", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.DoubleValue == nil {
      m.DoubleValue = &wrapperspb.DoubleValue{}
      }
      if err := (*wrapperspb1.DoubleValue)(m.DoubleValue).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 7:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field FloatValue", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.FloatValue == nil {
      m.FloatValue = &wrapperspb.FloatValue{}
      }
      if err := (*wrapperspb1.FloatValue)(m.FloatValue).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 8:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field Int64Value", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.Int64Value == nil {
      m.Int64Value = &wrapperspb.Int64Value{}
      }
      if err := (*wrapperspb1.Int64Value)(m.Int64Value).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 9:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field Uint64Value", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.Uint64Value == nil {
      m.Uint64Value = &wrapperspb.UInt64Value{}
      }
      if err := (*wrapperspb1.UInt64Value)(m.Uint64Value).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 10:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field Int32Value", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.Int32Value == nil {
      m.Int32Value = &wrapperspb.Int32Value{}
      }
      if err := (*wrapperspb1.Int32Value)(m.Int32Value).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 11:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field Uint32Value", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.Uint32Value == nil {
      m.Uint32Value = &wrapperspb.UInt32Value{}
      }
      if err := (*wrapperspb1.UInt32Value)(m.Uint32Value).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 12:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field BoolValue", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.BoolValue == nil {
      m.BoolValue = &wrapperspb.BoolValue{}
      }
      if err := (*wrapperspb1.BoolValue)(m.BoolValue).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 13:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field StringValue", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.StringValue == nil {
      m.StringValue = &wrapperspb.StringValue{}
      }
      if err := (*wrapperspb1.StringValue)(m.StringValue).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      case 14:
      if wireType != 2 {
      return fmt.Errorf("proto: wrong wireType = %d for field BytesValue", wireType)
      }
      var msglen int
      for shift := uint(0); ; shift += 7 {
      if shift >= 64 {
      return ErrIntOverflow
      }
      if iNdEx >= l {
      return io.ErrUnexpectedEOF
      }
      b := dAtA[iNdEx]
      iNdEx++
      msglen |= int(b&0x7F) << shift
      if b < 0x80 {
      break
      }
      }
      if msglen < 0 {
      return ErrInvalidLength
      }
      postIndex := iNdEx + msglen
      if postIndex < 0 {
      return ErrInvalidLength
      }
      if postIndex > l {
      return io.ErrUnexpectedEOF
      }
      if m.BytesValue == nil {
      m.BytesValue = &wrapperspb.BytesValue{}
      }
      if err := (*wrapperspb1.BytesValue)(m.BytesValue).UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil {
      return err
      }
      iNdEx = postIndex
      default:
      iNdEx = preIndex
      skippy, err := skip(dAtA[iNdEx:])
      if err != nil {
      return err
      }
      if (skippy < 0) || (iNdEx+skippy) < 0 {
      return ErrInvalidLength
      }
      if (iNdEx + skippy) > l {
      return io.ErrUnexpectedEOF
      }
      m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
      iNdEx += skippy
      }
      }
      if iNdEx > l {
      return io.ErrUnexpectedEOF
      }
      return nil
      }

@vmg vmg merged commit d49cd97 into main Oct 2, 2023
3 checks passed
@vmg
Copy link
Member Author

vmg commented Oct 2, 2023

Merged!

charithe added a commit to cerbos/cerbos that referenced this pull request Feb 5, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence | Type |
Update |
|---|---|---|---|---|---|---|---|
| buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go |
`v1.31.0-20230914171853-63dfe56cc2c4.1` ->
`v1.32.0-20231115204500-e097f827e652.1` |
[![age](https://developer.mend.io/api/mc/badges/age/go/buf.build%2fgen%2fgo%2fbufbuild%2fprotovalidate%2fprotocolbuffers%2fgo/v1.32.0-20231115204500-e097f827e652.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/buf.build%2fgen%2fgo%2fbufbuild%2fprotovalidate%2fprotocolbuffers%2fgo/v1.32.0-20231115204500-e097f827e652.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/buf.build%2fgen%2fgo%2fbufbuild%2fprotovalidate%2fprotocolbuffers%2fgo/v1.31.0-20230914171853-63dfe56cc2c4.1/v1.32.0-20231115204500-e097f827e652.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/buf.build%2fgen%2fgo%2fbufbuild%2fprotovalidate%2fprotocolbuffers%2fgo/v1.31.0-20230914171853-63dfe56cc2c4.1/v1.32.0-20231115204500-e097f827e652.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | minor |
| [github.com/aws/aws-sdk-go](https://togithub.com/aws/aws-sdk-go) |
`v1.50.1` -> `v1.50.10` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2faws%2faws-sdk-go/v1.50.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2faws%2faws-sdk-go/v1.50.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2faws%2faws-sdk-go/v1.50.1/v1.50.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2faws%2faws-sdk-go/v1.50.1/v1.50.10?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | patch |
| [github.com/bufbuild/buf](https://togithub.com/bufbuild/buf) |
`v1.28.1` -> `v1.29.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fbufbuild%2fbuf/v1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fbufbuild%2fbuf/v1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fbufbuild%2fbuf/v1.28.1/v1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fbufbuild%2fbuf/v1.28.1/v1.29.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | minor |
| [github.com/goccy/go-yaml](https://togithub.com/goccy/go-yaml) |
`v1.11.2` -> `v1.11.3` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgoccy%2fgo-yaml/v1.11.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fgoccy%2fgo-yaml/v1.11.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fgoccy%2fgo-yaml/v1.11.2/v1.11.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgoccy%2fgo-yaml/v1.11.2/v1.11.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | patch |
| [github.com/google/uuid](https://togithub.com/google/uuid) | `v1.5.0`
-> `v1.6.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgoogle%2fuuid/v1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fgoogle%2fuuid/v1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fgoogle%2fuuid/v1.5.0/v1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgoogle%2fuuid/v1.5.0/v1.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | minor |
|
[github.com/grpc-ecosystem/grpc-gateway/v2](https://togithub.com/grpc-ecosystem/grpc-gateway)
| `v2.19.0` -> `v2.19.1` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fgrpc-ecosystem%2fgrpc-gateway%2fv2/v2.19.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fgrpc-ecosystem%2fgrpc-gateway%2fv2/v2.19.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fgrpc-ecosystem%2fgrpc-gateway%2fv2/v2.19.0/v2.19.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fgrpc-ecosystem%2fgrpc-gateway%2fv2/v2.19.0/v2.19.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | patch |
| [github.com/jackc/pgx/v5](https://togithub.com/jackc/pgx) | `v5.5.2`
-> `v5.5.3` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fjackc%2fpgx%2fv5/v5.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fjackc%2fpgx%2fv5/v5.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fjackc%2fpgx%2fv5/v5.5.2/v5.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fjackc%2fpgx%2fv5/v5.5.2/v5.5.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | patch |
|
[github.com/planetscale/vtprotobuf](https://togithub.com/planetscale/vtprotobuf)
| `v0.5.0` -> `v0.6.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fplanetscale%2fvtprotobuf/v0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fplanetscale%2fvtprotobuf/v0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fplanetscale%2fvtprotobuf/v0.5.0/v0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fplanetscale%2fvtprotobuf/v0.5.0/v0.6.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | minor |
| [github.com/pterm/pterm](https://togithub.com/pterm/pterm) |
`v0.12.75` -> `v0.12.78` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2fpterm%2fpterm/v0.12.78?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2fpterm%2fpterm/v0.12.78?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2fpterm%2fpterm/v0.12.75/v0.12.78?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2fpterm%2fpterm/v0.12.75/v0.12.78?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | patch |
| [github.com/rivo/tview](https://togithub.com/rivo/tview) | `8526c9f`
-> `861aa94` |
[![age](https://developer.mend.io/api/mc/badges/age/go/github.com%2frivo%2ftview/?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/github.com%2frivo%2ftview/?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/github.com%2frivo%2ftview/v0.0.0-20240122063236-8526c9fe1b54/?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/github.com%2frivo%2ftview/v0.0.0-20240122063236-8526c9fe1b54/?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | digest |
|
[google.golang.org/genproto/googleapis/api](https://togithub.com/googleapis/go-genproto)
| `ef43131` -> `1f4bbc5` |
[![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fgenproto%2fgoogleapis%2fapi/?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fgenproto%2fgoogleapis%2fapi/?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fgenproto%2fgoogleapis%2fapi/v0.0.0-20240123012728-ef4313101c80/?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fgenproto%2fgoogleapis%2fapi/v0.0.0-20240123012728-ef4313101c80/?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | digest |
| [google.golang.org/grpc](https://togithub.com/grpc/grpc-go) |
`v1.60.1` -> `v1.61.0` |
[![age](https://developer.mend.io/api/mc/badges/age/go/google.golang.org%2fgrpc/v1.61.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/go/google.golang.org%2fgrpc/v1.61.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/go/google.golang.org%2fgrpc/v1.60.1/v1.61.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/go/google.golang.org%2fgrpc/v1.60.1/v1.61.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
| require | minor |

---

### Release Notes

<details>
<summary>aws/aws-sdk-go (github.com/aws/aws-sdk-go)</summary>

###
[`v1.50.10`](https://togithub.com/aws/aws-sdk-go/blob/HEAD/CHANGELOG.md#Release-v15010-2024-02-02)

[Compare
Source](https://togithub.com/aws/aws-sdk-go/compare/v1.50.9...v1.50.10)

\===

##### Service Client Updates

- `service/dynamodb`: Updates service API, documentation, waiters,
paginators, and examples
- Any number of users can execute up to 50 concurrent restores (any type
of restore) in a given account.
-   `service/sagemaker`: Updates service API and documentation
- Amazon SageMaker Canvas adds GenerativeAiSettings support for
CanvasAppSettings.

###
[`v1.50.9`](https://togithub.com/aws/aws-sdk-go/blob/HEAD/CHANGELOG.md#Release-v1509-2024-02-01)

[Compare
Source](https://togithub.com/aws/aws-sdk-go/compare/v1.50.8...v1.50.9)

\===

##### Service Client Updates

-   `service/cognito-idp`: Updates service API and documentation
-   `service/ivs`: Updates service API, documentation, and paginators
- `service/managedblockchain-query`: Updates service API and
documentation
-   `service/mediaconvert`: Updates service API and documentation
- This release includes support for broadcast-mixed audio description
tracks.

###
[`v1.50.8`](https://togithub.com/aws/aws-sdk-go/blob/HEAD/CHANGELOG.md#Release-v1508-2024-01-31)

[Compare
Source](https://togithub.com/aws/aws-sdk-go/compare/v1.50.7...v1.50.8)

\===

##### Service Client Updates

- `service/cloudformation`: Updates service API, documentation,
paginators, and examples
- CloudFormation IaC generator allows you to scan existing resources in
your account and select resources to generate a template for a new or
existing CloudFormation stack.
- `service/elasticloadbalancingv2`: Updates service API and
documentation
-   `service/glue`: Updates service API and documentation
    -   Update page size limits for GetJobRuns and GetTriggers APIs.
-   `service/ssm`: Updates service API and documentation
- This release adds an optional Duration parameter to StateManager
Associations. This allows customers to specify how long an
apply-only-on-cron association execution should run. Once the specified
Duration is out all the ongoing cancellable commands or automations are
cancelled.

###
[`v1.50.7`](https://togithub.com/aws/aws-sdk-go/blob/HEAD/CHANGELOG.md#Release-v1507-2024-01-30)

[Compare
Source](https://togithub.com/aws/aws-sdk-go/compare/v1.50.6...v1.50.7)

\===

##### Service Client Updates

-   `service/datazone`: Updates service API and documentation
-   `service/route53`: Updates service documentation
    -   Update the SDKs for text changes in the APIs.

###
[`v1.50.6`](https://togithub.com/aws/aws-sdk-go/blob/HEAD/CHANGELOG.md#Release-v1506-2024-01-29)

[Compare
Source](https://togithub.com/aws/aws-sdk-go/compare/v1.50.5...v1.50.6)

\===

##### Service Client Updates

-   `service/autoscaling`: Updates service API and documentation
- EC2 Auto Scaling customers who use attribute based instance-type
selection can now intuitively define their Spot instances price
protection limit as a percentage of the lowest priced On-Demand instance
type.
-   `service/comprehend`: Updates service documentation
-   `service/ec2`: Updates service API and documentation
- EC2 Fleet customers who use attribute based instance-type selection
can now intuitively define their Spot instances price protection limit
as a percentage of the lowest priced On-Demand instance type.
-   `service/mwaa`: Updates service API and documentation
- `service/rds`: Updates service API, documentation, waiters,
paginators, and examples
- Introduced support for the InsufficientDBInstanceCapacityFault error
in the RDS RestoreDBClusterFromSnapshot and
RestoreDBClusterToPointInTime API methods. This provides enhanced error
handling, ensuring a more robust experience.
-   `service/snowball`: Updates service documentation
- Modified description of createaddress to include direction to add path
when providing a JSON file.

###
[`v1.50.5`](https://togithub.com/aws/aws-sdk-go/blob/HEAD/CHANGELOG.md#Release-v1505-2024-01-26)

[Compare
Source](https://togithub.com/aws/aws-sdk-go/compare/v1.50.4...v1.50.5)

\===

##### Service Client Updates

-   `service/connect`: Updates service API
-   `service/inspector2`: Updates service API and documentation
-   `service/sagemaker`: Updates service API and documentation
- Amazon SageMaker Automatic Model Tuning now provides an API to
programmatically delete tuning jobs.

###
[`v1.50.4`](https://togithub.com/aws/aws-sdk-go/blob/HEAD/CHANGELOG.md#Release-v1504-2024-01-25)

[Compare
Source](https://togithub.com/aws/aws-sdk-go/compare/v1.50.3...v1.50.4)

\===

##### Service Client Updates

-   `service/acm-pca`: Updates service API, documentation, and waiters
-   `service/lightsail`: Updates service API and documentation
    -   This release adds support for IPv6-only instance plans.

###
[`v1.50.3`](https://togithub.com/aws/aws-sdk-go/blob/HEAD/CHANGELOG.md#Release-v1503-2024-01-24)

[Compare
Source](https://togithub.com/aws/aws-sdk-go/compare/v1.50.2...v1.50.3)

\===

##### Service Client Updates

-   `service/ec2`: Updates service API and documentation
- Introduced a new clientToken request parameter on CreateNetworkAcl and
CreateRouteTable APIs. The clientToken parameter allows idempotent
operations on the APIs.
-   `service/ecs`: Updates service documentation
    -   Documentation updates for Amazon ECS.
-   `service/outposts`: Updates service API
- `service/rds`: Updates service API, documentation, waiters,
paginators, and examples
    -   This release adds support for Aurora Limitless Database.
-   `service/storagegateway`: Updates service API and documentation
- Add DeprecationDate and SoftwareVersion to response of ListGateways.

###
[`v1.50.2`](https://togithub.com/aws/aws-sdk-go/blob/HEAD/CHANGELOG.md#Release-v1502-2024-01-23)

[Compare
Source](https://togithub.com/aws/aws-sdk-go/compare/v1.50.1...v1.50.2)

\===

##### Service Client Updates

- `service/inspector2`: Updates service API, documentation, and
paginators

</details>

<details>
<summary>bufbuild/buf (github.com/bufbuild/buf)</summary>

###
[`v1.29.0`](https://togithub.com/bufbuild/buf/blob/HEAD/CHANGELOG.md#v1290---2024-01-24)

[Compare
Source](https://togithub.com/bufbuild/buf/compare/v1.28.1...v1.29.0)

- Add support for `yaml` format. All commands that take image inputs,
output images,
or convert between message formats, now take `yaml` as a format, in
addition to
    the existing `binpb` and `txtpb` formats. Some examples:
    -   `buf build -o image.yaml`
    -   `buf ls-files image.yaml`
    -   `buf convert --type foo.Bar --from input.binpb --to output.yaml`
- The `yaml` and `json` formats now accept two new options:
`use_proto_names` and
`use_enum_numbers`. This affects output serialization. Some examples:
- `buf convert --type foo.Bar --from input.binpb --to
output.yaml#use_proto_names=true`
- `buf convert --type foo.Bar --from input.binpb --to
-#format=yaml,use_enum_numbers=true`
- Fix issue where `buf format` would inadvertently mangle files that
used
the [expanded `Any`
syntax](https://protobuf.com/docs/language-spec#any-messages)
    in option values.

</details>

<details>
<summary>goccy/go-yaml (github.com/goccy/go-yaml)</summary>

###
[`v1.11.3`](https://togithub.com/goccy/go-yaml/releases/tag/v1.11.3):
1.11.3

[Compare
Source](https://togithub.com/goccy/go-yaml/compare/v1.11.2...v1.11.3)

#### What's Changed

- fix: remove any trailing empty lines if the block scalar has strip
indicator by [@&#8203;zoncoen](https://togithub.com/zoncoen) in
[goccy/go-yaml#421

**Full Changelog**:
goccy/go-yaml@v1.11.2...v1.11.3

</details>

<details>
<summary>google/uuid (github.com/google/uuid)</summary>

### [`v1.6.0`](https://togithub.com/google/uuid/releases/tag/v1.6.0)

[Compare
Source](https://togithub.com/google/uuid/compare/v1.5.0...v1.6.0)

##### Features

- add Max UUID constant
([#&#8203;149](https://togithub.com/google/uuid/issues/149))
([c58770e](https://togithub.com/google/uuid/commit/c58770eb495f55fe2ced6284f93c5158a62e53e3))

##### Bug Fixes

- fix typo in version 7 uuid documentation
([#&#8203;153](https://togithub.com/google/uuid/issues/153))
([016b199](https://togithub.com/google/uuid/commit/016b199544692f745ffc8867b914129ecb47ef06))
- Monotonicity in UUIDv7
([#&#8203;150](https://togithub.com/google/uuid/issues/150))
([a2b2b32](https://togithub.com/google/uuid/commit/a2b2b32373ff0b1a312b7fdf6d38a977099698a6))

</details>

<details>
<summary>grpc-ecosystem/grpc-gateway
(github.com/grpc-ecosystem/grpc-gateway/v2)</summary>

###
[`v2.19.1`](https://togithub.com/grpc-ecosystem/grpc-gateway/releases/tag/v2.19.1)

[Compare
Source](https://togithub.com/grpc-ecosystem/grpc-gateway/compare/v2.19.0...v2.19.1)

#### What's Changed

- (fix) remove internal comments from generated protoComments by
[@&#8203;kiambogo](https://togithub.com/kiambogo) in
[grpc-ecosystem/grpc-gateway#3864
- fix(protoc-gen-openapiv2): exclude from query params oneof fields in
the same group as the one used in the body by
[@&#8203;ovargas](https://togithub.com/ovargas) in
[grpc-ecosystem/grpc-gateway#3862
- If no subfields are set in a map, add the field to fieldMask by
[@&#8203;sbansal7](https://togithub.com/sbansal7) in
[grpc-ecosystem/grpc-gateway#3879
- Parse request body when using X-HTTP-Method-Override header by
[@&#8203;eyasy1217](https://togithub.com/eyasy1217) in
[grpc-ecosystem/grpc-gateway#3918
- fix path param override by query params by
[@&#8203;ljmsc](https://togithub.com/ljmsc) in
[grpc-ecosystem/grpc-gateway#3946

#### New Contributors

- [@&#8203;kiambogo](https://togithub.com/kiambogo) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3864
- [@&#8203;ovargas](https://togithub.com/ovargas) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3862
- [@&#8203;sbansal7](https://togithub.com/sbansal7) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3879
- [@&#8203;eyasy1217](https://togithub.com/eyasy1217) made their first
contribution in
[grpc-ecosystem/grpc-gateway#3918

**Full Changelog**:
grpc-ecosystem/grpc-gateway@v2.19.0...v2.19.1

</details>

<details>
<summary>jackc/pgx (github.com/jackc/pgx/v5)</summary>

### [`v5.5.3`](https://togithub.com/jackc/pgx/compare/v5.5.2...v5.5.3)

[Compare Source](https://togithub.com/jackc/pgx/compare/v5.5.2...v5.5.3)

</details>

<details>
<summary>planetscale/vtprotobuf
(github.com/planetscale/vtprotobuf)</summary>

###
[`v0.6.0`](https://togithub.com/planetscale/vtprotobuf/releases/tag/v0.6.0)

[Compare
Source](https://togithub.com/planetscale/vtprotobuf/compare/v0.5.0...v0.6.0)

#### Notable new features

- Support for Well-Known Type Wrappers
([planetscale/vtprotobuf#99)
- Unsafe unmarshalling without memory allocations
([planetscale/vtprotobuf#103)
- Support for custom build tags
([planetscale/vtprotobuf#122)
- Support for using wildcards when choosing which objects to pool
([planetscale/vtprotobuf#115)

#### List of all merged PRs

- feat: use vtpool when cloning poolable objects by
[@&#8203;kruskall](https://togithub.com/kruskall) in
[planetscale/vtprotobuf#95
- fix: do not try to reset nil objects by
[@&#8203;kruskall](https://togithub.com/kruskall) in
[planetscale/vtprotobuf#96
- Fix misspell in clone.go by
[@&#8203;cristaloleg](https://togithub.com/cristaloleg) in
[planetscale/vtprotobuf#98
- Well known type wrappers by [@&#8203;vmg](https://togithub.com/vmg) in
[planetscale/vtprotobuf#99
- Added well-known types generated by vtproto plugin by
[@&#8203;biosvs](https://togithub.com/biosvs) in
[planetscale/vtprotobuf#93
- Add `unmarshal_unsafe` feature by
[@&#8203;nockty](https://togithub.com/nockty) in
[planetscale/vtprotobuf#103
- fix: ResetVT oneof by
[@&#8203;evgfedotov](https://togithub.com/evgfedotov) in
[planetscale/vtprotobuf#109
- Fix alloc qualify ident by
[@&#8203;evgfedotov](https://togithub.com/evgfedotov) in
[planetscale/vtprotobuf#113
- fix: check oneof on syntetic by
[@&#8203;evgfedotov](https://togithub.com/evgfedotov) in
[planetscale/vtprotobuf#111
- Support `Struct` for wellknown type wrappers by
[@&#8203;howardjohn](https://togithub.com/howardjohn) in
[planetscale/vtprotobuf#116
- Bump go.mod dependencies by
[@&#8203;howardjohn](https://togithub.com/howardjohn) in
[planetscale/vtprotobuf#119
- Make generated code use public helpers instead of generating them by
[@&#8203;nockty](https://togithub.com/nockty) in
[planetscale/vtprotobuf#120
- Downgrade `grpc` to version 1.58.2 by
[@&#8203;nockty](https://togithub.com/nockty) in
[planetscale/vtprotobuf#121
- Fix: Append check on IsMap in pool message generation by
[@&#8203;evgfedotov](https://togithub.com/evgfedotov) in
[planetscale/vtprotobuf#124
- Add ability to include a build tag by
[@&#8203;howardjohn](https://togithub.com/howardjohn) in
[planetscale/vtprotobuf#122
- Fix: Prevent out of bounds access when unsafe unmarshalling empty
strings by
[@&#8203;maheeshap-canopus](https://togithub.com/maheeshap-canopus) in
[planetscale/vtprotobuf#127
- feature: pool with wildcard by
[@&#8203;evgfedotov](https://togithub.com/evgfedotov) in
[planetscale/vtprotobuf#115

#### New Contributors

- [@&#8203;kruskall](https://togithub.com/kruskall) made their first
contribution in
[planetscale/vtprotobuf#95
- [@&#8203;cristaloleg](https://togithub.com/cristaloleg) made their
first contribution in
[planetscale/vtprotobuf#98
- [@&#8203;nockty](https://togithub.com/nockty) made their first
contribution in
[planetscale/vtprotobuf#103
- [@&#8203;evgfedotov](https://togithub.com/evgfedotov) made their first
contribution in
[planetscale/vtprotobuf#109
- [@&#8203;howardjohn](https://togithub.com/howardjohn) made their first
contribution in
[planetscale/vtprotobuf#116
- [@&#8203;maheeshap-canopus](https://togithub.com/maheeshap-canopus)
made their first contribution in
[planetscale/vtprotobuf#127

**Full Changelog**:
planetscale/vtprotobuf@v0.5.0...v0.6.0

</details>

<details>
<summary>pterm/pterm (github.com/pterm/pterm)</summary>

### [`v0.12.78`](https://togithub.com/pterm/pterm/releases/tag/v0.12.78)

[Compare
Source](https://togithub.com/pterm/pterm/compare/v0.12.77...v0.12.78)

<!-- Release notes generated using configuration in .github/release.yml
at master -->

#### What's Changed

##### Fixes 🔧

- fix(progressbar): `Progressbar` and `Logger` did not work together co…
by [@&#8203;MarvinJWendt](https://togithub.com/MarvinJWendt) in
[pterm/pterm#627
- fix(textinput): fixed text width calculation by
[@&#8203;auntan](https://togithub.com/auntan) in
[pterm/pterm#624

#### New Contributors

- [@&#8203;auntan](https://togithub.com/auntan) made their first
contribution in
[pterm/pterm#624

**Full Changelog**:
pterm/pterm@v0.12.77...v0.12.78

### [`v0.12.77`](https://togithub.com/pterm/pterm/releases/tag/v0.12.77)

[Compare
Source](https://togithub.com/pterm/pterm/compare/v0.12.76...v0.12.77)

<!-- Release notes generated using configuration in .github/release.yml
at master -->

#### What's Changed

##### Fixes 🔧

- fix: graceful handling of odd args by
[@&#8203;TylerGillson](https://togithub.com/TylerGillson) in
[pterm/pterm#629

#### New Contributors

- [@&#8203;TylerGillson](https://togithub.com/TylerGillson) made their
first contribution in
[pterm/pterm#629

**Full Changelog**:
pterm/pterm@v0.12.76...v0.12.77

### [`v0.12.76`](https://togithub.com/pterm/pterm/releases/tag/v0.12.76)

[Compare
Source](https://togithub.com/pterm/pterm/compare/v0.12.75...v0.12.76)

<!-- Release notes generated using configuration in .github/release.yml
at master -->

#### What's Changed

##### Fixes 🔧

- fix(rgb): `Sprintf` did not format properly by
[@&#8203;MarvinJWendt](https://togithub.com/MarvinJWendt) in
[pterm/pterm#622

**Full Changelog**:
pterm/pterm@v0.12.75...v0.12.76

</details>

<details>
<summary>grpc/grpc-go (google.golang.org/grpc)</summary>

### [`v1.61.0`](https://togithub.com/grpc/grpc-go/releases/tag/v1.61.0):
Release 1.61.0

[Compare
Source](https://togithub.com/grpc/grpc-go/compare/v1.60.1...v1.61.0)

### New Features

- resolver: provide method, `AuthorityOverrider`, to allow
resolver.Builders to override the default authority for a `ClientConn`.
(EXPERIMENTAL)
([#&#8203;6752](https://togithub.com/grpc/grpc-go/issues/6752))
- Special Thanks:
[@&#8203;Aditya-Sood](https://togithub.com/Aditya-Sood)
- xds: add support for mTLS Credentials in xDS bootstrap ([gRFC
A65](github.com/grpc/proposal/blob/8c31bfedded5f0a51c4933e9e9a8246122f9c41a/A65-xds-mtls-creds-in-bootstrap.md))
([#&#8203;6757](https://togithub.com/grpc/grpc-go/issues/6757))
- Special Thanks: [@&#8203;atollena](https://togithub.com/atollena)
- server: add `grpc.WaitForHandlers` `ServerOption` to cause
`Server.Stop` to block until method handlers return. (EXPERIMENTAL)
([#&#8203;6922](https://togithub.com/grpc/grpc-go/issues/6922))

### Performance Improvements

- grpc: skip compression of empty messages as an optimization
([#&#8203;6842](https://togithub.com/grpc/grpc-go/issues/6842))
    -   Special Thanks: [@&#8203;jroper](https://togithub.com/jroper)
- orca: use atomic pointer to improve performance in server metrics
recorder ([#&#8203;6799](https://togithub.com/grpc/grpc-go/issues/6799))
- Special Thanks:
[@&#8203;danielzhaotongliu](https://togithub.com/danielzhaotongliu)

### Bug Fixes

- client: correctly enable TCP keepalives with OS defaults on windows
([#&#8203;6863](https://togithub.com/grpc/grpc-go/issues/6863))
- Special Thanks: [@&#8203;mmatczuk](https://togithub.com/mmatczuk)
- server: change some stream operations to return `UNAVAILABLE` instead
of `UNKNOWN` when underlying connection is broken
([#&#8203;6891](https://togithub.com/grpc/grpc-go/issues/6891))
- Special Thanks:
[@&#8203;mustafasen81](https://togithub.com/mustafasen81)
- server: fix `GracefulStop` to block until all method handlers return
(v1.60 regression).
([#&#8203;6922](https://togithub.com/grpc/grpc-go/issues/6922))
- server: fix two bugs that could lead to panics at shutdown when using
[`NumStreamWorkers`](https://pkg.go.dev/google.golang.org/grpc#NumStreamWorkers)
(EXPERIMENTAL).
([#&#8203;6856](https://togithub.com/grpc/grpc-go/issues/6856))
- reflection: do not send invalid descriptors to clients for files that
cannot be fully resolved
([#&#8203;6771](https://togithub.com/grpc/grpc-go/issues/6771))
    -   Special Thanks: [@&#8203;jhump](https://togithub.com/jhump)
- xds: don't fail channel/server startup when xds creds is specified,
but bootstrap is missing certificate providers
([#&#8203;6848](https://togithub.com/grpc/grpc-go/issues/6848))
- xds: Atomically read and write xDS security configuration client side
([#&#8203;6796](https://togithub.com/grpc/grpc-go/issues/6796))
- xds/server: fix RDS handling for non-inline route configs
([#&#8203;6915](https://togithub.com/grpc/grpc-go/issues/6915))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/cerbos/cerbos).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4xNzAuMCIsInVwZGF0ZWRJblZlciI6IjM3LjE3MC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

---------

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Charith Ellawala <charith@cerbos.dev>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Charith Ellawala <charith@cerbos.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants