@bufbuild/protobuf 2.0.0-alpha.2 → 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 (143) 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 +1 -1
  7. package/dist/cjs/codegenv1/embed.js +39 -34
  8. package/dist/cjs/codegenv1/enum.d.ts +1 -1
  9. package/dist/cjs/codegenv1/extension.d.ts +1 -1
  10. package/dist/cjs/codegenv1/file.d.ts +1 -1
  11. package/dist/cjs/codegenv1/file.js +5 -7
  12. package/dist/cjs/codegenv1/index.d.ts +1 -0
  13. package/dist/cjs/codegenv1/index.js +1 -0
  14. package/dist/cjs/codegenv1/message.d.ts +1 -1
  15. package/dist/cjs/codegenv1/scalar.d.ts +5 -0
  16. package/dist/cjs/codegenv1/scalar.js +39 -0
  17. package/dist/cjs/codegenv1/service.d.ts +3 -3
  18. package/dist/cjs/codegenv1/types.d.ts +7 -9
  19. package/dist/cjs/create.d.ts +1 -1
  20. package/dist/cjs/create.js +6 -5
  21. package/dist/cjs/{desc-types.d.ts → descriptors.d.ts} +39 -7
  22. package/dist/cjs/descriptors.js +53 -0
  23. package/dist/cjs/equals.d.ts +1 -1
  24. package/dist/cjs/extensions.d.ts +1 -1
  25. package/dist/cjs/extensions.js +4 -3
  26. package/dist/cjs/fields.d.ts +1 -1
  27. package/dist/cjs/from-binary.d.ts +2 -2
  28. package/dist/cjs/from-binary.js +22 -22
  29. package/dist/cjs/from-json.d.ts +4 -4
  30. package/dist/cjs/from-json.js +200 -181
  31. package/dist/cjs/index.d.ts +2 -1
  32. package/dist/cjs/index.js +2 -1
  33. package/dist/cjs/is-message.d.ts +1 -1
  34. package/dist/cjs/proto-int64.d.ts +4 -1
  35. package/dist/cjs/proto-int64.js +16 -6
  36. package/dist/cjs/reflect/error.d.ts +1 -1
  37. package/dist/cjs/reflect/guard.d.ts +1 -1
  38. package/dist/cjs/reflect/index.d.ts +0 -1
  39. package/dist/cjs/reflect/index.js +0 -1
  40. package/dist/cjs/reflect/names.d.ts +1 -1
  41. package/dist/cjs/reflect/names.js +1 -1
  42. package/dist/cjs/reflect/nested-types.d.ts +1 -1
  43. package/dist/cjs/reflect/reflect-check.d.ts +10 -1
  44. package/dist/cjs/reflect/reflect-check.js +126 -9
  45. package/dist/cjs/reflect/reflect-types.d.ts +4 -4
  46. package/dist/cjs/reflect/reflect.d.ts +1 -1
  47. package/dist/cjs/reflect/reflect.js +28 -27
  48. package/dist/cjs/reflect/scalar.d.ts +3 -55
  49. package/dist/cjs/reflect/scalar.js +26 -220
  50. package/dist/cjs/reflect/unsafe.d.ts +1 -1
  51. package/dist/cjs/reflect/unsafe.js +1 -1
  52. package/dist/cjs/{reflect/registry.d.ts → registry.d.ts} +2 -2
  53. package/dist/cjs/{reflect/registry.js → registry.js} +54 -36
  54. package/dist/cjs/to-binary.d.ts +1 -1
  55. package/dist/cjs/to-binary.js +27 -27
  56. package/dist/cjs/to-json.d.ts +7 -6
  57. package/dist/cjs/to-json.js +57 -44
  58. package/dist/cjs/types.d.ts +1 -1
  59. package/dist/cjs/wire/base64-encoding.js +2 -2
  60. package/dist/cjs/wire/binary-encoding.d.ts +20 -0
  61. package/dist/cjs/wire/binary-encoding.js +54 -8
  62. package/dist/cjs/wire/size-delimited.d.ts +1 -1
  63. package/dist/cjs/wire/text-format.d.ts +1 -2
  64. package/dist/cjs/wire/text-format.js +21 -19
  65. package/dist/cjs/wkt/any.d.ts +3 -3
  66. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +6 -0
  67. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
  68. package/dist/cjs/wkt/wrappers.d.ts +1 -1
  69. package/dist/esm/clone.d.ts +1 -1
  70. package/dist/esm/clone.js +1 -1
  71. package/dist/esm/codegenv1/boot.d.ts +1 -1
  72. package/dist/esm/codegenv1/boot.js +3 -5
  73. package/dist/esm/codegenv1/embed.d.ts +1 -1
  74. package/dist/esm/codegenv1/embed.js +9 -4
  75. package/dist/esm/codegenv1/enum.d.ts +1 -1
  76. package/dist/esm/codegenv1/extension.d.ts +1 -1
  77. package/dist/esm/codegenv1/file.d.ts +1 -1
  78. package/dist/esm/codegenv1/file.js +4 -6
  79. package/dist/esm/codegenv1/index.d.ts +1 -0
  80. package/dist/esm/codegenv1/index.js +1 -0
  81. package/dist/esm/codegenv1/message.d.ts +1 -1
  82. package/dist/esm/codegenv1/scalar.d.ts +5 -0
  83. package/dist/esm/codegenv1/scalar.js +35 -0
  84. package/dist/esm/codegenv1/service.d.ts +3 -3
  85. package/dist/esm/codegenv1/types.d.ts +7 -9
  86. package/dist/esm/create.d.ts +1 -1
  87. package/dist/esm/create.js +4 -3
  88. package/dist/esm/{desc-types.d.ts → descriptors.d.ts} +39 -7
  89. package/dist/esm/descriptors.js +50 -0
  90. package/dist/esm/equals.d.ts +1 -1
  91. package/dist/esm/extensions.d.ts +1 -1
  92. package/dist/esm/extensions.js +4 -3
  93. package/dist/esm/fields.d.ts +1 -1
  94. package/dist/esm/from-binary.d.ts +2 -2
  95. package/dist/esm/from-binary.js +4 -4
  96. package/dist/esm/from-json.d.ts +4 -4
  97. package/dist/esm/from-json.js +193 -174
  98. package/dist/esm/index.d.ts +2 -1
  99. package/dist/esm/index.js +2 -1
  100. package/dist/esm/is-message.d.ts +1 -1
  101. package/dist/esm/proto-int64.d.ts +4 -1
  102. package/dist/esm/proto-int64.js +16 -6
  103. package/dist/esm/reflect/error.d.ts +1 -1
  104. package/dist/esm/reflect/guard.d.ts +1 -1
  105. package/dist/esm/reflect/index.d.ts +0 -1
  106. package/dist/esm/reflect/index.js +0 -1
  107. package/dist/esm/reflect/names.d.ts +1 -1
  108. package/dist/esm/reflect/names.js +1 -1
  109. package/dist/esm/reflect/nested-types.d.ts +1 -1
  110. package/dist/esm/reflect/reflect-check.d.ts +10 -1
  111. package/dist/esm/reflect/reflect-check.js +119 -2
  112. package/dist/esm/reflect/reflect-types.d.ts +4 -4
  113. package/dist/esm/reflect/reflect-types.js +1 -0
  114. package/dist/esm/reflect/reflect.d.ts +1 -1
  115. package/dist/esm/reflect/reflect.js +10 -9
  116. package/dist/esm/reflect/scalar.d.ts +3 -55
  117. package/dist/esm/reflect/scalar.js +14 -205
  118. package/dist/esm/reflect/unsafe.d.ts +1 -1
  119. package/dist/esm/reflect/unsafe.js +1 -1
  120. package/dist/esm/{reflect/registry.d.ts → registry.d.ts} +2 -2
  121. package/dist/esm/{reflect/registry.js → registry.js} +44 -26
  122. package/dist/esm/to-binary.d.ts +1 -1
  123. package/dist/esm/to-binary.js +1 -1
  124. package/dist/esm/to-json.d.ts +7 -6
  125. package/dist/esm/to-json.js +42 -29
  126. package/dist/esm/types.d.ts +1 -1
  127. package/dist/esm/wire/base64-encoding.js +2 -2
  128. package/dist/esm/wire/binary-encoding.d.ts +20 -0
  129. package/dist/esm/wire/binary-encoding.js +47 -1
  130. package/dist/esm/wire/size-delimited.d.ts +1 -1
  131. package/dist/esm/wire/text-format.d.ts +1 -2
  132. package/dist/esm/wire/text-format.js +5 -3
  133. package/dist/esm/wkt/any.d.ts +3 -3
  134. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +6 -0
  135. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
  136. package/dist/esm/wkt/wrappers.d.ts +1 -1
  137. package/package.json +1 -1
  138. package/dist/cjs/desc-types.js +0 -15
  139. package/dist/cjs/reflect/assert.d.ts +0 -16
  140. package/dist/cjs/reflect/assert.js +0 -59
  141. package/dist/esm/desc-types.js +0 -14
  142. package/dist/esm/reflect/assert.d.ts +0 -16
  143. package/dist/esm/reflect/assert.js +0 -52
