@bufbuild/protobuf 2.0.0-alpha.1 → 2.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/clone.d.ts +1 -1
  3. package/dist/cjs/clone.js +2 -2
  4. package/dist/cjs/codegenv1/boot.d.ts +1 -1
  5. package/dist/cjs/codegenv1/boot.js +3 -5
  6. package/dist/cjs/codegenv1/embed.d.ts +2 -2
  7. package/dist/cjs/codegenv1/embed.js +51 -46
  8. package/dist/cjs/codegenv1/enum.d.ts +1 -1
  9. package/dist/cjs/codegenv1/enum.js +2 -4
  10. package/dist/cjs/codegenv1/extension.d.ts +1 -1
  11. package/dist/cjs/codegenv1/file.d.ts +1 -1
  12. package/dist/cjs/codegenv1/file.js +5 -7
  13. package/dist/cjs/codegenv1/index.d.ts +1 -0
  14. package/dist/cjs/codegenv1/index.js +1 -0
  15. package/dist/cjs/codegenv1/message.d.ts +1 -1
  16. package/dist/cjs/codegenv1/restore-json-names.d.ts +3 -0
  17. package/dist/cjs/codegenv1/restore-json-names.js +3 -0
  18. package/dist/cjs/codegenv1/scalar.d.ts +5 -0
  19. package/dist/cjs/codegenv1/scalar.js +39 -0
  20. package/dist/cjs/codegenv1/service.d.ts +3 -3
  21. package/dist/cjs/codegenv1/symbols.d.ts +9 -0
  22. package/dist/cjs/codegenv1/symbols.js +9 -0
  23. package/dist/cjs/codegenv1/types.d.ts +59 -8
  24. package/dist/cjs/create.d.ts +1 -1
  25. package/dist/cjs/create.js +13 -23
  26. package/dist/cjs/{desc-types.d.ts → descriptors.d.ts} +66 -17
  27. package/dist/cjs/descriptors.js +53 -0
  28. package/dist/cjs/equals.d.ts +1 -1
  29. package/dist/cjs/extensions.d.ts +21 -1
  30. package/dist/cjs/extensions.js +42 -10
  31. package/dist/cjs/fields.d.ts +17 -16
  32. package/dist/cjs/fields.js +17 -10
  33. package/dist/cjs/from-binary.d.ts +2 -2
  34. package/dist/cjs/from-binary.js +31 -41
  35. package/dist/cjs/from-json.d.ts +4 -4
  36. package/dist/cjs/from-json.js +200 -185
  37. package/dist/cjs/index.d.ts +3 -2
  38. package/dist/cjs/index.js +5 -2
  39. package/dist/cjs/is-message.d.ts +1 -1
  40. package/dist/cjs/proto-int64.d.ts +4 -1
  41. package/dist/cjs/proto-int64.js +16 -6
  42. package/dist/cjs/reflect/error.d.ts +1 -1
  43. package/dist/cjs/reflect/guard.d.ts +1 -1
  44. package/dist/cjs/reflect/index.d.ts +0 -1
  45. package/dist/cjs/reflect/index.js +0 -1
  46. package/dist/cjs/reflect/names.d.ts +1 -13
  47. package/dist/cjs/reflect/names.js +2 -40
  48. package/dist/cjs/reflect/nested-types.d.ts +11 -1
  49. package/dist/cjs/reflect/nested-types.js +34 -1
  50. package/dist/cjs/reflect/reflect-check.d.ts +10 -1
  51. package/dist/cjs/reflect/reflect-check.js +126 -9
  52. package/dist/cjs/reflect/reflect-types.d.ts +162 -14
  53. package/dist/cjs/reflect/reflect.d.ts +12 -3
  54. package/dist/cjs/reflect/reflect.js +316 -290
  55. package/dist/cjs/reflect/scalar.d.ts +3 -55
  56. package/dist/cjs/reflect/scalar.js +26 -220
  57. package/dist/cjs/reflect/unsafe.d.ts +1 -1
  58. package/dist/cjs/reflect/unsafe.js +38 -43
  59. package/dist/cjs/{reflect/registry.d.ts → registry.d.ts} +2 -2
  60. package/dist/cjs/{reflect/registry.js → registry.js} +100 -73
  61. package/dist/cjs/to-binary.d.ts +1 -1
  62. package/dist/cjs/to-binary.js +28 -30
  63. package/dist/cjs/to-json.d.ts +7 -6
  64. package/dist/cjs/to-json.js +63 -70
  65. package/dist/cjs/types.d.ts +1 -1
  66. package/dist/cjs/wire/base64-encoding.js +4 -4
  67. package/dist/cjs/wire/binary-encoding.d.ts +25 -3
  68. package/dist/cjs/wire/binary-encoding.js +70 -18
  69. package/dist/cjs/wire/size-delimited.d.ts +1 -1
  70. package/dist/cjs/wire/text-format.d.ts +1 -2
  71. package/dist/cjs/wire/text-format.js +21 -19
  72. package/dist/cjs/wkt/any.d.ts +3 -3
  73. package/dist/cjs/wkt/gen/google/protobuf/any_pb.d.ts +7 -0
  74. package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +7 -2
  75. package/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
  76. package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +15 -6
  77. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
  78. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
  79. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +192 -0
  80. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +187 -84
  81. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
  82. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +7 -2
  83. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
  84. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +7 -2
  85. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
  86. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
  87. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
  88. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +7 -2
  89. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
  90. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +18 -7
  91. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
  92. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
  93. package/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
  94. package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +32 -13
  95. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
  96. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
  97. package/dist/cjs/wkt/wrappers.d.ts +1 -1
  98. package/dist/esm/clone.d.ts +1 -1
  99. package/dist/esm/clone.js +1 -1
  100. package/dist/esm/codegenv1/boot.d.ts +1 -1
  101. package/dist/esm/codegenv1/boot.js +3 -5
  102. package/dist/esm/codegenv1/embed.d.ts +2 -2
  103. package/dist/esm/codegenv1/embed.js +34 -29
  104. package/dist/esm/codegenv1/enum.d.ts +1 -1
  105. package/dist/esm/codegenv1/enum.js +2 -4
  106. package/dist/esm/codegenv1/extension.d.ts +1 -1
  107. package/dist/esm/codegenv1/file.d.ts +1 -1
  108. package/dist/esm/codegenv1/file.js +4 -6
  109. package/dist/esm/codegenv1/index.d.ts +1 -0
  110. package/dist/esm/codegenv1/index.js +1 -0
  111. package/dist/esm/codegenv1/message.d.ts +1 -1
  112. package/dist/esm/codegenv1/restore-json-names.d.ts +3 -0
  113. package/dist/esm/codegenv1/restore-json-names.js +3 -0
  114. package/dist/esm/codegenv1/scalar.d.ts +5 -0
  115. package/dist/esm/codegenv1/scalar.js +35 -0
  116. package/dist/esm/codegenv1/service.d.ts +3 -3
  117. package/dist/esm/codegenv1/symbols.d.ts +9 -0
  118. package/dist/esm/codegenv1/symbols.js +9 -0
  119. package/dist/esm/codegenv1/types.d.ts +59 -8
  120. package/dist/esm/create.d.ts +1 -1
  121. package/dist/esm/create.js +11 -21
  122. package/dist/esm/{desc-types.d.ts → descriptors.d.ts} +66 -17
  123. package/dist/esm/descriptors.js +50 -0
  124. package/dist/esm/equals.d.ts +1 -1
  125. package/dist/esm/extensions.d.ts +21 -1
  126. package/dist/esm/extensions.js +39 -9
  127. package/dist/esm/fields.d.ts +17 -16
  128. package/dist/esm/fields.js +17 -10
  129. package/dist/esm/from-binary.d.ts +2 -2
  130. package/dist/esm/from-binary.js +13 -23
  131. package/dist/esm/from-json.d.ts +4 -4
  132. package/dist/esm/from-json.js +193 -178
  133. package/dist/esm/index.d.ts +3 -2
  134. package/dist/esm/index.js +3 -2
  135. package/dist/esm/is-message.d.ts +1 -1
  136. package/dist/esm/proto-int64.d.ts +4 -1
  137. package/dist/esm/proto-int64.js +16 -6
  138. package/dist/esm/reflect/error.d.ts +1 -1
  139. package/dist/esm/reflect/guard.d.ts +1 -1
  140. package/dist/esm/reflect/index.d.ts +0 -1
  141. package/dist/esm/reflect/index.js +0 -1
  142. package/dist/esm/reflect/names.d.ts +1 -13
  143. package/dist/esm/reflect/names.js +1 -38
  144. package/dist/esm/reflect/nested-types.d.ts +11 -1
  145. package/dist/esm/reflect/nested-types.js +32 -0
  146. package/dist/esm/reflect/reflect-check.d.ts +10 -1
  147. package/dist/esm/reflect/reflect-check.js +119 -2
  148. package/dist/esm/reflect/reflect-types.d.ts +162 -14
  149. package/dist/esm/reflect/reflect-types.js +1 -0
  150. package/dist/esm/reflect/reflect.d.ts +12 -3
  151. package/dist/esm/reflect/reflect.js +305 -279
  152. package/dist/esm/reflect/scalar.d.ts +3 -55
  153. package/dist/esm/reflect/scalar.js +14 -205
  154. package/dist/esm/reflect/unsafe.d.ts +1 -1
  155. package/dist/esm/reflect/unsafe.js +38 -43
  156. package/dist/esm/{reflect/registry.d.ts → registry.d.ts} +2 -2
  157. package/dist/esm/{reflect/registry.js → registry.js} +90 -63
  158. package/dist/esm/to-binary.d.ts +1 -1
  159. package/dist/esm/to-binary.js +2 -4
  160. package/dist/esm/to-json.d.ts +7 -6
  161. package/dist/esm/to-json.js +48 -55
  162. package/dist/esm/types.d.ts +1 -1
  163. package/dist/esm/wire/base64-encoding.js +4 -4
  164. package/dist/esm/wire/binary-encoding.d.ts +25 -3
  165. package/dist/esm/wire/binary-encoding.js +63 -11
  166. package/dist/esm/wire/size-delimited.d.ts +1 -1
  167. package/dist/esm/wire/text-format.d.ts +1 -2
  168. package/dist/esm/wire/text-format.js +5 -3
  169. package/dist/esm/wkt/any.d.ts +3 -3
  170. package/dist/esm/wkt/gen/google/protobuf/any_pb.d.ts +7 -0
  171. package/dist/esm/wkt/gen/google/protobuf/any_pb.js +7 -2
  172. package/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
  173. package/dist/esm/wkt/gen/google/protobuf/api_pb.js +15 -6
  174. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
  175. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
  176. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +192 -0
  177. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +187 -84
  178. package/dist/esm/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
  179. package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +7 -2
  180. package/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
  181. package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +7 -2
  182. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
  183. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
  184. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
  185. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +7 -2
  186. package/dist/esm/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
  187. package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +18 -7
  188. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
  189. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
  190. package/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
  191. package/dist/esm/wkt/gen/google/protobuf/type_pb.js +32 -13
  192. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
  193. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
  194. package/dist/esm/wkt/wrappers.d.ts +1 -1
  195. package/package.json +2 -2
  196. package/dist/cjs/desc-types.js +0 -15
  197. package/dist/cjs/reflect/assert.d.ts +0 -16
  198. package/dist/cjs/reflect/assert.js +0 -59
  199. package/dist/esm/desc-types.js +0 -14
  200. package/dist/esm/reflect/assert.d.ts +0 -16
  201. package/dist/esm/reflect/assert.js +0 -52
