@bufbuild/protobuf 2.0.0-alpha.2 → 2.0.0-alpha.4
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.
- package/README.md +1 -1
- package/dist/cjs/clone.d.ts +1 -1
- package/dist/cjs/clone.js +9 -6
- package/dist/cjs/codegenv1/boot.d.ts +1 -1
- package/dist/cjs/codegenv1/boot.js +3 -5
- package/dist/cjs/codegenv1/embed.d.ts +1 -1
- package/dist/cjs/codegenv1/embed.js +39 -34
- package/dist/cjs/codegenv1/enum.d.ts +1 -1
- package/dist/cjs/codegenv1/extension.d.ts +1 -1
- package/dist/cjs/codegenv1/file.d.ts +1 -1
- package/dist/cjs/codegenv1/file.js +5 -7
- package/dist/cjs/codegenv1/index.d.ts +1 -0
- package/dist/cjs/codegenv1/index.js +1 -0
- package/dist/cjs/codegenv1/message.d.ts +1 -1
- package/dist/cjs/codegenv1/scalar.d.ts +5 -0
- package/dist/cjs/codegenv1/scalar.js +39 -0
- package/dist/cjs/codegenv1/service.d.ts +3 -3
- package/dist/cjs/codegenv1/types.d.ts +7 -9
- package/dist/cjs/create.d.ts +1 -1
- package/dist/cjs/create.js +6 -5
- package/dist/cjs/{desc-types.d.ts → descriptors.d.ts} +39 -7
- package/dist/cjs/descriptors.js +53 -0
- package/dist/cjs/equals.d.ts +1 -1
- package/dist/cjs/extensions.d.ts +1 -1
- package/dist/cjs/extensions.js +4 -3
- package/dist/cjs/fields.d.ts +1 -1
- package/dist/cjs/from-binary.d.ts +1 -1
- package/dist/cjs/from-binary.js +32 -29
- package/dist/cjs/from-json.d.ts +2 -2
- package/dist/cjs/from-json.js +201 -188
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/is-message.d.ts +1 -1
- package/dist/cjs/proto-int64.d.ts +4 -1
- package/dist/cjs/proto-int64.js +16 -6
- package/dist/cjs/reflect/error.d.ts +1 -1
- package/dist/cjs/reflect/guard.d.ts +1 -1
- package/dist/cjs/reflect/guard.js +4 -4
- package/dist/cjs/reflect/index.d.ts +0 -1
- package/dist/cjs/reflect/index.js +0 -1
- package/dist/cjs/reflect/names.d.ts +1 -1
- package/dist/cjs/reflect/names.js +1 -1
- package/dist/cjs/reflect/nested-types.d.ts +1 -1
- package/dist/cjs/reflect/reflect-check.d.ts +10 -1
- package/dist/cjs/reflect/reflect-check.js +126 -9
- package/dist/cjs/reflect/reflect-types.d.ts +3 -41
- package/dist/cjs/reflect/reflect.d.ts +1 -1
- package/dist/cjs/reflect/reflect.js +42 -60
- package/dist/cjs/reflect/scalar.d.ts +3 -55
- package/dist/cjs/reflect/scalar.js +26 -220
- package/dist/cjs/reflect/unsafe.d.ts +1 -17
- package/dist/cjs/reflect/unsafe.js +2 -20
- package/dist/cjs/{reflect/registry.d.ts → registry.d.ts} +2 -2
- package/dist/cjs/{reflect/registry.js → registry.js} +54 -36
- package/dist/cjs/to-binary.d.ts +1 -1
- package/dist/cjs/to-binary.js +27 -27
- package/dist/cjs/to-json.d.ts +7 -6
- package/dist/cjs/to-json.js +57 -44
- package/dist/cjs/types.d.ts +1 -1
- package/dist/cjs/wire/base64-encoding.js +2 -2
- package/dist/cjs/wire/binary-encoding.d.ts +20 -0
- package/dist/cjs/wire/binary-encoding.js +75 -8
- package/dist/cjs/wire/size-delimited.d.ts +1 -1
- package/dist/cjs/wire/text-format.d.ts +1 -2
- package/dist/cjs/wire/text-format.js +21 -19
- package/dist/cjs/wkt/any.d.ts +2 -2
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +6 -0
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
- package/dist/cjs/wkt/wrappers.d.ts +1 -1
- package/dist/esm/clone.d.ts +1 -1
- package/dist/esm/clone.js +8 -5
- package/dist/esm/codegenv1/boot.d.ts +1 -1
- package/dist/esm/codegenv1/boot.js +3 -5
- package/dist/esm/codegenv1/embed.d.ts +1 -1
- package/dist/esm/codegenv1/embed.js +9 -4
- package/dist/esm/codegenv1/enum.d.ts +1 -1
- package/dist/esm/codegenv1/extension.d.ts +1 -1
- package/dist/esm/codegenv1/file.d.ts +1 -1
- package/dist/esm/codegenv1/file.js +4 -6
- package/dist/esm/codegenv1/index.d.ts +1 -0
- package/dist/esm/codegenv1/index.js +1 -0
- package/dist/esm/codegenv1/message.d.ts +1 -1
- package/dist/esm/codegenv1/scalar.d.ts +5 -0
- package/dist/esm/codegenv1/scalar.js +35 -0
- package/dist/esm/codegenv1/service.d.ts +3 -3
- package/dist/esm/codegenv1/types.d.ts +7 -9
- package/dist/esm/create.d.ts +1 -1
- package/dist/esm/create.js +4 -3
- package/dist/esm/{desc-types.d.ts → descriptors.d.ts} +39 -7
- package/dist/esm/descriptors.js +50 -0
- package/dist/esm/equals.d.ts +1 -1
- package/dist/esm/extensions.d.ts +1 -1
- package/dist/esm/extensions.js +4 -3
- package/dist/esm/fields.d.ts +1 -1
- package/dist/esm/from-binary.d.ts +1 -1
- package/dist/esm/from-binary.js +14 -11
- package/dist/esm/from-json.d.ts +2 -2
- package/dist/esm/from-json.js +194 -181
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/is-message.d.ts +1 -1
- package/dist/esm/proto-int64.d.ts +4 -1
- package/dist/esm/proto-int64.js +16 -6
- package/dist/esm/reflect/error.d.ts +1 -1
- package/dist/esm/reflect/guard.d.ts +1 -1
- package/dist/esm/reflect/guard.js +4 -4
- package/dist/esm/reflect/index.d.ts +0 -1
- package/dist/esm/reflect/index.js +0 -1
- package/dist/esm/reflect/names.d.ts +1 -1
- package/dist/esm/reflect/names.js +1 -1
- package/dist/esm/reflect/nested-types.d.ts +1 -1
- package/dist/esm/reflect/reflect-check.d.ts +10 -1
- package/dist/esm/reflect/reflect-check.js +119 -2
- package/dist/esm/reflect/reflect-types.d.ts +3 -41
- package/dist/esm/reflect/reflect-types.js +1 -0
- package/dist/esm/reflect/reflect.d.ts +1 -1
- package/dist/esm/reflect/reflect.js +25 -43
- package/dist/esm/reflect/scalar.d.ts +3 -55
- package/dist/esm/reflect/scalar.js +14 -205
- package/dist/esm/reflect/unsafe.d.ts +1 -17
- package/dist/esm/reflect/unsafe.js +1 -17
- package/dist/esm/{reflect/registry.d.ts → registry.d.ts} +2 -2
- package/dist/esm/{reflect/registry.js → registry.js} +44 -26
- package/dist/esm/to-binary.d.ts +1 -1
- package/dist/esm/to-binary.js +1 -1
- package/dist/esm/to-json.d.ts +7 -6
- package/dist/esm/to-json.js +42 -29
- package/dist/esm/types.d.ts +1 -1
- package/dist/esm/wire/base64-encoding.js +2 -2
- package/dist/esm/wire/binary-encoding.d.ts +20 -0
- package/dist/esm/wire/binary-encoding.js +68 -1
- package/dist/esm/wire/size-delimited.d.ts +1 -1
- package/dist/esm/wire/text-format.d.ts +1 -2
- package/dist/esm/wire/text-format.js +5 -3
- package/dist/esm/wkt/any.d.ts +2 -2
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +6 -0
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
- package/dist/esm/wkt/wrappers.d.ts +1 -1
- package/package.json +1 -1
- package/dist/cjs/desc-types.js +0 -15
- package/dist/cjs/reflect/assert.d.ts +0 -16
- package/dist/cjs/reflect/assert.js +0 -59
- package/dist/esm/desc-types.js +0 -14
- package/dist/esm/reflect/assert.d.ts +0 -16
- package/dist/esm/reflect/assert.js +0 -52
|
@@ -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 {
|
|
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,
|
|
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
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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 "../
|
|
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.
|
|
@@ -40,19 +40,3 @@ export declare function unsafeSet(target: Record<string, unknown>, field: DescFi
|
|
|
40
40
|
*/
|
|
41
41
|
export declare function unsafeClear(target: Record<string, any>, // eslint-disable-line @typescript-eslint/no-explicit-any -- `any` is the best choice for dynamic access
|
|
42
42
|
field: DescField): void;
|
|
43
|
-
/**
|
|
44
|
-
* Add an item to a list field.
|
|
45
|
-
*
|
|
46
|
-
* @private
|
|
47
|
-
*/
|
|
48
|
-
export declare function unsafeAddListItem(target: Record<string, unknown>, field: DescField & {
|
|
49
|
-
fieldKind: "list";
|
|
50
|
-
}, value: unknown): void;
|
|
51
|
-
/**
|
|
52
|
-
* Set a map entry.
|
|
53
|
-
*
|
|
54
|
-
* @private
|
|
55
|
-
*/
|
|
56
|
-
export declare function unsafeSetMapEntry(target: Record<string, unknown>, field: DescField & {
|
|
57
|
-
fieldKind: "map";
|
|
58
|
-
}, key: string | number, value: unknown): void;
|
|
@@ -132,24 +132,8 @@ field) {
|
|
|
132
132
|
target[name] = field.enum.values[0].number;
|
|
133
133
|
break;
|
|
134
134
|
case "scalar":
|
|
135
|
-
target[name] = scalarZeroValue(field.scalar, field.
|
|
135
|
+
target[name] = scalarZeroValue(field.scalar, field.longAsString);
|
|
136
136
|
break;
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
|
-
/**
|
|
141
|
-
* Add an item to a list field.
|
|
142
|
-
*
|
|
143
|
-
* @private
|
|
144
|
-
*/
|
|
145
|
-
export function unsafeAddListItem(target, field, value) {
|
|
146
|
-
target[field.localName].push(value);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Set a map entry.
|
|
150
|
-
*
|
|
151
|
-
* @private
|
|
152
|
-
*/
|
|
153
|
-
export function unsafeSetMapEntry(target, field, key, value) {
|
|
154
|
-
target[field.localName][key] = value;
|
|
155
|
-
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { FileDescriptorProto, FileDescriptorSet } from "
|
|
2
|
-
import type
|
|
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.
|
|
@@ -11,12 +11,11 @@
|
|
|
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 {
|
|
15
|
-
import { parseTextFormatEnumValue, parseTextFormatScalarValue, } from "
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { protoCamelCase, safeObjectProperty } from "./names.js";
|
|
14
|
+
import { ScalarType, } from "./descriptors.js";
|
|
15
|
+
import { parseTextFormatEnumValue, parseTextFormatScalarValue, } from "./wire/text-format.js";
|
|
16
|
+
import { nestedTypes } from "./reflect/nested-types.js";
|
|
17
|
+
import { unsafeIsSetExplicit } from "./reflect/unsafe.js";
|
|
18
|
+
import { protoCamelCase, safeObjectProperty } from "./reflect/names.js";
|
|
20
19
|
/**
|
|
21
20
|
* Create a registry from the given inputs.
|
|
22
21
|
*
|
|
@@ -221,7 +220,7 @@ const DELIMITED = 2;
|
|
|
221
220
|
const OPEN = 1;
|
|
222
221
|
// prettier-ignore
|
|
223
222
|
// bootstrap-inject defaults: EDITION_PROTO2 to EDITION_2023: export const minimumEdition: SupportedEdition = $minimumEdition, maximumEdition: SupportedEdition = $maximumEdition;
|
|
224
|
-
// generated from protoc v27.0
|
|
223
|
+
// generated from protoc v27.0
|
|
225
224
|
export const minimumEdition = 998, maximumEdition = 1000;
|
|
226
225
|
const featureDefaults = {
|
|
227
226
|
// EDITION_PROTO2
|
|
@@ -455,6 +454,7 @@ function addService(proto, file, reg) {
|
|
|
455
454
|
name: proto.name,
|
|
456
455
|
typeName: makeTypeName(proto, undefined, file),
|
|
457
456
|
methods: [],
|
|
457
|
+
method: {},
|
|
458
458
|
toString() {
|
|
459
459
|
return `service ${this.typeName}`;
|
|
460
460
|
},
|
|
@@ -462,7 +462,9 @@ function addService(proto, file, reg) {
|
|
|
462
462
|
file.services.push(desc);
|
|
463
463
|
reg.add(desc);
|
|
464
464
|
for (const methodProto of proto.method) {
|
|
465
|
-
|
|
465
|
+
const method = newMethod(methodProto, desc, reg);
|
|
466
|
+
desc.methods.push(method);
|
|
467
|
+
desc.method[method.localName] = method;
|
|
466
468
|
}
|
|
467
469
|
}
|
|
468
470
|
/**
|
|
@@ -541,7 +543,7 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
|
|
|
541
543
|
mapKey: undefined,
|
|
542
544
|
delimitedEncoding: undefined,
|
|
543
545
|
packed: undefined,
|
|
544
|
-
|
|
546
|
+
longAsString: false,
|
|
545
547
|
getDefaultValue: undefined,
|
|
546
548
|
};
|
|
547
549
|
if (isExtension) {
|
|
@@ -583,21 +585,13 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
|
|
|
583
585
|
if (mapEntry) {
|
|
584
586
|
// map field
|
|
585
587
|
field.fieldKind = "map";
|
|
586
|
-
const
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
keyField.scalar != ScalarType.FLOAT &&
|
|
591
|
-
keyField.scalar != ScalarType.DOUBLE);
|
|
592
|
-
const valueField = mapEntry.fields.find((f) => f.number === 2);
|
|
593
|
-
assert(valueField);
|
|
594
|
-
assert(valueField.fieldKind != "list" && valueField.fieldKind != "map");
|
|
595
|
-
field.mapKey = keyField.scalar;
|
|
596
|
-
field.mapKind = valueField.fieldKind;
|
|
597
|
-
field.message = valueField.message;
|
|
588
|
+
const { key, value } = findMapEntryFields(mapEntry);
|
|
589
|
+
field.mapKey = key.scalar;
|
|
590
|
+
field.mapKind = value.fieldKind;
|
|
591
|
+
field.message = value.message;
|
|
598
592
|
field.delimitedEncoding = false; // map fields are always LENGTH_PREFIXED
|
|
599
|
-
field.enum =
|
|
600
|
-
field.scalar =
|
|
593
|
+
field.enum = value.enum;
|
|
594
|
+
field.scalar = value.scalar;
|
|
601
595
|
return field;
|
|
602
596
|
}
|
|
603
597
|
// list field
|
|
@@ -618,8 +612,7 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
|
|
|
618
612
|
default:
|
|
619
613
|
field.listKind = "scalar";
|
|
620
614
|
field.scalar = type;
|
|
621
|
-
field.
|
|
622
|
-
jstype == JS_STRING ? LongType.STRING : LongType.BIGINT;
|
|
615
|
+
field.longAsString = jstype == JS_STRING;
|
|
623
616
|
break;
|
|
624
617
|
}
|
|
625
618
|
field.packed = isPackedField(proto, parentOrFile);
|
|
@@ -650,7 +643,7 @@ function newField(proto, parentOrFile, reg, oneof, mapEntries) {
|
|
|
650
643
|
default: {
|
|
651
644
|
field.fieldKind = "scalar";
|
|
652
645
|
field.scalar = type;
|
|
653
|
-
field.
|
|
646
|
+
field.longAsString = jstype == JS_STRING;
|
|
654
647
|
field.getDefaultValue = () => {
|
|
655
648
|
return unsafeIsSetExplicit(proto, "defaultValue")
|
|
656
649
|
? parseTextFormatScalarValue(type, proto.defaultValue)
|
|
@@ -825,6 +818,22 @@ function isPackedField(proto, parent) {
|
|
|
825
818
|
parent,
|
|
826
819
|
}));
|
|
827
820
|
}
|
|
821
|
+
/**
|
|
822
|
+
* Find the key and value fields of a synthetic map entry message.
|
|
823
|
+
*/
|
|
824
|
+
function findMapEntryFields(mapEntry) {
|
|
825
|
+
const key = mapEntry.fields.find((f) => f.number === 1);
|
|
826
|
+
const value = mapEntry.fields.find((f) => f.number === 2);
|
|
827
|
+
assert(key &&
|
|
828
|
+
key.fieldKind == "scalar" &&
|
|
829
|
+
key.scalar != ScalarType.BYTES &&
|
|
830
|
+
key.scalar != ScalarType.FLOAT &&
|
|
831
|
+
key.scalar != ScalarType.DOUBLE &&
|
|
832
|
+
value &&
|
|
833
|
+
value.fieldKind != "list" &&
|
|
834
|
+
value.fieldKind != "map");
|
|
835
|
+
return { key, value };
|
|
836
|
+
}
|
|
828
837
|
/**
|
|
829
838
|
* Enumerations can be open or closed.
|
|
830
839
|
* See https://protobuf.dev/programming-guides/enum/
|
|
@@ -872,3 +881,12 @@ function resolveFeature(name, ref) {
|
|
|
872
881
|
}
|
|
873
882
|
return resolveFeature(name, ref.parent);
|
|
874
883
|
}
|
|
884
|
+
/**
|
|
885
|
+
* Assert that condition is truthy or throw error (with message)
|
|
886
|
+
*/
|
|
887
|
+
function assert(condition, msg) {
|
|
888
|
+
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions -- we want the implicit conversion to boolean
|
|
889
|
+
if (!condition) {
|
|
890
|
+
throw new Error(msg);
|
|
891
|
+
}
|
|
892
|
+
}
|
package/dist/esm/to-binary.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { MessageShape } from "./types.js";
|
|
2
2
|
import { BinaryWriter } from "./wire/binary-encoding.js";
|
|
3
|
-
import type
|
|
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.
|
package/dist/esm/to-binary.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
import { reflect } from "./reflect/reflect.js";
|
|
15
15
|
import { BinaryWriter, WireType } from "./wire/binary-encoding.js";
|
|
16
|
-
import { ScalarType } from "./
|
|
16
|
+
import { ScalarType } from "./descriptors.js";
|
|
17
17
|
// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.LEGACY_REQUIRED: const $name: FeatureSet_FieldPresence.$localName = $number;
|
|
18
18
|
const LEGACY_REQUIRED = 3;
|
|
19
19
|
// Default options for serializing binary data.
|
package/dist/esm/to-json.d.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DescMessage } from "./descriptors.js";
|
|
2
2
|
import type { JsonValue } from "./json-value.js";
|
|
3
|
-
import type { Registry } from "./
|
|
3
|
+
import type { Registry } from "./registry.js";
|
|
4
4
|
import type { MessageShape } from "./types.js";
|
|
5
5
|
/**
|
|
6
6
|
* Options for serializing to JSON.
|
|
7
7
|
*/
|
|
8
8
|
export interface JsonWriteOptions {
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* By default, fields with implicit presence are not serialized if they are
|
|
11
|
+
* unset. For example, an empty list field or a proto3 int32 field with 0 is
|
|
12
|
+
* not serialized. With this option enabled, such fields are included in the
|
|
13
|
+
* output.
|
|
13
14
|
*/
|
|
14
|
-
|
|
15
|
+
alwaysEmitImplicit: boolean;
|
|
15
16
|
/**
|
|
16
17
|
* Emit enum values as integers instead of strings: The name of an enum
|
|
17
18
|
* value is used by default in JSON output. An option may be provided to
|