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