summaryrefslogtreecommitdiff
path: root/vendor/google.golang.org/protobuf/encoding/prototext
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/google.golang.org/protobuf/encoding/prototext')
-rw-r--r--vendor/google.golang.org/protobuf/encoding/prototext/decode.go772
-rw-r--r--vendor/google.golang.org/protobuf/encoding/prototext/doc.go7
-rw-r--r--vendor/google.golang.org/protobuf/encoding/prototext/encode.go380
3 files changed, 0 insertions, 1159 deletions
diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go
deleted file mode 100644
index d972a3d98..000000000
--- a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go
+++ /dev/null
@@ -1,772 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package prototext
-
-import (
- "fmt"
- "unicode/utf8"
-
- "google.golang.org/protobuf/internal/encoding/messageset"
- "google.golang.org/protobuf/internal/encoding/text"
- "google.golang.org/protobuf/internal/errors"
- "google.golang.org/protobuf/internal/flags"
- "google.golang.org/protobuf/internal/genid"
- "google.golang.org/protobuf/internal/pragma"
- "google.golang.org/protobuf/internal/set"
- "google.golang.org/protobuf/internal/strs"
- "google.golang.org/protobuf/proto"
- "google.golang.org/protobuf/reflect/protoreflect"
- "google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// Unmarshal reads the given []byte into the given [proto.Message].
-// The provided message must be mutable (e.g., a non-nil pointer to a message).
-func Unmarshal(b []byte, m proto.Message) error {
- return UnmarshalOptions{}.Unmarshal(b, m)
-}
-
-// UnmarshalOptions is a configurable textproto format unmarshaler.
-type UnmarshalOptions struct {
- pragma.NoUnkeyedLiterals
-
- // AllowPartial accepts input for messages that will result in missing
- // required fields. If AllowPartial is false (the default), Unmarshal will
- // return error if there are any missing required fields.
- AllowPartial bool
-
- // DiscardUnknown specifies whether to ignore unknown fields when parsing.
- // An unknown field is any field whose field name or field number does not
- // resolve to any known or extension field in the message.
- // By default, unmarshal rejects unknown fields as an error.
- DiscardUnknown bool
-
- // Resolver is used for looking up types when unmarshaling
- // google.protobuf.Any messages or extension fields.
- // If nil, this defaults to using protoregistry.GlobalTypes.
- Resolver interface {
- protoregistry.MessageTypeResolver
- protoregistry.ExtensionTypeResolver
- }
-}
-
-// Unmarshal reads the given []byte and populates the given [proto.Message]
-// using options in the UnmarshalOptions object.
-// The provided message must be mutable (e.g., a non-nil pointer to a message).
-func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error {
- return o.unmarshal(b, m)
-}
-
-// unmarshal is a centralized function that all unmarshal operations go through.
-// For profiling purposes, avoid changing the name of this function or
-// introducing other code paths for unmarshal that do not go through this.
-func (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error {
- proto.Reset(m)
-
- if o.Resolver == nil {
- o.Resolver = protoregistry.GlobalTypes
- }
-
- dec := decoder{text.NewDecoder(b), o}
- if err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil {
- return err
- }
- if o.AllowPartial {
- return nil
- }
- return proto.CheckInitialized(m)
-}
-
-type decoder struct {
- *text.Decoder
- opts UnmarshalOptions
-}
-
-// newError returns an error object with position info.
-func (d decoder) newError(pos int, f string, x ...any) error {
- line, column := d.Position(pos)
- head := fmt.Sprintf("(line %d:%d): ", line, column)
- return errors.New(head+f, x...)
-}
-
-// unexpectedTokenError returns a syntax error for the given unexpected token.
-func (d decoder) unexpectedTokenError(tok text.Token) error {
- return d.syntaxError(tok.Pos(), "unexpected token: %s", tok.RawString())
-}
-
-// syntaxError returns a syntax error for given position.
-func (d decoder) syntaxError(pos int, f string, x ...any) error {
- line, column := d.Position(pos)
- head := fmt.Sprintf("syntax error (line %d:%d): ", line, column)
- return errors.New(head+f, x...)
-}
-
-// unmarshalMessage unmarshals into the given protoreflect.Message.
-func (d decoder) unmarshalMessage(m protoreflect.Message, checkDelims bool) error {
- messageDesc := m.Descriptor()
- if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {
- return errors.New("no support for proto1 MessageSets")
- }
-
- if messageDesc.FullName() == genid.Any_message_fullname {
- return d.unmarshalAny(m, checkDelims)
- }
-
- if checkDelims {
- tok, err := d.Read()
- if err != nil {
- return err
- }
-
- if tok.Kind() != text.MessageOpen {
- return d.unexpectedTokenError(tok)
- }
- }
-
- var seenNums set.Ints
- var seenOneofs set.Ints
- fieldDescs := messageDesc.Fields()
-
- for {
- // Read field name.
- tok, err := d.Read()
- if err != nil {
- return err
- }
- switch typ := tok.Kind(); typ {
- case text.Name:
- // Continue below.
- case text.EOF:
- if checkDelims {
- return text.ErrUnexpectedEOF
- }
- return nil
- default:
- if checkDelims && typ == text.MessageClose {
- return nil
- }
- return d.unexpectedTokenError(tok)
- }
-
- // Resolve the field descriptor.
- var name protoreflect.Name
- var fd protoreflect.FieldDescriptor
- var xt protoreflect.ExtensionType
- var xtErr error
- var isFieldNumberName bool
-
- switch tok.NameKind() {
- case text.IdentName:
- name = protoreflect.Name(tok.IdentName())
- fd = fieldDescs.ByTextName(string(name))
-
- case text.TypeName:
- // Handle extensions only. This code path is not for Any.
- xt, xtErr = d.opts.Resolver.FindExtensionByName(protoreflect.FullName(tok.TypeName()))
-
- case text.FieldNumber:
- isFieldNumberName = true
- num := protoreflect.FieldNumber(tok.FieldNumber())
- if !num.IsValid() {
- return d.newError(tok.Pos(), "invalid field number: %d", num)
- }
- fd = fieldDescs.ByNumber(num)
- if fd == nil {
- xt, xtErr = d.opts.Resolver.FindExtensionByNumber(messageDesc.FullName(), num)
- }
- }
-
- if xt != nil {
- fd = xt.TypeDescriptor()
- if !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() {
- return d.newError(tok.Pos(), "message %v cannot be extended by %v", messageDesc.FullName(), fd.FullName())
- }
- } else if xtErr != nil && xtErr != protoregistry.NotFound {
- return d.newError(tok.Pos(), "unable to resolve [%s]: %v", tok.RawString(), xtErr)
- }
- if flags.ProtoLegacyWeak {
- if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() {
- fd = nil // reset since the weak reference is not linked in
- }
- }
-
- // Handle unknown fields.
- if fd == nil {
- if d.opts.DiscardUnknown || messageDesc.ReservedNames().Has(name) {
- d.skipValue()
- continue
- }
- return d.newError(tok.Pos(), "unknown field: %v", tok.RawString())
- }
-
- // Handle fields identified by field number.
- if isFieldNumberName {
- // TODO: Add an option to permit parsing field numbers.
- //
- // This requires careful thought as the MarshalOptions.EmitUnknown
- // option allows formatting unknown fields as the field number and the
- // best-effort textual representation of the field value. In that case,
- // it may not be possible to unmarshal the value from a parser that does
- // have information about the unknown field.
- return d.newError(tok.Pos(), "cannot specify field by number: %v", tok.RawString())
- }
-
- switch {
- case fd.IsList():
- kind := fd.Kind()
- if kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() {
- return d.syntaxError(tok.Pos(), "missing field separator :")
- }
-
- list := m.Mutable(fd).List()
- if err := d.unmarshalList(fd, list); err != nil {
- return err
- }
-
- case fd.IsMap():
- mmap := m.Mutable(fd).Map()
- if err := d.unmarshalMap(fd, mmap); err != nil {
- return err
- }
-
- default:
- kind := fd.Kind()
- if kind != protoreflect.MessageKind && kind != protoreflect.GroupKind && !tok.HasSeparator() {
- return d.syntaxError(tok.Pos(), "missing field separator :")
- }
-
- // If field is a oneof, check if it has already been set.
- if od := fd.ContainingOneof(); od != nil {
- idx := uint64(od.Index())
- if seenOneofs.Has(idx) {
- return d.newError(tok.Pos(), "error parsing %q, oneof %v is already set", tok.RawString(), od.FullName())
- }
- seenOneofs.Set(idx)
- }
-
- num := uint64(fd.Number())
- if seenNums.Has(num) {
- return d.newError(tok.Pos(), "non-repeated field %q is repeated", tok.RawString())
- }
-
- if err := d.unmarshalSingular(fd, m); err != nil {
- return err
- }
- seenNums.Set(num)
- }
- }
-
- return nil
-}
-
-// unmarshalSingular unmarshals a non-repeated field value specified by the
-// given FieldDescriptor.
-func (d decoder) unmarshalSingular(fd protoreflect.FieldDescriptor, m protoreflect.Message) error {
- var val protoreflect.Value
- var err error
- switch fd.Kind() {
- case protoreflect.MessageKind, protoreflect.GroupKind:
- val = m.NewField(fd)
- err = d.unmarshalMessage(val.Message(), true)
- default:
- val, err = d.unmarshalScalar(fd)
- }
- if err == nil {
- m.Set(fd, val)
- }
- return err
-}
-
-// unmarshalScalar unmarshals a scalar/enum protoreflect.Value specified by the
-// given FieldDescriptor.
-func (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect.Value, error) {
- tok, err := d.Read()
- if err != nil {
- return protoreflect.Value{}, err
- }
-
- if tok.Kind() != text.Scalar {
- return protoreflect.Value{}, d.unexpectedTokenError(tok)
- }
-
- kind := fd.Kind()
- switch kind {
- case protoreflect.BoolKind:
- if b, ok := tok.Bool(); ok {
- return protoreflect.ValueOfBool(b), nil
- }
-
- case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:
- if n, ok := tok.Int32(); ok {
- return protoreflect.ValueOfInt32(n), nil
- }
-
- case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:
- if n, ok := tok.Int64(); ok {
- return protoreflect.ValueOfInt64(n), nil
- }
-
- case protoreflect.Uint32Kind, protoreflect.Fixed32Kind:
- if n, ok := tok.Uint32(); ok {
- return protoreflect.ValueOfUint32(n), nil
- }
-
- case protoreflect.Uint64Kind, protoreflect.Fixed64Kind:
- if n, ok := tok.Uint64(); ok {
- return protoreflect.ValueOfUint64(n), nil
- }
-
- case protoreflect.FloatKind:
- if n, ok := tok.Float32(); ok {
- return protoreflect.ValueOfFloat32(n), nil
- }
-
- case protoreflect.DoubleKind:
- if n, ok := tok.Float64(); ok {
- return protoreflect.ValueOfFloat64(n), nil
- }
-
- case protoreflect.StringKind:
- if s, ok := tok.String(); ok {
- if strs.EnforceUTF8(fd) && !utf8.ValidString(s) {
- return protoreflect.Value{}, d.newError(tok.Pos(), "contains invalid UTF-8")
- }
- return protoreflect.ValueOfString(s), nil
- }
-
- case protoreflect.BytesKind:
- if b, ok := tok.String(); ok {
- return protoreflect.ValueOfBytes([]byte(b)), nil
- }
-
- case protoreflect.EnumKind:
- if lit, ok := tok.Enum(); ok {
- // Lookup EnumNumber based on name.
- if enumVal := fd.Enum().Values().ByName(protoreflect.Name(lit)); enumVal != nil {
- return protoreflect.ValueOfEnum(enumVal.Number()), nil
- }
- }
- if num, ok := tok.Int32(); ok {
- return protoreflect.ValueOfEnum(protoreflect.EnumNumber(num)), nil
- }
-
- default:
- panic(fmt.Sprintf("invalid scalar kind %v", kind))
- }
-
- return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString())
-}
-
-// unmarshalList unmarshals into given protoreflect.List. A list value can
-// either be in [] syntax or simply just a single scalar/message value.
-func (d decoder) unmarshalList(fd protoreflect.FieldDescriptor, list protoreflect.List) error {
- tok, err := d.Peek()
- if err != nil {
- return err
- }
-
- switch fd.Kind() {
- case protoreflect.MessageKind, protoreflect.GroupKind:
- switch tok.Kind() {
- case text.ListOpen:
- d.Read()
- for {
- tok, err := d.Peek()
- if err != nil {
- return err
- }
-
- switch tok.Kind() {
- case text.ListClose:
- d.Read()
- return nil
- case text.MessageOpen:
- pval := list.NewElement()
- if err := d.unmarshalMessage(pval.Message(), true); err != nil {
- return err
- }
- list.Append(pval)
- default:
- return d.unexpectedTokenError(tok)
- }
- }
-
- case text.MessageOpen:
- pval := list.NewElement()
- if err := d.unmarshalMessage(pval.Message(), true); err != nil {
- return err
- }
- list.Append(pval)
- return nil
- }
-
- default:
- switch tok.Kind() {
- case text.ListOpen:
- d.Read()
- for {
- tok, err := d.Peek()
- if err != nil {
- return err
- }
-
- switch tok.Kind() {
- case text.ListClose:
- d.Read()
- return nil
- case text.Scalar:
- pval, err := d.unmarshalScalar(fd)
- if err != nil {
- return err
- }
- list.Append(pval)
- default:
- return d.unexpectedTokenError(tok)
- }
- }
-
- case text.Scalar:
- pval, err := d.unmarshalScalar(fd)
- if err != nil {
- return err
- }
- list.Append(pval)
- return nil
- }
- }
-
- return d.unexpectedTokenError(tok)
-}
-
-// unmarshalMap unmarshals into given protoreflect.Map. A map value is a
-// textproto message containing {key: <kvalue>, value: <mvalue>}.
-func (d decoder) unmarshalMap(fd protoreflect.FieldDescriptor, mmap protoreflect.Map) error {
- // Determine ahead whether map entry is a scalar type or a message type in
- // order to call the appropriate unmarshalMapValue func inside
- // unmarshalMapEntry.
- var unmarshalMapValue func() (protoreflect.Value, error)
- switch fd.MapValue().Kind() {
- case protoreflect.MessageKind, protoreflect.GroupKind:
- unmarshalMapValue = func() (protoreflect.Value, error) {
- pval := mmap.NewValue()
- if err := d.unmarshalMessage(pval.Message(), true); err != nil {
- return protoreflect.Value{}, err
- }
- return pval, nil
- }
- default:
- unmarshalMapValue = func() (protoreflect.Value, error) {
- return d.unmarshalScalar(fd.MapValue())
- }
- }
-
- tok, err := d.Read()
- if err != nil {
- return err
- }
- switch tok.Kind() {
- case text.MessageOpen:
- return d.unmarshalMapEntry(fd, mmap, unmarshalMapValue)
-
- case text.ListOpen:
- for {
- tok, err := d.Read()
- if err != nil {
- return err
- }
- switch tok.Kind() {
- case text.ListClose:
- return nil
- case text.MessageOpen:
- if err := d.unmarshalMapEntry(fd, mmap, unmarshalMapValue); err != nil {
- return err
- }
- default:
- return d.unexpectedTokenError(tok)
- }
- }
-
- default:
- return d.unexpectedTokenError(tok)
- }
-}
-
-// unmarshalMap unmarshals into given protoreflect.Map. A map value is a
-// textproto message containing {key: <kvalue>, value: <mvalue>}.
-func (d decoder) unmarshalMapEntry(fd protoreflect.FieldDescriptor, mmap protoreflect.Map, unmarshalMapValue func() (protoreflect.Value, error)) error {
- var key protoreflect.MapKey
- var pval protoreflect.Value
-Loop:
- for {
- // Read field name.
- tok, err := d.Read()
- if err != nil {
- return err
- }
- switch tok.Kind() {
- case text.Name:
- if tok.NameKind() != text.IdentName {
- if !d.opts.DiscardUnknown {
- return d.newError(tok.Pos(), "unknown map entry field %q", tok.RawString())
- }
- d.skipValue()
- continue Loop
- }
- // Continue below.
- case text.MessageClose:
- break Loop
- default:
- return d.unexpectedTokenError(tok)
- }
-
- switch name := protoreflect.Name(tok.IdentName()); name {
- case genid.MapEntry_Key_field_name:
- if !tok.HasSeparator() {
- return d.syntaxError(tok.Pos(), "missing field separator :")
- }
- if key.IsValid() {
- return d.newError(tok.Pos(), "map entry %q cannot be repeated", name)
- }
- val, err := d.unmarshalScalar(fd.MapKey())
- if err != nil {
- return err
- }
- key = val.MapKey()
-
- case genid.MapEntry_Value_field_name:
- if kind := fd.MapValue().Kind(); (kind != protoreflect.MessageKind) && (kind != protoreflect.GroupKind) {
- if !tok.HasSeparator() {
- return d.syntaxError(tok.Pos(), "missing field separator :")
- }
- }
- if pval.IsValid() {
- return d.newError(tok.Pos(), "map entry %q cannot be repeated", name)
- }
- pval, err = unmarshalMapValue()
- if err != nil {
- return err
- }
-
- default:
- if !d.opts.DiscardUnknown {
- return d.newError(tok.Pos(), "unknown map entry field %q", name)
- }
- d.skipValue()
- }
- }
-
- if !key.IsValid() {
- key = fd.MapKey().Default().MapKey()
- }
- if !pval.IsValid() {
- switch fd.MapValue().Kind() {
- case protoreflect.MessageKind, protoreflect.GroupKind:
- // If value field is not set for message/group types, construct an
- // empty one as default.
- pval = mmap.NewValue()
- default:
- pval = fd.MapValue().Default()
- }
- }
- mmap.Set(key, pval)
- return nil
-}
-
-// unmarshalAny unmarshals an Any textproto. It can either be in expanded form
-// or non-expanded form.
-func (d decoder) unmarshalAny(m protoreflect.Message, checkDelims bool) error {
- var typeURL string
- var bValue []byte
- var seenTypeUrl bool
- var seenValue bool
- var isExpanded bool
-
- if checkDelims {
- tok, err := d.Read()
- if err != nil {
- return err
- }
-
- if tok.Kind() != text.MessageOpen {
- return d.unexpectedTokenError(tok)
- }
- }
-
-Loop:
- for {
- // Read field name. Can only have 3 possible field names, i.e. type_url,
- // value and type URL name inside [].
- tok, err := d.Read()
- if err != nil {
- return err
- }
- if typ := tok.Kind(); typ != text.Name {
- if checkDelims {
- if typ == text.MessageClose {
- break Loop
- }
- } else if typ == text.EOF {
- break Loop
- }
- return d.unexpectedTokenError(tok)
- }
-
- switch tok.NameKind() {
- case text.IdentName:
- // Both type_url and value fields require field separator :.
- if !tok.HasSeparator() {
- return d.syntaxError(tok.Pos(), "missing field separator :")
- }
-
- switch name := protoreflect.Name(tok.IdentName()); name {
- case genid.Any_TypeUrl_field_name:
- if seenTypeUrl {
- return d.newError(tok.Pos(), "duplicate %v field", genid.Any_TypeUrl_field_fullname)
- }
- if isExpanded {
- return d.newError(tok.Pos(), "conflict with [%s] field", typeURL)
- }
- tok, err := d.Read()
- if err != nil {
- return err
- }
- var ok bool
- typeURL, ok = tok.String()
- if !ok {
- return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_TypeUrl_field_fullname, tok.RawString())
- }
- seenTypeUrl = true
-
- case genid.Any_Value_field_name:
- if seenValue {
- return d.newError(tok.Pos(), "duplicate %v field", genid.Any_Value_field_fullname)
- }
- if isExpanded {
- return d.newError(tok.Pos(), "conflict with [%s] field", typeURL)
- }
- tok, err := d.Read()
- if err != nil {
- return err
- }
- s, ok := tok.String()
- if !ok {
- return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_Value_field_fullname, tok.RawString())
- }
- bValue = []byte(s)
- seenValue = true
-
- default:
- if !d.opts.DiscardUnknown {
- return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname)
- }
- }
-
- case text.TypeName:
- if isExpanded {
- return d.newError(tok.Pos(), "cannot have more than one type")
- }
- if seenTypeUrl {
- return d.newError(tok.Pos(), "conflict with type_url field")
- }
- typeURL = tok.TypeName()
- var err error
- bValue, err = d.unmarshalExpandedAny(typeURL, tok.Pos())
- if err != nil {
- return err
- }
- isExpanded = true
-
- default:
- if !d.opts.DiscardUnknown {
- return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname)
- }
- }
- }
-
- fds := m.Descriptor().Fields()
- if len(typeURL) > 0 {
- m.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), protoreflect.ValueOfString(typeURL))
- }
- if len(bValue) > 0 {
- m.Set(fds.ByNumber(genid.Any_Value_field_number), protoreflect.ValueOfBytes(bValue))
- }
- return nil
-}
-
-func (d decoder) unmarshalExpandedAny(typeURL string, pos int) ([]byte, error) {
- mt, err := d.opts.Resolver.FindMessageByURL(typeURL)
- if err != nil {
- return nil, d.newError(pos, "unable to resolve message [%v]: %v", typeURL, err)
- }
- // Create new message for the embedded message type and unmarshal the value
- // field into it.
- m := mt.New()
- if err := d.unmarshalMessage(m, true); err != nil {
- return nil, err
- }
- // Serialize the embedded message and return the resulting bytes.
- b, err := proto.MarshalOptions{
- AllowPartial: true, // Never check required fields inside an Any.
- Deterministic: true,
- }.Marshal(m.Interface())
- if err != nil {
- return nil, d.newError(pos, "error in marshaling message into Any.value: %v", err)
- }
- return b, nil
-}
-
-// skipValue makes the decoder parse a field value in order to advance the read
-// to the next field. It relies on Read returning an error if the types are not
-// in valid sequence.
-func (d decoder) skipValue() error {
- tok, err := d.Read()
- if err != nil {
- return err
- }
- // Only need to continue reading for messages and lists.
- switch tok.Kind() {
- case text.MessageOpen:
- return d.skipMessageValue()
-
- case text.ListOpen:
- for {
- tok, err := d.Read()
- if err != nil {
- return err
- }
- switch tok.Kind() {
- case text.ListClose:
- return nil
- case text.MessageOpen:
- if err := d.skipMessageValue(); err != nil {
- return err
- }
- default:
- // Skip items. This will not validate whether skipped values are
- // of the same type or not, same behavior as C++
- // TextFormat::Parser::AllowUnknownField(true) version 3.8.0.
- }
- }
- }
- return nil
-}
-
-// skipMessageValue makes the decoder parse and skip over all fields in a
-// message. It assumes that the previous read type is MessageOpen.
-func (d decoder) skipMessageValue() error {
- for {
- tok, err := d.Read()
- if err != nil {
- return err
- }
- switch tok.Kind() {
- case text.MessageClose:
- return nil
- case text.Name:
- if err := d.skipValue(); err != nil {
- return err
- }
- }
- }
-}
diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/doc.go b/vendor/google.golang.org/protobuf/encoding/prototext/doc.go
deleted file mode 100644
index 162b4f98a..000000000
--- a/vendor/google.golang.org/protobuf/encoding/prototext/doc.go
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package prototext marshals and unmarshals protocol buffer messages as the
-// textproto format.
-package prototext
diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go b/vendor/google.golang.org/protobuf/encoding/prototext/encode.go
deleted file mode 100644
index 1f57e6610..000000000
--- a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go
+++ /dev/null
@@ -1,380 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package prototext
-
-import (
- "fmt"
- "strconv"
- "unicode/utf8"
-
- "google.golang.org/protobuf/encoding/protowire"
- "google.golang.org/protobuf/internal/encoding/messageset"
- "google.golang.org/protobuf/internal/encoding/text"
- "google.golang.org/protobuf/internal/errors"
- "google.golang.org/protobuf/internal/flags"
- "google.golang.org/protobuf/internal/genid"
- "google.golang.org/protobuf/internal/order"
- "google.golang.org/protobuf/internal/pragma"
- "google.golang.org/protobuf/internal/strs"
- "google.golang.org/protobuf/proto"
- "google.golang.org/protobuf/reflect/protoreflect"
- "google.golang.org/protobuf/reflect/protoregistry"
-)
-
-const defaultIndent = " "
-
-// Format formats the message as a multiline string.
-// This function is only intended for human consumption and ignores errors.
-// Do not depend on the output being stable. Its output will change across
-// different builds of your program, even when using the same version of the
-// protobuf module.
-func Format(m proto.Message) string {
- return MarshalOptions{Multiline: true}.Format(m)
-}
-
-// Marshal writes the given [proto.Message] in textproto format using default
-// options. Do not depend on the output being stable. Its output will change
-// across different builds of your program, even when using the same version of
-// the protobuf module.
-func Marshal(m proto.Message) ([]byte, error) {
- return MarshalOptions{}.Marshal(m)
-}
-
-// MarshalOptions is a configurable text format marshaler.
-type MarshalOptions struct {
- pragma.NoUnkeyedLiterals
-
- // Multiline specifies whether the marshaler should format the output in
- // indented-form with every textual element on a new line.
- // If Indent is an empty string, then an arbitrary indent is chosen.
- Multiline bool
-
- // Indent specifies the set of indentation characters to use in a multiline
- // formatted output such that every entry is preceded by Indent and
- // terminated by a newline. If non-empty, then Multiline is treated as true.
- // Indent can only be composed of space or tab characters.
- Indent string
-
- // EmitASCII specifies whether to format strings and bytes as ASCII only
- // as opposed to using UTF-8 encoding when possible.
- EmitASCII bool
-
- // allowInvalidUTF8 specifies whether to permit the encoding of strings
- // with invalid UTF-8. This is unexported as it is intended to only
- // be specified by the Format method.
- allowInvalidUTF8 bool
-
- // AllowPartial allows messages that have missing required fields to marshal
- // without returning an error. If AllowPartial is false (the default),
- // Marshal will return error if there are any missing required fields.
- AllowPartial bool
-
- // EmitUnknown specifies whether to emit unknown fields in the output.
- // If specified, the unmarshaler may be unable to parse the output.
- // The default is to exclude unknown fields.
- EmitUnknown bool
-
- // Resolver is used for looking up types when expanding google.protobuf.Any
- // messages. If nil, this defaults to using protoregistry.GlobalTypes.
- Resolver interface {
- protoregistry.ExtensionTypeResolver
- protoregistry.MessageTypeResolver
- }
-}
-
-// Format formats the message as a string.
-// This method is only intended for human consumption and ignores errors.
-// Do not depend on the output being stable. Its output will change across
-// different builds of your program, even when using the same version of the
-// protobuf module.
-func (o MarshalOptions) Format(m proto.Message) string {
- if m == nil || !m.ProtoReflect().IsValid() {
- return "<nil>" // invalid syntax, but okay since this is for debugging
- }
- o.allowInvalidUTF8 = true
- o.AllowPartial = true
- o.EmitUnknown = true
- b, _ := o.Marshal(m)
- return string(b)
-}
-
-// Marshal writes the given [proto.Message] in textproto format using options in
-// MarshalOptions object. Do not depend on the output being stable. Its output
-// will change across different builds of your program, even when using the
-// same version of the protobuf module.
-func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) {
- return o.marshal(nil, m)
-}
-
-// MarshalAppend appends the textproto format encoding of m to b,
-// returning the result.
-func (o MarshalOptions) MarshalAppend(b []byte, m proto.Message) ([]byte, error) {
- return o.marshal(b, m)
-}
-
-// marshal is a centralized function that all marshal operations go through.
-// For profiling purposes, avoid changing the name of this function or
-// introducing other code paths for marshal that do not go through this.
-func (o MarshalOptions) marshal(b []byte, m proto.Message) ([]byte, error) {
- var delims = [2]byte{'{', '}'}
-
- if o.Multiline && o.Indent == "" {
- o.Indent = defaultIndent
- }
- if o.Resolver == nil {
- o.Resolver = protoregistry.GlobalTypes
- }
-
- internalEnc, err := text.NewEncoder(b, o.Indent, delims, o.EmitASCII)
- if err != nil {
- return nil, err
- }
-
- // Treat nil message interface as an empty message,
- // in which case there is nothing to output.
- if m == nil {
- return b, nil
- }
-
- enc := encoder{internalEnc, o}
- err = enc.marshalMessage(m.ProtoReflect(), false)
- if err != nil {
- return nil, err
- }
- out := enc.Bytes()
- if len(o.Indent) > 0 && len(out) > 0 {
- out = append(out, '\n')
- }
- if o.AllowPartial {
- return out, nil
- }
- return out, proto.CheckInitialized(m)
-}
-
-type encoder struct {
- *text.Encoder
- opts MarshalOptions
-}
-
-// marshalMessage marshals the given protoreflect.Message.
-func (e encoder) marshalMessage(m protoreflect.Message, inclDelims bool) error {
- messageDesc := m.Descriptor()
- if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {
- return errors.New("no support for proto1 MessageSets")
- }
-
- if inclDelims {
- e.StartMessage()
- defer e.EndMessage()
- }
-
- // Handle Any expansion.
- if messageDesc.FullName() == genid.Any_message_fullname {
- if e.marshalAny(m) {
- return nil
- }
- // If unable to expand, continue on to marshal Any as a regular message.
- }
-
- // Marshal fields.
- var err error
- order.RangeFields(m, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
- if err = e.marshalField(fd.TextName(), v, fd); err != nil {
- return false
- }
- return true
- })
- if err != nil {
- return err
- }
-
- // Marshal unknown fields.
- if e.opts.EmitUnknown {
- e.marshalUnknown(m.GetUnknown())
- }
-
- return nil
-}
-
-// marshalField marshals the given field with protoreflect.Value.
-func (e encoder) marshalField(name string, val protoreflect.Value, fd protoreflect.FieldDescriptor) error {
- switch {
- case fd.IsList():
- return e.marshalList(name, val.List(), fd)
- case fd.IsMap():
- return e.marshalMap(name, val.Map(), fd)
- default:
- e.WriteName(name)
- return e.marshalSingular(val, fd)
- }
-}
-
-// marshalSingular marshals the given non-repeated field value. This includes
-// all scalar types, enums, messages, and groups.
-func (e encoder) marshalSingular(val protoreflect.Value, fd protoreflect.FieldDescriptor) error {
- kind := fd.Kind()
- switch kind {
- case protoreflect.BoolKind:
- e.WriteBool(val.Bool())
-
- case protoreflect.StringKind:
- s := val.String()
- if !e.opts.allowInvalidUTF8 && strs.EnforceUTF8(fd) && !utf8.ValidString(s) {
- return errors.InvalidUTF8(string(fd.FullName()))
- }
- e.WriteString(s)
-
- case protoreflect.Int32Kind, protoreflect.Int64Kind,
- protoreflect.Sint32Kind, protoreflect.Sint64Kind,
- protoreflect.Sfixed32Kind, protoreflect.Sfixed64Kind:
- e.WriteInt(val.Int())
-
- case protoreflect.Uint32Kind, protoreflect.Uint64Kind,
- protoreflect.Fixed32Kind, protoreflect.Fixed64Kind:
- e.WriteUint(val.Uint())
-
- case protoreflect.FloatKind:
- // Encoder.WriteFloat handles the special numbers NaN and infinites.
- e.WriteFloat(val.Float(), 32)
-
- case protoreflect.DoubleKind:
- // Encoder.WriteFloat handles the special numbers NaN and infinites.
- e.WriteFloat(val.Float(), 64)
-
- case protoreflect.BytesKind:
- e.WriteString(string(val.Bytes()))
-
- case protoreflect.EnumKind:
- num := val.Enum()
- if desc := fd.Enum().Values().ByNumber(num); desc != nil {
- e.WriteLiteral(string(desc.Name()))
- } else {
- // Use numeric value if there is no enum description.
- e.WriteInt(int64(num))
- }
-
- case protoreflect.MessageKind, protoreflect.GroupKind:
- return e.marshalMessage(val.Message(), true)
-
- default:
- panic(fmt.Sprintf("%v has unknown kind: %v", fd.FullName(), kind))
- }
- return nil
-}
-
-// marshalList marshals the given protoreflect.List as multiple name-value fields.
-func (e encoder) marshalList(name string, list protoreflect.List, fd protoreflect.FieldDescriptor) error {
- size := list.Len()
- for i := 0; i < size; i++ {
- e.WriteName(name)
- if err := e.marshalSingular(list.Get(i), fd); err != nil {
- return err
- }
- }
- return nil
-}
-
-// marshalMap marshals the given protoreflect.Map as multiple name-value fields.
-func (e encoder) marshalMap(name string, mmap protoreflect.Map, fd protoreflect.FieldDescriptor) error {
- var err error
- order.RangeEntries(mmap, order.GenericKeyOrder, func(key protoreflect.MapKey, val protoreflect.Value) bool {
- e.WriteName(name)
- e.StartMessage()
- defer e.EndMessage()
-
- e.WriteName(string(genid.MapEntry_Key_field_name))
- err = e.marshalSingular(key.Value(), fd.MapKey())
- if err != nil {
- return false
- }
-
- e.WriteName(string(genid.MapEntry_Value_field_name))
- err = e.marshalSingular(val, fd.MapValue())
- if err != nil {
- return false
- }
- return true
- })
- return err
-}
-
-// marshalUnknown parses the given []byte and marshals fields out.
-// This function assumes proper encoding in the given []byte.
-func (e encoder) marshalUnknown(b []byte) {
- const dec = 10
- const hex = 16
- for len(b) > 0 {
- num, wtype, n := protowire.ConsumeTag(b)
- b = b[n:]
- e.WriteName(strconv.FormatInt(int64(num), dec))
-
- switch wtype {
- case protowire.VarintType:
- var v uint64
- v, n = protowire.ConsumeVarint(b)
- e.WriteUint(v)
- case protowire.Fixed32Type:
- var v uint32
- v, n = protowire.ConsumeFixed32(b)
- e.WriteLiteral("0x" + strconv.FormatUint(uint64(v), hex))
- case protowire.Fixed64Type:
- var v uint64
- v, n = protowire.ConsumeFixed64(b)
- e.WriteLiteral("0x" + strconv.FormatUint(v, hex))
- case protowire.BytesType:
- var v []byte
- v, n = protowire.ConsumeBytes(b)
- e.WriteString(string(v))
- case protowire.StartGroupType:
- e.StartMessage()
- var v []byte
- v, n = protowire.ConsumeGroup(num, b)
- e.marshalUnknown(v)
- e.EndMessage()
- default:
- panic(fmt.Sprintf("prototext: error parsing unknown field wire type: %v", wtype))
- }
-
- b = b[n:]
- }
-}
-
-// marshalAny marshals the given google.protobuf.Any message in expanded form.
-// It returns true if it was able to marshal, else false.
-func (e encoder) marshalAny(any protoreflect.Message) bool {
- // Construct the embedded message.
- fds := any.Descriptor().Fields()
- fdType := fds.ByNumber(genid.Any_TypeUrl_field_number)
- typeURL := any.Get(fdType).String()
- mt, err := e.opts.Resolver.FindMessageByURL(typeURL)
- if err != nil {
- return false
- }
- m := mt.New().Interface()
-
- // Unmarshal bytes into embedded message.
- fdValue := fds.ByNumber(genid.Any_Value_field_number)
- value := any.Get(fdValue)
- err = proto.UnmarshalOptions{
- AllowPartial: true,
- Resolver: e.opts.Resolver,
- }.Unmarshal(value.Bytes(), m)
- if err != nil {
- return false
- }
-
- // Get current encoder position. If marshaling fails, reset encoder output
- // back to this position.
- pos := e.Snapshot()
-
- // Field name is the proto field name enclosed in [].
- e.WriteName("[" + typeURL + "]")
- err = e.marshalMessage(m.ProtoReflect(), true)
- if err != nil {
- e.Reset(pos)
- return false
- }
- return true
-}