@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.
- package/README.md +1 -1
- package/dist/cjs/clone.d.ts +1 -1
- package/dist/cjs/clone.js +2 -2
- 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 +2 -2
- package/dist/cjs/from-binary.js +22 -22
- package/dist/cjs/from-json.d.ts +4 -4
- package/dist/cjs/from-json.js +200 -181
- 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/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 +4 -4
- package/dist/cjs/reflect/reflect.d.ts +1 -1
- package/dist/cjs/reflect/reflect.js +28 -27
- 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 -1
- package/dist/cjs/reflect/unsafe.js +1 -1
- 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 +54 -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 +3 -3
- 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 +1 -1
- 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 +2 -2
- package/dist/esm/from-binary.js +4 -4
- package/dist/esm/from-json.d.ts +4 -4
- package/dist/esm/from-json.js +193 -174
- 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/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 +4 -4
- package/dist/esm/reflect/reflect-types.js +1 -0
- package/dist/esm/reflect/reflect.d.ts +1 -1
- package/dist/esm/reflect/reflect.js +10 -9
- 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 -1
- package/dist/esm/reflect/unsafe.js +1 -1
- 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 +47 -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 +3 -3
- 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
|
@@ -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.
|
|
16
|
+
exports.isScalarZeroValue = exports.scalarZeroValue = exports.scalarEquals = void 0;
|
|
17
17
|
const proto_int64_js_1 = require("../proto-int64.js");
|
|
18
|
-
const
|
|
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,
|
|
61
|
+
function scalarZeroValue(type, longAsString) {
|
|
127
62
|
switch (type) {
|
|
128
|
-
case ScalarType.
|
|
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;
|
|
@@ -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.
|
|
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 "
|
|
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.
|
|
@@ -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
|
|
18
|
-
const text_format_js_1 = require("
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
494
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
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 =
|
|
605
|
-
field.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
|
-
|
|
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
|
-
|
|
615
|
+
assert(field.enum);
|
|
622
616
|
break;
|
|
623
617
|
default:
|
|
624
618
|
field.listKind = "scalar";
|
|
625
619
|
field.scalar = type;
|
|
626
|
-
field.
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
+
}
|
package/dist/cjs/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/cjs/to-binary.js
CHANGED
|
@@ -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
|
|
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 :
|
|
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 :
|
|
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 :
|
|
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
|
|
129
|
+
case descriptors_js_1.ScalarType.STRING:
|
|
130
130
|
writer.string(value);
|
|
131
131
|
break;
|
|
132
|
-
case
|
|
132
|
+
case descriptors_js_1.ScalarType.BOOL:
|
|
133
133
|
writer.bool(value);
|
|
134
134
|
break;
|
|
135
|
-
case
|
|
135
|
+
case descriptors_js_1.ScalarType.DOUBLE:
|
|
136
136
|
writer.double(value);
|
|
137
137
|
break;
|
|
138
|
-
case
|
|
138
|
+
case descriptors_js_1.ScalarType.FLOAT:
|
|
139
139
|
writer.float(value);
|
|
140
140
|
break;
|
|
141
|
-
case
|
|
141
|
+
case descriptors_js_1.ScalarType.INT32:
|
|
142
142
|
writer.int32(value);
|
|
143
143
|
break;
|
|
144
|
-
case
|
|
144
|
+
case descriptors_js_1.ScalarType.INT64:
|
|
145
145
|
writer.int64(value);
|
|
146
146
|
break;
|
|
147
|
-
case
|
|
147
|
+
case descriptors_js_1.ScalarType.UINT64:
|
|
148
148
|
writer.uint64(value);
|
|
149
149
|
break;
|
|
150
|
-
case
|
|
150
|
+
case descriptors_js_1.ScalarType.FIXED64:
|
|
151
151
|
writer.fixed64(value);
|
|
152
152
|
break;
|
|
153
|
-
case
|
|
153
|
+
case descriptors_js_1.ScalarType.BYTES:
|
|
154
154
|
writer.bytes(value);
|
|
155
155
|
break;
|
|
156
|
-
case
|
|
156
|
+
case descriptors_js_1.ScalarType.FIXED32:
|
|
157
157
|
writer.fixed32(value);
|
|
158
158
|
break;
|
|
159
|
-
case
|
|
159
|
+
case descriptors_js_1.ScalarType.SFIXED32:
|
|
160
160
|
writer.sfixed32(value);
|
|
161
161
|
break;
|
|
162
|
-
case
|
|
162
|
+
case descriptors_js_1.ScalarType.SFIXED64:
|
|
163
163
|
writer.sfixed64(value);
|
|
164
164
|
break;
|
|
165
|
-
case
|
|
165
|
+
case descriptors_js_1.ScalarType.SINT64:
|
|
166
166
|
writer.sint64(value);
|
|
167
167
|
break;
|
|
168
|
-
case
|
|
168
|
+
case descriptors_js_1.ScalarType.UINT32:
|
|
169
169
|
writer.uint32(value);
|
|
170
170
|
break;
|
|
171
|
-
case
|
|
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
|
|
179
|
-
case
|
|
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
|
|
182
|
-
case
|
|
183
|
-
case
|
|
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
|
|
186
|
-
case
|
|
187
|
-
case
|
|
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;
|