@@ -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.
@@ -140,7 +140,7 @@ field) {
140
140
  target[name] = field.enum.values[0].number;
141
141
  break;
142
142
  case "scalar":
143
- target[name] = (0, scalar_js_1.scalarZeroValue)(field.scalar, field.longType);
143
+ target[name] = (0, scalar_js_1.scalarZeroValue)(field.scalar, field.longAsString);
144
144
  break;
145
145
  }
146
146
  }
@@ -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.
@@ -14,12 +14,11 @@
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.maximumEdition = exports.minimumEdition = exports.createFileRegistry = exports.createRegistry = void 0;
17
- const assert_js_1 = require("./assert.js");
18
- const text_format_js_1 = require("../wire/text-format.js");
19
- const scalar_js_1 = require("./scalar.js");
20
- const nested_types_js_1 = require("./nested-types.js");
21
- const unsafe_js_1 = require("./unsafe.js");
22
- const names_js_1 = require("./names.js");
17
+ const descriptors_js_1 = require("./descriptors.js");
18
+ const text_format_js_1 = require("./wire/text-format.js");
19
+ const nested_types_js_1 = require("./reflect/nested-types.js");
20
+ const unsafe_js_1 = require("./reflect/unsafe.js");
21
+ const names_js_1 = require("./reflect/names.js");
23
22
  /**
24
23
  * Create a registry from the given inputs.
25
24
  *
@@ -226,7 +225,7 @@ const DELIMITED = 2;
226
225
  const OPEN = 1;
227
226
  // prettier-ignore
228
227
  // bootstrap-inject defaults: EDITION_PROTO2 to EDITION_2023: export const minimumEdition: SupportedEdition = $minimumEdition, maximumEdition: SupportedEdition = $maximumEdition;
229
- // generated from protoc v27.0-rc2
228
+ // generated from protoc v27.0
230
229
  exports.minimumEdition = 998, exports.maximumEdition = 1000;
231
230
  const featureDefaults = {
232
231
  // EDITION_PROTO2
@@ -285,7 +284,7 @@ function addFile(proto, reg) {
285
284
  },
286
285
  add(desc) {
287
286
  var _a;
288
- (0, assert_js_1.assert)(((_a = desc.proto.options) === null || _a === void 0 ? void 0 : _a.mapEntry) === true);
287
+ assert(((_a = desc.proto.options) === null || _a === void 0 ? void 0 : _a.mapEntry) === true);
289
288
  mapEntriesStore.set(desc.typeName, desc);
290
289
  },
291
290
  };
@@ -460,6 +459,7 @@ function addService(proto, file, reg) {
460
459
  name: proto.name,
461
460
  typeName: makeTypeName(proto, undefined, file),
462
461
  methods: [],
462
+ method: {},
463
463
  toString() {
464
464
  return `service ${this.typeName}`;
465
465
  },
@@ -467,7 +467,9 @@ function addService(proto, file, reg) {
467
467
  file.services.push(desc);
468
468
  reg.add(desc);
469
469
  for (const methodProto of proto.method) {
470
- desc.methods.push(newMethod(methodProto, desc, reg));
470
+ const method = newMethod(methodProto, desc, reg);
471
+ desc.methods.push(method);
472
+ desc.method[method.localName] = method;
471
473
  }
472
474
  }
473
475
  /**
@@ -490,8 +492,8 @@ function newMethod(proto, parent, reg) {
490
492
  }
491
493
  const input = reg.getMessage(trimLeadingDot(proto.inputType));
492
494
  const output = reg.getMessage(trimLeadingDot(proto.outputType));
493
- (0, assert_js_1.assert)(input, `invalid MethodDescriptorProto: input_type ${proto.inputType} not found`);
494
- (0, assert_js_1.assert)(output, `invalid MethodDescriptorProto: output_type ${proto.inputType} not found`);
495
+ assert(input, `invalid MethodDescriptorProto: input_type ${proto.inputType} not found`);
496
+ assert(output, `invalid MethodDescriptorProto: output_type ${proto.inputType} not found`);
495
497
  const name = proto.name;
496
498
  return {
497
499
  kind: "rpc",
@@ -546,7 +548,7 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
546
548
  mapKey: undefined,
547
549
  delimitedEncoding: undefined,
548
550
  packed: undefined,
549
- longType: undefined,
551
+ longAsString: false,
550
552
  getDefaultValue: undefined,
551
553
  };
552
554
  if (isExtension) {
@@ -562,13 +564,13 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
562
564
  field.jsonName = `[${typeName}]`; // option json_name is not allowed on extension fields
563
565
  field.toString = () => `extension ${typeName}`;
564
566
  const extendee = reg.getMessage(trimLeadingDot(proto.extendee));
565
- (0, assert_js_1.assert)(extendee, `invalid FieldDescriptorProto: extendee ${proto.extendee} not found`);
567
+ assert(extendee, `invalid FieldDescriptorProto: extendee ${proto.extendee} not found`);
566
568
  field.extendee = extendee;
567
569
  }
568
570
  else {
569
571
  // regular field
570
572
  const parent = parentOrFile;
571
- (0, assert_js_1.assert)(parent.kind == "message");
573
+ assert(parent.kind == "message");
572
574
  field.parent = parent;
573
575
  field.oneof = oneof;
574
576
  field.localName = oneof
@@ -588,21 +590,13 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
588
590
  if (mapEntry) {
589
591
  // map field
590
592
  field.fieldKind = "map";
591
- const keyField = mapEntry.fields.find((f) => f.number === 1);
592
- (0, assert_js_1.assert)(keyField);
593
- (0, assert_js_1.assert)(keyField.fieldKind == "scalar");
594
- (0, assert_js_1.assert)(keyField.scalar != scalar_js_1.ScalarType.BYTES &&
595
- keyField.scalar != scalar_js_1.ScalarType.FLOAT &&
596
- keyField.scalar != scalar_js_1.ScalarType.DOUBLE);
597
- const valueField = mapEntry.fields.find((f) => f.number === 2);
598
- (0, assert_js_1.assert)(valueField);
599
- (0, assert_js_1.assert)(valueField.fieldKind != "list" && valueField.fieldKind != "map");
600
- field.mapKey = keyField.scalar;
601
- field.mapKind = valueField.fieldKind;
602
- field.message = valueField.message;
593
+ const { key, value } = findMapEntryFields(mapEntry);
594
+ field.mapKey = key.scalar;
595
+ field.mapKind = value.fieldKind;
596
+ field.message = value.message;
603
597
  field.delimitedEncoding = false; // map fields are always LENGTH_PREFIXED
604
- field.enum = valueField.enum;
605
- field.scalar = valueField.scalar;
598
+ field.enum = value.enum;
599
+ field.scalar = value.scalar;
606
600
  return field;
607
601
  }
608
602
  // list field
@@ -612,19 +606,18 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
612
606
  case TYPE_GROUP:
613
607
  field.listKind = "message";
614
608
  field.message = reg.getMessage(trimLeadingDot(proto.typeName));
615
- (0, assert_js_1.assert)(field.message);
609
+ assert(field.message);
616
610
  field.delimitedEncoding = isDelimitedEncoding(proto, parentOrFile);
617
611
  break;
618
612
  case TYPE_ENUM:
619
613
  field.listKind = "enum";
620
614
  field.enum = reg.getEnum(trimLeadingDot(proto.typeName));
621
- (0, assert_js_1.assert)(field.enum);
615
+ assert(field.enum);
622
616
  break;
623
617
  default:
624
618
  field.listKind = "scalar";
625
619
  field.scalar = type;
626
- field.longType =
627
- jstype == JS_STRING ? scalar_js_1.LongType.STRING : scalar_js_1.LongType.BIGINT;
620
+ field.longAsString = jstype == JS_STRING;
628
621
  break;
629
622
  }
630
623
  field.packed = isPackedField(proto, parentOrFile);
@@ -636,13 +629,13 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
636
629
  case TYPE_GROUP:
637
630
  field.fieldKind = "message";
638
631
  field.message = reg.getMessage(trimLeadingDot(proto.typeName));
639
- (0, assert_js_1.assert)(field.message, `invalid FieldDescriptorProto: type_name ${proto.typeName} not found`);
632
+ assert(field.message, `invalid FieldDescriptorProto: type_name ${proto.typeName} not found`);
640
633
  field.delimitedEncoding = isDelimitedEncoding(proto, parentOrFile);
641
634
  field.getDefaultValue = () => undefined;
642
635
  break;
643
636
  case TYPE_ENUM: {
644
637
  const enumeration = reg.getEnum(trimLeadingDot(proto.typeName));
645
- (0, assert_js_1.assert)(enumeration !== undefined, `invalid FieldDescriptorProto: type_name ${proto.typeName} not found`);
638
+ assert(enumeration !== undefined, `invalid FieldDescriptorProto: type_name ${proto.typeName} not found`);
646
639
  field.fieldKind = "enum";
647
640
  field.enum = reg.getEnum(trimLeadingDot(proto.typeName));
648
641
  field.getDefaultValue = () => {
@@ -655,7 +648,7 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
655
648
  default: {
656
649
  field.fieldKind = "scalar";
657
650
  field.scalar = type;
658
- field.longType = jstype == JS_STRING ? scalar_js_1.LongType.STRING : scalar_js_1.LongType.BIGINT;
651
+ field.longAsString = jstype == JS_STRING;
659
652
  field.getDefaultValue = () => {
660
653
  return (0, unsafe_js_1.unsafeIsSetExplicit)(proto, "defaultValue")
661
654
  ? (0, text_format_js_1.parseTextFormatScalarValue)(type, proto.defaultValue)
@@ -773,7 +766,7 @@ function findOneof(proto, allOneofs) {
773
766
  return undefined;
774
767
  }
775
768
  const oneof = allOneofs[proto.oneofIndex];
776
- (0, assert_js_1.assert)(oneof, `invalid FieldDescriptorProto: oneof #${proto.oneofIndex} for field #${proto.number} not found`);
769
+ assert(oneof, `invalid FieldDescriptorProto: oneof #${proto.oneofIndex} for field #${proto.number} not found`);
777
770
  return oneof;
778
771
  }
779
772
  /**
@@ -830,6 +823,22 @@ function isPackedField(proto, parent) {
830
823
  parent,
831
824
  }));
832
825
  }
826
+ /**
827
+ * Find the key and value fields of a synthetic map entry message.
828
+ */
829
+ function findMapEntryFields(mapEntry) {
830
+ const key = mapEntry.fields.find((f) => f.number === 1);
831
+ const value = mapEntry.fields.find((f) => f.number === 2);
832
+ assert(key &&
833
+ key.fieldKind == "scalar" &&
834
+ key.scalar != descriptors_js_1.ScalarType.BYTES &&
835
+ key.scalar != descriptors_js_1.ScalarType.FLOAT &&
836
+ key.scalar != descriptors_js_1.ScalarType.DOUBLE &&
837
+ value &&
838
+ value.fieldKind != "list" &&
839
+ value.fieldKind != "map");
840
+ return { key, value };
841
+ }
833
842
  /**
834
843
  * Enumerations can be open or closed.
835
844
  * See https://protobuf.dev/programming-guides/enum/
@@ -877,3 +886,12 @@ function resolveFeature(name, ref) {
877
886
  }
878
887
  return resolveFeature(name, ref.parent);
879
888
  }
889
+ /**
890
+ * Assert that condition is truthy or throw error (with message)
891
+ */
892
+ function assert(condition, msg) {
893
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions -- we want the implicit conversion to boolean
894
+ if (!condition) {
895
+ throw new Error(msg);
896
+ }
897
+ }
@@ -1,6 +1,6 @@
1
1
  import type { MessageShape } from "./types.js";
