@bufbuild/protobuf 2.0.0-alpha.1 → 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 +2 -2
- package/dist/cjs/codegenv1/embed.js +51 -46
- package/dist/cjs/codegenv1/enum.d.ts +1 -1
- package/dist/cjs/codegenv1/enum.js +2 -4
- 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/restore-json-names.d.ts +3 -0
- package/dist/cjs/codegenv1/restore-json-names.js +3 -0
- 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/symbols.d.ts +9 -0
- package/dist/cjs/codegenv1/symbols.js +9 -0
- package/dist/cjs/codegenv1/types.d.ts +59 -8
- package/dist/cjs/create.d.ts +1 -1
- package/dist/cjs/create.js +13 -23
- package/dist/cjs/{desc-types.d.ts → descriptors.d.ts} +66 -17
- package/dist/cjs/descriptors.js +53 -0
- package/dist/cjs/equals.d.ts +1 -1
- package/dist/cjs/extensions.d.ts +21 -1
- package/dist/cjs/extensions.js +42 -10
- package/dist/cjs/fields.d.ts +17 -16
- package/dist/cjs/fields.js +17 -10
- package/dist/cjs/from-binary.d.ts +2 -2
- package/dist/cjs/from-binary.js +31 -41
- package/dist/cjs/from-json.d.ts +4 -4
- package/dist/cjs/from-json.js +200 -185
- package/dist/cjs/index.d.ts +3 -2
- package/dist/cjs/index.js +5 -2
- 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 -13
- package/dist/cjs/reflect/names.js +2 -40
- package/dist/cjs/reflect/nested-types.d.ts +11 -1
- package/dist/cjs/reflect/nested-types.js +34 -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 +162 -14
- package/dist/cjs/reflect/reflect.d.ts +12 -3
- package/dist/cjs/reflect/reflect.js +316 -290
- 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 +38 -43
- package/dist/cjs/{reflect/registry.d.ts → registry.d.ts} +2 -2
- package/dist/cjs/{reflect/registry.js → registry.js} +100 -73
- package/dist/cjs/to-binary.d.ts +1 -1
- package/dist/cjs/to-binary.js +28 -30
- package/dist/cjs/to-json.d.ts +7 -6
- package/dist/cjs/to-json.js +63 -70
- package/dist/cjs/types.d.ts +1 -1
- package/dist/cjs/wire/base64-encoding.js +4 -4
- package/dist/cjs/wire/binary-encoding.d.ts +25 -3
- package/dist/cjs/wire/binary-encoding.js +70 -18
- 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/any_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
- package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +15 -6
- package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
- package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +192 -0
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +187 -84
- package/dist/cjs/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
- package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +18 -7
- package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
- package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +32 -13
- package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
- package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
- 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 +2 -2
- package/dist/esm/codegenv1/embed.js +34 -29
- package/dist/esm/codegenv1/enum.d.ts +1 -1
- package/dist/esm/codegenv1/enum.js +2 -4
- 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/restore-json-names.d.ts +3 -0
- package/dist/esm/codegenv1/restore-json-names.js +3 -0
- 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/symbols.d.ts +9 -0
- package/dist/esm/codegenv1/symbols.js +9 -0
- package/dist/esm/codegenv1/types.d.ts +59 -8
- package/dist/esm/create.d.ts +1 -1
- package/dist/esm/create.js +11 -21
- package/dist/esm/{desc-types.d.ts → descriptors.d.ts} +66 -17
- package/dist/esm/descriptors.js +50 -0
- package/dist/esm/equals.d.ts +1 -1
- package/dist/esm/extensions.d.ts +21 -1
- package/dist/esm/extensions.js +39 -9
- package/dist/esm/fields.d.ts +17 -16
- package/dist/esm/fields.js +17 -10
- package/dist/esm/from-binary.d.ts +2 -2
- package/dist/esm/from-binary.js +13 -23
- package/dist/esm/from-json.d.ts +4 -4
- package/dist/esm/from-json.js +193 -178
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +3 -2
- 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 -13
- package/dist/esm/reflect/names.js +1 -38
- package/dist/esm/reflect/nested-types.d.ts +11 -1
- package/dist/esm/reflect/nested-types.js +32 -0
- 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 +162 -14
- package/dist/esm/reflect/reflect-types.js +1 -0
- package/dist/esm/reflect/reflect.d.ts +12 -3
- package/dist/esm/reflect/reflect.js +305 -279
- 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 +38 -43
- package/dist/esm/{reflect/registry.d.ts → registry.d.ts} +2 -2
- package/dist/esm/{reflect/registry.js → registry.js} +90 -63
- package/dist/esm/to-binary.d.ts +1 -1
- package/dist/esm/to-binary.js +2 -4
- package/dist/esm/to-json.d.ts +7 -6
- package/dist/esm/to-json.js +48 -55
- package/dist/esm/types.d.ts +1 -1
- package/dist/esm/wire/base64-encoding.js +4 -4
- package/dist/esm/wire/binary-encoding.d.ts +25 -3
- package/dist/esm/wire/binary-encoding.js +63 -11
- 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/any_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/any_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
- package/dist/esm/wkt/gen/google/protobuf/api_pb.js +15 -6
- package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
- package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +192 -0
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +187 -84
- package/dist/esm/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
- package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +18 -7
- package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
- package/dist/esm/wkt/gen/google/protobuf/type_pb.js +32 -13
- package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
- package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
- package/dist/esm/wkt/wrappers.d.ts +1 -1
- package/package.json +2 -2
- 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
|
@@ -11,130 +11,138 @@
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
+
import { ScalarType, } from "../descriptors.js";
|
|
14
15
|
import { checkField, checkListItem, checkMapEntry } from "./reflect-check.js";
|
|
15
16
|
import { FieldError } from "./error.js";
|
|
16
17
|
import { unsafeAddListItem, unsafeClear, unsafeGet, unsafeIsSet, unsafeLocal, unsafeOneofCase, unsafeSet, unsafeSetMapEntry, } from "./unsafe.js";
|
|
17
18
|
import { create } from "../create.js";
|
|
18
19
|
import { isWrapper, isWrapperDesc } from "../wkt/wrappers.js";
|
|
19
|
-
import {
|
|
20
|
+
import { scalarZeroValue } from "./scalar.js";
|
|
20
21
|
import { protoInt64 } from "../proto-int64.js";
|
|
21
22
|
import { isReflectList, isReflectMap, isReflectMessage } from "./guard.js";
|
|
23
|
+
/**
|
|
24
|
+
* Create a ReflectMessage.
|
|
25
|
+
*/
|
|
22
26
|
export function reflect(messageDesc, message,
|
|
23
27
|
// TODO either remove this option, or support it in reflect-list and reflect-map as well
|
|
24
28
|
opt) {
|
|
25
|
-
message
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return longToReflect(field, value);
|
|
81
|
-
case "enum":
|
|
82
|
-
return value;
|
|
83
|
-
}
|
|
84
|
-
},
|
|
85
|
-
set(field, value) {
|
|
86
|
-
assertOwn(message, field);
|
|
87
|
-
if (check) {
|
|
88
|
-
const err = checkField(field, value);
|
|
89
|
-
if (err) {
|
|
90
|
-
return err;
|
|
29
|
+
return new ReflectMessageImpl(messageDesc, message, (opt === null || opt === void 0 ? void 0 : opt.disableFieldValueCheck) !== true);
|
|
30
|
+
}
|
|
31
|
+
class ReflectMessageImpl {
|
|
32
|
+
get sortedFields() {
|
|
33
|
+
var _a;
|
|
34
|
+
return ((_a = this._sortedFields) !== null && _a !== void 0 ? _a : (this._sortedFields = this.desc.fields
|
|
35
|
+
.concat()
|
|
36
|
+
.sort((a, b) => a.number - b.number)));
|
|
37
|
+
}
|
|
38
|
+
constructor(messageDesc, message,
|
|
39
|
+
// TODO either remove this option, or support it in reflect-list and reflect-map as well
|
|
40
|
+
check = true) {
|
|
41
|
+
this.check = check;
|
|
42
|
+
this.desc = messageDesc;
|
|
43
|
+
this.message = this[unsafeLocal] = message !== null && message !== void 0 ? message : create(messageDesc);
|
|
44
|
+
this.fields = messageDesc.fields;
|
|
45
|
+
this.oneofs = messageDesc.oneofs;
|
|
46
|
+
this.members = messageDesc.members;
|
|
47
|
+
}
|
|
48
|
+
findNumber(number) {
|
|
49
|
+
if (!this._fieldsByNumber) {
|
|
50
|
+
this._fieldsByNumber = new Map(this.desc.fields.map((f) => [f.number, f]));
|
|
51
|
+
}
|
|
52
|
+
return this._fieldsByNumber.get(number);
|
|
53
|
+
}
|
|
54
|
+
oneofCase(oneof) {
|
|
55
|
+
assertOwn(this.message, oneof);
|
|
56
|
+
return unsafeOneofCase(this.message, oneof);
|
|
57
|
+
}
|
|
58
|
+
isSet(field) {
|
|
59
|
+
assertOwn(this.message, field);
|
|
60
|
+
return unsafeIsSet(this.message, field);
|
|
61
|
+
}
|
|
62
|
+
clear(field) {
|
|
63
|
+
assertOwn(this.message, field);
|
|
64
|
+
unsafeClear(this.message, field);
|
|
65
|
+
}
|
|
66
|
+
get(field) {
|
|
67
|
+
assertOwn(this.message, field);
|
|
68
|
+
let value = unsafeGet(this.message, field);
|
|
69
|
+
switch (field.fieldKind) {
|
|
70
|
+
case "list":
|
|
71
|
+
return new ReflectListImpl(field, value, this.check);
|
|
72
|
+
case "map":
|
|
73
|
+
// TODO fix types
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
75
|
+
return reflectMap(field, value, this.check); // eslint-disable-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return
|
|
76
|
+
case "message":
|
|
77
|
+
if (value !== undefined &&
|
|
78
|
+
!field.oneof &&
|
|
79
|
+
isWrapperDesc(field.message)) {
|
|
80
|
+
value = {
|
|
81
|
+
$typeName: field.message.typeName,
|
|
82
|
+
value: longToReflect(field.message.fields[0], value),
|
|
83
|
+
};
|
|
91
84
|
}
|
|
85
|
+
return new ReflectMessageImpl(field.message, value, this.check);
|
|
86
|
+
case "scalar":
|
|
87
|
+
return (value === undefined
|
|
88
|
+
? scalarZeroValue(field.scalar, false)
|
|
89
|
+
: longToReflect(field, value));
|
|
90
|
+
case "enum":
|
|
91
|
+
return (value !== null && value !== void 0 ? value : field.enum.values[0].number);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
set(field, value) {
|
|
95
|
+
assertOwn(this.message, field);
|
|
96
|
+
if (this.check) {
|
|
97
|
+
const err = checkField(field, value);
|
|
98
|
+
if (err) {
|
|
99
|
+
return err;
|
|
92
100
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
101
|
+
}
|
|
102
|
+
let local;
|
|
103
|
+
if (isReflectMap(value) || isReflectList(value)) {
|
|
104
|
+
local = value[unsafeLocal];
|
|
105
|
+
}
|
|
106
|
+
else if (isReflectMessage(value)) {
|
|
107
|
+
const msg = value.message;
|
|
108
|
+
local = !field.oneof && isWrapper(msg) ? msg.value : msg;
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
local = longToLocal(field, value);
|
|
112
|
+
}
|
|
113
|
+
unsafeSet(this.message, field, local);
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
addListItem(field, value) {
|
|
117
|
+
assertOwn(this.message, field);
|
|
118
|
+
assertKind(field, "list");
|
|
119
|
+
if (this.check) {
|
|
120
|
+
if (checkListItem(field, 0, value)) {
|
|
121
|
+
const arr = unsafeGet(this.message, field);
|
|
122
|
+
return checkListItem(field, arr.length, value);
|
|
115
123
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
124
|
+
}
|
|
125
|
+
unsafeAddListItem(this.message, field, listItemToLocal(field, value));
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
setMapEntry(field, key, value) {
|
|
129
|
+
assertOwn(this.message, field);
|
|
130
|
+
assertKind(field, "map");
|
|
131
|
+
if (this.check) {
|
|
132
|
+
const err = checkMapEntry(field, key, value);
|
|
133
|
+
if (err) {
|
|
134
|
+
return err;
|
|
127
135
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
136
|
+
}
|
|
137
|
+
unsafeSetMapEntry(this.message, field, mapKeyToLocal(key), mapValueToLocal(field, value));
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
getUnknown() {
|
|
141
|
+
return this.message.$unknown;
|
|
142
|
+
}
|
|
143
|
+
setUnknown(value) {
|
|
144
|
+
this.message.$unknown = value;
|
|
145
|
+
}
|
|
138
146
|
}
|
|
139
147
|
function assertKind(field, kind) {
|
|
140
148
|
if (field.fieldKind != kind) {
|
|
@@ -146,132 +154,154 @@ function assertOwn(owner, member) {
|
|
|
146
154
|
throw new FieldError(member, `cannot use ${member.toString()} with message ${owner.$typeName}`, "ForeignFieldError");
|
|
147
155
|
}
|
|
148
156
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
157
|
+
/**
|
|
158
|
+
* Create a ReflectList.
|
|
159
|
+
*/
|
|
160
|
+
export function reflectList(field, unsafeInput, check = true) {
|
|
161
|
+
return new ReflectListImpl(field, unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : [], check);
|
|
162
|
+
}
|
|
163
|
+
class ReflectListImpl {
|
|
164
|
+
field() {
|
|
165
|
+
return this._field;
|
|
166
|
+
}
|
|
167
|
+
get size() {
|
|
168
|
+
return this._arr.length;
|
|
169
|
+
}
|
|
170
|
+
constructor(field, unsafeInput, check) {
|
|
171
|
+
this._field = field;
|
|
172
|
+
this._arr = this[unsafeLocal] = unsafeInput;
|
|
173
|
+
this.check = check;
|
|
174
|
+
}
|
|
175
|
+
get(index) {
|
|
176
|
+
const item = this._arr[index];
|
|
177
|
+
return item === undefined
|
|
178
|
+
? undefined
|
|
179
|
+
: listItemToReflect(this._field, item, this.check);
|
|
180
|
+
}
|
|
181
|
+
set(index, item) {
|
|
182
|
+
if (index < 0 || index >= this._arr.length) {
|
|
183
|
+
return new FieldError(this._field, `list item #${index + 1}: out of range`);
|
|
184
|
+
}
|
|
185
|
+
if (this.check) {
|
|
186
|
+
const err = checkListItem(this._field, index, item);
|
|
187
|
+
if (err) {
|
|
188
|
+
return err;
|
|
179
189
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
190
|
+
}
|
|
191
|
+
this._arr[index] = listItemToLocal(this._field, item);
|
|
192
|
+
return undefined;
|
|
193
|
+
}
|
|
194
|
+
add(...items) {
|
|
195
|
+
if (this.check) {
|
|
196
|
+
for (let i = 0; i < items.length; i++) {
|
|
197
|
+
const err = checkListItem(this._field, this._arr.length + i, items[i]);
|
|
198
|
+
if (err) {
|
|
199
|
+
return err;
|
|
183
200
|
}
|
|
184
201
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
202
|
+
}
|
|
203
|
+
for (const item of items) {
|
|
204
|
+
this._arr.push(listItemToLocal(this._field, item));
|
|
205
|
+
}
|
|
206
|
+
return undefined;
|
|
207
|
+
}
|
|
208
|
+
clear() {
|
|
209
|
+
this._arr.splice(0, this._arr.length);
|
|
210
|
+
}
|
|
211
|
+
[Symbol.iterator]() {
|
|
212
|
+
return this.values();
|
|
213
|
+
}
|
|
214
|
+
keys() {
|
|
215
|
+
return this._arr.keys();
|
|
216
|
+
}
|
|
217
|
+
*values() {
|
|
218
|
+
for (const item of this._arr) {
|
|
219
|
+
yield listItemToReflect(this._field, item, this.check);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
*entries() {
|
|
223
|
+
for (let i = 0; i < this._arr.length; i++) {
|
|
224
|
+
yield [i, listItemToReflect(this._field, this._arr[i], this.check)];
|
|
225
|
+
}
|
|
226
|
+
}
|
|
207
227
|
}
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
return has;
|
|
229
|
-
},
|
|
230
|
-
clear() {
|
|
231
|
-
for (const key of Object.keys(obj)) {
|
|
232
|
-
delete obj[key];
|
|
233
|
-
}
|
|
234
|
-
},
|
|
235
|
-
get(key) {
|
|
236
|
-
let val = obj[mapKeyToLocal(key)];
|
|
237
|
-
if (val !== undefined) {
|
|
238
|
-
val = mapValueToReflect(field, val);
|
|
239
|
-
}
|
|
240
|
-
return val;
|
|
241
|
-
},
|
|
242
|
-
has(key) {
|
|
243
|
-
return Object.prototype.hasOwnProperty.call(obj, mapKeyToLocal(key));
|
|
244
|
-
},
|
|
245
|
-
*keys() {
|
|
246
|
-
for (const objKey of Object.keys(obj)) {
|
|
247
|
-
yield mapKeyToReflect(objKey, field.mapKey);
|
|
248
|
-
}
|
|
249
|
-
},
|
|
250
|
-
*entries() {
|
|
251
|
-
for (const objEntry of Object.entries(obj)) {
|
|
252
|
-
yield [
|
|
253
|
-
mapKeyToReflect(objEntry[0], field.mapKey),
|
|
254
|
-
mapValueToReflect(field, objEntry[1]),
|
|
255
|
-
];
|
|
256
|
-
}
|
|
257
|
-
},
|
|
258
|
-
[Symbol.iterator]() {
|
|
259
|
-
return this.entries();
|
|
260
|
-
},
|
|
261
|
-
get size() {
|
|
262
|
-
return Object.keys(obj).length;
|
|
263
|
-
},
|
|
264
|
-
*values() {
|
|
265
|
-
for (const val of Object.values(obj)) {
|
|
266
|
-
yield mapValueToReflect(field, val);
|
|
267
|
-
}
|
|
268
|
-
},
|
|
269
|
-
forEach(callbackfn, thisArg) {
|
|
270
|
-
for (const mapEntry of this.entries()) {
|
|
271
|
-
callbackfn.call(thisArg, mapEntry[1], mapEntry[0], this);
|
|
228
|
+
/**
|
|
229
|
+
* Create a ReflectMap.
|
|
230
|
+
*/
|
|
231
|
+
export function reflectMap(field, unsafeInput, check = true) {
|
|
232
|
+
return new ReflectMapImpl(field, unsafeInput, check);
|
|
233
|
+
}
|
|
234
|
+
class ReflectMapImpl {
|
|
235
|
+
constructor(field, unsafeInput, check = true) {
|
|
236
|
+
this.obj = this[unsafeLocal] = unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : {};
|
|
237
|
+
this.check = check;
|
|
238
|
+
this._field = field;
|
|
239
|
+
}
|
|
240
|
+
field() {
|
|
241
|
+
return this._field;
|
|
242
|
+
}
|
|
243
|
+
set(key, value) {
|
|
244
|
+
if (this.check) {
|
|
245
|
+
const err = checkMapEntry(this._field, key, value);
|
|
246
|
+
if (err) {
|
|
247
|
+
return err;
|
|
272
248
|
}
|
|
273
|
-
}
|
|
274
|
-
|
|
249
|
+
}
|
|
250
|
+
this.obj[mapKeyToLocal(key)] = mapValueToLocal(this._field, value);
|
|
251
|
+
return undefined;
|
|
252
|
+
}
|
|
253
|
+
delete(key) {
|
|
254
|
+
const k = mapKeyToLocal(key);
|
|
255
|
+
const has = Object.prototype.hasOwnProperty.call(this.obj, k);
|
|
256
|
+
if (has) {
|
|
257
|
+
delete this.obj[k];
|
|
258
|
+
}
|
|
259
|
+
return has;
|
|
260
|
+
}
|
|
261
|
+
clear() {
|
|
262
|
+
for (const key of Object.keys(this.obj)) {
|
|
263
|
+
delete this.obj[key];
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
get(key) {
|
|
267
|
+
let val = this.obj[mapKeyToLocal(key)];
|
|
268
|
+
if (val !== undefined) {
|
|
269
|
+
val = mapValueToReflect(this._field, val, this.check);
|
|
270
|
+
}
|
|
271
|
+
return val;
|
|
272
|
+
}
|
|
273
|
+
has(key) {
|
|
274
|
+
return Object.prototype.hasOwnProperty.call(this.obj, mapKeyToLocal(key));
|
|
275
|
+
}
|
|
276
|
+
*keys() {
|
|
277
|
+
for (const objKey of Object.keys(this.obj)) {
|
|
278
|
+
yield mapKeyToReflect(objKey, this._field.mapKey);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
*entries() {
|
|
282
|
+
for (const objEntry of Object.entries(this.obj)) {
|
|
283
|
+
yield [
|
|
284
|
+
mapKeyToReflect(objEntry[0], this._field.mapKey),
|
|
285
|
+
mapValueToReflect(this._field, objEntry[1], this.check),
|
|
286
|
+
];
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
[Symbol.iterator]() {
|
|
290
|
+
return this.entries();
|
|
291
|
+
}
|
|
292
|
+
get size() {
|
|
293
|
+
return Object.keys(this.obj).length;
|
|
294
|
+
}
|
|
295
|
+
*values() {
|
|
296
|
+
for (const val of Object.values(this.obj)) {
|
|
297
|
+
yield mapValueToReflect(this._field, val, this.check);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
forEach(callbackfn, thisArg) {
|
|
301
|
+
for (const mapEntry of this.entries()) {
|
|
302
|
+
callbackfn.call(thisArg, mapEntry[1], mapEntry[0], this);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
275
305
|
}
|
|
276
306
|
function listItemToLocal(field, value) {
|
|
277
307
|
if (isReflectMessage(value)) {
|
|
@@ -279,9 +309,9 @@ function listItemToLocal(field, value) {
|
|
|
279
309
|
}
|
|
280
310
|
return longToLocal(field, value);
|
|
281
311
|
}
|
|
282
|
-
function listItemToReflect(field, value) {
|
|
312
|
+
function listItemToReflect(field, value, check) {
|
|
283
313
|
if (field.listKind == "message") {
|
|
284
|
-
return
|
|
314
|
+
return new ReflectMessageImpl(field.message, value, check);
|
|
285
315
|
}
|
|
286
316
|
return longToReflect(field, value);
|
|
287
317
|
}
|
|
@@ -291,9 +321,9 @@ function mapValueToLocal(field, value) {
|
|
|
291
321
|
}
|
|
292
322
|
return longToLocal(field, value);
|
|
293
323
|
}
|
|
294
|
-
function mapValueToReflect(field, value) {
|
|
324
|
+
function mapValueToReflect(field, value, check) {
|
|
295
325
|
if (field.mapKind == "message") {
|
|
296
|
-
return
|
|
326
|
+
return new ReflectMessageImpl(field.message, value, check);
|
|
297
327
|
}
|
|
298
328
|
return value;
|
|
299
329
|
}
|
|
@@ -350,54 +380,50 @@ function mapKeyToReflect(key, type) {
|
|
|
350
380
|
return key;
|
|
351
381
|
}
|
|
352
382
|
function longToReflect(field, value) {
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
break;
|
|
373
|
-
}
|
|
383
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
384
|
+
switch (field.scalar) {
|
|
385
|
+
case ScalarType.INT64:
|
|
386
|
+
case ScalarType.SFIXED64:
|
|
387
|
+
case ScalarType.SINT64:
|
|
388
|
+
if ("longAsString" in field &&
|
|
389
|
+
field.longAsString &&
|
|
390
|
+
typeof value == "string") {
|
|
391
|
+
value = protoInt64.parse(value);
|
|
392
|
+
}
|
|
393
|
+
break;
|
|
394
|
+
case ScalarType.FIXED64:
|
|
395
|
+
case ScalarType.UINT64:
|
|
396
|
+
if ("longAsString" in field &&
|
|
397
|
+
field.longAsString &&
|
|
398
|
+
typeof value == "string") {
|
|
399
|
+
value = protoInt64.uParse(value);
|
|
400
|
+
}
|
|
401
|
+
break;
|
|
374
402
|
}
|
|
375
403
|
return value;
|
|
376
404
|
}
|
|
377
405
|
function longToLocal(field, value) {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
break;
|
|
400
|
-
}
|
|
406
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
407
|
+
switch (field.scalar) {
|
|
408
|
+
case ScalarType.INT64:
|
|
409
|
+
case ScalarType.SFIXED64:
|
|
410
|
+
case ScalarType.SINT64:
|
|
411
|
+
if ("longAsString" in field && field.longAsString) {
|
|
412
|
+
value = String(value);
|
|
413
|
+
}
|
|
414
|
+
else if (typeof value == "string" || typeof value == "number") {
|
|
415
|
+
value = protoInt64.parse(value);
|
|
416
|
+
}
|
|
417
|
+
break;
|
|
418
|
+
case ScalarType.FIXED64:
|
|
419
|
+
case ScalarType.UINT64:
|
|
420
|
+
if ("longAsString" in field && field.longAsString) {
|
|
421
|
+
value = String(value);
|
|
422
|
+
}
|
|
423
|
+
else if (typeof value == "string" || typeof value == "number") {
|
|
424
|
+
value = protoInt64.uParse(value);
|
|
425
|
+
}
|
|
426
|
+
break;
|
|
401
427
|
}
|
|
402
428
|
return value;
|
|
403
429
|
}
|