@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.
Files changed (113) hide show
  1. package/dist/cjs/codegenv1/embed.d.ts +2 -2
  2. package/dist/cjs/codegenv1/embed.js +25 -25
  3. package/dist/cjs/codegenv1/enum.js +2 -4
  4. package/dist/cjs/codegenv1/restore-json-names.d.ts +3 -0
  5. package/dist/cjs/codegenv1/restore-json-names.js +3 -0
  6. package/dist/cjs/codegenv1/symbols.d.ts +9 -0
  7. package/dist/cjs/codegenv1/symbols.js +9 -0
  8. package/dist/cjs/codegenv1/types.d.ts +55 -2
  9. package/dist/cjs/create.js +7 -18
  10. package/dist/cjs/desc-types.d.ts +27 -10
  11. package/dist/cjs/extensions.d.ts +21 -1
  12. package/dist/cjs/extensions.js +38 -7
  13. package/dist/cjs/fields.d.ts +17 -16
  14. package/dist/cjs/fields.js +17 -10
  15. package/dist/cjs/from-binary.js +9 -19
  16. package/dist/cjs/from-json.js +9 -13
  17. package/dist/cjs/index.d.ts +1 -1
  18. package/dist/cjs/index.js +3 -1
  19. package/dist/cjs/reflect/names.d.ts +0 -12
  20. package/dist/cjs/reflect/names.js +1 -39
  21. package/dist/cjs/reflect/nested-types.d.ts +11 -1
  22. package/dist/cjs/reflect/nested-types.js +34 -1
  23. package/dist/cjs/reflect/reflect-types.d.ts +158 -10
  24. package/dist/cjs/reflect/reflect.d.ts +11 -2
  25. package/dist/cjs/reflect/reflect.js +306 -281
  26. package/dist/cjs/reflect/registry.js +50 -41
  27. package/dist/cjs/reflect/unsafe.js +38 -43
  28. package/dist/cjs/to-binary.js +1 -3
  29. package/dist/cjs/to-json.js +7 -27
  30. package/dist/cjs/wire/base64-encoding.js +2 -2
  31. package/dist/cjs/wire/binary-encoding.d.ts +5 -3
  32. package/dist/cjs/wire/binary-encoding.js +16 -10
  33. package/dist/cjs/wkt/gen/google/protobuf/any_pb.d.ts +7 -0
  34. package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +7 -2
  35. package/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
  36. package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +15 -6
  37. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
  38. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
  39. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +186 -0
  40. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +186 -83
  41. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
  42. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +7 -2
  43. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
  44. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +7 -2
  45. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
  46. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
  47. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
  48. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +7 -2
  49. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
  50. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +18 -7
  51. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
  52. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
  53. package/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
  54. package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +32 -13
  55. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
  56. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
  57. package/dist/esm/codegenv1/embed.d.ts +2 -2
  58. package/dist/esm/codegenv1/embed.js +25 -25
  59. package/dist/esm/codegenv1/enum.js +2 -4
  60. package/dist/esm/codegenv1/restore-json-names.d.ts +3 -0
  61. package/dist/esm/codegenv1/restore-json-names.js +3 -0
  62. package/dist/esm/codegenv1/symbols.d.ts +9 -0
  63. package/dist/esm/codegenv1/symbols.js +9 -0
  64. package/dist/esm/codegenv1/types.d.ts +55 -2
  65. package/dist/esm/create.js +7 -18
  66. package/dist/esm/desc-types.d.ts +27 -10
  67. package/dist/esm/extensions.d.ts +21 -1
  68. package/dist/esm/extensions.js +35 -6
  69. package/dist/esm/fields.d.ts +17 -16
  70. package/dist/esm/fields.js +17 -10
  71. package/dist/esm/from-binary.js +9 -19
  72. package/dist/esm/from-json.js +11 -15
  73. package/dist/esm/index.d.ts +1 -1
  74. package/dist/esm/index.js +1 -1
  75. package/dist/esm/reflect/names.d.ts +0 -12
  76. package/dist/esm/reflect/names.js +0 -37
  77. package/dist/esm/reflect/nested-types.d.ts +11 -1
  78. package/dist/esm/reflect/nested-types.js +32 -0
  79. package/dist/esm/reflect/reflect-types.d.ts +158 -10
  80. package/dist/esm/reflect/reflect.d.ts +11 -2
  81. package/dist/esm/reflect/reflect.js +304 -279
  82. package/dist/esm/reflect/registry.js +50 -41
  83. package/dist/esm/reflect/unsafe.js +38 -43
  84. package/dist/esm/to-binary.js +1 -3
  85. package/dist/esm/to-json.js +7 -27
  86. package/dist/esm/wire/base64-encoding.js +2 -2
  87. package/dist/esm/wire/binary-encoding.d.ts +5 -3
  88. package/dist/esm/wire/binary-encoding.js +16 -10
  89. package/dist/esm/wkt/gen/google/protobuf/any_pb.d.ts +7 -0
  90. package/dist/esm/wkt/gen/google/protobuf/any_pb.js +7 -2
  91. package/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
  92. package/dist/esm/wkt/gen/google/protobuf/api_pb.js +15 -6
  93. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
  94. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
  95. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +186 -0
  96. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +186 -83
  97. package/dist/esm/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
  98. package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +7 -2
  99. package/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
  100. package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +7 -2
  101. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
  102. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
  103. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
  104. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +7 -2
  105. package/dist/esm/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
  106. package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +18 -7
  107. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
  108. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
  109. package/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
  110. package/dist/esm/wkt/gen/google/protobuf/type_pb.js +32 -13
  111. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
  112. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
  113. 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 !== null && message !== void 0 ? message : (message = (0, create_js_1.create)(messageDesc));
