github.com/bakjos/protoreflect@v1.9.2/desc/protoprint/testfiles/desc_test_complex-compact.proto (about)

     1  syntax = "proto2";
     2  package foo.bar;
     3  option go_package = "github.com/bakjos/protoreflect/internal/testprotos";
     4  import "google/protobuf/descriptor.proto";
     5  message Simple {
     6    optional string name = 1;
     7    optional uint64 id = 2;
     8  }
     9  extend google.protobuf.ExtensionRangeOptions {
    10    optional string label = 20000;
    11  }
    12  message Test {
    13    optional string foo = 1 [json_name = "|foo|"];
    14    repeated int32 array = 2;
    15    optional Simple s = 3;
    16    repeated Simple r = 4;
    17    map<string, int32> m = 5;
    18    optional bytes b = 6 [default = "\000\001\002\003\004\005\006\007fubar!"];
    19    extensions 100 to 200;
    20    extensions 249, 300 to 350, 500 to 550, 20000 to max [(label) = "jazz"];
    21    message Nested {
    22      extend google.protobuf.MessageOptions {
    23        optional int32 fooblez = 20003;
    24      }
    25      message _NestedNested {
    26        enum EEE {
    27          OK = 0;
    28          V1 = 1;
    29          V2 = 2;
    30          V3 = 3;
    31          V4 = 4;
    32          V5 = 5;
    33          V6 = 6;
    34        }
    35        option (fooblez) = 10101;
    36        extend Test {
    37          optional string _garblez = 100;
    38        }
    39        option (rept) = { foo:"goo" [foo.bar.Test.Nested._NestedNested._garblez]:"boo"  };
    40        message NestedNestedNested {
    41          option (rept) = { foo:"hoo" [foo.bar.Test.Nested._NestedNested._garblez]:"spoo"  };
    42          optional Test Test = 1;
    43        }
    44      }
    45    }
    46  }
    47  enum EnumWithReservations {
    48    X = 2;
    49    Y = 3;
    50    Z = 4;
    51    reserved 1000 to max, -2 to 1, 5 to 10, 12 to 15, 18, -5 to -3;
    52    reserved "C", "B", "A";
    53  }
    54  message MessageWithReservations {
    55    reserved 5 to 10, 12 to 15, 18, 1000 to max;
    56    reserved "A", "B", "C";
    57  }
    58  message MessageWithMap {
    59    map<string, Simple> vals = 1;
    60  }
    61  extend google.protobuf.MessageOptions {
    62    repeated Test rept = 20002;
    63    optional Test.Nested._NestedNested.EEE eee = 20010;
    64    optional Another a = 20020;
    65    optional MessageWithMap map_vals = 20030;
    66  }
    67  message Another {
    68    option (rept) = { foo:"abc" array:1 array:2 array:3 s:<name:"foo" id:123 > r:<name:"f" > r:<name:"s" > r:<id:456 >  };
    69    option (rept) = { foo:"def" array:3 array:2 array:1 s:<name:"bar" id:321 > r:<name:"g" > r:<name:"s" >  };
    70    option (rept) = { foo:"def"  };
    71    option (eee) = V1;
    72    option (a) = { test:<foo:"m&m" array:1 array:2 s:<name:"yolo" id:98765 > m:<key:"bar" value:200 > m:<key:"foo" value:100 > [foo.bar.Test.Nested._NestedNested._garblez]:"whoah!" > fff:OK  };
    73    option (map_vals) = { vals:<key:"" value:<> > vals:<key:"bar" value:<name:"baz" > > vals:<key:"foo" value:<> >  }; // no key, no value
    74    optional Test test = 1;
    75    optional Test.Nested._NestedNested.EEE fff = 2 [default = V1];
    76  }
    77  message Validator {
    78    optional bool authenticated = 1;
    79    enum Action {
    80      LOGIN = 0;
    81      READ = 1;
    82      WRITE = 2;
    83    }
    84    message Permission {
    85      optional Action action = 1;
    86      optional string entity = 2;
    87    }
    88    repeated Permission permission = 2;
    89  }
    90  extend google.protobuf.MethodOptions {
    91    optional Validator validator = 12345;
    92  }
    93  service TestTestService {
    94    rpc UserAuth ( Test ) returns ( Test ) {
    95      option (validator) = { authenticated:true permission:<action:LOGIN entity:"client" >  };
    96    }
    97    rpc Get ( Test ) returns ( Test ) {
    98      option (validator) = { authenticated:true permission:<action:READ entity:"user" >  };
    99    }
   100  }
   101  message Rule {
   102    message StringRule {
   103      optional string pattern = 1;
   104      optional bool allow_empty = 2;
   105      optional int32 min_len = 3;
   106      optional int32 max_len = 4;
   107    }
   108    message IntRule {
   109      optional int64 min_val = 1;
   110      optional uint64 max_val = 2;
   111    }
   112    message RepeatedRule {
   113      optional bool allow_empty = 1;
   114      optional int32 min_items = 2;
   115      optional int32 max_items = 3;
   116      optional Rule items = 4;
   117    }
   118    oneof rule {
   119      StringRule string = 1;
   120      RepeatedRule repeated = 2;
   121      IntRule int = 3;
   122      group FloatRule = 4 {
   123        optional double min_val = 1;
   124        optional double max_val = 2;
   125      }
   126    }
   127  }
   128  extend google.protobuf.FieldOptions {
   129    optional Rule rules = 1234;
   130  }
   131  message IsAuthorizedReq {
   132    repeated string subjects = 1 [(rules) = { repeated:<min_items:1 items:<string:<pattern:"^(?:(?:team:(?:local|ldap))|user):[[:alnum:]_-]+$" > > >  }];
   133  }
   134  // tests cases where field names collide with keywords
   135  message KeywordCollisions {
   136    optional bool syntax = 1;
   137    optional bool import = 2;
   138    optional bool public = 3;
   139    optional bool weak = 4;
   140    optional bool package = 5;
   141    optional string string = 6;
   142    optional bytes bytes = 7;
   143    optional int32 int32 = 8;
   144    optional int64 int64 = 9;
   145    optional uint32 uint32 = 10;
   146    optional uint64 uint64 = 11;
   147    optional sint32 sint32 = 12;
   148    optional sint64 sint64 = 13;
   149    optional fixed32 fixed32 = 14;
   150    optional fixed64 fixed64 = 15;
   151    optional sfixed32 sfixed32 = 16;
   152    optional sfixed64 sfixed64 = 17;
   153    optional bool bool = 18;
   154    optional float float = 19;
   155    optional double double = 20;
   156    optional bool optional = 21;
   157    optional bool repeated = 22;
   158    optional bool required = 23;
   159    optional bool message = 24;
   160    optional bool enum = 25;
   161    optional bool service = 26;
   162    optional bool rpc = 27;
   163    optional bool option = 28;
   164    optional bool extend = 29;
   165    optional bool extensions = 30;
   166    optional bool reserved = 31;
   167    optional bool to = 32;
   168    optional int32 true = 33;
   169    optional int32 false = 34;
   170    optional int32 default = 35;
   171  }
   172  extend google.protobuf.FieldOptions {
   173    optional bool syntax = 20001;
   174    optional bool import = 20002;
   175    optional bool public = 20003;
   176    optional bool weak = 20004;
   177    optional bool package = 20005;
   178    optional string string = 20006;
   179    optional bytes bytes = 20007;
   180    optional int32 int32 = 20008;
   181    optional int64 int64 = 20009;
   182    optional uint32 uint32 = 20010;
   183    optional uint64 uint64 = 20011;
   184    optional sint32 sint32 = 20012;
   185    optional sint64 sint64 = 20013;
   186    optional fixed32 fixed32 = 20014;
   187    optional fixed64 fixed64 = 20015;
   188    optional sfixed32 sfixed32 = 20016;
   189    optional sfixed64 sfixed64 = 20017;
   190    optional bool bool = 20018;
   191    optional float float = 20019;
   192    optional double double = 20020;
   193    optional bool optional = 20021;
   194    optional bool repeated = 20022;
   195    optional bool required = 20023;
   196    optional bool message = 20024;
   197    optional bool enum = 20025;
   198    optional bool service = 20026;
   199    optional bool rpc = 20027;
   200    optional bool option = 20028;
   201    optional bool extend = 20029;
   202    optional bool extensions = 20030;
   203    optional bool reserved = 20031;
   204    optional bool to = 20032;
   205    optional int32 true = 20033;
   206    optional int32 false = 20034;
   207    optional int32 default = 20035;
   208    optional KeywordCollisions boom = 20036;
   209  }
   210  message KeywordCollisionOptions {
   211    optional uint64 id = 1 [(syntax) = true, (import) = true, (public) = true, (weak) = true, (package) = true, (string) = "string", (bytes) = "bytes", (bool) = true, (float) = 3.140000, (double) = 3.141590, (int32) = 32, (int64) = 64, (uint32) = 3200, (uint64) = 6400, (sint32) = -32, (sint64) = -64, (fixed32) = 3232, (fixed64) = 6464, (sfixed32) = -3232, (sfixed64) = -6464, (optional) = true, (repeated) = true, (required) = true, (message) = true, (enum) = true, (service) = true, (rpc) = true, (option) = true, (extend) = true, (extensions) = true, (reserved) = true, (to) = true, (true) = 111, (false) = -111, (default) = 222];
   212    optional string name = 2 [(boom) = { syntax:true import:true public:true weak:true package:true string:"string" bytes:"bytes" int32:32 int64:64 uint32:3200 uint64:6400 sint32:-32 sint64:-64 fixed32:3232 fixed64:6464 sfixed32:-3232 sfixed64:-6464 bool:true float:3.14 double:3.14159 optional:true repeated:true required:true message:true enum:true service:true rpc:true option:true extend:true extensions:true reserved:true to:true true:111 false:-111 default:222  }];
   213  }