diff --git a/modules/static/protocolbuffers/wellknowntypes/pre-sync.sh b/modules/static/protocolbuffers/wellknowntypes/pre-sync.sh index 44eaa190..eb4d93c6 100644 --- a/modules/static/protocolbuffers/wellknowntypes/pre-sync.sh +++ b/modules/static/protocolbuffers/wellknowntypes/pre-sync.sh @@ -1,2 +1,3 @@ cp ../java/core/src/main/resources/google/protobuf/java_features.proto google/protobuf cp ../go/google/protobuf/go_features.proto google/protobuf +cp ../csharp/google/protobuf/c_sharp_features.proto google/protobuf diff --git a/modules/static/protocolbuffers/wellknowntypes/rsync.incl b/modules/static/protocolbuffers/wellknowntypes/rsync.incl index e0edefdc..ac3604b9 100644 --- a/modules/static/protocolbuffers/wellknowntypes/rsync.incl +++ b/modules/static/protocolbuffers/wellknowntypes/rsync.incl @@ -5,13 +5,18 @@ + google/protobuf/compiler/plugin.proto + google/protobuf/any.proto + google/protobuf/api.proto ++ google/protobuf/c_sharp_features.proto + google/protobuf/cpp_features.proto ++ google/protobuf/cpp_file_options.proto ++ google/protobuf/cpp_options.proto + google/protobuf/descriptor.proto + google/protobuf/duration.proto + google/protobuf/empty.proto + google/protobuf/field_mask.proto + google/protobuf/go_features.proto + google/protobuf/java_features.proto ++ google/protobuf/json_enumvalue_options.proto ++ google/protobuf/json_options.proto + google/protobuf/source_context.proto + google/protobuf/struct.proto + google/protobuf/timestamp.proto diff --git a/modules/sync/protocolbuffers/wellknowntypes/cas/44d884979bac545c3e10785ee6ccc3a1583d1aad8abd5254784f151454d2a1c2aca34128ea3c5927dfcea8a38c66e45500176e6eabd99a693a69624be0ecf5f8 b/modules/sync/protocolbuffers/wellknowntypes/cas/44d884979bac545c3e10785ee6ccc3a1583d1aad8abd5254784f151454d2a1c2aca34128ea3c5927dfcea8a38c66e45500176e6eabd99a693a69624be0ecf5f8 deleted file mode 100644 index cb14b625..00000000 --- a/modules/sync/protocolbuffers/wellknowntypes/cas/44d884979bac545c3e10785ee6ccc3a1583d1aad8abd5254784f151454d2a1c2aca34128ea3c5927dfcea8a38c66e45500176e6eabd99a693a69624be0ecf5f8 +++ /dev/null @@ -1,111 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/protobuf/types/known/structpb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "StructProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; - -// Represents a JSON object. -// -// An unordered key-value map, intending to perfectly capture the semantics of a -// JSON object. This enables parsing any arbitrary JSON payload as a message -// field in ProtoJSON format. -// -// This follows RFC 8259 guidelines for interoperable JSON: notably this type -// cannot represent large Int64 values or `NaN`/`Infinity` numbers, -// since the JSON format generally does not support those values in its number -// type. -// -// If you do not intend to parse arbitrary JSON into your message, a custom -// typed message should be preferred instead of using this type. -message Struct { - // Unordered map of dynamically typed values. - map fields = 1; -} - -// Represents a JSON value. -// -// `Value` represents a dynamically typed value which can be either -// null, a number, a string, a boolean, a recursive struct value, or a -// list of values. A producer of value is expected to set one of these -// variants. Absence of any variant is an invalid state. -message Value { - // The kind of value. - oneof kind { - // Represents a JSON `null`. - NullValue null_value = 1; - - // Represents a JSON number. Must not be `NaN`, `Infinity` or - // `-Infinity`, since those are not supported in JSON. This also cannot - // represent large Int64 values, since JSON format generally does not - // support them in its number type. - double number_value = 2; - - // Represents a JSON string. - string string_value = 3; - - // Represents a JSON boolean (`true` or `false` literal in JSON). - bool bool_value = 4; - - // Represents a JSON object. - Struct struct_value = 5; - - // Represents a JSON array. - ListValue list_value = 6; - } -} - -// Represents a JSON `null`. -// -// `NullValue` is a sentinel, using an enum with only one value to represent -// the null value for the `Value` type union. -// -// A field of type `NullValue` with any value other than `0` is considered -// invalid. Most ProtoJSON serializers will emit a `Value` with a `null_value` -// set as a JSON `null` regardless of the integer value, and so will round trip -// to a `0` value. -enum NullValue { - // Null value. - NULL_VALUE = 0; -} - -// Represents a JSON array. -message ListValue { - // Repeated field of dynamically typed values. - repeated Value values = 1; -} diff --git a/modules/sync/protocolbuffers/wellknowntypes/cas/6925669e63fc96b0ad08fa1fdd3c6993c463c9993b60bae7e6e643ca0007b19d87b9d7344c02800e40be8454dfcb25a985a6ee5b28345c51c98c7d68b9b6bc66 b/modules/sync/protocolbuffers/wellknowntypes/cas/6925669e63fc96b0ad08fa1fdd3c6993c463c9993b60bae7e6e643ca0007b19d87b9d7344c02800e40be8454dfcb25a985a6ee5b28345c51c98c7d68b9b6bc66 deleted file mode 100644 index 35c06be8..00000000 --- a/modules/sync/protocolbuffers/wellknowntypes/cas/6925669e63fc96b0ad08fa1fdd3c6993c463c9993b60bae7e6e643ca0007b19d87b9d7344c02800e40be8454dfcb25a985a6ee5b28345c51c98c7d68b9b6bc66 +++ /dev/null @@ -1,1532 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google LLC. All rights reserved. -// -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file or at -// https://developers.google.com/open-source/licenses/bsd - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// The messages in this file describe the definitions found in .proto files. -// A valid .proto file can be translated directly to a FileDescriptorProto -// without any other information (e.g. without reading its imports). - -syntax = "proto2"; - -package google.protobuf; - -option go_package = "google.golang.org/protobuf/types/descriptorpb"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DescriptorProtos"; -option csharp_namespace = "Google.Protobuf.Reflection"; -option objc_class_prefix = "GPB"; -option cc_enable_arenas = true; - -// descriptor.proto must be optimized for speed because reflection-based -// algorithms don't work during bootstrapping. -option optimize_for = SPEED; - -// The protocol compiler can output a FileDescriptorSet containing the .proto -// files it parses. -message FileDescriptorSet { - repeated FileDescriptorProto file = 1; - - // Extensions for tooling. - extensions 536000000 [declaration = { - number: 536000000 - type: ".buf.descriptor.v1.FileDescriptorSetExtension" - full_name: ".buf.descriptor.v1.buf_file_descriptor_set_extension" - }]; -} - -// The full set of known editions. -enum Edition { - // A placeholder for an unknown edition value. - EDITION_UNKNOWN = 0; - - // A placeholder edition for specifying default behaviors *before* a feature - // was first introduced. This is effectively an "infinite past". - EDITION_LEGACY = 900; - - // Legacy syntax "editions". These pre-date editions, but behave much like - // distinct editions. These can't be used to specify the edition of proto - // files, but feature definitions must supply proto2/proto3 defaults for - // backwards compatibility. - EDITION_PROTO2 = 998; - EDITION_PROTO3 = 999; - - // Editions that have been released. The specific values are arbitrary and - // should not be depended on, but they will always be time-ordered for easy - // comparison. - EDITION_2023 = 1000; - EDITION_2024 = 1001; - EDITION_2026 = 1002; - - // A placeholder edition for developing and testing unscheduled features. - EDITION_UNSTABLE = 9999; - - // Placeholder editions for testing feature resolution. These should not be - // used or relied on outside of tests. - EDITION_1_TEST_ONLY = 1; - EDITION_2_TEST_ONLY = 2; - EDITION_99997_TEST_ONLY = 99997; - EDITION_99998_TEST_ONLY = 99998; - EDITION_99999_TEST_ONLY = 99999; - - // Placeholder for specifying unbounded edition support. This should only - // ever be used by plugins that can expect to never require any changes to - // support a new edition. - EDITION_MAX = 0x7FFFFFFF; -} - -// Describes a complete .proto file. -message FileDescriptorProto { - optional string name = 1; // file name, relative to root of source tree - optional string package = 2; // e.g. "foo", "foo.bar", etc. - - // Names of files imported by this file. - repeated string dependency = 3; - // Indexes of the public imported files in the dependency list above. - repeated int32 public_dependency = 10; - // Indexes of the weak imported files in the dependency list. - // For Google-internal migration only. Do not use. - repeated int32 weak_dependency = 11; - - // Names of files imported by this file purely for the purpose of providing - // option extensions. These are excluded from the dependency list above. - repeated string option_dependency = 15; - - // All top-level definitions in this file. - repeated DescriptorProto message_type = 4; - repeated EnumDescriptorProto enum_type = 5; - repeated ServiceDescriptorProto service = 6; - repeated FieldDescriptorProto extension = 7; - - optional FileOptions options = 8; - - // This field contains optional information about the original source code. - // You may safely remove this entire field without harming runtime - // functionality of the descriptors -- the information is needed only by - // development tools. - optional SourceCodeInfo source_code_info = 9; - - // The syntax of the proto file. - // The supported values are "proto2", "proto3", and "editions". - // - // If `edition` is present, this value must be "editions". - // WARNING: This field should only be used by protobuf plugins or special - // cases like the proto compiler. Other uses are discouraged and - // developers should rely on the protoreflect APIs for their client language. - optional string syntax = 12; - - // The edition of the proto file. - // WARNING: This field should only be used by protobuf plugins or special - // cases like the proto compiler. Other uses are discouraged and - // developers should rely on the protoreflect APIs for their client language. - optional Edition edition = 14; -} - -// Describes a message type. -message DescriptorProto { - optional string name = 1; - - repeated FieldDescriptorProto field = 2; - repeated FieldDescriptorProto extension = 6; - - repeated DescriptorProto nested_type = 3; - repeated EnumDescriptorProto enum_type = 4; - - message ExtensionRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Exclusive. - - optional ExtensionRangeOptions options = 3; - } - repeated ExtensionRange extension_range = 5; - - repeated OneofDescriptorProto oneof_decl = 8; - - optional MessageOptions options = 7; - - // Range of reserved tag numbers. Reserved tag numbers may not be used by - // fields or extension ranges in the same message. Reserved ranges may - // not overlap. - message ReservedRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Exclusive. - } - repeated ReservedRange reserved_range = 9; - // Reserved field names, which may not be used by fields in the same message. - // A given name may only be reserved once. - repeated string reserved_name = 10; - - // Support for `export` and `local` keywords on enums. - optional SymbolVisibility visibility = 11; -} - -message ExtensionRangeOptions { - // Range reserved for first-class custom options defined by the Protobuf - // team. User custom options must use the 1000+ range instead. - extensions 990 to 998; - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - message Declaration { - // The extension number declared within the extension range. - optional int32 number = 1; - - // The fully-qualified name of the extension field. There must be a leading - // dot in front of the full name. - optional string full_name = 2; - - // The fully-qualified type name of the extension field. Unlike - // Metadata.type, Declaration.type must have a leading dot for messages - // and enums. - optional string type = 3; - - // If true, indicates that the number is reserved in the extension range, - // and any extension field with the number will fail to compile. Set this - // when a declared extension field is deleted. - optional bool reserved = 5; - - // If true, indicates that the extension must be defined as repeated. - // Otherwise the extension must be defined as optional. - optional bool repeated = 6; - - reserved 4; // removed is_repeated - } - - // For external users: DO NOT USE. We are in the process of open sourcing - // extension declaration and executing internal cleanups before it can be - // used externally. - repeated Declaration declaration = 2 [retention = RETENTION_SOURCE]; - - // Any features defined in the specific edition. - optional FeatureSet features = 50; - - // The verification state of the extension range. - enum VerificationState { - // All the extensions of the range must be declared. - DECLARATION = 0; - UNVERIFIED = 1; - } - - // The verification state of the range. - // TODO: flip the default to DECLARATION once all empty ranges - // are marked as UNVERIFIED. - optional VerificationState verification = 3 - [default = UNVERIFIED, retention = RETENTION_SOURCE]; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -// Describes a field within a message. -message FieldDescriptorProto { - enum Type { - // 0 is reserved for errors. - // Order is weird for historical reasons. - TYPE_DOUBLE = 1; - TYPE_FLOAT = 2; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - // negative values are likely. - TYPE_INT64 = 3; - TYPE_UINT64 = 4; - // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - // negative values are likely. - TYPE_INT32 = 5; - TYPE_FIXED64 = 6; - TYPE_FIXED32 = 7; - TYPE_BOOL = 8; - TYPE_STRING = 9; - // Tag-delimited aggregate. - // Group type is deprecated and not supported after google.protobuf. However, Proto3 - // implementations should still be able to parse the group wire format and - // treat group fields as unknown fields. In Editions, the group wire format - // can be enabled via the `message_encoding` feature. - TYPE_GROUP = 10; - TYPE_MESSAGE = 11; // Length-delimited aggregate. - - // New in version 2. - TYPE_BYTES = 12; - TYPE_UINT32 = 13; - TYPE_ENUM = 14; - TYPE_SFIXED32 = 15; - TYPE_SFIXED64 = 16; - TYPE_SINT32 = 17; // Uses ZigZag encoding. - TYPE_SINT64 = 18; // Uses ZigZag encoding. - } - - enum Label { - // 0 is reserved for errors - LABEL_OPTIONAL = 1; - LABEL_REPEATED = 3; - // The required label is only allowed in google.protobuf. In proto3 and Editions - // it's explicitly prohibited. In Editions, the `field_presence` feature - // can be used to get this behavior. - LABEL_REQUIRED = 2; - } - - optional string name = 1; - optional int32 number = 3; - optional Label label = 4; - - // If type_name is set, this need not be set. If both this and type_name - // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - optional Type type = 5; - - // For message and enum types, this is the name of the type. If the name - // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - // rules are used to find the type (i.e. first the nested types within this - // message are searched, then within the parent, on up to the root - // namespace). - optional string type_name = 6; - - // For extensions, this is the name of the type being extended. It is - // resolved in the same manner as type_name. - optional string extendee = 2; - - // For numeric types, contains the original text representation of the value. - // For booleans, "true" or "false". - // For strings, contains the default text contents (not escaped in any way). - // For bytes, contains the C escaped value. All bytes >= 128 are escaped. - optional string default_value = 7; - - // If set, gives the index of a oneof in the containing type's oneof_decl - // list. This field is a member of that oneof. - optional int32 oneof_index = 9; - - // JSON name of this field. The value is set by protocol compiler. If the - // user has set a "json_name" option on this field, that option's value - // will be used. Otherwise, it's deduced from the field's name by converting - // it to camelCase. - optional string json_name = 10; - - optional FieldOptions options = 8; - - // If true, this is a proto3 "optional". When a proto3 field is optional, it - // tracks presence regardless of field type. - // - // When proto3_optional is true, this field must belong to a oneof to signal - // to old proto3 clients that presence is tracked for this field. This oneof - // is known as a "synthetic" oneof, and this field must be its sole member - // (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs - // exist in the descriptor only, and do not generate any API. Synthetic oneofs - // must be ordered after all "real" oneofs. - // - // For message fields, proto3_optional doesn't create any semantic change, - // since non-repeated message fields always track presence. However it still - // indicates the semantic detail of whether the user wrote "optional" or not. - // This can be useful for round-tripping the .proto file. For consistency we - // give message fields a synthetic oneof also, even though it is not required - // to track presence. This is especially important because the parser can't - // tell if a field is a message or an enum, so it must always create a - // synthetic oneof. - // - // Proto2 optional fields do not set this flag, because they already indicate - // optional with `LABEL_OPTIONAL`. - optional bool proto3_optional = 17; -} - -// Describes a oneof. -message OneofDescriptorProto { - optional string name = 1; - optional OneofOptions options = 2; -} - -// Describes an enum type. -message EnumDescriptorProto { - optional string name = 1; - - repeated EnumValueDescriptorProto value = 2; - - optional EnumOptions options = 3; - - // Range of reserved numeric values. Reserved values may not be used by - // entries in the same enum. Reserved ranges may not overlap. - // - // Note that this is distinct from DescriptorProto.ReservedRange in that it - // is inclusive such that it can appropriately represent the entire int32 - // domain. - message EnumReservedRange { - optional int32 start = 1; // Inclusive. - optional int32 end = 2; // Inclusive. - } - - // Range of reserved numeric values. Reserved numeric values may not be used - // by enum values in the same enum declaration. Reserved ranges may not - // overlap. - repeated EnumReservedRange reserved_range = 4; - - // Reserved enum value names, which may not be reused. A given name may only - // be reserved once. - repeated string reserved_name = 5; - - // Support for `export` and `local` keywords on enums. - optional SymbolVisibility visibility = 6; -} - -// Describes a value within an enum. -message EnumValueDescriptorProto { - optional string name = 1; - optional int32 number = 2; - - optional EnumValueOptions options = 3; -} - -// Describes a service. -message ServiceDescriptorProto { - optional string name = 1; - repeated MethodDescriptorProto method = 2; - - optional ServiceOptions options = 3; - - reserved 4; - reserved "stream"; -} - -// Describes a method of a service. -message MethodDescriptorProto { - optional string name = 1; - - // Input and output type names. These are resolved in the same way as - // FieldDescriptorProto.type_name, but must refer to a message type. - optional string input_type = 2; - optional string output_type = 3; - - optional MethodOptions options = 4; - - // Identifies if client streams multiple client messages - optional bool client_streaming = 5 [default = false]; - // Identifies if server streams multiple server messages - optional bool server_streaming = 6 [default = false]; -} - -// =================================================================== -// Options - -// Each of the definitions above may have "options" attached. These are -// just annotations which may cause code to be generated slightly differently -// or may contain hints for code that manipulates protocol messages. -// -// Clients may define custom options as extensions of the *Options messages. -// These extensions may not yet be known at parsing time, so the parser cannot -// store the values in them. Instead it stores them in a field in the *Options -// message called uninterpreted_option. This field must have the same name -// across all *Options messages. We then use this field to populate the -// extensions when we build a descriptor, at which point all protos have been -// parsed and so all extensions are known. -// -// Extension numbers for custom options may be chosen as follows: -// * For options which will only be used within a single application or -// organization, or for experimental options, use field numbers 50000 -// through 99999. It is up to you to ensure that you do not use the -// same number for multiple options. -// * For options which will be published and used publicly by multiple -// independent entities, e-mail protobuf-global-extension-registry@google.com -// to reserve extension numbers. Simply provide your project name (e.g. -// Objective-C plugin) and your project website (if available) -- there's no -// need to explain how you intend to use them. Usually you only need one -// extension number. You can declare multiple options with only one extension -// number by putting them in a sub-message. See the Custom Options section of -// the docs for examples: -// https://developers.google.com/protocol-buffers/docs/proto#options -// If this turns out to be popular, a web service will be set up -// to automatically assign option numbers. - -message FileOptions { - - // Sets the Java package where classes generated from this .proto will be - // placed. By default, the proto package is used, but this is often - // inappropriate because proto packages do not normally start with backwards - // domain names. - optional string java_package = 1; - - // Controls the name of the wrapper Java class generated for the .proto file. - // That class will always contain the .proto file's getDescriptor() method as - // well as any top-level extensions defined in the .proto file. - // If java_multiple_files is disabled, then all the other classes from the - // .proto file will be nested inside the single wrapper outer class. - optional string java_outer_classname = 8; - - // If enabled, then the Java code generator will generate a separate .java - // file for each top-level message, enum, and service defined in the .proto - // file. Thus, these types will *not* be nested inside the wrapper class - // named by java_outer_classname. However, the wrapper class will still be - // generated to contain the file's getDescriptor() method as well as any - // top-level extensions defined in the file. - optional bool java_multiple_files = 10 [ - default = false, - feature_support = { - edition_introduced: EDITION_PROTO2 - edition_removed: EDITION_2024 - removal_error: "This behavior is enabled by default in editions 2024 and above. " - "To disable it, you can set `features.(pb.java).nest_in_file_class = YES` " - "on individual messages, enums, or services." - - } - ]; - - // This option does nothing. - optional bool java_generate_equals_and_hash = 20 [deprecated=true]; - - // A proto2 file can set this to true to opt in to UTF-8 checking for Java, - // which will throw an exception if invalid UTF-8 is parsed from the wire or - // assigned to a string field. - // - // TODO: clarify exactly what kinds of field types this option - // applies to, and update these docs accordingly. - // - // Proto3 files already perform these checks. Setting the option explicitly to - // false has no effect: it cannot be used to opt proto3 files out of UTF-8 - // checks. - optional bool java_string_check_utf8 = 27 [default = false]; - - // Generated classes can be optimized for speed or code size. - enum OptimizeMode { - SPEED = 1; // Generate complete code for parsing, serialization, - // etc. - CODE_SIZE = 2; // Use ReflectionOps to implement these methods. - LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime. - } - optional OptimizeMode optimize_for = 9 [default = SPEED]; - - // Sets the Go package where structs generated from this .proto will be - // placed. If omitted, the Go package will be derived from the following: - // - The basename of the package import path, if provided. - // - Otherwise, the package statement in the .proto file, if present. - // - Otherwise, the basename of the .proto file, without extension. - optional string go_package = 11; - - // Should generic services be generated in each language? "Generic" services - // are not specific to any particular RPC system. They are generated by the - // main code generators in each language (without additional plugins). - // Generic services were the only kind of service generation supported by - // early versions of google.protobuf. - // - // Generic services are now considered deprecated in favor of using plugins - // that generate code specific to your particular RPC system. Therefore, - // these default to false. Old code which depends on generic services should - // explicitly set them to true. - optional bool cc_generic_services = 16 [default = false]; - optional bool java_generic_services = 17 [default = false]; - optional bool py_generic_services = 18 [default = false]; - reserved 42; // removed php_generic_services - reserved "php_generic_services"; - - // Is this file deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for everything in the file, or it will be completely ignored; in the very - // least, this is a formalization for deprecating files. - optional bool deprecated = 23 [default = false]; - - // Enables the use of arenas for the proto messages in this file. This applies - // only to generated classes for C++. - optional bool cc_enable_arenas = 31 [ - default = true, - feature_support = { - edition_removed: EDITION_2026 - removal_error: "cc_enable_arenas is enabled by default in every edition and overrides are ignored." - "This option is removed in editions 2026 and above." - } - ]; - - // Sets the objective c class prefix which is prepended to all objective c - // generated classes from this .proto. There is no default. - optional string objc_class_prefix = 36; - - // Namespace for generated classes; defaults to the package. - optional string csharp_namespace = 37; - - // By default Swift generators will take the proto package and CamelCase it - // replacing '.' with underscore and use that to prefix the types/symbols - // defined. When this options is provided, they will use this value instead - // to prefix the types/symbols defined. - optional string swift_prefix = 39; - - // Sets the php class prefix which is prepended to all php generated classes - // from this .proto. Default is empty. - optional string php_class_prefix = 40; - - // Use this option to change the namespace of php generated classes. Default - // is empty. When this option is empty, the package name will be used for - // determining the namespace. - optional string php_namespace = 41; - - // Use this option to change the namespace of php generated metadata classes. - // Default is empty. When this option is empty, the proto file name will be - // used for determining the namespace. - optional string php_metadata_namespace = 44; - - // Use this option to change the package of ruby generated classes. Default - // is empty. When this option is not set, the package name will be used for - // determining the ruby package. - optional string ruby_package = 45; - - // Any features defined in the specific edition. - // WARNING: This field should only be used by protobuf plugins or special - // cases like the proto compiler. Other uses are discouraged and - // developers should rely on the protoreflect APIs for their client language. - optional FeatureSet features = 50; - - // Range reserved for first-class custom options defined by the Protobuf - // team. User custom options must use the 1000+ range instead. - extensions 990 to 998 [declaration = { - number: 990, - full_name: ".pb.file.cpp", - type: ".pb.file.CppFileOptions" - }]; - - // The parser stores options it doesn't recognize here. - // See the documentation for the "Options" section above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. - // See the documentation for the "Options" section above. - extensions 1000 to max; - - reserved 38; -} - -message MessageOptions { - // Set true to use the old proto1 MessageSet wire format for extensions. - // This is provided for backwards-compatibility with the MessageSet wire - // format. You should not use this for any other reason: It's less - // efficient, has fewer features, and is more complicated. - // - // The message must be defined exactly as follows: - // message Foo { - // option message_set_wire_format = true; - // extensions 4 to max; - // } - // Note that the message cannot have any defined fields; MessageSets only - // have extensions. - // - // All extensions of your type must be singular messages; e.g. they cannot - // be int32s, enums, or repeated messages. - // - // Because this is an option, the above two restrictions are not enforced by - // the protocol compiler. - optional bool message_set_wire_format = 1 [default = false]; - - // Disables the generation of the standard "descriptor()" accessor, which can - // conflict with a field of the same name. This is meant to make migration - // from proto1 easier; new code should avoid fields named "descriptor". - optional bool no_standard_descriptor_accessor = 2 [default = false]; - - // Is this message deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the message, or it will be completely ignored; in the very least, - // this is a formalization for deprecating messages. - optional bool deprecated = 3 [default = false]; - - reserved 4, 5, 6; - - // Whether the message is an automatically generated map entry type for the - // maps field. - // - // For maps fields: - // map map_field = 1; - // The parsed descriptor looks like: - // message MapFieldEntry { - // option map_entry = true; - // optional KeyType key = 1; - // optional ValueType value = 2; - // } - // repeated MapFieldEntry map_field = 1; - // - // Implementations may choose not to generate the map_entry=true message, but - // use a native map in the target language to hold the keys and values. - // The reflection APIs in such implementations still need to work as - // if the field is a repeated message field. - // - // NOTE: Do not set the option in .proto files. Always use the maps syntax - // instead. The option should only be implicitly set by the proto compiler - // parser. - optional bool map_entry = 7; - - reserved 8; // javalite_serializable - reserved 9; // javanano_as_lite - - // Enable the legacy handling of JSON field name conflicts. This lowercases - // and strips underscored from the fields before comparison in proto3 only. - // The new behavior takes `json_name` into account and applies to proto2 as - // well. - // - // This should only be used as a temporary measure against broken builds due - // to the change in behavior for JSON field name conflicts. - // - // TODO This is legacy behavior we plan to remove once downstream - // teams have had time to migrate. - optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true]; - - // Any features defined in the specific edition. - // WARNING: This field should only be used by protobuf plugins or special - // cases like the proto compiler. Other uses are discouraged and - // developers should rely on the protoreflect APIs for their client language. - optional FeatureSet features = 12; - - // Range reserved for first-class custom options defined by the Protobuf - // team. User custom options must use the 1000+ range instead. - extensions 990 to 998; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message FieldOptions { - // NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead. - // The ctype option instructs the C++ code generator to use a different - // representation of the field than it normally would. See the specific - // options below. This option is only implemented to support use of - // [ctype=CORD] and [ctype=STRING] (the default) on non-repeated fields of - // type "bytes" in the open source release. - // TODO: make ctype actually deprecated. - optional CType ctype = 1 [/*deprecated = true,*/ default = STRING]; - enum CType { - // Default mode. - STRING = 0; - - // The option [ctype=CORD] may be applied to a non-repeated field of type - // "bytes". It indicates that in C++, the data should be stored in a Cord - // instead of a string. For very large strings, this may reduce memory - // fragmentation. It may also allow better performance when parsing from a - // Cord, or when parsing with aliasing enabled, as the parsed Cord may then - // alias the original buffer. - CORD = 1; - - STRING_PIECE = 2; - } - // The packed option can be enabled for repeated primitive fields to enable - // a more efficient representation on the wire. Rather than repeatedly - // writing the tag and type for each element, the entire array is encoded as - // a single length-delimited blob. In proto3, only explicit setting it to - // false will avoid using packed encoding. This option is prohibited in - // Editions, but the `repeated_field_encoding` feature can be used to control - // the behavior. - optional bool packed = 2; - - // The jstype option determines the JavaScript type used for values of the - // field. The option is permitted only for 64 bit integral and fixed types - // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING - // is represented as JavaScript string, which avoids loss of precision that - // can happen when a large value is converted to a floating point JavaScript. - // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to - // use the JavaScript "number" type. The behavior of the default option - // JS_NORMAL is implementation dependent. - // - // This option is an enum to permit additional types to be added, e.g. - // goog.math.Integer. - optional JSType jstype = 6 [default = JS_NORMAL]; - enum JSType { - // Use the default type. - JS_NORMAL = 0; - - // Use JavaScript strings. - JS_STRING = 1; - - // Use JavaScript numbers. - JS_NUMBER = 2; - } - - // Should this field be parsed lazily? Lazy applies only to message-type - // fields. It means that when the outer message is initially parsed, the - // inner message's contents will not be parsed but instead stored in encoded - // form. The inner message will actually be parsed when it is first accessed. - // - // This is only a hint. Implementations are free to choose whether to use - // eager or lazy parsing regardless of the value of this option. However, - // setting this option true suggests that the protocol author believes that - // using lazy parsing on this field is worth the additional bookkeeping - // overhead typically needed to implement it. - // - // This option does not affect the public interface of any generated code; - // all method signatures remain the same. Furthermore, thread-safety of the - // interface is not affected by this option; const methods remain safe to - // call from multiple threads concurrently, while non-const methods continue - // to require exclusive access. - // - // Note that lazy message fields are still eagerly verified to check - // ill-formed wireformat or missing required fields. Calling IsInitialized() - // on the outer message would fail if the inner message has missing required - // fields. Failed verification would result in parsing failure (except when - // uninitialized messages are acceptable). - optional bool lazy = 5 [default = false]; - - // unverified_lazy does no correctness checks on the byte stream. This should - // only be used where lazy with verification is prohibitive for performance - // reasons. - optional bool unverified_lazy = 15 [default = false]; - - // Is this field deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for accessors, or it will be completely ignored; in the very least, this - // is a formalization for deprecating fields. - optional bool deprecated = 3 [default = false]; - - // DEPRECATED. DO NOT USE! - // For Google-internal migration only. Do not use. - optional bool weak = 10 [default = false, deprecated = true]; - - // Indicate that the field value should not be printed out when using debug - // formats, e.g. when the field contains sensitive credentials. - optional bool debug_redact = 16 [default = false]; - - // If set to RETENTION_SOURCE, the option will be omitted from the binary. - enum OptionRetention { - RETENTION_UNKNOWN = 0; - RETENTION_RUNTIME = 1; - RETENTION_SOURCE = 2; - } - - optional OptionRetention retention = 17; - - // This indicates the types of entities that the field may apply to when used - // as an option. If it is unset, then the field may be freely used as an - // option on any kind of entity. - enum OptionTargetType { - TARGET_TYPE_UNKNOWN = 0; - TARGET_TYPE_FILE = 1; - TARGET_TYPE_EXTENSION_RANGE = 2; - TARGET_TYPE_MESSAGE = 3; - TARGET_TYPE_FIELD = 4; - TARGET_TYPE_ONEOF = 5; - TARGET_TYPE_ENUM = 6; - TARGET_TYPE_ENUM_ENTRY = 7; - TARGET_TYPE_SERVICE = 8; - TARGET_TYPE_METHOD = 9; - } - - repeated OptionTargetType targets = 19; - - message EditionDefault { - optional Edition edition = 3; - optional string value = 2; // Textproto value. - } - repeated EditionDefault edition_defaults = 20; - - // Any features defined in the specific edition. - // WARNING: This field should only be used by protobuf plugins or special - // cases like the proto compiler. Other uses are discouraged and - // developers should rely on the protoreflect APIs for their client language. - optional FeatureSet features = 21; - - // Information about the support window of a feature. - message FeatureSupport { - // The edition that this feature was first available in. In editions - // earlier than this one, the default assigned to EDITION_LEGACY will be - // used, and proto files will not be able to override it. - optional Edition edition_introduced = 1; - - // The edition this feature becomes deprecated in. Using this after this - // edition may trigger warnings. - optional Edition edition_deprecated = 2; - - // The deprecation warning text if this feature is used after the edition it - // was marked deprecated in. - optional string deprecation_warning = 3; - - // The edition this feature is no longer available in. In editions after - // this one, the last default assigned will be used, and proto files will - // not be able to override it. - optional Edition edition_removed = 4; - - // The removal error text if this feature is used after the edition it was - // removed in. - optional string removal_error = 5; - } - optional FeatureSupport feature_support = 22; - - // Range reserved for first-class custom options defined by the Protobuf - // team. User custom options must use the 1000+ range instead. - extensions 990 to 998; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; - - reserved 4; // removed jtype - reserved 18; // reserve target, target_obsolete_do_not_use -} - -message OneofOptions { - // Any features defined in the specific edition. - // WARNING: This field should only be used by protobuf plugins or special - // cases like the proto compiler. Other uses are discouraged and - // developers should rely on the protoreflect APIs for their client language. - optional FeatureSet features = 1; - - // Range reserved for first-class custom options defined by the Protobuf - // team. User custom options must use the 1000+ range instead. - extensions 990 to 998; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumOptions { - - // Set this option to true to allow mapping different tag names to the same - // value. - optional bool allow_alias = 2; - - // Is this enum deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum, or it will be completely ignored; in the very least, this - // is a formalization for deprecating enums. - optional bool deprecated = 3 [default = false]; - - reserved 5; // javanano_as_lite - - // Enable the legacy handling of JSON field name conflicts. This lowercases - // and strips underscored from the fields before comparison in proto3 only. - // The new behavior takes `json_name` into account and applies to proto2 as - // well. - // TODO Remove this legacy behavior once downstream teams have - // had time to migrate. - optional bool deprecated_legacy_json_field_conflicts = 6 [deprecated = true]; - - // Any features defined in the specific edition. - // WARNING: This field should only be used by protobuf plugins or special - // cases like the proto compiler. Other uses are discouraged and - // developers should rely on the protoreflect APIs for their client language. - optional FeatureSet features = 7; - - // Range reserved for first-class custom options defined by the Protobuf - // team. User custom options must use the 1000+ range instead. - extensions 990 to 998; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message EnumValueOptions { - // Is this enum value deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the enum value, or it will be completely ignored; in the very least, - // this is a formalization for deprecating enum values. - optional bool deprecated = 1 [default = false]; - - // Any features defined in the specific edition. - // WARNING: This field should only be used by protobuf plugins or special - // cases like the proto compiler. Other uses are discouraged and - // developers should rely on the protoreflect APIs for their client language. - optional FeatureSet features = 2; - - // Indicate that fields annotated with this enum value should not be printed - // out when using debug formats, e.g. when the field contains sensitive - // credentials. - optional bool debug_redact = 3 [default = false]; - - // Information about the support window of a feature value. - optional FieldOptions.FeatureSupport feature_support = 4; - - // Range reserved for first-class extension options defined by the Protobuf - // team. Custom options must use the 1000+ range instead. - extensions 990 to 998 [declaration = { - number: 998, - full_name: ".pb.enumvalue.json", - type: ".pb.enumvalue.JsonEnumValueOptions" - }]; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message ServiceOptions { - - // Any features defined in the specific edition. - // WARNING: This field should only be used by protobuf plugins or special - // cases like the proto compiler. Other uses are discouraged and - // developers should rely on the protoreflect APIs for their client language. - optional FeatureSet features = 34; - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // Is this service deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the service, or it will be completely ignored; in the very least, - // this is a formalization for deprecating services. - optional bool deprecated = 33 [default = false]; - - // Range reserved for first-class custom options defined by the Protobuf - // team. User custom options must use the 1000+ range instead. - extensions 990 to 998; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -message MethodOptions { - - // Note: Field numbers 1 through 32 are reserved for Google's internal RPC - // framework. We apologize for hoarding these numbers to ourselves, but - // we were already using them long before we decided to release Protocol - // Buffers. - - // Is this method deprecated? - // Depending on the target platform, this can emit Deprecated annotations - // for the method, or it will be completely ignored; in the very least, - // this is a formalization for deprecating methods. - optional bool deprecated = 33 [default = false]; - - // Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - // or neither? HTTP based RPC implementation may choose GET verb for safe - // methods, and PUT verb for idempotent methods instead of the default POST. - enum IdempotencyLevel { - IDEMPOTENCY_UNKNOWN = 0; - NO_SIDE_EFFECTS = 1; // implies idempotent - IDEMPOTENT = 2; // idempotent, but may have side effects - } - optional IdempotencyLevel idempotency_level = 34 - [default = IDEMPOTENCY_UNKNOWN]; - - // Any features defined in the specific edition. - // WARNING: This field should only be used by protobuf plugins or special - // cases like the proto compiler. Other uses are discouraged and - // developers should rely on the protoreflect APIs for their client language. - optional FeatureSet features = 35; - - // Range reserved for first-class custom options defined by the Protobuf - // team. User custom options must use the 1000+ range instead. - extensions 990 to 998; - - // The parser stores options it doesn't recognize here. See above. - repeated UninterpretedOption uninterpreted_option = 999; - - // Clients can define custom options in extensions of this message. See above. - extensions 1000 to max; -} - -// A message representing a option the parser does not recognize. This only -// appears in options protos created by the compiler::Parser class. -// DescriptorPool resolves these when building Descriptor objects. Therefore, -// options protos in descriptor objects (e.g. returned by Descriptor::options(), -// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions -// in them. -message UninterpretedOption { - // The name of the uninterpreted option. Each string represents a segment in - // a dot-separated name. is_extension is true iff a segment represents an - // extension (denoted with parentheses in options specs in .proto files). - // E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents - // "foo.(bar.baz).moo". - message NamePart { - required string name_part = 1; - required bool is_extension = 2; - } - repeated NamePart name = 2; - - // The value of the uninterpreted option, in whatever type the tokenizer - // identified it as during parsing. Exactly one of these should be set. - optional string identifier_value = 3; - optional uint64 positive_int_value = 4; - optional int64 negative_int_value = 5; - optional double double_value = 6; - optional bytes string_value = 7; - optional string aggregate_value = 8; -} - -// =================================================================== -// Features - -// TODO Enums in C++ gencode (and potentially other languages) are -// not well scoped. This means that each of the feature enums below can clash -// with each other. The short names we've chosen maximize call-site -// readability, but leave us very open to this scenario. A future feature will -// be designed and implemented to handle this, hopefully before we ever hit a -// conflict here. -message FeatureSet { - enum FieldPresence { - FIELD_PRESENCE_UNKNOWN = 0; - EXPLICIT = 1; - IMPLICIT = 2; - LEGACY_REQUIRED = 3; - } - optional FieldPresence field_presence = 1 [ - retention = RETENTION_RUNTIME, - targets = TARGET_TYPE_FIELD, - targets = TARGET_TYPE_FILE, - feature_support = { - edition_introduced: EDITION_2023, - }, - edition_defaults = { edition: EDITION_LEGACY, value: "EXPLICIT" }, - edition_defaults = { edition: EDITION_PROTO3, value: "IMPLICIT" }, - edition_defaults = { edition: EDITION_2023, value: "EXPLICIT" } - ]; - - enum EnumType { - ENUM_TYPE_UNKNOWN = 0; - OPEN = 1; - CLOSED = 2; - } - optional EnumType enum_type = 2 [ - retention = RETENTION_RUNTIME, - targets = TARGET_TYPE_ENUM, - targets = TARGET_TYPE_FILE, - feature_support = { - edition_introduced: EDITION_2023, - }, - edition_defaults = { edition: EDITION_LEGACY, value: "CLOSED" }, - edition_defaults = { edition: EDITION_PROTO3, value: "OPEN" } - ]; - - enum RepeatedFieldEncoding { - REPEATED_FIELD_ENCODING_UNKNOWN = 0; - PACKED = 1; - EXPANDED = 2; - } - optional RepeatedFieldEncoding repeated_field_encoding = 3 [ - retention = RETENTION_RUNTIME, - targets = TARGET_TYPE_FIELD, - targets = TARGET_TYPE_FILE, - feature_support = { - edition_introduced: EDITION_2023, - }, - edition_defaults = { edition: EDITION_LEGACY, value: "EXPANDED" }, - edition_defaults = { edition: EDITION_PROTO3, value: "PACKED" } - ]; - - enum Utf8Validation { - UTF8_VALIDATION_UNKNOWN = 0; - VERIFY = 2; - NONE = 3; - reserved 1; - } - optional Utf8Validation utf8_validation = 4 [ - retention = RETENTION_RUNTIME, - targets = TARGET_TYPE_FIELD, - targets = TARGET_TYPE_FILE, - feature_support = { - edition_introduced: EDITION_2023, - }, - edition_defaults = { edition: EDITION_LEGACY, value: "NONE" }, - edition_defaults = { edition: EDITION_PROTO3, value: "VERIFY" } - ]; - - enum MessageEncoding { - MESSAGE_ENCODING_UNKNOWN = 0; - LENGTH_PREFIXED = 1; - DELIMITED = 2; - } - optional MessageEncoding message_encoding = 5 [ - retention = RETENTION_RUNTIME, - targets = TARGET_TYPE_FIELD, - targets = TARGET_TYPE_FILE, - feature_support = { - edition_introduced: EDITION_2023, - }, - edition_defaults = { edition: EDITION_LEGACY, value: "LENGTH_PREFIXED" } - ]; - - enum JsonFormat { - JSON_FORMAT_UNKNOWN = 0; - ALLOW = 1; - LEGACY_BEST_EFFORT = 2; - } - optional JsonFormat json_format = 6 [ - retention = RETENTION_RUNTIME, - targets = TARGET_TYPE_MESSAGE, - targets = TARGET_TYPE_ENUM, - targets = TARGET_TYPE_FILE, - feature_support = { - edition_introduced: EDITION_2023, - }, - edition_defaults = { edition: EDITION_LEGACY, value: "LEGACY_BEST_EFFORT" }, - edition_defaults = { edition: EDITION_PROTO3, value: "ALLOW" } - ]; - - enum EnforceNamingStyle { - ENFORCE_NAMING_STYLE_UNKNOWN = 0; - STYLE2024 = 1; - STYLE_LEGACY = 2; - STYLE2026 = 3; - } - optional EnforceNamingStyle enforce_naming_style = 7 [ - retention = RETENTION_SOURCE, - targets = TARGET_TYPE_FILE, - targets = TARGET_TYPE_EXTENSION_RANGE, - targets = TARGET_TYPE_MESSAGE, - targets = TARGET_TYPE_FIELD, - targets = TARGET_TYPE_ONEOF, - targets = TARGET_TYPE_ENUM, - targets = TARGET_TYPE_ENUM_ENTRY, - targets = TARGET_TYPE_SERVICE, - targets = TARGET_TYPE_METHOD, - feature_support = { - edition_introduced: EDITION_2024, - }, - edition_defaults = { edition: EDITION_LEGACY, value: "STYLE_LEGACY" }, - edition_defaults = { edition: EDITION_2024, value: "STYLE2024" }, - edition_defaults = { edition: EDITION_2026, value: "STYLE2026" } - ]; - - message VisibilityFeature { - enum DefaultSymbolVisibility { - DEFAULT_SYMBOL_VISIBILITY_UNKNOWN = 0; - - // Default pre-EDITION_2024, all UNSET visibility are export. - EXPORT_ALL = 1; - - // All top-level symbols default to export, nested default to local. - EXPORT_TOP_LEVEL = 2; - - // All symbols default to local. - LOCAL_ALL = 3; - - // All symbols local by default. Nested types cannot be exported. - // With special case caveat for message { enum {} reserved 1 to max; } - // This is the recommended setting for new protos. - STRICT = 4; - } - reserved 1 to max; - } - optional VisibilityFeature.DefaultSymbolVisibility default_symbol_visibility = - 8 [ - retention = RETENTION_SOURCE, - targets = TARGET_TYPE_FILE, - feature_support = { - edition_introduced: EDITION_2024, - }, - edition_defaults = { edition: EDITION_LEGACY, value: "EXPORT_ALL" }, - edition_defaults = { edition: EDITION_2024, value: "EXPORT_TOP_LEVEL" }, - edition_defaults = { edition: EDITION_2026, value: "STRICT" } - ]; - - message ProtoLimitsFeature { - enum EnforceProtoLimits { - PROTO_LIMITS_UNKNOWN = 0; - - // Default pre-EDITION_2026: there are no limit enforcement at the protoc - // level. Practical limits still exist, but they will tend to fail while - // compiling protoc-generated code, and these limits tend to be language - // or toolchain specific. - LEGACY_NO_EXPLICIT_LIMITS = 1; - - // A set of limits enforced by Edition 2026 by default. For a detailed - // list of all the limits please consult the Edition 2026 documentation. - PROTO_LIMITS2026 = 2; - } - } - optional ProtoLimitsFeature.EnforceProtoLimits enforce_proto_limits = 9 [ - retention = RETENTION_SOURCE, - targets = TARGET_TYPE_ENUM, - targets = TARGET_TYPE_MESSAGE, - targets = TARGET_TYPE_FIELD, - targets = TARGET_TYPE_ONEOF, - feature_support = { - edition_introduced: EDITION_2026, - }, - edition_defaults = { - edition: EDITION_LEGACY, - value: "LEGACY_NO_EXPLICIT_LIMITS" - }, - edition_defaults = { edition: EDITION_2026, value: "PROTO_LIMITS2026" } - ]; - - reserved 999; - - extensions 1000 to 9994 [ - declaration = { - number: 1000, - full_name: ".pb.cpp", - type: ".pb.CppFeatures" - }, - declaration = { - number: 1001, - full_name: ".pb.java", - type: ".pb.JavaFeatures" - }, - declaration = { number: 1002, full_name: ".pb.go", type: ".pb.GoFeatures" }, - declaration = { - number: 1003, - full_name: ".pb.python", - type: ".pb.PythonFeatures" - }, - declaration = { - number: 1004, - full_name: ".pb.csharp", - type: ".pb.CSharpFeatures" - }, - declaration = { - number: 1100, - full_name: ".imp.impress_feature_set", - type: ".imp.ImpressFeatureSet" - }, - declaration = { - number: 9989, - full_name: ".pb.java_mutable", - type: ".pb.JavaMutableFeatures" - }, - declaration = { - number: 9990, - full_name: ".pb.proto1", - type: ".pb.Proto1Features" - } - ]; - - extensions 9995 to 9999; // For internal testing - extensions 10000; // for https://github.com/bufbuild/protobuf-es -} - -// A compiled specification for the defaults of a set of features. These -// messages are generated from FeatureSet extensions and can be used to seed -// feature resolution. The resolution with this object becomes a simple search -// for the closest matching edition, followed by proto merges. -message FeatureSetDefaults { - // A map from every known edition with a unique set of defaults to its - // defaults. Not all editions may be contained here. For a given edition, - // the defaults at the closest matching edition ordered at or before it should - // be used. This field must be in strict ascending order by edition. - message FeatureSetEditionDefault { - optional Edition edition = 3; - - // Defaults of features that can be overridden in this edition. - optional FeatureSet overridable_features = 4; - - // Defaults of features that can't be overridden in this edition. - optional FeatureSet fixed_features = 5; - - reserved 1, 2; - reserved "features"; - } - repeated FeatureSetEditionDefault defaults = 1; - - // The minimum supported edition (inclusive) when this was constructed. - // Editions before this will not have defaults. - optional Edition minimum_edition = 4; - - // The maximum known edition (inclusive) when this was constructed. Editions - // after this will not have reliable defaults. - optional Edition maximum_edition = 5; -} - -// =================================================================== -// Optional source code info - -// Encapsulates information about the original source file from which a -// FileDescriptorProto was generated. -message SourceCodeInfo { - // A Location identifies a piece of source code in a .proto file which - // corresponds to a particular definition. This information is intended - // to be useful to IDEs, code indexers, documentation generators, and similar - // tools. - // - // For example, say we have a file like: - // message Foo { - // optional string foo = 1; - // } - // Let's look at just the field definition: - // optional string foo = 1; - // ^ ^^ ^^ ^ ^^^ - // a bc de f ghi - // We have the following locations: - // span path represents - // [a,i) [ 4, 0, 2, 0 ] The whole field definition. - // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - // [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - // [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - // - // Notes: - // - A location may refer to a repeated field itself (i.e. not to any - // particular index within it). This is used whenever a set of elements are - // logically enclosed in a single code segment. For example, an entire - // extend block (possibly containing multiple extension definitions) will - // have an outer location whose path refers to the "extensions" repeated - // field without an index. - // - Multiple locations may have the same path. This happens when a single - // logical declaration is spread out across multiple places. The most - // obvious example is the "extend" block again -- there may be multiple - // extend blocks in the same scope, each of which will have the same path. - // - A location's span is not always a subset of its parent's span. For - // example, the "extendee" of an extension declaration appears at the - // beginning of the "extend" block and is shared by all extensions within - // the block. - // - Just because a location's span is a subset of some other location's span - // does not mean that it is a descendant. For example, a "group" defines - // both a type and a field in a single declaration. Thus, the locations - // corresponding to the type and field and their components will overlap. - // - Code which tries to interpret locations should probably be designed to - // ignore those that it doesn't understand, as more types of locations could - // be recorded in the future. - repeated Location location = 1; - message Location { - // Identifies which part of the FileDescriptorProto was defined at this - // location. - // - // Each element is a field number or an index. They form a path from - // the root FileDescriptorProto to the place where the definition appears. - // For example, this path: - // [ 4, 3, 2, 7, 1 ] - // refers to: - // file.message_type(3) // 4, 3 - // .field(7) // 2, 7 - // .name() // 1 - // This is because FileDescriptorProto.message_type has field number 4: - // repeated DescriptorProto message_type = 4; - // and DescriptorProto.field has field number 2: - // repeated FieldDescriptorProto field = 2; - // and FieldDescriptorProto.name has field number 1: - // optional string name = 1; - // - // Thus, the above path gives the location of a field name. If we removed - // the last element: - // [ 4, 3, 2, 7 ] - // this path refers to the whole field declaration (from the beginning - // of the label to the terminating semicolon). - // - // For options, the path refers to the interpreted option in the descriptor. - // E.g., for a custom option `(my_opt) = "foo"` on a message using extension - // number 10101, the path is: - // [ 4, 3, 7, 10101 ] - // refers to: - // file.message_type(3) // 4, 3 - // .options() // 7 - // .my_opt() // 10101 - // - // Sub-locations corresponding to the interpreted option's corresponding - // `UninterpretedOption` are also appended to the interpreted option, which - // deviates from the actual FileDescriptorProto path. E.g.: - // [ 4, 3, 7, 10101, 2 ] - // refers to the option name `(my_opt)`, and: - // [ 4, 3, 7, 10101, 7 ] - // refers to the "foo" string value of the option. - repeated int32 path = 1 [packed = true]; - - // Always has exactly three or four elements: start line, start column, - // end line (optional, otherwise assumed same as start line), end column. - // These are packed into a single field for efficiency. Note that line - // and column numbers are zero-based -- typically you will want to add - // 1 to each before displaying to a user. - repeated int32 span = 2 [packed = true]; - - // If this SourceCodeInfo represents a complete declaration, these are any - // comments appearing before and after the declaration which appear to be - // attached to the declaration. - // - // A series of line comments appearing on consecutive lines, with no other - // tokens appearing on those lines, will be treated as a single comment. - // - // leading_detached_comments will keep paragraphs of comments that appear - // before (but not connected to) the current element. Each paragraph, - // separated by empty lines, will be one comment element in the repeated - // field. - // - // Only the comment content is provided; comment markers (e.g. //) are - // stripped out. For block comments, leading whitespace and an asterisk - // will be stripped from the beginning of each line other than the first. - // Newlines are included in the output. - // - // Examples: - // - // optional int32 foo = 1; // Comment attached to foo. - // // Comment attached to bar. - // optional int32 bar = 2; - // - // optional string baz = 3; - // // Comment attached to baz. - // // Another line attached to baz. - // - // // Comment attached to moo. - // // - // // Another line attached to moo. - // optional double moo = 4; - // - // // Detached comment for corge. This is not leading or trailing comments - // // to moo or corge because there are blank lines separating it from - // // both. - // - // // Detached comment for corge paragraph 2. - // - // optional string corge = 5; - // /* Block comment attached - // * to corge. Leading asterisks - // * will be removed. */ - // /* Block comment attached to - // * grault. */ - // optional int32 grault = 6; - // - // // ignored detached comments. - optional string leading_comments = 3; - optional string trailing_comments = 4; - repeated string leading_detached_comments = 6; - } - - // Extensions for tooling. - extensions 536000000 [declaration = { - number: 536000000 - type: ".buf.descriptor.v1.SourceCodeInfoExtension" - full_name: ".buf.descriptor.v1.buf_source_code_info_extension" - }]; -} - -// Describes the relationship between generated code and its original source -// file. A GeneratedCodeInfo message is associated with only one generated -// source file, but may contain references to different source .proto files. -message GeneratedCodeInfo { - // An Annotation connects some span of text in generated code to an element - // of its generating .proto file. - repeated Annotation annotation = 1; - message Annotation { - // Identifies the element in the original source .proto file. This field - // is formatted the same as SourceCodeInfo.Location.path. - repeated int32 path = 1 [packed = true]; - - // Identifies the filesystem path to the original source .proto. - optional string source_file = 2; - - // Identifies the starting offset in bytes in the generated code - // that relates to the identified object. - optional int32 begin = 3; - - // Identifies the ending offset in bytes in the generated code that - // relates to the identified object. The end offset should be one past - // the last relevant byte (so the length of the text = end - begin). - optional int32 end = 4; - - // Represents the identified object's effect on the element in the original - // .proto file. - enum Semantic { - // There is no effect or the effect is indescribable. - NONE = 0; - // The element is set or otherwise mutated. - SET = 1; - // An alias to the element is returned. - ALIAS = 2; - } - optional Semantic semantic = 5; - } -} - -// Describes the 'visibility' of a symbol with respect to the proto import -// system. Symbols can only be imported when the visibility rules do not prevent -// it (ex: local symbols cannot be imported). Visibility modifiers can only set -// on `message` and `enum` as they are the only types available to be referenced -// from other files. -enum SymbolVisibility { - VISIBILITY_UNSET = 0; - VISIBILITY_LOCAL = 1; - VISIBILITY_EXPORT = 2; -} diff --git a/modules/sync/protocolbuffers/wellknowntypes/cas/de6ff8f1ecca998ecd73994ea2973abf45a7a7ffe096fef6bf6e3303d0a8488f18ec1a3e624f6775a669501c9784ca7d4a7ec9d7d3f9daab71e6eddee5cca96f b/modules/sync/protocolbuffers/wellknowntypes/cas/de6ff8f1ecca998ecd73994ea2973abf45a7a7ffe096fef6bf6e3303d0a8488f18ec1a3e624f6775a669501c9784ca7d4a7ec9d7d3f9daab71e6eddee5cca96f deleted file mode 100644 index 29d84811..00000000 --- a/modules/sync/protocolbuffers/wellknowntypes/cas/de6ff8f1ecca998ecd73994ea2973abf45a7a7ffe096fef6bf6e3303d0a8488f18ec1a3e624f6775a669501c9784ca7d4a7ec9d7d3f9daab71e6eddee5cca96f +++ /dev/null @@ -1,18 +0,0 @@ -shake256:0daa29e1d15482bc5f25f3fc93d658073240f23e3d2c2a72829ba55ff32aa02ff321a604b4dcb49bbb97c4b6f157db6d2fa455f53d531d651b67755dc305f6be LICENSE -shake256:79883ba311a2ce5432112a9c639d953b1db80105c92bb2b7b03e5c8d0d415ff73a566683008890a68dac2d3aeaedfa41660c5e258225b5c8c48d8066c06b28ab buf.md -shake256:50583b7f140a92c3c9a43b8cfa612bd990e1ac70922d3ee83b4804da09bc5f1360e0d6518afdbc3d6760e237a7449658adac7931b9e3d39036d4a57972b5f8e7 buf.yaml -shake256:44fce03c43269bb017c93d1fc2a5b8dd8413313d0123652aa97ab0d715ebc290daf7214e232a484e0b467d16ae4af255ef9670c93397c949546ea247dfb18852 google/protobuf/any.proto -shake256:bed6cb44b4bcd2fb5553d64742db714e1134a729d5a8b5b38e2335fea6eeb2125311e9d98bdaec9323d038ee17e054da737e1b8ad2173273231209f14891375e google/protobuf/api.proto -shake256:059f945bf1dd19f3d535b8c380cb1e2798c867820dd719ee32384f7fd635acd077d410716410646c72442f7bef4a920120af2dcddb1fb6c0e435798de4a7ba82 google/protobuf/compiler/plugin.proto -shake256:9b345056b93152a41897728a29e0b313d748541b58357f08f079f828e3575a52987f93a88d98c675d583c1de6b43b0df036b7adfbb056dc58df8710c494a9b9c google/protobuf/cpp_features.proto -shake256:6925669e63fc96b0ad08fa1fdd3c6993c463c9993b60bae7e6e643ca0007b19d87b9d7344c02800e40be8454dfcb25a985a6ee5b28345c51c98c7d68b9b6bc66 google/protobuf/descriptor.proto -shake256:95d1785a8277c3f6758e3f188e9432d820e93a99de99d1b45452ed2c8c8b1fecbef49efa8f553641d9bba716993420e255ddbc564d8796d1e480877f8c0c1aec google/protobuf/duration.proto -shake256:836c327709e30d7fcf6c35c8cff70c863130e3de6962b6337027f38513a672f1dc0496dd84538ee2c53994cc865fa3d68e0c4a87a4fc974601c7a6ebcdc05fe4 google/protobuf/empty.proto -shake256:bb302c93a15ea3b9ad881841c5148e5f7ac12089bcf7ab7d3e1fa51748e7b082986646497f01b2748fa676884958dc69bbf902f4b066c190c5e92c2338ea3f6e google/protobuf/field_mask.proto -shake256:987ab316a58390b7617eb2cf6446798925df326e54052eb5a3a128174816213998c73c84ea7efc88d143ed1163768e18410da4bd08b330829fe536974ff95ebe google/protobuf/go_features.proto -shake256:062035772c41937d8709c37cc101d9a6d197f0c64ee53e6db6fdd421faf47d7ce30ad78f9413deef4c66943a69811443790f52c2d213abd8fb501e1dadd555c6 google/protobuf/java_features.proto -shake256:0fe143d11828bc7a117e201c6643612944849f9547e9a8c4ec748ca230dc8d78312123b3accb8f433c19c3cb30b5849fe46021d217da0db7a557648942c87cd3 google/protobuf/source_context.proto -shake256:44d884979bac545c3e10785ee6ccc3a1583d1aad8abd5254784f151454d2a1c2aca34128ea3c5927dfcea8a38c66e45500176e6eabd99a693a69624be0ecf5f8 google/protobuf/struct.proto -shake256:a5be7415503570c9c1d12eef6a90462e25fdad242d262bf35bd167589fd0d31306b76e850dd41044a46e0722beeafafce3bcee0386c3b730be26c18ba84acc8d google/protobuf/timestamp.proto -shake256:3f84f0f8298ff02f92800f4aa6819cf5eb39065940089748cda71c03c279d40249c1a02f239057300ac862b06682f5e748d20f42adcb8621f941cc5c71155947 google/protobuf/type.proto -shake256:b054ff1cc611396c870819dacb044768ce18826e0163be0bd41e3f55a9fddb7cd2ae262557249af137282cafc01f14be6e73f6338b4b8a74dc3227a876859094 google/protobuf/wrappers.proto diff --git a/modules/sync/protocolbuffers/wellknowntypes/state.json b/modules/sync/protocolbuffers/wellknowntypes/state.json index 916f4eff..b127c275 100644 --- a/modules/sync/protocolbuffers/wellknowntypes/state.json +++ b/modules/sync/protocolbuffers/wellknowntypes/state.json @@ -499,10 +499,6 @@ { "name": "v35.1", "digest": "e7579d76656bf352b2369d1c855f3a3ce25aeb3fd4a0505ad065e468fab2df935d6f2d14daa7d5dd98b4cd8102c6a509ede5969783be083b0e35e279b5de8be6" - }, - { - "name": "v36.0", - "digest": "de6ff8f1ecca998ecd73994ea2973abf45a7a7ffe096fef6bf6e3303d0a8488f18ec1a3e624f6775a669501c9784ca7d4a7ec9d7d3f9daab71e6eddee5cca96f" } ] } \ No newline at end of file diff --git a/modules/sync/state.json b/modules/sync/state.json index 59ac7ffe..856037ac 100644 --- a/modules/sync/state.json +++ b/modules/sync/state.json @@ -78,7 +78,7 @@ }, { "module_name": "protocolbuffers/wellknowntypes", - "latest_reference": "v36.0" + "latest_reference": "v35.1" } ] } \ No newline at end of file