29
- const check = (opt === null || opt === void 0 ? void 0 : opt.disableFieldValueCheck) !== true;
30
- let fieldsByNumber;
31
- let sortedFields;
32
- return {
33
- message,
34
- [unsafe_js_1.unsafeLocal]: message,
35
- desc: messageDesc,
36
- fields: messageDesc.fields,
37
- oneofs: messageDesc.oneofs,
38
- members: messageDesc.members,
39
- get sortedFields() {
40
- return (sortedFields !== null && sortedFields !== void 0 ? sortedFields : (sortedFields = messageDesc.fields
41
- .concat()
42
- .sort((a, b) => a.number - b.number)));
43
- },
44
- findNumber(number) {
45
- if (!fieldsByNumber) {
46
- fieldsByNumber = new Map(messageDesc.fields.map((f) => [f.number, f]));
47
- }
48
- return fieldsByNumber.get(number);
49
- },
50
- oneofCase(oneof) {
51
- assertOwn(message, oneof);
52
- return (0, unsafe_js_1.unsafeOneofCase)(message, oneof);
53
- },
54
- isSet(field) {
55
- assertOwn(message, field);
56
- return (0, unsafe_js_1.unsafeIsSet)(message, field);
57
- },
58
- clear(field) {
59
- assertOwn(message, field);
60
- (0, unsafe_js_1.unsafeClear)(message, field);
61
- },
62
- get(field) {
63
- assertOwn(message, field);
64
- let value = (0, unsafe_js_1.unsafeGet)(message, field);
65
- switch (field.fieldKind) {
66
- case "list":
67
- return reflectList(field, value);
68
- case "map":
69
- // TODO fix types
70
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
71
- return reflectMap(field, value); // eslint-disable-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return
72
- case "message":
73
- if (value !== undefined &&
74
- !field.oneof &&
75
- (0, wrappers_js_1.isWrapperDesc)(field.message)) {
76
- value = {
77
- $typeName: field.message.typeName,
78
- value: longToReflect(field.message.fields[0], value),
79
- };
80
- }
81
- return reflect(field.message, value);
82
- case "scalar":
83
- return longToReflect(field, value);
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
- let local = value;
97
- if ((0, guard_js_1.isReflectMap)(value) || (0, guard_js_1.isReflectList)(value)) {
98
- local = value[unsafe_js_1.unsafeLocal];
99
- }
100
- else if ((0, guard_js_1.isReflectMessage)(value)) {
101
- const msg = value.message;
102
- local = !field.oneof && (0, wrappers_js_1.isWrapper)(msg) ? msg.value : msg;
103
- }
104
- else {
105
- local = longToLocal(field, value);
106
- }
107
- (0, unsafe_js_1.unsafeSet)(message, field, local);
108
- return undefined;
109
- },
110
- addListItem(field, value) {
111
- assertOwn(message, field);
112
- assertKind(field, "list");
113
- if (check) {
114
- if ((0, reflect_check_js_1.checkListItem)(field, 0, value)) {
115
- const arr = (0, unsafe_js_1.unsafeGet)(message, field);
116
- return (0, reflect_check_js_1.checkListItem)(field, arr.length, value);
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
- (0, unsafe_js_1.unsafeAddListItem)(message, field, listItemToLocal(field, value));
120
- return undefined;
121
- },
122
- setMapEntry(field, key, value) {
123
- assertOwn(message, field);
124
- assertKind(field, "map");
125
- if (check) {
126
- const err = (0, reflect_check_js_1.checkMapEntry)(field, key, value);
127
- if (err) {
128
- return err;
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
- (0, unsafe_js_1.unsafeSetMapEntry)(message, field, mapKeyToLocal(key), mapValueToLocal(field, value));
132
- return undefined;
133
- },
134
- getUnknown() {
135
- return message.$unknown;
136
- },
137
- setUnknown(value) {
138
- message.$unknown = value;
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
- function reflectList(field, unsafeInput) {
154
- const arr = unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : [];
155
- return {
156
- [unsafe_js_1.unsafeLocal]: arr,
157
- field() {
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
- function reflectMap(field, unsafeInput) {
214
- const obj = unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : {};
215
- return {
216
- [unsafe_js_1.unsafeLocal]: obj,
217
- field() {
218
- return field;
219
- },
220
- set(key, value) {
221
- const err = (0, reflect_check_js_1.checkMapEntry)(field, key, value);
222
- if (!err) {
223
- obj[mapKeyToLocal(key)] = mapValueToLocal(field, value);
224
- }
225
- return err;
226
- },
227
- delete(key) {
228
- const k = mapKeyToLocal(key);
229
- const has = Object.prototype.hasOwnProperty.call(obj, k);
230
- if (has) {
231
- delete obj[k];
232
- }
233
- return has;
234
- },
235
- clear() {
236
- for (const key of Object.keys(obj)) {
237
- delete obj[key];
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
- forEach(callbackfn, thisArg) {
275
- for (const mapEntry of this.entries()) {
276
- callbackfn.call(thisArg, mapEntry[1], mapEntry[0], this);
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 reflect(field.message, value);
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 reflect(field.message, value);
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
- if (field.scalar !== undefined) {
360
- // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
361
- switch (field.scalar) {
362
- case scalar_js_1.ScalarType.INT64:
363
- case scalar_js_1.ScalarType.SFIXED64:
364
- case scalar_js_1.ScalarType.SINT64:
365
- if ("longType" in field &&
366
- field.longType == scalar_js_1.LongType.STRING &&
367
- typeof value == "string") {
368
- value = proto_int64_js_1.protoInt64.parse(value);
369
- }
370
- break;
371
- case scalar_js_1.ScalarType.FIXED64:
372
- case scalar_js_1.ScalarType.UINT64:
373
- if ("longType" in field &&
374
- field.longType == scalar_js_1.LongType.STRING &&
375
- typeof value == "string") {
376
- value = proto_int64_js_1.protoInt64.uParse(value);
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
- if (field.scalar !== undefined) {
385
- // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
386
- switch (field.scalar) {
387
- case scalar_js_1.ScalarType.INT64:
388
- case scalar_js_1.ScalarType.SFIXED64:
389
- case scalar_js_1.ScalarType.SINT64:
390
- if ("longType" in field && field.longType == scalar_js_1.LongType.STRING) {
391
- value = String(value);
392
- }
393
- else if (typeof value == "string" || typeof value == "number") {
394
- value = proto_int64_js_1.protoInt64.parse(value);
395
- }
396
- break;
397
- case scalar_js_1.ScalarType.FIXED64:
398
- case scalar_js_1.ScalarType.UINT64:
399
- if ("longType" in field && field.longType == scalar_js_1.LongType.STRING) {
400
- value = String(value);
401
- }
402
- else if (typeof value == "string" || typeof value == "number") {
403
- value = proto_int64_js_1.protoInt64.uParse(value);
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
  }