@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,56 +1,8 @@
1
- /**
2
- * Scalar value types. This is a subset of field types declared by protobuf
3
- * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE
4
- * are omitted, but the numerical values are identical.
5
- */
6
- export declare enum ScalarType {
7
- DOUBLE = 1,
8
- FLOAT = 2,
9
- INT64 = 3,
10
- UINT64 = 4,
11
- INT32 = 5,
12
- FIXED64 = 6,
13
- FIXED32 = 7,
14
- BOOL = 8,
15
- STRING = 9,
16
- BYTES = 12,
17
- UINT32 = 13,
18
- SFIXED32 = 15,
19
- SFIXED64 = 16,
20
- SINT32 = 17,// Uses ZigZag encoding.
21
- SINT64 = 18
22
- }
23
- /**
24
- * JavaScript representation of fields with 64 bit integral types (int64, uint64,
25
- * sint64, fixed64, sfixed64).
26
- *
27
- * This is a subset of google.protobuf.FieldOptions.JSType, which defines JS_NORMAL,
28
- * JS_STRING, and JS_NUMBER. Protobuf-ES uses BigInt by default, but will use
29
- * String if `[jstype = JS_STRING]` is specified.
30
- *
31
- * ```protobuf
32
- * uint64 field_a = 1; // BigInt
33
- * uint64 field_b = 2 [jstype = JS_NORMAL]; // BigInt
34
- * uint64 field_b = 2 [jstype = JS_NUMBER]; // BigInt
35
- * uint64 field_b = 2 [jstype = JS_STRING]; // String
36
- * ```
37
- */
38
- export declare enum LongType {
39
- /**
40
- * Use JavaScript BigInt.
41
- */
42
- BIGINT = 0,
43
- /**
44
- * Use JavaScript String.
45
- *
46
- * Field option `[jstype = JS_STRING]`.
47
- */
48
- STRING = 1
49
- }
1
+ import { ScalarType } from "../descriptors.js";
50
2
  /**
51
3
  * ScalarValue maps from a scalar field type to a TypeScript value type.
52
4
  */
53
- export type ScalarValue<T = ScalarType, L extends LongType = LongType.STRING | LongType.BIGINT> = T extends ScalarType.STRING ? string : T extends ScalarType.INT32 ? number : T extends ScalarType.UINT32 ? number : T extends ScalarType.UINT32 ? number : T extends ScalarType.SINT32 ? number : T extends ScalarType.FIXED32 ? number : T extends ScalarType.SFIXED32 ? number : T extends ScalarType.FLOAT ? number : T extends ScalarType.DOUBLE ? number : T extends ScalarType.INT64 ? L extends LongType.STRING ? string : bigint : T extends ScalarType.SINT64 ? L extends LongType.STRING ? string : bigint : T extends ScalarType.SFIXED64 ? L extends LongType.STRING ? string : bigint : T extends ScalarType.UINT64 ? L extends LongType.STRING ? string : bigint : T extends ScalarType.FIXED64 ? L extends LongType.STRING ? string : bigint : T extends ScalarType.BOOL ? boolean : T extends ScalarType.BYTES ? Uint8Array : never;
5
+ export type ScalarValue<T = ScalarType, LongAsString extends boolean = false> = T extends ScalarType.STRING ? string : T extends ScalarType.INT32 ? number : T extends ScalarType.UINT32 ? number : T extends ScalarType.SINT32 ? number : T extends ScalarType.FIXED32 ? number : T extends ScalarType.SFIXED32 ? number : T extends ScalarType.FLOAT ? number : T extends ScalarType.DOUBLE ? number : T extends ScalarType.INT64 ? LongAsString extends true ? string : bigint : T extends ScalarType.SINT64 ? LongAsString extends true ? string : bigint : T extends ScalarType.SFIXED64 ? LongAsString extends true ? string : bigint : T extends ScalarType.UINT64 ? LongAsString extends true ? string : bigint : T extends ScalarType.FIXED64 ? LongAsString extends true ? string : bigint : T extends ScalarType.BOOL ? boolean : T extends ScalarType.BYTES ? Uint8Array : never;
54
6
  /**
55
7
  * Returns true if both scalar values are equal.
56
8
  */