@@ -1,7 +1,29 @@
1
1
  import type { DescriptorProto, Edition, EnumDescriptorProto, EnumValueDescriptorProto, FeatureSet_FieldPresence, FieldDescriptorProto, FileDescriptorProto, MethodDescriptorProto, MethodOptions_IdempotencyLevel, OneofDescriptorProto, ServiceDescriptorProto } from "./wkt/gen/google/protobuf/descriptor_pb.js";
2
- import type { LongType, ScalarType, ScalarValue } from "./reflect/scalar.js";
2
+ import type { ScalarValue } from "./reflect/scalar.js";
3
3
  export type SupportedEdition = Extract<Edition, Edition.EDITION_PROTO2 | Edition.EDITION_PROTO3 | Edition.EDITION_2023>;
4
4
  type SupportedFieldPresence = Extract<FeatureSet_FieldPresence, FeatureSet_FieldPresence.EXPLICIT | FeatureSet_FieldPresence.IMPLICIT | FeatureSet_FieldPresence.LEGACY_REQUIRED>;
5
+ /**
6
+ * Scalar value types. This is a subset of field types declared by protobuf
7
+ * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE
8
+ * are omitted, but the numerical values are identical.
9
+ */
10
+ export declare enum ScalarType {
11
+ DOUBLE = 1,
12
+ FLOAT = 2,
13
+ INT64 = 3,
14
+ UINT64 = 4,
15
+ INT32 = 5,
16
+ FIXED64 = 6,
17
+ FIXED32 = 7,
18
+ BOOL = 8,
19
+ STRING = 9,
20
+ BYTES = 12,
21
+ UINT32 = 13,
22
+ SFIXED32 = 15,
23
+ SFIXED64 = 16,
24
+ SINT32 = 17,// Uses ZigZag encoding.
25
+ SINT64 = 18
26
+ }
5
27
  /**
6
28
  * A union of all descriptors, discriminated by a `kind` property.
7
29
  */
