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