@bufbuild/protobuf 0.0.1-alpha.1 → 0.0.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 +21 -1
- package/dist/cjs/binary-encoding.js +402 -410
- package/dist/cjs/descriptor-registry.js +407 -449
- package/dist/cjs/descriptor-set.js +416 -513
- package/dist/cjs/field.js +30 -30
- package/dist/cjs/google/protobuf/any_pb.js +122 -140
- package/dist/cjs/google/protobuf/api_pb.js +177 -224
- package/dist/cjs/google/protobuf/compiler/plugin_pb.js +125 -227
- package/dist/cjs/google/protobuf/descriptor_pb.js +1029 -1888
- package/dist/cjs/google/protobuf/duration_pb.js +72 -88
- package/dist/cjs/google/protobuf/empty_pb.js +17 -17
- package/dist/cjs/google/protobuf/field_mask_pb.js +77 -94
- package/dist/cjs/google/protobuf/source_context_pb.js +25 -25
- package/dist/cjs/google/protobuf/struct_pb.js +144 -181
- package/dist/cjs/google/protobuf/timestamp_pb.js +86 -123
- package/dist/cjs/google/protobuf/type_pb.js +406 -462
- package/dist/cjs/google/protobuf/wrappers_pb.js +407 -470
- package/dist/cjs/index.js +24 -122
- package/dist/cjs/message.js +81 -89
- package/dist/cjs/private/assert.js +20 -26
- package/dist/cjs/private/base64.js +79 -78
- package/dist/cjs/private/binary-format-common.js +195 -208
- package/dist/cjs/private/binary-format-proto2.js +75 -109
- package/dist/cjs/private/binary-format-proto3.js +57 -90
- package/dist/cjs/private/enum.js +38 -43
- package/dist/cjs/private/field-list.js +51 -50
- package/dist/cjs/private/field-wrapper.js +8 -10
- package/dist/cjs/private/field.js +22 -25
- package/dist/cjs/private/goog-varint.js +275 -0
- package/dist/cjs/private/json-format-common.js +414 -440
- package/dist/cjs/private/json-format-proto2.js +78 -89
- package/dist/cjs/private/json-format-proto3.js +69 -93
- package/dist/cjs/private/message-type.js +26 -27
- package/dist/cjs/private/names.js +58 -62
- package/dist/cjs/private/proto-runtime.js +11 -16
- package/dist/cjs/private/scalars.js +100 -103
- package/dist/cjs/private/util-common.js +180 -210
- package/dist/cjs/proto-int64.js +111 -112
- package/dist/cjs/proto2.js +50 -63
- package/dist/cjs/proto3.js +61 -74
- package/dist/cjs/service-type.js +14 -17
- package/dist/cjs/type-registry.js +33 -31
- package/dist/esm/binary-encoding.js +401 -414
- package/dist/esm/descriptor-registry.js +409 -458
- package/dist/esm/descriptor-set.js +417 -478
- package/dist/esm/field.js +29 -29
- package/dist/esm/google/protobuf/any_pb.js +122 -140
- package/dist/esm/google/protobuf/api_pb.js +177 -197
- package/dist/esm/google/protobuf/compiler/plugin_pb.js +123 -216
- package/dist/esm/google/protobuf/descriptor_pb.js +1013 -1804
- package/dist/esm/google/protobuf/duration_pb.js +72 -88
- package/dist/esm/google/protobuf/empty_pb.js +17 -17
- package/dist/esm/google/protobuf/field_mask_pb.js +77 -94
- package/dist/esm/google/protobuf/source_context_pb.js +25 -25
- package/dist/esm/google/protobuf/struct_pb.js +143 -180
- package/dist/esm/google/protobuf/timestamp_pb.js +86 -123
- package/dist/esm/google/protobuf/type_pb.js +401 -421
- package/dist/esm/google/protobuf/wrappers_pb.js +406 -397
- package/dist/esm/index.js +1 -1
- package/dist/esm/message.js +81 -89
- package/dist/esm/private/assert.js +19 -21
- package/dist/esm/private/base64.js +79 -78
- package/dist/esm/private/binary-format-common.js +196 -207
- package/dist/esm/private/binary-format-proto2.js +76 -81
- package/dist/esm/private/binary-format-proto3.js +58 -67
- package/dist/esm/private/enum.js +38 -43
- package/dist/esm/private/field-list.js +51 -50
- package/dist/esm/private/field-wrapper.js +8 -10
- package/dist/esm/private/field.js +22 -22
- package/dist/esm/private/goog-varint.js +266 -0
- package/dist/esm/private/json-format-common.js +414 -435
- package/dist/esm/private/json-format-proto2.js +76 -81
- package/dist/esm/private/json-format-proto3.js +66 -80
- package/dist/esm/private/message-type.js +27 -28
- package/dist/esm/private/names.js +57 -57
- package/dist/esm/private/proto-runtime.js +11 -11
- package/dist/esm/private/scalars.js +99 -99
- package/dist/esm/private/util-common.js +180 -192
- package/dist/esm/proto-int64.js +111 -112
- package/dist/esm/proto2.js +50 -57
- package/dist/esm/proto3.js +61 -68
- package/dist/esm/service-type.js +12 -12
- package/dist/esm/type-registry.js +33 -31
- package/dist/types/binary-encoding.d.ts +398 -398
- package/dist/types/binary-format.d.ts +69 -91
- package/dist/types/descriptor-registry.d.ts +23 -29
- package/dist/types/descriptor-set.d.ts +107 -128
- package/dist/types/enum.d.ts +21 -21
- package/dist/types/field-list.d.ts +21 -21
- package/dist/types/field.d.ts +191 -231
- package/dist/types/google/protobuf/any_pb.d.ts +56 -77
- package/dist/types/google/protobuf/api_pb.d.ts +144 -187
- package/dist/types/google/protobuf/compiler/plugin_pb.d.ts +195 -257
- package/dist/types/google/protobuf/descriptor_pb.d.ts +1360 -1737
- package/dist/types/google/protobuf/duration_pb.d.ts +30 -50
- package/dist/types/google/protobuf/empty_pb.d.ts +9 -28
- package/dist/types/google/protobuf/field_mask_pb.d.ts +17 -37
- package/dist/types/google/protobuf/source_context_pb.d.ts +16 -35
- package/dist/types/google/protobuf/struct_pb.d.ts +64 -115
- package/dist/types/google/protobuf/timestamp_pb.d.ts +31 -51
- package/dist/types/google/protobuf/type_pb.d.ts +355 -422
- package/dist/types/google/protobuf/wrappers_pb.d.ts +181 -297
- package/dist/types/index.d.ts +4 -27
- package/dist/types/json-format.d.ts +70 -89
- package/dist/types/message-type.d.ts +38 -46
- package/dist/types/message.d.ts +73 -99
- package/dist/types/private/assert.d.ts +1 -4
- package/dist/types/private/binary-format-common.d.ts +6 -32
- package/dist/types/private/enum.d.ts +4 -11
- package/dist/types/private/field-list.d.ts +14 -21
- package/dist/types/private/field-wrapper.d.ts +5 -11
- package/dist/types/private/field.d.ts +12 -12
- package/dist/types/{google/varint.d.ts → private/goog-varint.d.ts} +6 -13
- package/dist/types/private/json-format-common.d.ts +5 -27
- package/dist/types/private/message-type.d.ts +3 -8
- package/dist/types/private/names.d.ts +1 -4
- package/dist/types/private/options-map.d.ts +1 -1
- package/dist/types/private/proto-runtime.d.ts +29 -42
- package/dist/types/private/scalars.d.ts +5 -12
- package/dist/types/private/util-common.d.ts +1 -4
- package/dist/types/private/util.d.ts +29 -41
- package/dist/types/proto-int64.d.ts +42 -42
- package/dist/types/service-type.d.ts +37 -57
- package/dist/types/type-registry.d.ts +13 -15
- package/package.json +2 -2
- package/dist/cjs/google/varint.js +0 -280
- package/dist/esm/google/varint.js +0 -265
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.scalarTypeInfo =
|
|
4
|
-
exports.scalarDefaultValue =
|
|
5
|
-
exports.scalarEquals =
|
|
6
|
-
void 0;
|
|
3
|
+
exports.scalarTypeInfo = exports.scalarDefaultValue = exports.scalarEquals = void 0;
|
|
7
4
|
const field_js_1 = require("../field.js");
|
|
8
5
|
const binary_encoding_js_1 = require("../binary-encoding.js");
|
|
9
6
|
const proto_int64_js_1 = require("../proto-int64.js");
|
|
@@ -12,39 +9,39 @@ const proto_int64_js_1 = require("../proto-int64.js");
|
|
|
12
9
|
* Returns true if both scalar values are equal.
|
|
13
10
|
*/
|
|
14
11
|
function scalarEquals(type, a, b) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
-
// Special case BYTES - we need to compare each byte individually
|
|
20
|
-
if (type == field_js_1.ScalarType.BYTES) {
|
|
21
|
-
if (!(a instanceof Uint8Array) || !(b instanceof Uint8Array)) {
|
|
22
|
-
return false;
|
|
12
|
+
if (a === b) {
|
|
13
|
+
// This correctly matches equal values except BYTES and (possibly) 64-bit integers.
|
|
14
|
+
return true;
|
|
23
15
|
}
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
// Special case BYTES - we need to compare each byte individually
|
|
17
|
+
if (type == field_js_1.ScalarType.BYTES) {
|
|
18
|
+
if (!(a instanceof Uint8Array) || !(b instanceof Uint8Array)) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (a.length !== b.length) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
for (let i = 0; i < a.length; i++) {
|
|
25
|
+
if (a[i] !== b[i]) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
26
30
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
// Special case 64-bit integers - we support number, string and bigint representation.
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
33
|
+
switch (type) {
|
|
34
|
+
case field_js_1.ScalarType.UINT64:
|
|
35
|
+
case field_js_1.ScalarType.FIXED64:
|
|
36
|
+
case field_js_1.ScalarType.INT64:
|
|
37
|
+
case field_js_1.ScalarType.SFIXED64:
|
|
38
|
+
case field_js_1.ScalarType.SINT64:
|
|
39
|
+
// Loose comparison will match between 0n, 0 and "0".
|
|
40
|
+
return a == b;
|
|
31
41
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
36
|
-
switch (type) {
|
|
37
|
-
case field_js_1.ScalarType.UINT64:
|
|
38
|
-
case field_js_1.ScalarType.FIXED64:
|
|
39
|
-
case field_js_1.ScalarType.INT64:
|
|
40
|
-
case field_js_1.ScalarType.SFIXED64:
|
|
41
|
-
case field_js_1.ScalarType.SINT64:
|
|
42
|
-
// Loose comparison will match between 0n, 0 and "0".
|
|
43
|
-
return a == b;
|
|
44
|
-
}
|
|
45
|
-
// Anything that hasn't been caught by strict comparison or special cased
|
|
46
|
-
// BYTES and 64-bit integers is not equal.
|
|
47
|
-
return false;
|
|
42
|
+
// Anything that hasn't been caught by strict comparison or special cased
|
|
43
|
+
// BYTES and 64-bit integers is not equal.
|
|
44
|
+
return false;
|
|
48
45
|
}
|
|
49
46
|
exports.scalarEquals = scalarEquals;
|
|
50
47
|
/**
|
|
@@ -52,27 +49,27 @@ exports.scalarEquals = scalarEquals;
|
|
|
52
49
|
* proto3 semantics.
|
|
53
50
|
*/
|
|
54
51
|
function scalarDefaultValue(type) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
52
|
+
switch (type) {
|
|
53
|
+
case field_js_1.ScalarType.BOOL:
|
|
54
|
+
return false;
|
|
55
|
+
case field_js_1.ScalarType.UINT64:
|
|
56
|
+
case field_js_1.ScalarType.FIXED64:
|
|
57
|
+
case field_js_1.ScalarType.INT64:
|
|
58
|
+
case field_js_1.ScalarType.SFIXED64:
|
|
59
|
+
case field_js_1.ScalarType.SINT64:
|
|
60
|
+
return proto_int64_js_1.protoInt64.zero;
|
|
61
|
+
case field_js_1.ScalarType.DOUBLE:
|
|
62
|
+
case field_js_1.ScalarType.FLOAT:
|
|
63
|
+
return 0.0;
|
|
64
|
+
case field_js_1.ScalarType.BYTES:
|
|
65
|
+
return new Uint8Array(0);
|
|
66
|
+
case field_js_1.ScalarType.STRING:
|
|
67
|
+
return "";
|
|
68
|
+
default:
|
|
69
|
+
// Handles INT32, UINT32, SINT32, FIXED32, SFIXED32.
|
|
70
|
+
// We do not use individual cases to save a few bytes code size.
|
|
71
|
+
return 0;
|
|
72
|
+
}
|
|
76
73
|
}
|
|
77
74
|
exports.scalarDefaultValue = scalarDefaultValue;
|
|
78
75
|
/**
|
|
@@ -86,53 +83,53 @@ exports.scalarDefaultValue = scalarDefaultValue;
|
|
|
86
83
|
* If argument `value` is omitted, [2] is always false.
|
|
87
84
|
*/
|
|
88
85
|
function scalarTypeInfo(type, value) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
86
|
+
const isUndefined = value === undefined;
|
|
87
|
+
let wireType = binary_encoding_js_1.WireType.Varint;
|
|
88
|
+
let isIntrinsicDefault = value === 0;
|
|
89
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- INT32, UINT32, SINT32 are covered by the defaults
|
|
90
|
+
switch (type) {
|
|
91
|
+
case field_js_1.ScalarType.STRING:
|
|
92
|
+
isIntrinsicDefault = isUndefined || !value.length;
|
|
93
|
+
wireType = binary_encoding_js_1.WireType.LengthDelimited;
|
|
94
|
+
break;
|
|
95
|
+
case field_js_1.ScalarType.BOOL:
|
|
96
|
+
isIntrinsicDefault = value === false;
|
|
97
|
+
break;
|
|
98
|
+
case field_js_1.ScalarType.DOUBLE:
|
|
99
|
+
wireType = binary_encoding_js_1.WireType.Bit64;
|
|
100
|
+
break;
|
|
101
|
+
case field_js_1.ScalarType.FLOAT:
|
|
102
|
+
wireType = binary_encoding_js_1.WireType.Bit32;
|
|
103
|
+
break;
|
|
104
|
+
case field_js_1.ScalarType.INT64:
|
|
105
|
+
isIntrinsicDefault = isUndefined || value == 0;
|
|
106
|
+
break;
|
|
107
|
+
case field_js_1.ScalarType.UINT64:
|
|
108
|
+
isIntrinsicDefault = isUndefined || value == 0;
|
|
109
|
+
break;
|
|
110
|
+
case field_js_1.ScalarType.FIXED64:
|
|
111
|
+
isIntrinsicDefault = isUndefined || value == 0;
|
|
112
|
+
wireType = binary_encoding_js_1.WireType.Bit64;
|
|
113
|
+
break;
|
|
114
|
+
case field_js_1.ScalarType.BYTES:
|
|
115
|
+
isIntrinsicDefault = isUndefined || !value.byteLength;
|
|
116
|
+
wireType = binary_encoding_js_1.WireType.LengthDelimited;
|
|
117
|
+
break;
|
|
118
|
+
case field_js_1.ScalarType.FIXED32:
|
|
119
|
+
wireType = binary_encoding_js_1.WireType.Bit32;
|
|
120
|
+
break;
|
|
121
|
+
case field_js_1.ScalarType.SFIXED32:
|
|
122
|
+
wireType = binary_encoding_js_1.WireType.Bit32;
|
|
123
|
+
break;
|
|
124
|
+
case field_js_1.ScalarType.SFIXED64:
|
|
125
|
+
isIntrinsicDefault = isUndefined || value == 0;
|
|
126
|
+
wireType = binary_encoding_js_1.WireType.Bit64;
|
|
127
|
+
break;
|
|
128
|
+
case field_js_1.ScalarType.SINT64:
|
|
129
|
+
isIntrinsicDefault = isUndefined || value == 0;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
const method = field_js_1.ScalarType[type].toLowerCase();
|
|
133
|
+
return [wireType, method, isUndefined || isIntrinsicDefault];
|
|
137
134
|
}
|
|
138
135
|
exports.scalarTypeInfo = scalarTypeInfo;
|
|
@@ -6,224 +6,194 @@ const field_js_1 = require("../field.js");
|
|
|
6
6
|
const scalars_js_1 = require("./scalars.js");
|
|
7
7
|
/* eslint-disable @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-argument,no-case-declarations */
|
|
8
8
|
function makeUtilCommon() {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
const type = target.getType();
|
|
16
|
-
for (const member of type.fields.byMember()) {
|
|
17
|
-
const localName = member.localName,
|
|
18
|
-
t = target,
|
|
19
|
-
s = source;
|
|
20
|
-
if (s[localName] === undefined) {
|
|
21
|
-
continue;
|
|
22
|
-
}
|
|
23
|
-
switch (member.kind) {
|
|
24
|
-
case "oneof":
|
|
25
|
-
const sk = s[localName].case;
|
|
26
|
-
if (sk === undefined) {
|
|
27
|
-
continue;
|
|
9
|
+
return {
|
|
10
|
+
setEnumType: enum_js_1.setEnumType,
|
|
11
|
+
initPartial(source, target) {
|
|
12
|
+
if (source === undefined) {
|
|
13
|
+
return;
|
|
28
14
|
}
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
15
|
+
const type = target.getType();
|
|
16
|
+
for (const member of type.fields.byMember()) {
|
|
17
|
+
const localName = member.localName, t = target, s = source;
|
|
18
|
+
if (s[localName] === undefined) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
switch (member.kind) {
|
|
22
|
+
case "oneof":
|
|
23
|
+
const sk = s[localName].case;
|
|
24
|
+
if (sk === undefined) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const sourceField = member.findField(sk);
|
|
28
|
+
let val = s[localName].value;
|
|
29
|
+
if (sourceField &&
|
|
30
|
+
sourceField.kind == "message" &&
|
|
31
|
+
!(val instanceof sourceField.T)) {
|
|
32
|
+
val = new sourceField.T(val);
|
|
33
|
+
}
|
|
34
|
+
t[localName] = { case: sk, value: val };
|
|
35
|
+
break;
|
|
36
|
+
case "scalar":
|
|
37
|
+
case "enum":
|
|
38
|
+
t[localName] = s[localName];
|
|
39
|
+
break;
|
|
40
|
+
case "map":
|
|
41
|
+
switch (member.V.kind) {
|
|
42
|
+
case "scalar":
|
|
43
|
+
case "enum":
|
|
44
|
+
Object.assign(t[localName], s[localName]);
|
|
45
|
+
break;
|
|
46
|
+
case "message":
|
|
47
|
+
const messageType = member.V.T;
|
|
48
|
+
for (const k of Object.keys(s[localName])) {
|
|
49
|
+
let val = s[localName][k];
|
|
50
|
+
if (!messageType.fieldWrapper) {
|
|
51
|
+
// We only take partial input for messages that are not a wrapper type.
|
|
52
|
+
// For those messages, we recursively normalize the partial input.
|
|
53
|
+
val = new messageType(val);
|
|
54
|
+
}
|
|
55
|
+
t[localName][k] = val;
|
|
56
|
+
}
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
break;
|
|
60
|
+
case "message":
|
|
61
|
+
const mt = member.T;
|
|
62
|
+
if (member.repeated) {
|
|
63
|
+
t[localName] = s[localName].map((val) => val instanceof mt ? val : new mt(val));
|
|
64
|
+
}
|
|
65
|
+
else if (s[localName] !== undefined) {
|
|
66
|
+
const val = s[localName];
|
|
67
|
+
if (mt.fieldWrapper) {
|
|
68
|
+
t[localName] = val;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
t[localName] = val instanceof mt ? mt : new mt(val);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
60
75
|
}
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
break;
|
|
64
|
-
case "message":
|
|
65
|
-
const mt = member.T;
|
|
66
|
-
if (member.repeated) {
|
|
67
|
-
t[localName] = s[localName].map((val) =>
|
|
68
|
-
val instanceof mt ? val : new mt(val)
|
|
69
|
-
);
|
|
70
|
-
} else if (s[localName] !== undefined) {
|
|
71
|
-
const val = s[localName];
|
|
72
|
-
if (mt.fieldWrapper) {
|
|
73
|
-
t[localName] = val;
|
|
74
|
-
} else {
|
|
75
|
-
t[localName] = val instanceof mt ? mt : new mt(val);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
equals(type, a, b) {
|
|
83
|
-
if (a === b) {
|
|
84
|
-
return true;
|
|
85
|
-
}
|
|
86
|
-
if (!a || !b) {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
return type.fields.byMember().every((m) => {
|
|
90
|
-
const va = a[m.localName];
|
|
91
|
-
const vb = b[m.localName];
|
|
92
|
-
if (m.repeated) {
|
|
93
|
-
if (va.length !== vb.length) {
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- repeated fields are never "map"
|
|
97
|
-
switch (m.kind) {
|
|
98
|
-
case "message":
|
|
99
|
-
return va.every((a, i) => m.T.equals(a, vb[i]));
|
|
100
|
-
case "scalar":
|
|
101
|
-
return va.every((a, i) =>
|
|
102
|
-
(0, scalars_js_1.scalarEquals)(m.T, a, vb[i])
|
|
103
|
-
);
|
|
104
|
-
case "enum":
|
|
105
|
-
return va.every((a, i) =>
|
|
106
|
-
(0, scalars_js_1.scalarEquals)(
|
|
107
|
-
field_js_1.ScalarType.INT32,
|
|
108
|
-
a,
|
|
109
|
-
vb[i]
|
|
110
|
-
)
|
|
111
|
-
);
|
|
112
|
-
}
|
|
113
|
-
throw new Error(`repeated cannot contain ${m.kind}`);
|
|
114
|
-
}
|
|
115
|
-
switch (m.kind) {
|
|
116
|
-
case "message":
|
|
117
|
-
return m.T.equals(va, vb);
|
|
118
|
-
case "enum":
|
|
119
|
-
return (0, scalars_js_1.scalarEquals)(
|
|
120
|
-
field_js_1.ScalarType.INT32,
|
|
121
|
-
va,
|
|
122
|
-
vb
|
|
123
|
-
);
|
|
124
|
-
case "scalar":
|
|
125
|
-
return (0, scalars_js_1.scalarEquals)(m.T, va, vb);
|
|
126
|
-
case "oneof":
|
|
127
|
-
if (va.case !== vb.case) {
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
const k = va.case,
|
|
131
|
-
s = m.findField(k);
|
|
132
|
-
if (s === undefined) {
|
|
133
|
-
return true;
|
|
134
76
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
return
|
|
139
|
-
case "enum":
|
|
140
|
-
return (0, scalars_js_1.scalarEquals)(
|
|
141
|
-
field_js_1.ScalarType.INT32,
|
|
142
|
-
va,
|
|
143
|
-
vb
|
|
144
|
-
);
|
|
145
|
-
case "scalar":
|
|
146
|
-
return (0, scalars_js_1.scalarEquals)(s.T, va, vb);
|
|
77
|
+
},
|
|
78
|
+
equals(type, a, b) {
|
|
79
|
+
if (a === b) {
|
|
80
|
+
return true;
|
|
147
81
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
const keys = Object.keys(va);
|
|
151
|
-
if (keys.some((k) => vb[k] === undefined)) {
|
|
152
|
-
return false;
|
|
82
|
+
if (!a || !b) {
|
|
83
|
+
return false;
|
|
153
84
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
const
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
85
|
+
return type.fields.byMember().every((m) => {
|
|
86
|
+
const va = a[m.localName];
|
|
87
|
+
const vb = b[m.localName];
|
|
88
|
+
if (m.repeated) {
|
|
89
|
+
if (va.length !== vb.length) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- repeated fields are never "map"
|
|
93
|
+
switch (m.kind) {
|
|
94
|
+
case "message":
|
|
95
|
+
return va.every((a, i) => m.T.equals(a, vb[i]));
|
|
96
|
+
case "scalar":
|
|
97
|
+
return va.every((a, i) => (0, scalars_js_1.scalarEquals)(m.T, a, vb[i]));
|
|
98
|
+
case "enum":
|
|
99
|
+
return va.every((a, i) => (0, scalars_js_1.scalarEquals)(field_js_1.ScalarType.INT32, a, vb[i]));
|
|
100
|
+
}
|
|
101
|
+
throw new Error(`repeated cannot contain ${m.kind}`);
|
|
102
|
+
}
|
|
103
|
+
switch (m.kind) {
|
|
104
|
+
case "message":
|
|
105
|
+
return m.T.equals(va, vb);
|
|
106
|
+
case "enum":
|
|
107
|
+
return (0, scalars_js_1.scalarEquals)(field_js_1.ScalarType.INT32, va, vb);
|
|
108
|
+
case "scalar":
|
|
109
|
+
return (0, scalars_js_1.scalarEquals)(m.T, va, vb);
|
|
110
|
+
case "oneof":
|
|
111
|
+
if (va.case !== vb.case) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
const k = va.case, s = m.findField(k);
|
|
115
|
+
if (s === undefined) {
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- oneof fields are never "map"
|
|
119
|
+
switch (s.kind) {
|
|
120
|
+
case "message":
|
|
121
|
+
return s.T.equals(va[k], vb[k]);
|
|
122
|
+
case "enum":
|
|
123
|
+
return (0, scalars_js_1.scalarEquals)(field_js_1.ScalarType.INT32, va, vb);
|
|
124
|
+
case "scalar":
|
|
125
|
+
return (0, scalars_js_1.scalarEquals)(s.T, va, vb);
|
|
126
|
+
}
|
|
127
|
+
throw new Error(`oneof cannot contain ${s.kind}`);
|
|
128
|
+
case "map":
|
|
129
|
+
const keys = Object.keys(va);
|
|
130
|
+
if (keys.some((k) => vb[k] === undefined)) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
switch (m.V.kind) {
|
|
134
|
+
case "message":
|
|
135
|
+
const messageType = m.V.T;
|
|
136
|
+
return keys.every((k) => messageType.equals(va[k], vb[k]));
|
|
137
|
+
case "enum":
|
|
138
|
+
return keys.every((k) => (0, scalars_js_1.scalarEquals)(field_js_1.ScalarType.INT32, va[k], vb[k]));
|
|
139
|
+
case "scalar":
|
|
140
|
+
const scalarType = m.V.T;
|
|
141
|
+
return keys.every((k) => (0, scalars_js_1.scalarEquals)(scalarType, va[k], vb[k]));
|
|
142
|
+
}
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
},
|
|
147
|
+
clone(message) {
|
|
148
|
+
const type = message.getType(), target = new type();
|
|
149
|
+
for (const member of type.fields.byMember()) {
|
|
150
|
+
const source = message[member.localName];
|
|
151
|
+
let copy;
|
|
152
|
+
if (member.repeated) {
|
|
153
|
+
copy = source.map((e) => cloneSingularField(member, e));
|
|
154
|
+
}
|
|
155
|
+
else if (member.kind == "map") {
|
|
156
|
+
copy = target[member.localName];
|
|
157
|
+
for (const [key, v] of Object.entries(source)) {
|
|
158
|
+
copy[key] = cloneSingularField(member.V, v);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (member.kind == "oneof") {
|
|
162
|
+
const f = member.findField(source.case);
|
|
163
|
+
copy = f
|
|
164
|
+
? { case: source.case, value: cloneSingularField(f, source.value) }
|
|
165
|
+
: { case: undefined };
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
copy = cloneSingularField(member, source);
|
|
169
|
+
}
|
|
170
|
+
target[member.localName] = copy;
|
|
171
171
|
}
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
},
|
|
176
|
-
clone(message) {
|
|
177
|
-
const type = message.getType(),
|
|
178
|
-
target = new type(),
|
|
179
|
-
any = target;
|
|
180
|
-
for (const member of type.fields.byMember()) {
|
|
181
|
-
const source = message[member.localName];
|
|
182
|
-
let copy;
|
|
183
|
-
if (member.repeated) {
|
|
184
|
-
copy = source.map((e) => cloneSingularField(member, e));
|
|
185
|
-
} else if (member.kind == "map") {
|
|
186
|
-
copy = any[member.localName];
|
|
187
|
-
for (const [key, v] of Object.entries(source)) {
|
|
188
|
-
copy[key] = cloneSingularField(member.V, v);
|
|
189
|
-
}
|
|
190
|
-
} else if (member.kind == "oneof") {
|
|
191
|
-
const f = member.findField(source.case);
|
|
192
|
-
copy = f
|
|
193
|
-
? { case: source.case, value: cloneSingularField(f, source.value) }
|
|
194
|
-
: { case: undefined };
|
|
195
|
-
} else {
|
|
196
|
-
copy = cloneSingularField(member, source);
|
|
197
|
-
}
|
|
198
|
-
any[member.localName] = copy;
|
|
199
|
-
}
|
|
200
|
-
return target;
|
|
201
|
-
},
|
|
202
|
-
};
|
|
172
|
+
return target;
|
|
173
|
+
},
|
|
174
|
+
};
|
|
203
175
|
}
|
|
204
176
|
exports.makeUtilCommon = makeUtilCommon;
|
|
205
177
|
// clone a single field value - i.e. the element type of repeated fields, the value type of maps
|
|
206
178
|
function cloneSingularField(field, value) {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
return value.clone();
|
|
228
|
-
}
|
|
179
|
+
if (value === undefined) {
|
|
180
|
+
return value;
|
|
181
|
+
}
|
|
182
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check -- unmatched "map" is unsupported
|
|
183
|
+
switch (field.kind) {
|
|
184
|
+
case "enum":
|
|
185
|
+
return value;
|
|
186
|
+
case "scalar":
|
|
187
|
+
if (field.T === field_js_1.ScalarType.BYTES) {
|
|
188
|
+
const c = new Uint8Array(value.byteLength);
|
|
189
|
+
c.set(value);
|
|
190
|
+
return c;
|
|
191
|
+
}
|
|
192
|
+
return value;
|
|
193
|
+
case "message":
|
|
194
|
+
if (field.T.fieldWrapper) {
|
|
195
|
+
return field.T.fieldWrapper.unwrapField(field.T.fieldWrapper.wrapField(value).clone());
|
|
196
|
+
}
|
|
197
|
+
return value.clone();
|
|
198
|
+
}
|
|
229
199
|
}
|