@bufbuild/protobuf 2.12.0 → 2.12.1
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 +3 -3
- package/dist/commonjs/codegenv1/boot.d.ts +1 -0
- package/dist/{cjs/codegenv1/types.js → commonjs/codegenv1/boot.js} +3 -7
- package/dist/{cjs → commonjs}/codegenv1/types.d.ts +9 -5
- package/dist/{cjs → commonjs}/codegenv2/types.d.ts +9 -5
- package/dist/{cjs → commonjs}/equals.d.ts +8 -3
- package/dist/{cjs → commonjs}/equals.js +8 -3
- package/dist/{cjs → commonjs}/extensions.d.ts +2 -1
- package/dist/{cjs → commonjs}/extensions.js +3 -4
- package/dist/{cjs → commonjs}/from-binary.d.ts +16 -2
- package/dist/{cjs → commonjs}/from-binary.js +30 -24
- package/dist/{cjs → commonjs}/from-json.d.ts +19 -2
- package/dist/{cjs → commonjs}/from-json.js +174 -54
- package/dist/commonjs/json-value.js +15 -0
- package/dist/commonjs/package.json +4 -0
- package/dist/{cjs → commonjs}/proto-int64.js +1 -0
- package/dist/{cjs → commonjs}/reflect/reflect-check.js +3 -1
- package/dist/commonjs/reflect/scalar.d.ts +43 -0
- package/dist/{cjs → commonjs}/reflect/scalar.js +33 -6
- package/dist/{cjs → commonjs}/registry.js +1 -1
- package/dist/{cjs/codegenv2 → commonjs}/types.js +0 -7
- package/dist/{cjs → commonjs}/wire/binary-encoding.d.ts +4 -2
- package/dist/{cjs → commonjs}/wire/binary-encoding.js +8 -3
- package/dist/{cjs → commonjs}/wire/size-delimited.d.ts +1 -1
- package/dist/esm/codegenv1/boot.d.ts +1 -0
- package/dist/esm/codegenv1/boot.js +14 -0
- package/dist/esm/codegenv1/types.d.ts +9 -5
- package/dist/esm/codegenv1/types.js +0 -7
- package/dist/esm/codegenv2/types.d.ts +9 -5
- package/dist/esm/codegenv2/types.js +0 -7
- package/dist/esm/equals.d.ts +8 -3
- package/dist/esm/equals.js +8 -3
- package/dist/esm/extensions.d.ts +2 -1
- package/dist/esm/extensions.js +4 -5
- package/dist/esm/from-binary.d.ts +16 -2
- package/dist/esm/from-binary.js +29 -24
- package/dist/esm/from-json.d.ts +19 -2
- package/dist/esm/from-json.js +174 -54
- package/dist/esm/package.json +4 -0
- package/dist/esm/proto-int64.js +1 -0
- package/dist/esm/reflect/reflect-check.js +3 -1
- package/dist/esm/reflect/scalar.d.ts +27 -5
- package/dist/esm/reflect/scalar.js +33 -6
- package/dist/esm/registry.js +1 -1
- package/dist/esm/wire/binary-encoding.d.ts +4 -2
- package/dist/esm/wire/binary-encoding.js +8 -3
- package/dist/esm/wire/size-delimited.d.ts +1 -1
- package/package.json +97 -31
- package/dist/cjs/package.json +0 -1
- package/dist/cjs/reflect/scalar.d.ts +0 -21
- /package/dist/{cjs → commonjs}/clone.d.ts +0 -0
- /package/dist/{cjs → commonjs}/clone.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/enum.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/enum.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/extension.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/extension.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/file.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/file.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/index.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/index.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/message.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/message.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/service.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/service.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/symbols.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv1/symbols.js +0 -0
- /package/dist/{cjs → commonjs/codegenv1}/types.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/boot.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/boot.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/embed.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/embed.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/enum.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/enum.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/extension.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/extension.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/file.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/file.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/index.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/index.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/message.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/message.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/restore-json-names.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/restore-json-names.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/scalar.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/scalar.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/service.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/service.js +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/symbols.d.ts +0 -0
- /package/dist/{cjs → commonjs}/codegenv2/symbols.js +0 -0
- /package/dist/{cjs/json-value.js → commonjs/codegenv2/types.js} +0 -0
- /package/dist/{cjs → commonjs}/create.d.ts +0 -0
- /package/dist/{cjs → commonjs}/create.js +0 -0
- /package/dist/{cjs → commonjs}/descriptors.d.ts +0 -0
- /package/dist/{cjs → commonjs}/descriptors.js +0 -0
- /package/dist/{cjs → commonjs}/fields.d.ts +0 -0
- /package/dist/{cjs → commonjs}/fields.js +0 -0
- /package/dist/{cjs → commonjs}/index.d.ts +0 -0
- /package/dist/{cjs → commonjs}/index.js +0 -0
- /package/dist/{cjs → commonjs}/is-message.d.ts +0 -0
- /package/dist/{cjs → commonjs}/is-message.js +0 -0
- /package/dist/{cjs → commonjs}/json-value.d.ts +0 -0
- /package/dist/{cjs → commonjs}/merge.d.ts +0 -0
- /package/dist/{cjs → commonjs}/merge.js +0 -0
- /package/dist/{cjs → commonjs}/proto-int64.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/error.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/error.js +0 -0
- /package/dist/{cjs → commonjs}/reflect/guard.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/guard.js +0 -0
- /package/dist/{cjs → commonjs}/reflect/index.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/index.js +0 -0
- /package/dist/{cjs → commonjs}/reflect/names.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/names.js +0 -0
- /package/dist/{cjs → commonjs}/reflect/nested-types.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/nested-types.js +0 -0
- /package/dist/{cjs → commonjs}/reflect/path.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/path.js +0 -0
- /package/dist/{cjs → commonjs}/reflect/reflect-check.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/reflect-types.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/reflect-types.js +0 -0
- /package/dist/{cjs → commonjs}/reflect/reflect.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/reflect.js +0 -0
- /package/dist/{cjs → commonjs}/reflect/unsafe.d.ts +0 -0
- /package/dist/{cjs → commonjs}/reflect/unsafe.js +0 -0
- /package/dist/{cjs → commonjs}/registry.d.ts +0 -0
- /package/dist/{cjs → commonjs}/to-binary.d.ts +0 -0
- /package/dist/{cjs → commonjs}/to-binary.js +0 -0
- /package/dist/{cjs → commonjs}/to-json.d.ts +0 -0
- /package/dist/{cjs → commonjs}/to-json.js +0 -0
- /package/dist/{cjs → commonjs}/types.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wire/base64-encoding.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wire/base64-encoding.js +0 -0
- /package/dist/{cjs → commonjs}/wire/index.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wire/index.js +0 -0
- /package/dist/{cjs → commonjs}/wire/size-delimited.js +0 -0
- /package/dist/{cjs → commonjs}/wire/text-encoding.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wire/text-encoding.js +0 -0
- /package/dist/{cjs → commonjs}/wire/text-format.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wire/text-format.js +0 -0
- /package/dist/{cjs → commonjs}/wire/varint.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wire/varint.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/any.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/any.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/duration.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/duration.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/any_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/any_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/api_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/api_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/compiler/plugin_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/cpp_features_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/cpp_features_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/descriptor_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/descriptor_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/duration_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/duration_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/empty_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/empty_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/field_mask_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/field_mask_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/go_features_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/go_features_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/java_features_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/java_features_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/source_context_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/source_context_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/struct_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/struct_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/timestamp_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/timestamp_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/type_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/type_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/wrappers_pb.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/gen/google/protobuf/wrappers_pb.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/index.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/index.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/timestamp.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/timestamp.js +0 -0
- /package/dist/{cjs → commonjs}/wkt/wrappers.d.ts +0 -0
- /package/dist/{cjs → commonjs}/wkt/wrappers.js +0 -0
|
@@ -194,9 +194,11 @@ export declare class BinaryReader {
|
|
|
194
194
|
* Skip one element and return the skipped data.
|
|
195
195
|
*
|
|
196
196
|
* When skipping StartGroup, provide the tags field number to check for
|
|
197
|
-
* matching field number in the EndGroup tag.
|
|
197
|
+
* matching field number in the EndGroup tag. Recursion into nested groups
|
|
198
|
+
* is guarded by the `recursionLimit` argument: When the limit is reached,
|
|
199
|
+
* this method throws.
|
|
198
200
|
*/
|
|
199
|
-
skip(wireType: WireType, fieldNo?: number): Uint8Array;
|
|
201
|
+
skip(wireType: WireType, fieldNo?: number, recursionLimit?: number): Uint8Array;
|
|
200
202
|
protected varint64: () => [number, number];
|
|
201
203
|
/**
|
|
202
204
|
* Throws error if position in byte array is out of range.
|
|
@@ -328,9 +328,11 @@ class BinaryReader {
|
|
|
328
328
|
* Skip one element and return the skipped data.
|
|
329
329
|
*
|
|
330
330
|
* When skipping StartGroup, provide the tags field number to check for
|
|
331
|
-
* matching field number in the EndGroup tag.
|
|
331
|
+
* matching field number in the EndGroup tag. Recursion into nested groups
|
|
332
|
+
* is guarded by the `recursionLimit` argument: When the limit is reached,
|
|
333
|
+
* this method throws.
|
|
332
334
|
*/
|
|
333
|
-
skip(wireType, fieldNo) {
|
|
335
|
+
skip(wireType, fieldNo, recursionLimit = 100) {
|
|
334
336
|
let start = this.pos;
|
|
335
337
|
switch (wireType) {
|
|
336
338
|
case WireType.Varint:
|
|
@@ -349,6 +351,9 @@ class BinaryReader {
|
|
|
349
351
|
this.pos += len;
|
|
350
352
|
break;
|
|
351
353
|
case WireType.StartGroup:
|
|
354
|
+
if (recursionLimit <= 0) {
|
|
355
|
+
throw new Error("maximum recursion depth reached");
|
|
356
|
+
}
|
|
352
357
|
for (;;) {
|
|
353
358
|
const [fn, wt] = this.tag();
|
|
354
359
|
if (wt === WireType.EndGroup) {
|
|
@@ -357,7 +362,7 @@ class BinaryReader {
|
|
|
357
362
|
}
|
|
358
363
|
break;
|
|
359
364
|
}
|
|
360
|
-
this.skip(wt, fn);
|
|
365
|
+
this.skip(wt, fn, recursionLimit - 1);
|
|
361
366
|
}
|
|
362
367
|
break;
|
|
363
368
|
default:
|
|
@@ -21,7 +21,7 @@ export declare function sizeDelimitedEncode<Desc extends DescMessage>(messageDes
|
|
|
21
21
|
* This size-delimited format is compatible with other implementations.
|
|
22
22
|
* For details, see https://github.com/protocolbuffers/protobuf/issues/10229
|
|
23
23
|
*/
|
|
24
|
-
export declare function sizeDelimitedDecodeStream<Desc extends DescMessage>(messageDesc: Desc, iterable: AsyncIterable<Uint8Array>, options?: BinaryReadOptions): AsyncIterableIterator<MessageShape<Desc>>;
|
|
24
|
+
export declare function sizeDelimitedDecodeStream<Desc extends DescMessage>(messageDesc: Desc, iterable: AsyncIterable<Uint8Array>, options?: Partial<BinaryReadOptions>): AsyncIterableIterator<MessageShape<Desc>>;
|
|
25
25
|
/**
|
|
26
26
|
* Decodes the size from the given size-delimited message, which may be
|
|
27
27
|
* incomplete.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { boot } from "../codegenv2/boot.js";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright 2021-2026 Buf Technologies, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
export { boot } from "../codegenv2/boot.js";
|
|
@@ -56,11 +56,15 @@ export type GenService<RuntimeShape extends GenServiceMethods> = Omit<DescServic
|
|
|
56
56
|
* @private
|
|
57
57
|
*/
|
|
58
58
|
export type GenServiceMethods = Record<string, Pick<DescMethod, "input" | "output" | "methodKind">>;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
59
|
+
type brandv1<A, B = unknown> = {
|
|
60
|
+
/**
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
readonly $codegenv1: {
|
|
64
|
+
a: A;
|
|
65
|
+
b: B;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
64
68
|
/**
|
|
65
69
|
* Union of the property names of all fields, including oneof members.
|
|
66
70
|
* For an anonymous message (no generated message shape), it's simply a string.
|
|
@@ -11,11 +11,4 @@
|
|
|
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
|
-
class brandv1 {
|
|
15
|
-
constructor() {
|
|
16
|
-
this.v = "codegenv1";
|
|
17
|
-
this.a = false;
|
|
18
|
-
this.b = false;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
14
|
export {};
|
|
@@ -62,11 +62,15 @@ export type GenService<RuntimeShape extends GenServiceMethods> = Omit<DescServic
|
|
|
62
62
|
* @private
|
|
63
63
|
*/
|
|
64
64
|
export type GenServiceMethods = Record<string, Pick<DescMethod, "input" | "output" | "methodKind">>;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
type brandv2<A, B = unknown> = {
|
|
66
|
+
/**
|
|
67
|
+
* @internal
|
|
68
|
+
*/
|
|
69
|
+
readonly $codegenv2: {
|
|
70
|
+
a: A;
|
|
71
|
+
b: B;
|
|
72
|
+
};
|
|
73
|
+
};
|
|
70
74
|
/**
|
|
71
75
|
* Union of the property names of all fields, including oneof members.
|
|
72
76
|
* For an anonymous message (no generated message shape), it's simply a string.
|
|
@@ -11,11 +11,4 @@
|
|
|
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
|
-
class brandv2 {
|
|
15
|
-
constructor() {
|
|
16
|
-
this.v = "codegenv2";
|
|
17
|
-
this.a = false;
|
|
18
|
-
this.b = false;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
14
|
export {};
|
package/dist/esm/equals.d.ts
CHANGED
|
@@ -32,10 +32,15 @@ interface EqualsOptions {
|
|
|
32
32
|
unknown?: boolean;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
* Compare two messages of the same type.
|
|
35
|
+
* Compare two messages of the same type for equality.
|
|
36
36
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
37
|
+
* Fields are compared one by one, but only when set: a field set in one message
|
|
38
|
+
* but not the other makes them unequal, while fields set in both are compared
|
|
39
|
+
* by value. Extensions and unknown fields are disregarded by default.
|
|
40
|
+
*
|
|
41
|
+
* Float and double values are compared with IEEE semantics: NaN does not equal
|
|
42
|
+
* NaN, and -0 equals 0 (with the exception for singular fields with implicit
|
|
43
|
+
* presence: -0 is set, +0 is unset).
|
|
39
44
|
*/
|
|
40
45
|
export declare function equals<Desc extends DescMessage>(schema: Desc, a: MessageShape<Desc>, b: MessageShape<Desc>, options?: EqualsOptions): boolean;
|
|
41
46
|
export {};
|
package/dist/esm/equals.js
CHANGED
|
@@ -17,10 +17,15 @@ import { ScalarType, } from "./descriptors.js";
|
|
|
17
17
|
import { anyUnpack } from "./wkt/index.js";
|
|
18
18
|
import { createExtensionContainer, getExtension } from "./extensions.js";
|
|
19
19
|
/**
|
|
20
|
-
* Compare two messages of the same type.
|
|
20
|
+
* Compare two messages of the same type for equality.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
22
|
+
* Fields are compared one by one, but only when set: a field set in one message
|
|
23
|
+
* but not the other makes them unequal, while fields set in both are compared
|
|
24
|
+
* by value. Extensions and unknown fields are disregarded by default.
|
|
25
|
+
*
|
|
26
|
+
* Float and double values are compared with IEEE semantics: NaN does not equal
|
|
27
|
+
* NaN, and -0 equals 0 (with the exception for singular fields with implicit
|
|
28
|
+
* presence: -0 is set, +0 is unset).
|
|
24
29
|
*/
|
|
25
30
|
export function equals(schema, a, b, options) {
|
|
26
31
|
if (a.$typeName != schema.typeName || b.$typeName != schema.typeName) {
|
package/dist/esm/extensions.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AnyDesc, DescEnum, DescEnumValue, DescExtension, DescField, DescFile, DescMessage, DescMethod, DescOneof, DescService } from "./descriptors.js";
|
|
2
|
+
import type { BinaryReadOptions } from "./from-binary.js";
|
|
2
3
|
import type { ReflectMessage } from "./reflect/reflect-types.js";
|
|
3
4
|
import type { Extendee, ExtensionValueShape } from "./types.js";
|
|
4
5
|
import type { EnumOptions, EnumValueOptions, FieldOptions, FileOptions, MessageOptions, MethodOptions, OneofOptions, ServiceOptions } from "./wkt/gen/google/protobuf/descriptor_pb.js";
|
|
@@ -16,7 +17,7 @@ import type { EnumOptions, EnumValueOptions, FieldOptions, FileOptions, MessageO
|
|
|
16
17
|
*
|
|
17
18
|
* If the extension does not extend the given message, an error is raised.
|
|
18
19
|
*/
|
|
19
|
-
export declare function getExtension<Desc extends DescExtension>(message: Extendee<Desc>, extension: Desc): ExtensionValueShape<Desc>;
|
|
20
|
+
export declare function getExtension<Desc extends DescExtension>(message: Extendee<Desc>, extension: Desc, options?: Partial<BinaryReadOptions>): ExtensionValueShape<Desc>;
|
|
20
21
|
/**
|
|
21
22
|
* Set an extension value on a message. If the message already has a value for
|
|
22
23
|
* this extension, the value is replaced.
|
package/dist/esm/extensions.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
import { create } from "./create.js";
|
|
15
|
-
import { readField } from "./from-binary.js";
|
|
15
|
+
import { makeReadContext, readField } from "./from-binary.js";
|
|
16
16
|
import { reflect } from "./reflect/reflect.js";
|
|
17
17
|
import { scalarZeroValue } from "./reflect/scalar.js";
|
|
18
18
|
import { writeField } from "./to-binary.js";
|
|
@@ -32,14 +32,13 @@ import { isWrapperDesc } from "./wkt/wrappers.js";
|
|
|
32
32
|
*
|
|
33
33
|
* If the extension does not extend the given message, an error is raised.
|
|
34
34
|
*/
|
|
35
|
-
export function getExtension(message, extension) {
|
|
35
|
+
export function getExtension(message, extension, options) {
|
|
36
36
|
assertExtendee(extension, message);
|
|
37
37
|
const ufs = filterUnknownFields(message.$unknown, extension);
|
|
38
38
|
const [container, field, get] = createExtensionContainer(extension);
|
|
39
|
+
const ctx = makeReadContext(options);
|
|
39
40
|
for (const uf of ufs) {
|
|
40
|
-
readField(container, new BinaryReader(uf.data), field, uf.wireType,
|
|
41
|
-
readUnknownFields: true,
|
|
42
|
-
});
|
|
41
|
+
readField(container, new BinaryReader(uf.data), field, uf.wireType, ctx);
|
|
43
42
|
}
|
|
44
43
|
return get();
|
|
45
44
|
}
|
|
@@ -13,7 +13,20 @@ export interface BinaryReadOptions {
|
|
|
13
13
|
* For more details see https://developers.google.com/protocol-buffers/docs/proto3#unknowns
|
|
14
14
|
*/
|
|
15
15
|
readUnknownFields: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* The maximum depth of nested messages to parse. If a message nests deeper
|
|
18
|
+
* than this limit, parsing fails with an error instead of exhausting the
|
|
19
|
+
* call stack. Defaults to 100.
|
|
20
|
+
*/
|
|
21
|
+
recursionLimit: number;
|
|
22
|
+
}
|
|
23
|
+
interface BinaryReadContext extends BinaryReadOptions {
|
|
24
|
+
depth: number;
|
|
16
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* @private Only exported for getExtension()
|
|
28
|
+
*/
|
|
29
|
+
export declare function makeReadContext(options?: Partial<BinaryReadOptions>): BinaryReadContext;
|
|
17
30
|
/**
|
|
18
31
|
* Parse serialized binary data.
|
|
19
32
|
*/
|
|
@@ -29,6 +42,7 @@ export declare function fromBinary<Desc extends DescMessage>(schema: Desc, bytes
|
|
|
29
42
|
*/
|
|
30
43
|
export declare function mergeFromBinary<Desc extends DescMessage>(schema: Desc, target: MessageShape<Desc>, bytes: Uint8Array, options?: Partial<BinaryReadOptions>): MessageShape<Desc>;
|
|
31
44
|
/**
|
|
32
|
-
* @private
|
|
45
|
+
* @private Only exported for getExtension()
|
|
33
46
|
*/
|
|
34
|
-
export declare function readField(message: ReflectMessage, reader: BinaryReader, field: DescField, wireType: WireType,
|
|
47
|
+
export declare function readField(message: ReflectMessage, reader: BinaryReader, field: DescField, wireType: WireType, ctx: BinaryReadContext): void;
|
|
48
|
+
export {};
|
package/dist/esm/from-binary.js
CHANGED
|
@@ -16,19 +16,18 @@ import { scalarZeroValue } from "./reflect/scalar.js";
|
|
|
16
16
|
import { reflect } from "./reflect/reflect.js";
|
|
17
17
|
import { BinaryReader, WireType } from "./wire/binary-encoding.js";
|
|
18
18
|
import { varint32write } from "./wire/varint.js";
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return options ? Object.assign(Object.assign({}, readDefaults), options) : readDefaults;
|
|
19
|
+
/**
|
|
20
|
+
* @private Only exported for getExtension()
|
|
21
|
+
*/
|
|
22
|
+
export function makeReadContext(options) {
|
|
23
|
+
return Object.assign(Object.assign({ readUnknownFields: true, recursionLimit: 100 }, options), { depth: 0 });
|
|
25
24
|
}
|
|
26
25
|
/**
|
|
27
26
|
* Parse serialized binary data.
|
|
28
27
|
*/
|
|
29
28
|
export function fromBinary(schema, bytes, options) {
|
|
30
29
|
const msg = reflect(schema, undefined, false);
|
|
31
|
-
readMessage(msg, new BinaryReader(bytes),
|
|
30
|
+
readMessage(msg, new BinaryReader(bytes), makeReadContext(options), false, bytes.byteLength);
|
|
32
31
|
return msg.message;
|
|
33
32
|
}
|
|
34
33
|
/**
|
|
@@ -41,7 +40,7 @@ export function fromBinary(schema, bytes, options) {
|
|
|
41
40
|
* new data.
|
|
42
41
|
*/
|
|
43
42
|
export function mergeFromBinary(schema, target, bytes, options) {
|
|
44
|
-
readMessage(reflect(schema, target, false), new BinaryReader(bytes),
|
|
43
|
+
readMessage(reflect(schema, target, false), new BinaryReader(bytes), makeReadContext(options), false, bytes.byteLength);
|
|
45
44
|
return target;
|
|
46
45
|
}
|
|
47
46
|
/**
|
|
@@ -52,8 +51,11 @@ export function mergeFromBinary(schema, target, bytes, options) {
|
|
|
52
51
|
*
|
|
53
52
|
* @private
|
|
54
53
|
*/
|
|
55
|
-
function readMessage(message, reader,
|
|
54
|
+
function readMessage(message, reader, ctx, delimited, lengthOrDelimitedFieldNo) {
|
|
56
55
|
var _a;
|
|
56
|
+
if (++ctx.depth > ctx.recursionLimit) {
|
|
57
|
+
throw new Error(`cannot decode ${message.desc} from binary: maximum recursion depth of ${ctx.recursionLimit} reached`);
|
|
58
|
+
}
|
|
57
59
|
const end = delimited ? reader.len : reader.pos + lengthOrDelimitedFieldNo;
|
|
58
60
|
let fieldNo;
|
|
59
61
|
let wireType;
|
|
@@ -65,13 +67,15 @@ function readMessage(message, reader, options, delimited, lengthOrDelimitedField
|
|
|
65
67
|
}
|
|
66
68
|
const field = message.findNumber(fieldNo);
|
|
67
69
|
if (!field) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
// Use remaining recursion budget for skipping nested groups
|
|
71
|
+
const recursionLimit = ctx.recursionLimit - ctx.depth;
|
|
72
|
+
const data = reader.skip(wireType, fieldNo, recursionLimit);
|
|
73
|
+
if (ctx.readUnknownFields) {
|
|
70
74
|
unknownFields.push({ no: fieldNo, wireType, data });
|
|
71
75
|
}
|
|
72
76
|
continue;
|
|
73
77
|
}
|
|
74
|
-
readField(message, reader, field, wireType,
|
|
78
|
+
readField(message, reader, field, wireType, ctx);
|
|
75
79
|
}
|
|
76
80
|
if (delimited) {
|
|
77
81
|
if (wireType != WireType.EndGroup || fieldNo !== lengthOrDelimitedFieldNo) {
|
|
@@ -81,11 +85,12 @@ function readMessage(message, reader, options, delimited, lengthOrDelimitedField
|
|
|
81
85
|
if (unknownFields.length > 0) {
|
|
82
86
|
message.setUnknown(unknownFields);
|
|
83
87
|
}
|
|
88
|
+
ctx.depth--;
|
|
84
89
|
}
|
|
85
90
|
/**
|
|
86
|
-
* @private
|
|
91
|
+
* @private Only exported for getExtension()
|
|
87
92
|
*/
|
|
88
|
-
export function readField(message, reader, field, wireType,
|
|
93
|
+
export function readField(message, reader, field, wireType, ctx) {
|
|
89
94
|
var _a;
|
|
90
95
|
switch (field.fieldKind) {
|
|
91
96
|
case "scalar":
|
|
@@ -101,7 +106,7 @@ export function readField(message, reader, field, wireType, options) {
|
|
|
101
106
|
if (ok) {
|
|
102
107
|
message.set(field, val);
|
|
103
108
|
}
|
|
104
|
-
else if (
|
|
109
|
+
else if (ctx.readUnknownFields) {
|
|
105
110
|
const bytes = [];
|
|
106
111
|
varint32write(val, bytes);
|
|
107
112
|
const unknownFields = (_a = message.getUnknown()) !== null && _a !== void 0 ? _a : [];
|
|
@@ -115,18 +120,18 @@ export function readField(message, reader, field, wireType, options) {
|
|
|
115
120
|
}
|
|
116
121
|
break;
|
|
117
122
|
case "message":
|
|
118
|
-
message.set(field, readMessageField(reader,
|
|
123
|
+
message.set(field, readMessageField(reader, ctx, field, message.get(field)));
|
|
119
124
|
break;
|
|
120
125
|
case "list":
|
|
121
|
-
readListField(reader, wireType, message.get(field),
|
|
126
|
+
readListField(reader, wireType, message.get(field), ctx);
|
|
122
127
|
break;
|
|
123
128
|
case "map":
|
|
124
|
-
readMapEntry(reader, message.get(field),
|
|
129
|
+
readMapEntry(reader, message.get(field), ctx);
|
|
125
130
|
break;
|
|
126
131
|
}
|
|
127
132
|
}
|
|
128
133
|
// Read a map field, expecting key field = 1, value field = 2
|
|
129
|
-
function readMapEntry(reader, map,
|
|
134
|
+
function readMapEntry(reader, map, ctx) {
|
|
130
135
|
const field = map.field();
|
|
131
136
|
let key;
|
|
132
137
|
let val;
|
|
@@ -150,7 +155,7 @@ function readMapEntry(reader, map, options) {
|
|
|
150
155
|
val = reader.int32();
|
|
151
156
|
break;
|
|
152
157
|
case "message":
|
|
153
|
-
val = readMessageField(reader,
|
|
158
|
+
val = readMessageField(reader, ctx, field);
|
|
154
159
|
break;
|
|
155
160
|
}
|
|
156
161
|
break;
|
|
@@ -174,11 +179,11 @@ function readMapEntry(reader, map, options) {
|
|
|
174
179
|
}
|
|
175
180
|
map.set(key, val);
|
|
176
181
|
}
|
|
177
|
-
function readListField(reader, wireType, list,
|
|
182
|
+
function readListField(reader, wireType, list, ctx) {
|
|
178
183
|
var _a;
|
|
179
184
|
const field = list.field();
|
|
180
185
|
if (field.listKind === "message") {
|
|
181
|
-
list.add(readMessageField(reader,
|
|
186
|
+
list.add(readMessageField(reader, ctx, field));
|
|
182
187
|
return;
|
|
183
188
|
}
|
|
184
189
|
const scalarType = (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32;
|
|
@@ -194,10 +199,10 @@ function readListField(reader, wireType, list, options) {
|
|
|
194
199
|
list.add(readScalar(reader, scalarType, field.utf8Validation));
|
|
195
200
|
}
|
|
196
201
|
}
|
|
197
|
-
function readMessageField(reader,
|
|
202
|
+
function readMessageField(reader, ctx, field, mergeMessage) {
|
|
198
203
|
const delimited = field.delimitedEncoding;
|
|
199
204
|
const message = mergeMessage !== null && mergeMessage !== void 0 ? mergeMessage : reflect(field.message, undefined, false);
|
|
200
|
-
readMessage(message, reader,
|
|
205
|
+
readMessage(message, reader, ctx, delimited, delimited ? field.number : reader.uint32());
|
|
201
206
|
return message;
|
|
202
207
|
}
|
|
203
208
|
function readScalar(reader, type, validateUtf8 = false) {
|
package/dist/esm/from-json.d.ts
CHANGED
|
@@ -17,33 +17,50 @@ export interface JsonReadOptions {
|
|
|
17
17
|
* from JSON format.
|
|
18
18
|
*/
|
|
19
19
|
registry?: Registry | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* The maximum depth of nested messages to parse. If a message nests deeper
|
|
22
|
+
* than this limit, parsing fails with an error instead of exhausting the
|
|
23
|
+
* call stack. Defaults to 100.
|
|
24
|
+
*/
|
|
25
|
+
recursionLimit: number;
|
|
20
26
|
}
|
|
21
27
|
/**
|
|
22
28
|
* Parse a message from a JSON string.
|
|
29
|
+
*
|
|
30
|
+
* Duplicate keys are rejected.
|
|
23
31
|
*/
|
|
24
32
|
export declare function fromJsonString<Desc extends DescMessage>(schema: Desc, json: string, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
|
|
25
33
|
/**
|
|
26
|
-
* Parse a message from a JSON string, merging fields.
|
|
34
|
+
* Parse a message from a JSON string, merging fields into the target.
|
|
27
35
|
*
|
|
28
36
|
* Repeated fields are appended. Map entries are added, overwriting
|
|
29
37
|
* existing keys.
|
|
30
38
|
*
|
|
31
39
|
* If a message field is already present, it will be merged with the
|
|
32
40
|
* new data.
|
|
41
|
+
*
|
|
42
|
+
* Duplicate keys in the JSON are rejected, as in `fromJsonString`.
|
|
33
43
|
*/
|
|
34
44
|
export declare function mergeFromJsonString<Desc extends DescMessage>(schema: Desc, target: MessageShape<Desc>, json: string, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
|
|
35
45
|
/**
|
|
36
46
|
* Parse a message from a JSON value.
|
|
47
|
+
*
|
|
48
|
+
* Duplicate keys are rejected, but a value parsed by JSON.parse has already
|
|
49
|
+
* dropped duplicates (the last one wins). Use `fromJsonString` for strict
|
|
50
|
+
* duplicate-key checking.
|
|
37
51
|
*/
|
|
38
52
|
export declare function fromJson<Desc extends DescMessage>(schema: Desc, json: JsonValue, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
|
|
39
53
|
/**
|
|
40
|
-
* Parse a message from a JSON value, merging fields.
|
|
54
|
+
* Parse a message from a JSON value, merging fields into the target.
|
|
41
55
|
*
|
|
42
56
|
* Repeated fields are appended. Map entries are added, overwriting
|
|
43
57
|
* existing keys.
|
|
44
58
|
*
|
|
45
59
|
* If a message field is already present, it will be merged with the
|
|
46
60
|
* new data.
|
|
61
|
+
*
|
|
62
|
+
* Duplicate keys are rejected as in `fromJson`; use `mergeFromJsonString`
|
|
63
|
+
* for strict checking.
|
|
47
64
|
*/
|
|
48
65
|
export declare function mergeFromJson<Desc extends DescMessage>(schema: Desc, target: MessageShape<Desc>, json: JsonValue, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
|
|
49
66
|
/**
|