2
2
  import { BinaryWriter } from "./wire/binary-encoding.js";
3
- import type { DescField, DescMessage } from "./desc-types.js";
3
+ import { type DescField, type DescMessage } from "./descriptors.js";
4
4
  import type { ReflectMessage } from "./reflect/index.js";
5
5
  /**
6
6
  * Options for serializing to binary data.
@@ -16,7 +16,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.writeField = exports.toBinary = void 0;
17
17
  const reflect_js_1 = require("./reflect/reflect.js");
18
18
  const binary_encoding_js_1 = require("./wire/binary-encoding.js");
19
- const scalar_js_1 = require("./reflect/scalar.js");
19
+ const descriptors_js_1 = require("./descriptors.js");
20
20
  // bootstrap-inject google.protobuf.FeatureSet.FieldPresence.LEGACY_REQUIRED: const $name: FeatureSet_FieldPresence.$localName = $number;
21
21
  const LEGACY_REQUIRED = 3;
22
22
  // Default options for serializing binary data.
@@ -56,7 +56,7 @@ function writeField(writer, opts, msg, field) {
56
56
  switch (field.fieldKind) {
57
57
  case "scalar":
58
58
  case "enum":
59
- writeScalar(writer, (_a = field.scalar) !== null && _a !== void 0 ? _a : scalar_js_1.ScalarType.INT32, field.number, msg.get(field));
59
+ writeScalar(writer, (_a = field.scalar) !== null && _a !== void 0 ? _a : descriptors_js_1.ScalarType.INT32, field.number, msg.get(field));
60
60
  break;
61
61
  case "list":
62
62
  writeListField(writer, opts, field, msg.get(field));
@@ -91,7 +91,7 @@ function writeListField(writer, opts, field, list) {
91
91
  }
92
92
  return;
93
93
  }
94
- const scalarType = (_a = field.scalar) !== null && _a !== void 0 ? _a : scalar_js_1.ScalarType.INT32;
94
+ const scalarType = (_a = field.scalar) !== null && _a !== void 0 ? _a : descriptors_js_1.ScalarType.INT32;
95
95
  if (field.packed) {
96
96
  if (!list.size) {
97
97
  return;
@@ -116,7 +116,7 @@ function writeMapEntry(writer, opts, field, key, value) {
116
116
  switch (field.mapKind) {
117
117
  case "scalar":
118
118
  case "enum":
119
- writeScalar(writer, (_a = field.scalar) !== null && _a !== void 0 ? _a : scalar_js_1.ScalarType.INT32, 2, value);
119
+ writeScalar(writer, (_a = field.scalar) !== null && _a !== void 0 ? _a : descriptors_js_1.ScalarType.INT32, 2, value);
120
120
  break;
121
121
  case "message":
122
122
  writeFields(writer.tag(2, binary_encoding_js_1.WireType.LengthDelimited).fork(), opts, value).join();
@@ -126,65 +126,65 @@ function writeMapEntry(writer, opts, field, key, value) {
126
126
  }
127
127
  function writeScalarValue(writer, type, value) {
128
128
  switch (type) {
129
- case scalar_js_1.ScalarType.STRING:
129
+ case descriptors_js_1.ScalarType.STRING:
130
130
  writer.string(value);
131
131
  break;
132
- case scalar_js_1.ScalarType.BOOL:
132
+ case descriptors_js_1.ScalarType.BOOL:
133
133
  writer.bool(value);
134
134
  break;
135
- case scalar_js_1.ScalarType.DOUBLE:
135
+ case descriptors_js_1.ScalarType.DOUBLE:
136
136
  writer.double(value);
137
137
  break;
138
- case scalar_js_1.ScalarType.FLOAT:
138
+ case descriptors_js_1.ScalarType.FLOAT:
139
139
  writer.float(value);
140
140
  break;
141
- case scalar_js_1.ScalarType.INT32:
141
+ case descriptors_js_1.ScalarType.INT32:
142
142
  writer.int32(value);
143
143
  break;
144
- case scalar_js_1.ScalarType.INT64:
144
+ case descriptors_js_1.ScalarType.INT64:
145
145
  writer.int64(value);
146
146
  break;
147
- case scalar_js_1.ScalarType.UINT64:
147
+ case descriptors_js_1.ScalarType.UINT64:
148
148
  writer.uint64(value);
149
149
  break;
150
- case scalar_js_1.ScalarType.FIXED64:
150
+ case descriptors_js_1.ScalarType.FIXED64:
151
151
  writer.fixed64(value);
152
152
  break;
153
- case scalar_js_1.ScalarType.BYTES:
153
+ case descriptors_js_1.ScalarType.BYTES:
154
154
  writer.bytes(value);
155
155
  break;
156
- case scalar_js_1.ScalarType.FIXED32:
156
+ case descriptors_js_1.ScalarType.FIXED32:
157
157
  writer.fixed32(value);
158
158
  break;
159
- case scalar_js_1.ScalarType.SFIXED32:
159
+ case descriptors_js_1.ScalarType.SFIXED32:
160
160
  writer.sfixed32(value);
161
161
  break;
162
- case scalar_js_1.ScalarType.SFIXED64:
162
+ case descriptors_js_1.ScalarType.SFIXED64:
163
163
  writer.sfixed64(value);
164
164
  break;
165
- case scalar_js_1.ScalarType.SINT64:
165
+ case descriptors_js_1.ScalarType.SINT64:
166
166
  writer.sint64(value);
167
167
  break;
168
- case scalar_js_1.ScalarType.UINT32:
168
+ case descriptors_js_1.ScalarType.UINT32:
169
169
  writer.uint32(value);
170
170
  break;
171
- case scalar_js_1.ScalarType.SINT32:
171
+ case descriptors_js_1.ScalarType.SINT32:
172
172
  writer.sint32(value);
173
173
  break;
174
174
  }
175
175
  }
176
176
  function writeTypeOfScalar(type) {
177
177
  switch (type) {
178
- case scalar_js_1.ScalarType.BYTES:
179
- case scalar_js_1.ScalarType.STRING:
178
+ case descriptors_js_1.ScalarType.BYTES:
179
+ case descriptors_js_1.ScalarType.STRING:
180
180
  return binary_encoding_js_1.WireType.LengthDelimited;
181
- case scalar_js_1.ScalarType.DOUBLE:
182
- case scalar_js_1.ScalarType.FIXED64:
183
- case scalar_js_1.ScalarType.SFIXED64:
181
+ case descriptors_js_1.ScalarType.DOUBLE:
182
+ case descriptors_js_1.ScalarType.FIXED64:
183
+ case descriptors_js_1.ScalarType.SFIXED64:
184
184
  return binary_encoding_js_1.WireType.Bit64;
185
- case scalar_js_1.ScalarType.FIXED32:
186
- case scalar_js_1.ScalarType.SFIXED32:
187
- case scalar_js_1.ScalarType.FLOAT:
185
+ case descriptors_js_1.ScalarType.FIXED32:
186
+ case descriptors_js_1.ScalarType.SFIXED32:
187
+ case descriptors_js_1.ScalarType.FLOAT:
188
188
  return binary_encoding_js_1.WireType.Bit32;
189
189
  default:
190
190
  return binary_encoding_js_1.WireType.Varint;