@@ -108,6 +130,10 @@ export interface DescEnumValue {
108
130
  * The name of the enumeration value, as specified in the protobuf source.
109
131
  */
110
132
  readonly name: string;
133
+ /**
134
+ * A safe and idiomatic name for the value in a TypeScript enum.
135
+ */
136
+ readonly localName: string;
111
137
  /**
112
138
  * The enumeration this value belongs to.
113
139
  */
@@ -152,6 +178,10 @@ export interface DescMessage {
152
178
  * group.
153
179
  */
154
180
  readonly fields: DescField[];
181
+ /**
182
+ * All fields of this message by their "localName".
183
+ */
184
+ readonly field: Record<string, DescField>;
155
185
  /**
156
186
  * Oneof groups declared for this message.
157
187
  * This does not include synthetic oneofs for proto3 optionals.
@@ -195,6 +225,10 @@ type descFieldCommon = descFieldAndExtensionShared & {
195
225
  * The message this field is declared on.
196
226
  */
197
227
  readonly parent: DescMessage;
228
+ /**
229
+ * A safe and idiomatic name for the field as a property in ECMAScript.
230
+ */
231
+ readonly localName: string;
198
232
  };
199
233
  /**
200
234
  * Describes an extension in a protobuf source file.
@@ -240,6 +274,11 @@ interface descFieldAndExtensionShared {
240
274
  * Marked as deprecated in the protobuf source.
241
275
  */
242
276
  readonly deprecated: boolean;
277
+ /**
278
+ * Presence of the field.
279
+ * See https://protobuf.dev/programming-guides/field_presence/
280
+ */
281
+ readonly presence: SupportedFieldPresence;
243
282
  /**
244
283
  * The compiler-generated descriptor.
245
284
  */
@@ -256,15 +295,6 @@ type descFieldSingularCommon = {
256
295
  * This does not include synthetic oneofs for proto3 optionals.
257
296
  */
258
297
  readonly oneof: DescOneof | undefined;
259
- /**
260
- * Whether this field was declared with `optional` in the protobuf source.
261
- */
262
- readonly optional: boolean;
263
- /**
264
- * Presence of the field.
265
- * See https://protobuf.dev/programming-guides/field_presence/
266
- */
267
- readonly presence: SupportedFieldPresence;
268
298
  };
269
299
  type descFieldScalar<T extends ScalarType = ScalarType> = T extends T ? {
270
300
  readonly fieldKind: "scalar";
@@ -273,10 +303,13 @@ type descFieldScalar<T extends ScalarType = ScalarType> = T extends T ? {
273
303
  */
274
304
  readonly scalar: T;
275
305
  /**
276
- * JavaScript type for 64 bit integral types (int64, uint64,
277
- * sint64, fixed64, sfixed64).
306
+ * By default, 64-bit integral types (int64, uint64, sint64, fixed64,
307
+ * sfixed64) are represented with BigInt.
308
+ *
309
+ * If the field option `jstype = JS_STRING` is set, this property
310
+ * is true, and 64-bit integral types are represented with String.
278
311
  */
279
- readonly longType: LongType;
312
+ readonly longAsString: boolean;
280
313
  /**
281
314
  * The message type, if it is a message field.
282
315
  */
@@ -361,10 +394,13 @@ type descFieldListScalar<T extends ScalarType = ScalarType> = T extends T ? {
361
394
  */
362
395
  readonly scalar: T;
363
396
  /**
364
- * JavaScript type for 64 bit integral types (int64, uint64,
365
- * sint64, fixed64, sfixed64).
397
+ * By default, 64-bit integral types (int64, uint64, sint64, fixed64,
398
+ * sfixed64) are represented with BigInt.
399
+ *
400
+ * If the field option `jstype = JS_STRING` is set, this property
401
+ * is true, and 64-bit integral types are represented with String.
366
402
  */
367
- readonly longType: LongType;
403
+ readonly longAsString: boolean;
368
404
  } : never;
369
405
  type descFieldListEnum = {
370
406
  readonly listKind: "enum";
@@ -414,7 +450,8 @@ type descFieldMapCommon<T extends ScalarType = ScalarType> = T extends Exclude<S
414
450
  readonly oneof: undefined;
415
451
  /**
416
452
  * Encode the map entry message delimited (a.k.a. proto2 group encoding),
417
- * or length-prefixed? This is always false for map fields.
453
+ * or length-prefixed? As of Edition 2023, this is always false for map fields,
454
+ * and also applies to map values, if they are messages.
418
455
  */
419
456
  readonly delimitedEncoding: false;
420
457
  } : never;
@@ -472,6 +509,10 @@ export interface DescOneof {
472
509
  * The name of the oneof group, as specified in the protobuf source.
473
510
  */
474
511
  readonly name: string;
512
+ /**
513
+ * A safe and idiomatic name for the oneof group as a property in ECMAScript.
514
+ */
515
+ readonly localName: string;
475
516
  /**
476
517
  * The message this oneof group was declared in.
477
518
  */
@@ -513,6 +554,10 @@ export interface DescService {
513
554
  * The RPCs this service declares.
514
555
  */
515
556
  readonly methods: DescMethod[];
557
+ /**
558
+ * All methods of this service by their "localName".
559
+ */
560
+ readonly method: Record<string, DescMethod>;
516
561
  /**
517
562
  * Marked as deprecated in the protobuf source.
518
563
  */
@@ -532,6 +577,10 @@ export interface DescMethod {
532
577
  * The name of the RPC, as specified in the protobuf source.
533
578
  */
534
579
  readonly name: string;
580
+ /**
581
+ * A safe and idiomatic name for the RPC as a method in ECMAScript.
582
+ */
583
+ readonly localName: string;
535
584
  /**
536
585
  * The parent service.
537
586
  */
@@ -0,0 +1,50 @@
1
+ // Copyright 2021-2024 Buf Technologies, Inc.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ /**
15
+ * Scalar value types. This is a subset of field types declared by protobuf
16
+ * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE
17
+ * are omitted, but the numerical values are identical.
18
+ */
19
+ export var ScalarType;
20
+ (function (ScalarType) {
21
+ // 0 is reserved for errors.
22
+ // Order is weird for historical reasons.
23
+ ScalarType[ScalarType["DOUBLE"] = 1] = "DOUBLE";
24
+ ScalarType[ScalarType["FLOAT"] = 2] = "FLOAT";
25
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
26
+ // negative values are likely.
27
+ ScalarType[ScalarType["INT64"] = 3] = "INT64";
28
+ ScalarType[ScalarType["UINT64"] = 4] = "UINT64";
29
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
30
+ // negative values are likely.
31
+ ScalarType[ScalarType["INT32"] = 5] = "INT32";
32
+ ScalarType[ScalarType["FIXED64"] = 6] = "FIXED64";
33
+ ScalarType[ScalarType["FIXED32"] = 7] = "FIXED32";
34
+ ScalarType[ScalarType["BOOL"] = 8] = "BOOL";
35
+ ScalarType[ScalarType["STRING"] = 9] = "STRING";
36
+ // Tag-delimited aggregate.
37
+ // Group type is deprecated and not supported in proto3. However, Proto3
38
+ // implementations should still be able to parse the group wire format and
39
+ // treat group fields as unknown fields.
40
+ // TYPE_GROUP = 10,
41
+ // TYPE_MESSAGE = 11, // Length-delimited aggregate.
42
+ // New in version 2.
43
+ ScalarType[ScalarType["BYTES"] = 12] = "BYTES";
44
+ ScalarType[ScalarType["UINT32"] = 13] = "UINT32";
45
+ // TYPE_ENUM = 14,
46
+ ScalarType[ScalarType["SFIXED32"] = 15] = "SFIXED32";
47
+ ScalarType[ScalarType["SFIXED64"] = 16] = "SFIXED64";
48
+ ScalarType[ScalarType["SINT32"] = 17] = "SINT32";
49
+ ScalarType[ScalarType["SINT64"] = 18] = "SINT64";
50
+ })(ScalarType || (ScalarType = {}));
@@ -1,5 +1,5 @@
1
1
  import type { MessageShape } from "./types.js";
2
- import type { DescMessage } from "./desc-types.js";
2
+ import type { DescMessage } from "./descriptors.js";
3
3
  /**
4
4
  * Compare two messages of the same type.
5
5
  *
@@ -1,6 +1,7 @@
1
- import type { DescExtension, DescField } from "./desc-types.js";
1
+ import type { AnyDesc, DescEnum, DescEnumValue, DescExtension, DescField, DescFile, DescMessage, DescMethod, DescOneof, DescService } from "./descriptors.js";
2
2
  import type { ReflectMessage } from "./reflect/reflect-types.js";
3
3
  import type { Extendee, ExtensionValueShape } from "./types.js";
4
+ import type { EnumOptions, EnumValueOptions, FieldOptions, FileOptions, MessageOptions, MethodOptions, OneofOptions, ServiceOptions } from "./wkt/gen/google/protobuf/descriptor_pb.js";
4
5
  /**
5
6
  * Retrieve an extension value from a message.
6
7
  *
@@ -33,7 +34,26 @@ export declare function clearExtension<Desc extends DescExtension>(message: Exte
33
34
  * Check whether an extension is set on a message.
34
35
  */
35
36
  export declare function hasExtension<Desc extends DescExtension>(message: Extendee<Desc>, extension: Desc): boolean;
37
+ /**
38
+ * Check whether an option is set on a descriptor.
39
+ *
40
+ * Options are extensions to the `google.protobuf.*Options` messages defined in
41
+ * google/protobuf/descriptor.proto. This function gets the option message from
42
+ * the descriptor, and calls hasExtension().
43
+ */
44
+ export declare function hasOption<Ext extends DescExtension, Desc extends DescForOptionExtension<Ext>>(element: Desc, option: Ext): boolean;
45
+ /**
46
+ * Retrieve an option value from a descriptor.
47
+ *
48
+ * Options are extensions to the `google.protobuf.*Options` messages defined in
49
+ * google/protobuf/descriptor.proto. This function gets the option message from
50
+ * the descriptor, and calls getExtension(). Same as getExtension(), this
51
+ * function never returns undefined.
52
+ */
53
+ export declare function getOption<Ext extends DescExtension, Desc extends DescForOptionExtension<Ext>>(element: Desc, option: Ext): ExtensionValueShape<Ext>;
54
+ type DescForOptionExtension<Ext extends DescExtension> = Extendee<Ext> extends FileOptions ? DescFile : Extendee<Ext> extends EnumOptions ? DescEnum : Extendee<Ext> extends EnumValueOptions ? DescEnumValue : Extendee<Ext> extends MessageOptions ? DescMessage : Extendee<Ext> extends MessageOptions ? DescEnum : Extendee<Ext> extends FieldOptions ? DescField | DescExtension : Extendee<Ext> extends OneofOptions ? DescOneof : Extendee<Ext> extends ServiceOptions ? DescService : Extendee<Ext> extends EnumOptions ? DescEnum : Extendee<Ext> extends MethodOptions ? DescMethod : AnyDesc;
36
55
  /**
37
56
  * @private
38
57
  */
39
58
  export declare function createExtensionContainer<Desc extends DescExtension>(extension: Desc, value?: ExtensionValueShape<Desc>): [ReflectMessage, DescField, () => ExtensionValueShape<Desc>];
59
+ export {};
@@ -11,10 +11,8 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import { assert } from "./reflect/assert.js";
15
14
  import { create } from "./create.js";
16
15
  import { readField } from "./from-binary.js";
17
- import { localName } from "./reflect/names.js";
18
16
  import { reflect } from "./reflect/reflect.js";
19
17
  import { scalarZeroValue } from "./reflect/scalar.js";
20
18
  import { writeField } from "./to-binary.js";
@@ -61,7 +59,7 @@ export function setExtension(message, extension, value) {
61
59
  const reader = new BinaryReader(writer.finish());
62
60
  while (reader.pos < reader.len) {
63
61
  const [no, wireType] = reader.tag();
64
- const data = reader.skip(wireType);
62
+ const data = reader.skip(wireType, no);
65
63
  ufs.push({ no, wireType, data });
66
64
  }
67
65
  message.$unknown = ufs;
@@ -86,6 +84,36 @@ export function hasExtension(message, extension) {
86
84
  return (extension.extendee.typeName === message.$typeName &&
87
85
  !!((_a = message.$unknown) === null || _a === void 0 ? void 0 : _a.find((uf) => uf.no === extension.number)));
88
86
  }
87
+ /**
88
+ * Check whether an option is set on a descriptor.
89
+ *
90
+ * Options are extensions to the `google.protobuf.*Options` messages defined in
91
+ * google/protobuf/descriptor.proto. This function gets the option message from
92
+ * the descriptor, and calls hasExtension().
93
+ */
94
+ export function hasOption(element, option) {
95
+ const message = element.proto.options;
96
+ if (!message) {
97
+ return false;
98
+ }
99
+ return hasExtension(message, option);
100
+ }
101
+ /**
102
+ * Retrieve an option value from a descriptor.
103
+ *
104
+ * Options are extensions to the `google.protobuf.*Options` messages defined in
105
+ * google/protobuf/descriptor.proto. This function gets the option message from
106
+ * the descriptor, and calls getExtension(). Same as getExtension(), this
107
+ * function never returns undefined.
108
+ */
109
+ export function getOption(element, option) {
110
+ const message = element.proto.options;
111
+ if (!message) {
112
+ const [, , get] = createExtensionContainer(option);
113
+ return get();
114
+ }
115
+ return getExtension(message, option);
116
+ }
89
117
  function filterUnknownFields(unknownFields, extension) {
90
118
  if (unknownFields === undefined)
91
119
  return [];
@@ -104,20 +132,20 @@ function filterUnknownFields(unknownFields, extension) {
104
132
  * @private
105
133
  */
106
134
  export function createExtensionContainer(extension, value) {
107
- const field = Object.assign(Object.assign({}, extension), { kind: "field", parent: extension.extendee });
135
+ const localName = extension.typeName;
136
+ const field = Object.assign(Object.assign({}, extension), { kind: "field", parent: extension.extendee, localName });
108
137
  const desc = Object.assign(Object.assign({}, extension.extendee), { fields: [field], members: [field], oneofs: [] });
109
- const fieldName = localName(field);
110
- const container = create(desc, value !== undefined ? { [fieldName]: value } : undefined);
138
+ const container = create(desc, value !== undefined ? { [localName]: value } : undefined);
111
139
  return [
112
140
  reflect(desc, container),
113
141
  field,
114
142
  () => {
115
- const value = container[fieldName];
143
+ const value = container[localName];
116
144
  if (value === undefined) {
117
145
  // Only message fields are undefined, rest will have a zero value.
118
146
  const desc = extension.message;
119
147
  if (isWrapperDesc(desc)) {
120
- return scalarZeroValue(desc.fields[0].scalar, desc.fields[0].longType);
148
+ return scalarZeroValue(desc.fields[0].scalar, desc.fields[0].longAsString);
121
149
  }
122
150
  return create(desc);
123
151
  }
@@ -126,5 +154,7 @@ export function createExtensionContainer(extension, value) {
126
154
  ];
127
155
  }
128
156
  function assertExtendee(extension, message) {
129
- assert(extension.extendee.typeName == message.$typeName, `extension ${extension.typeName} can only be applied to message ${extension.extendee.typeName}`);
157
+ if (extension.extendee.typeName != message.$typeName) {
158
+ throw new Error(`extension ${extension.typeName} can only be applied to message ${extension.extendee.typeName}`);
159
+ }
130
160
  }
@@ -1,22 +1,23 @@
1
- import type { Message, MessageShape } from "./types.js";
2
- import type { DescMessage } from "./desc-types.js";
1
+ import type { MessageShape } from "./types.js";
2
+ import type { DescField, DescMessage } from "./descriptors.js";
3
3
  /**
4
4
  * Returns true if the field is set.
5
+ *
6
+ * - Scalar and enum fields with implicit presence (proto3):
7
+ * Set if not a zero value.
8
+ *
9
+ * - Scalar and enum fields with explicit presence (proto2, oneof):
10
+ * Set if a value was set when creating or parsing the message, or when a
11
+ * value was assigned to the field's property.
12
+ *
13
+ * - Message fields:
14
+ * Set if the property is not undefined.
15
+ *
16
+ * - List and map fields:
17
+ * Set if not empty.
5
18
  */
6
- export declare function isFieldSet<Desc extends DescMessage>(messageDesc: Desc, message: MessageShape<Desc>, fieldName: MessageFieldNames<MessageShape<Desc>>): boolean;
19
+ export declare function isFieldSet<Desc extends DescMessage>(message: MessageShape<Desc>, field: DescField): boolean;
7
20
  /**
8
21
  * Resets the field, so that isFieldSet() will return false.
9
22
  */
10
- export declare function clearField<Desc extends DescMessage>(messageDesc: Desc, message: MessageShape<Desc>, fieldName: MessageFieldNames<MessageShape<Desc>>): void;
11
- /**
12
- * Union of the property names of all fields, including oneof members.
13
- * For an anonymous message (no generated message shape), it's simply a string.
14
- */
15
- type MessageFieldNames<T extends Message> = Message extends T ? string : Exclude<keyof {
16
- [P in keyof T as P extends ("$typeName" | "$unknown") ? never : T[P] extends Oneof<infer K> ? K : P]-?: true;
17
- }, number | symbol>;
18
- type Oneof<K extends string> = {
19
- case: K | undefined;
20
- value?: unknown;
21
- };
22
- export {};
23
+ export declare function clearField<Desc extends DescMessage>(message: MessageShape<Desc>, field: DescField): void;
@@ -11,24 +11,31 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import { localName } from "./reflect/names.js";
15
14
  import { unsafeClear, unsafeIsSet } from "./reflect/unsafe.js";
16
15
  /**
17
16
  * Returns true if the field is set.
17
+ *
18
+ * - Scalar and enum fields with implicit presence (proto3):
19
+ * Set if not a zero value.
20
+ *
21
+ * - Scalar and enum fields with explicit presence (proto2, oneof):
22
+ * Set if a value was set when creating or parsing the message, or when a
23
+ * value was assigned to the field's property.
24
+ *
25
+ * - Message fields:
26
+ * Set if the property is not undefined.
27
+ *
28
+ * - List and map fields:
29
+ * Set if not empty.
18
30
  */
19
- export function isFieldSet(messageDesc, message, fieldName) {
20
- const field = messageDesc.fields.find((f) => localName(f) === fieldName);
21
- if (field) {
22
- return unsafeIsSet(message, field);
23
- }
24
- return false;
31
+ export function isFieldSet(message, field) {
32
+ return (field.parent.typeName == message.$typeName && unsafeIsSet(message, field));
25
33
  }
26
34
  /**
27
35
  * Resets the field, so that isFieldSet() will return false.
28
36
  */
29
- export function clearField(messageDesc, message, fieldName) {
30
- const field = messageDesc.fields.find((f) => localName(f) === fieldName);
31
- if (field) {
37
+ export function clearField(message, field) {
38
+ if (field.parent.typeName == message.$typeName) {
32
39
  unsafeClear(message, field);
33
40
  }
34
41
  }
@@ -1,4 +1,4 @@
1
- import type { DescField, DescMessage } from "./desc-types.js";
1
+ import { type DescField, type DescMessage } from "./descriptors.js";
2
2
  import type { MessageShape } from "./types.js";
3
3
  import type { ReflectMessage } from "./reflect/index.js";
4
4
  import { BinaryReader, WireType } from "./wire/binary-encoding.js";
@@ -27,7 +27,7 @@ export declare function fromBinary<Desc extends DescMessage>(messageDesc: Desc,
27
27
  * If a message field is already present, it will be merged with the
28
28
  * new data.
29
29
  */
30
- export declare function mergeFromBinary<Desc extends DescMessage>(messageDesc: Desc, target: MessageShape<Desc>, bytes: Uint8Array, options?: Partial<BinaryReadOptions>): MessageShape<Desc>;
30
+ export declare function mergeFromBinary<Desc extends DescMessage>(messageDesc: Desc, target: MessageShape<Desc>, bytes: Uint8Array, options?: Partial<BinaryReadOptions>): void;
31
31
  /**
32
32
  * @private
33
33
  */
@@ -11,7 +11,8 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import { LongType, ScalarType, scalarZeroValue } from "./reflect/scalar.js";
14
+ import { ScalarType } from "./descriptors.js";
15
+ import { scalarZeroValue } from "./reflect/scalar.js";
15
16
  import { reflect } from "./reflect/reflect.js";
16
17
  import { BinaryReader, WireType } from "./wire/binary-encoding.js";
17
18
  // Default options for parsing binary data.
@@ -40,7 +41,6 @@ export function fromBinary(messageDesc, bytes, options) {
40
41
  */
41
42
  export function mergeFromBinary(messageDesc, target, bytes, options) {
42
43
  readMessage(reflect(messageDesc, target), new BinaryReader(bytes), makeReadOptions(options), false, bytes.byteLength);
43
- return target;
44
44
  }
45
45
  /**
46
46
  * If `delimited` is false, read the length given in `lengthOrDelimitedFieldNo`.
@@ -57,12 +57,12 @@ function readMessage(message, reader, options, delimited, lengthOrDelimitedField
57
57
  const unknownFields = (_a = message.getUnknown()) !== null && _a !== void 0 ? _a : [];
58
58
  while (reader.pos < end) {
59
59
  [fieldNo, wireType] = reader.tag();
60
- if (wireType == WireType.EndGroup) {
60
+ if (delimited && wireType == WireType.EndGroup) {
61
61
  break;
62
62
  }
63
63
  const field = message.findNumber(fieldNo);
64
64
  if (!field) {
65
- const data = reader.skip(wireType);
65
+ const data = reader.skip(wireType, fieldNo);
66
66
  if (options.readUnknownFields) {
67
67
  unknownFields.push({ no: fieldNo, wireType, data });
68
68
  }
@@ -85,7 +85,7 @@ function readMessage(message, reader, options, delimited, lengthOrDelimitedField
85
85
  export function readField(message, reader, field, wireType, options) {
86
86
  switch (field.fieldKind) {
87
87
  case "scalar":
88
- message.set(field, readScalar(reader, field.scalar, field.longType));
88
+ message.set(field, readScalar(reader, field.scalar));
89
89
  break;
90
90
  case "enum":
91
91
  message.set(field, readScalar(reader, ScalarType.INT32));
@@ -97,14 +97,12 @@ export function readField(message, reader, field, wireType, options) {
97
97
  readListField(message, reader, options, field, wireType);
98
98
  break;
99
99
  case "map":
100
- // eslint-disable-next-line no-case-declarations
101
- const [key, val] = readMapEntry(field, reader, options);
102
- message.setMapEntry(field, key, val);
100
+ readMapEntry(message, field, reader, options);
103
101
  break;
104
102
  }
105
103
  }
106
104
  // Read a map field, expecting key field = 1, value field = 2
107
- function readMapEntry(field, reader, options) {
105
+ function readMapEntry(message, field, reader, options) {
108
106
  let key, val;
109
107
  const end = reader.pos + reader.uint32();
110
108
  while (reader.pos < end) {
@@ -129,12 +127,12 @@ function readMapEntry(field, reader, options) {
129
127
  }
130
128
  }
131
129
  if (key === undefined) {
132
- key = scalarZeroValue(field.mapKey, LongType.BIGINT);
130
+ key = scalarZeroValue(field.mapKey, false);
133
131
  }
134
132
  if (val === undefined) {
135
133
  switch (field.mapKind) {
136
134
  case "scalar":
137
- val = scalarZeroValue(field.scalar, LongType.BIGINT);
135
+ val = scalarZeroValue(field.scalar, false);
138
136
  break;
139
137
  case "enum":
140
138
  val = field.enum.values[0].number;
@@ -144,7 +142,7 @@ function readMapEntry(field, reader, options) {
144
142
  break;
145
143
  }
146
144
  }
147
- return [key, val];
145
+ message.setMapEntry(field, key, val);
148
146
  }
149
147
  function readListField(message, reader, options, field, wireType) {
150
148
  var _a;
@@ -153,17 +151,16 @@ function readListField(message, reader, options, field, wireType) {
153
151
  return;
154
152
  }
155
153
  const scalarType = (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32;
156
- const longType = field.listKind == "scalar" ? field.longType : undefined;
157
154
  const packed = wireType == WireType.LengthDelimited &&
158
155
  scalarType != ScalarType.STRING &&
159
156
  scalarType != ScalarType.BYTES;
160
157
  if (!packed) {
161
- message.addListItem(field, readScalar(reader, scalarType, longType));
158
+ message.addListItem(field, readScalar(reader, scalarType));
162
159
  return;
163
160
  }
164
161
  const e = reader.uint32() + reader.pos;
165
162
  while (reader.pos < e) {
166
- message.addListItem(field, readScalar(reader, scalarType, longType));
163
+ message.addListItem(field, readScalar(reader, scalarType));
167
164
  }
168
165
  }
169
166
  function readMessageField(reader, options, field, mergeMessage) {
@@ -172,14 +169,7 @@ function readMessageField(reader, options, field, mergeMessage) {
172
169
  readMessage(message, reader, options, delimited, delimited ? field.number : reader.uint32());
173
170
  return message;
174
171
  }
175
- function readScalar(reader, type, longType) {
176
- let v = readScalarValue(reader, type);
177
- if (longType === LongType.STRING) {
178
- v = typeof v == "bigint" ? v.toString() : v;
179
- }
180
- return v;
181
- }
182
- function readScalarValue(reader, type) {
172
+ function readScalar(reader, type) {
183
173
  switch (type) {
184
174
  case ScalarType.STRING:
185
175
  return reader.string();
@@ -1,6 +1,6 @@
1
- import type { DescMessage } from "./desc-types.js";
1
+ import { type DescMessage } from "./descriptors.js";
2
2
  import type { JsonValue } from "./json-value.js";
3
- import type { Registry } from "./reflect/registry.js";
3
+ import type { Registry } from "./registry.js";
4
4
  import type { MessageShape } from "./types.js";
5
5
  /**
6
6
  * Options for parsing JSON data.
@@ -31,7 +31,7 @@ export declare function fromJsonString<Desc extends DescMessage>(messageDesc: De
31
31
  * If a message field is already present, it will be merged with the
32
32
  * new data.
33
33
  */
34
- export declare function mergeFromJsonString<Desc extends DescMessage>(messageDesc: Desc, target: MessageShape<Desc>, json: string, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
34
+ export declare function mergeFromJsonString<Desc extends DescMessage>(messageDesc: Desc, target: MessageShape<Desc>, json: string, options?: Partial<JsonReadOptions>): void;
35
35
  /**
36
36
  * Parse a message from a JSON value.
37
37
  */
@@ -45,4 +45,4 @@ export declare function fromJson<Desc extends DescMessage>(messageDesc: Desc, js
45
45
  * If a message field is already present, it will be merged with the
46
46
  * new data.
47
47
  */
48
- export declare function mergeFromJson<Desc extends DescMessage>(messageDesc: Desc, target: MessageShape<Desc>, json: JsonValue, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
48
+ export declare function mergeFromJson<Desc extends DescMessage>(messageDesc: Desc, target: MessageShape<Desc>, json: JsonValue, options?: Partial<JsonReadOptions>): void;