@@ -58,7 +10,7 @@ export declare function scalarEquals(type: ScalarType, a: string | boolean | num
58
10
  /**
59
11
  * Returns the zero value for the given scalar type.
60
12
  */
61
- export declare function scalarZeroValue<T extends ScalarType, L extends LongType>(type: T, longType: L): ScalarValue<T, L>;
13
+ export declare function scalarZeroValue<T extends ScalarType, LongAsString extends boolean>(type: T, longAsString: LongAsString): ScalarValue<T, LongAsString>;
62
14
  /**
63
15
  * Returns true for a zero-value. For example, an integer has the zero-value `0`,
64
16
  * a boolean is `false`, a string is `""`, and bytes is an empty Uint8Array.
@@ -67,7 +19,3 @@ export declare function scalarZeroValue<T extends ScalarType, L extends LongType
67
19
  * optional or repeated.
68
20
  */
69
21
  export declare function isScalarZeroValue(type: ScalarType, value: unknown): boolean;
70
- export type InvalidScalarValueErr = false | "invalid UTF8" | `${string} out of range`;
71
- export declare function checkScalarValue(value: unknown, scalar: ScalarType): true | InvalidScalarValueErr;
72
- export declare function scalarTypeDescription(scalar: ScalarType): string;
73
- export declare function scalarTypeScriptType(scalar: ScalarType, long: LongType): "string" | "boolean" | "bigint" | "bigint | string" | "Uint8Array" | "number";
@@ -12,72 +12,7 @@
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
14
  import { protoInt64 } from "../proto-int64.js";
15
- import { getTextEncoding } from "../wire/text-encoding.js";
16
- /**
17
- * Scalar value types. This is a subset of field types declared by protobuf
18
- * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE
19
- * are omitted, but the numerical values are identical.
20
- */
21
- export var ScalarType;
22
- (function (ScalarType) {
23
- // 0 is reserved for errors.
24
- // Order is weird for historical reasons.
25
- ScalarType[ScalarType["DOUBLE"] = 1] = "DOUBLE";
26
- ScalarType[ScalarType["FLOAT"] = 2] = "FLOAT";
27
- // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
28
- // negative values are likely.
29
- ScalarType[ScalarType["INT64"] = 3] = "INT64";
30
- ScalarType[ScalarType["UINT64"] = 4] = "UINT64";
31
- // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
32
- // negative values are likely.
33
- ScalarType[ScalarType["INT32"] = 5] = "INT32";
34
- ScalarType[ScalarType["FIXED64"] = 6] = "FIXED64";
35
- ScalarType[ScalarType["FIXED32"] = 7] = "FIXED32";
36
- ScalarType[ScalarType["BOOL"] = 8] = "BOOL";
37
- ScalarType[ScalarType["STRING"] = 9] = "STRING";
38
- // Tag-delimited aggregate.
39
- // Group type is deprecated and not supported in proto3. However, Proto3
40
- // implementations should still be able to parse the group wire format and
41
- // treat group fields as unknown fields.
42
- // TYPE_GROUP = 10,
43
- // TYPE_MESSAGE = 11, // Length-delimited aggregate.
44
- // New in version 2.
45
- ScalarType[ScalarType["BYTES"] = 12] = "BYTES";
46
- ScalarType[ScalarType["UINT32"] = 13] = "UINT32";
47
- // TYPE_ENUM = 14,
48
- ScalarType[ScalarType["SFIXED32"] = 15] = "SFIXED32";
49
- ScalarType[ScalarType["SFIXED64"] = 16] = "SFIXED64";
50
- ScalarType[ScalarType["SINT32"] = 17] = "SINT32";
51
- ScalarType[ScalarType["SINT64"] = 18] = "SINT64";
52
- })(ScalarType || (ScalarType = {}));
53
- /**
54
- * JavaScript representation of fields with 64 bit integral types (int64, uint64,
55
- * sint64, fixed64, sfixed64).
56
- *
57
- * This is a subset of google.protobuf.FieldOptions.JSType, which defines JS_NORMAL,
58
- * JS_STRING, and JS_NUMBER. Protobuf-ES uses BigInt by default, but will use
59
- * String if `[jstype = JS_STRING]` is specified.
60
- *
61
- * ```protobuf
62
- * uint64 field_a = 1; // BigInt
63
- * uint64 field_b = 2 [jstype = JS_NORMAL]; // BigInt
64
- * uint64 field_b = 2 [jstype = JS_NUMBER]; // BigInt
65
- * uint64 field_b = 2 [jstype = JS_STRING]; // String
66
- * ```
67
- */
68
- export var LongType;
69
- (function (LongType) {
70
- /**
71
- * Use JavaScript BigInt.
72
- */
73
- LongType[LongType["BIGINT"] = 0] = "BIGINT";
74
- /**
75
- * Use JavaScript String.
76
- *
77
- * Field option `[jstype = JS_STRING]`.
78
- */
79
- LongType[LongType["STRING"] = 1] = "STRING";
80
- })(LongType || (LongType = {}));
15
+ import { ScalarType } from "../descriptors.js";
81
16
  /**
82
17
  * Returns true if both scalar values are equal.
83
18
  */
@@ -119,27 +54,27 @@ export function scalarEquals(type, a, b) {
119
54
  /**
120
55
  * Returns the zero value for the given scalar type.
121
56
  */
122
- export function scalarZeroValue(type, longType) {
57
+ export function scalarZeroValue(type, longAsString) {
123
58
  switch (type) {
59
+ case ScalarType.STRING:
60
+ return "";
124
61
  case ScalarType.BOOL:
125
62
  return false;
126
- case ScalarType.UINT64:
127
- case ScalarType.FIXED64:
128
- case ScalarType.INT64:
129
- case ScalarType.SFIXED64:
130
- case ScalarType.SINT64:
131
- return (longType == 0 ? protoInt64.zero : "0");
63
+ default:
64
+ // Handles INT32, UINT32, SINT32, FIXED32, SFIXED32.
65
+ // We do not use individual cases to save a few bytes code size.
66
+ return 0;
132
67
  case ScalarType.DOUBLE:
133
68
  case ScalarType.FLOAT:
134
69
  return 0.0;
70
+ case ScalarType.INT64:
71
+ case ScalarType.UINT64:
72
+ case ScalarType.SFIXED64:
73
+ case ScalarType.FIXED64:
74
+ case ScalarType.SINT64:
75
+ return (longAsString ? "0" : protoInt64.zero);
135
76
  case ScalarType.BYTES:
136
77
  return new Uint8Array(0);
137
- case ScalarType.STRING:
138
- return "";
139
- default:
140
- // Handles INT32, UINT32, SINT32, FIXED32, SFIXED32.
141
- // We do not use individual cases to save a few bytes code size.
142
- return 0;
143
78
  }
144
79
  }
145
80
  /**
@@ -161,129 +96,3 @@ export function isScalarZeroValue(type, value) {
161
96
  return value == 0; // Loose comparison matches 0n, 0 and "0"
162
97
  }
163
98
  }
164
- const FLOAT32_MAX = 3.4028234663852886e38, FLOAT32_MIN = -3.4028234663852886e38, UINT32_MAX = 0xffffffff, INT32_MAX = 0x7fffffff, INT32_MIN = -0x80000000;
165
- // TODO this checks UTF-8 validity
166
- export function checkScalarValue(value, scalar) {
167
- switch (scalar) {
168
- case ScalarType.DOUBLE:
169
- return typeof value == "number";
170
- case ScalarType.FLOAT:
171
- if (typeof value != "number") {
172
- return false;
173
- }
174
- if (Number.isNaN(value) || !Number.isFinite(value)) {
175
- return true;
176
- }
177
- if (value > FLOAT32_MAX || value < FLOAT32_MIN) {
178
- return `${value.toFixed()} out of range`;
179
- }
180
- return true;
181
- case ScalarType.INT32:
182
- case ScalarType.SFIXED32:
183
- case ScalarType.SINT32:
184
- // signed
185
- if (typeof value !== "number" || !Number.isInteger(value)) {
186
- return false;
187
- }
188
- if (value > INT32_MAX || value < INT32_MIN) {
189
- return `${value.toFixed()} out of range`;
190
- }
191
- return true;
192
- case ScalarType.FIXED32:
193
- case ScalarType.UINT32:
194
- // unsigned
195
- if (typeof value !== "number" || !Number.isInteger(value)) {
196
- return false;
197
- }
198
- if (value > UINT32_MAX || value < 0) {
199
- return `${value.toFixed()} out of range`;
200
- }
201
- return true;
202
- case ScalarType.BOOL:
203
- return typeof value == "boolean";
204
- case ScalarType.STRING:
205
- if (typeof value != "string") {
206
- return false;
207
- }
208
- return getTextEncoding().checkUtf8(value) || "invalid UTF8";
209
- case ScalarType.BYTES:
210
- return value instanceof Uint8Array;
211
- case ScalarType.INT64:
212
- case ScalarType.SFIXED64:
213
- case ScalarType.SINT64:
214
- // signed
215
- if (typeof value != "string" &&
216
- typeof value !== "bigint" &&
217
- typeof value !== "number") {
218
- return false;
219
- }
220
- try {
221
- protoInt64.parse(value);
222
- }
223
- catch (e) {
224
- return `${value} out of range`;
225
- }
226
- return true;
227
- case ScalarType.FIXED64:
228
- case ScalarType.UINT64:
229
- // unsigned
230
- if (typeof value != "string" &&
231
- typeof value !== "bigint" &&
232
- typeof value !== "number") {
233
- return false;
234
- }
235
- try {
236
- protoInt64.uParse(value);
237
- }
238
- catch (e) {
239
- return `${value} out of range`;
240
- }
241
- return true;
242
- }
243
- }
244
- export function scalarTypeDescription(scalar) {
245
- switch (scalar) {
246
- case ScalarType.STRING:
247
- return "string";
248
- case ScalarType.BOOL:
249
- return "boolean";
250
- case ScalarType.INT64:
251
- case ScalarType.SINT64:
252
- case ScalarType.SFIXED64:
253
- return "bigint (int64)";
254
- case ScalarType.UINT64:
255
- case ScalarType.FIXED64:
256
- return "bigint (uint64)";
257
- case ScalarType.BYTES:
258
- return "Uint8Array";
259
- case ScalarType.DOUBLE:
260
- return "number (float64)";
261
- case ScalarType.FLOAT:
262
- return "number (float32)";
263
- case ScalarType.FIXED32:
264
- case ScalarType.UINT32:
265
- return "number (uint32)";
266
- case ScalarType.INT32:
267
- case ScalarType.SFIXED32:
268
- case ScalarType.SINT32:
269
- return "number (int32)";
270
- }
271
- }
272
- export function scalarTypeScriptType(scalar, long) {
273
- switch (scalar) {
274
- case ScalarType.STRING:
275
- return "string";
276
- case ScalarType.BOOL:
277
- return "boolean";
278
- case ScalarType.UINT64:
279
- case ScalarType.SFIXED64:
280
- case ScalarType.FIXED64:
281
- case ScalarType.SINT64:
282
- case ScalarType.INT64:
283
- return long == LongType.STRING ? "string" : "bigint";
284
- case ScalarType.BYTES:
285
- return "Uint8Array";
286
- default:
287
- return "number";
288
- }
289
- }
@@ -1,4 +1,4 @@
1
- import type { DescField, DescOneof } from "../desc-types.js";
1
+ import type { DescField, DescOneof } from "../descriptors.js";
2
2
  export declare const unsafeLocal: unique symbol;
3
3
  /**
4
4
  * Return the selected field of a oneof group.
@@ -11,7 +11,6 @@
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 "./names.js";
15
14
  import { isScalarZeroValue, scalarZeroValue } from "./scalar.js";
16
15
  // bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;
17
16
  const IMPLICIT = 2;
@@ -23,11 +22,11 @@ export const unsafeLocal = Symbol.for("reflect unsafe local");
23
22
  */
24
23
  export function unsafeOneofCase(target, // eslint-disable-line @typescript-eslint/no-explicit-any -- `any` is the best choice for dynamic access
25
24
  oneof) {
26
- const c = target[localName(oneof)].case;
25
+ const c = target[oneof.localName].case;
27
26
  if (c === undefined) {
28
27
  return c;
29
28
  }
30
- return oneof.fields.find((f) => localName(f) === c);
29
+ return oneof.fields.find((f) => f.localName === c);
31
30
  }
32
31
  /**
33
32
  * Returns true if the field is set.
@@ -36,28 +35,28 @@ oneof) {
36
35
  */
37
36
  export function unsafeIsSet(target, // eslint-disable-line @typescript-eslint/no-explicit-any -- `any` is the best choice for dynamic access
38
37
  field) {
39
- const name = localName(field);
38
+ const name = field.localName;
40
39
  if (field.oneof) {
41
- return target[localName(field.oneof)].case === name; // eslint-disable-line @typescript-eslint/no-unsafe-member-access
40
+ return target[field.oneof.localName].case === name; // eslint-disable-line @typescript-eslint/no-unsafe-member-access
42
41
  }
42
+ if (field.presence != IMPLICIT) {
43
+ // Fields with explicit presence have properties on the prototype chain
44
+ // for default / zero values (except for proto3).
45
+ return (target[name] !== undefined &&
46
+ Object.prototype.hasOwnProperty.call(target, name));
47
+ }
48
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
43
49
  switch (field.fieldKind) {
44
- case "message":
45
- return target[name] !== undefined;
46
50
  case "list":
47
51
  return target[name].length > 0;
48
52
  case "map":
49
53
  return Object.keys(target[name]).length > 0; // eslint-disable-line @typescript-eslint/no-unsafe-argument
50
- default:
51
- if (field.presence == IMPLICIT) {
52
- if (field.fieldKind == "enum") {
53
- return target[name] !== field.enum.values[0].number;
54
- }
55
- return !isScalarZeroValue(field.scalar, target[name]);
56
- }
57
- // EXPLICIT and LEGACY_REQUIRED
58
- return (target[name] !== undefined &&
59
- Object.prototype.hasOwnProperty.call(target, name));
54
+ case "scalar":
55
+ return !isScalarZeroValue(field.scalar, target[name]);
56
+ case "enum":
57
+ return target[name] !== field.enum.values[0].number;
60
58
  }
59
+ throw new Error("message field with implicit presence");
61
60
  }
62
61
  /**
63
62
  * Returns true if the field is set, but only for singular fields with explicit
@@ -75,15 +74,14 @@ export function unsafeIsSetExplicit(target, localName) {
75
74
  * @private
76
75
  */
77
76
  export function unsafeGet(target, field) {
78
- const name = localName(field);
79
77
  if (field.oneof) {
80
- const oneof = target[localName(field.oneof)];
81
- if (oneof.case === name) {
78
+ const oneof = target[field.oneof.localName];
79
+ if (oneof.case === field.localName) {
82
80
  return oneof.value;
83
81
  }
84
82
  return undefined;
85
83
  }
86
- return target[name];
84
+ return target[field.localName];
87
85
  }
88
86
  /**
89
87
  * Set a field value, respecting oneof groups.
@@ -91,15 +89,14 @@ export function unsafeGet(target, field) {
91
89
  * @private
92
90
  */
93
91
  export function unsafeSet(target, field, value) {
94
- const name = localName(field);
95
92
  if (field.oneof) {
96
- target[localName(field.oneof)] = {
97
- case: name,
93
+ target[field.oneof.localName] = {
94
+ case: field.localName,
98
95
  value: value,
99
96
  };
100
97
  }
101
98
  else {
102
- target[name] = value;
99
+ target[field.localName] = value;
103
100
  }
104
101
  }
105
102
  /**
@@ -109,14 +106,21 @@ export function unsafeSet(target, field, value) {
109
106
  */
110
107
  export function unsafeClear(target, // eslint-disable-line @typescript-eslint/no-explicit-any -- `any` is the best choice for dynamic access
111
108
  field) {
112
- const name = localName(field);
109
+ const name = field.localName;
113
110
  if (field.oneof) {
114
- const oneofLocalName = localName(field.oneof);
111
+ const oneofLocalName = field.oneof.localName;
115
112
  if (target[oneofLocalName].case === name) {
116
113
  target[oneofLocalName] = { case: undefined };
117
114
  }
118
115
  }
116
+ else if (field.presence != IMPLICIT) {
117
+ // Fields with explicit presence have properties on the prototype chain
118
+ // for default / zero values (except for proto3). By deleting their own
119
+ // property, the field is reset.
120
+ delete target[name];
121
+ }
119
122
  else {
123
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
120
124
  switch (field.fieldKind) {
121
125
  case "map":
122
126
  target[name] = {};
@@ -124,19 +128,12 @@ field) {
124
128
  case "list":
125
129
  target[name] = [];
126
130
  break;
127
- case "message":
128
- delete target[name];
131
+ case "enum":
132
+ target[name] = field.enum.values[0].number;
133
+ break;
134
+ case "scalar":
135
+ target[name] = scalarZeroValue(field.scalar, field.longAsString);
129
136
  break;
130
- default:
131
- if (field.presence == IMPLICIT) {
132
- target[name] =
133
- field.fieldKind == "enum"
134
- ? field.enum.values[0].number
135
- : scalarZeroValue(field.scalar, field.longType);
136
- }
137
- else {
138
- delete target[name];
139
- }
140
137
  }
141
138
  }
142
139
  }
@@ -146,8 +143,7 @@ field) {
146
143
  * @private
147
144
  */
148
145
  export function unsafeAddListItem(target, field, value) {
149
- const name = localName(field);
150
- target[name].push(value);
146
+ target[field.localName].push(value);
151
147
  }
152
148
  /**
153
149
  * Set a map entry.
@@ -155,6 +151,5 @@ export function unsafeAddListItem(target, field, value) {
155
151
  * @private
156
152
  */
157
153
  export function unsafeSetMapEntry(target, field, key, value) {
158
- const name = localName(field);
159
- target[name][key] = value;
154
+ target[field.localName][key] = value;
160
155
  }
@@ -1,5 +1,5 @@
1
- import type { FileDescriptorProto, FileDescriptorSet } from "../wkt/gen/google/protobuf/descriptor_pb.js";
2
- import type { DescEnum, DescExtension, DescFile, DescMessage, DescService, SupportedEdition } from "../desc-types.js";
1
+ import type { FileDescriptorProto, FileDescriptorSet } from "./wkt/gen/google/protobuf/descriptor_pb.js";
2
+ import { type DescEnum, type DescExtension, type DescFile, type DescMessage, type DescService, type SupportedEdition } from "./descriptors.js";
3
3
  /**
4
4
  * A set of descriptors for messages, enumerations, extensions,
5
5
  * and services.