@bufbuild/protobuf 2.0.0-alpha.3 → 2.0.0-beta.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.
Files changed (130) hide show
  1. package/dist/cjs/clone.d.ts +1 -1
  2. package/dist/cjs/clone.js +9 -17
  3. package/dist/cjs/codegenv1/embed.js +25 -25
  4. package/dist/cjs/codegenv1/enum.d.ts +2 -1
  5. package/dist/cjs/codegenv1/file.js +1 -1
  6. package/dist/cjs/codegenv1/message.d.ts +2 -1
  7. package/dist/cjs/codegenv1/scalar.d.ts +4 -0
  8. package/dist/cjs/codegenv1/scalar.js +30 -1
  9. package/dist/cjs/codegenv1/symbols.d.ts +10 -0
  10. package/dist/cjs/codegenv1/symbols.js +2 -0
  11. package/dist/cjs/codegenv1/types.d.ts +7 -5
  12. package/dist/cjs/codegenv1/types.js +2 -1
  13. package/dist/cjs/create.d.ts +1 -1
  14. package/dist/cjs/create.js +47 -20
  15. package/dist/cjs/equals.d.ts +1 -1
  16. package/dist/cjs/equals.js +8 -15
  17. package/dist/cjs/from-binary.d.ts +2 -2
  18. package/dist/cjs/from-binary.js +17 -14
  19. package/dist/cjs/from-json.d.ts +14 -6
  20. package/dist/cjs/from-json.js +51 -55
  21. package/dist/cjs/is-message.d.ts +1 -1
  22. package/dist/cjs/is-message.js +3 -3
  23. package/dist/cjs/reflect/guard.js +4 -4
  24. package/dist/cjs/reflect/reflect-types.d.ts +13 -80
  25. package/dist/cjs/reflect/reflect.d.ts +29 -18
  26. package/dist/cjs/reflect/reflect.js +183 -78
  27. package/dist/cjs/reflect/scalar.d.ts +1 -1
  28. package/dist/cjs/reflect/unsafe.d.ts +0 -16
  29. package/dist/cjs/reflect/unsafe.js +1 -19
  30. package/dist/cjs/registry.d.ts +18 -2
  31. package/dist/cjs/registry.js +62 -60
  32. package/dist/cjs/to-binary.d.ts +1 -1
  33. package/dist/cjs/to-binary.js +2 -2
  34. package/dist/cjs/to-json.d.ts +14 -4
  35. package/dist/cjs/to-json.js +26 -13
  36. package/dist/cjs/types.d.ts +9 -0
  37. package/dist/cjs/wire/binary-encoding.js +30 -9
  38. package/dist/cjs/wkt/any.d.ts +7 -7
  39. package/dist/cjs/wkt/any.js +5 -5
  40. package/dist/cjs/wkt/gen/google/protobuf/any_pb.d.ts +9 -3
  41. package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +4 -4
  42. package/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +88 -9
  43. package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +8 -8
  44. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +107 -11
  45. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +11 -11
  46. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +1005 -92
  47. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +86 -86
  48. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.d.ts +7 -3
  49. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +4 -4
  50. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.d.ts +7 -3
  51. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +4 -4
  52. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -3
  53. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +4 -4
  54. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.d.ts +12 -3
  55. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +4 -4
  56. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.d.ts +25 -8
  57. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +9 -9
  58. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -3
  59. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +4 -4
  60. package/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +165 -16
  61. package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +15 -15
  62. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +55 -19
  63. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +20 -20
  64. package/dist/cjs/wkt/timestamp.js +1 -2
  65. package/dist/esm/clone.d.ts +1 -1
  66. package/dist/esm/clone.js +9 -17
  67. package/dist/esm/codegenv1/embed.js +26 -26
  68. package/dist/esm/codegenv1/enum.d.ts +2 -1
  69. package/dist/esm/codegenv1/file.js +2 -2
  70. package/dist/esm/codegenv1/message.d.ts +2 -1
  71. package/dist/esm/codegenv1/scalar.d.ts +4 -0
  72. package/dist/esm/codegenv1/scalar.js +28 -0
  73. package/dist/esm/codegenv1/symbols.d.ts +10 -0
  74. package/dist/esm/codegenv1/symbols.js +2 -0
  75. package/dist/esm/codegenv1/types.d.ts +7 -5
  76. package/dist/esm/codegenv1/types.js +2 -1
  77. package/dist/esm/create.d.ts +1 -1
  78. package/dist/esm/create.js +47 -20
  79. package/dist/esm/equals.d.ts +1 -1
  80. package/dist/esm/equals.js +8 -15
  81. package/dist/esm/from-binary.d.ts +2 -2
  82. package/dist/esm/from-binary.js +17 -14
  83. package/dist/esm/from-json.d.ts +14 -6
  84. package/dist/esm/from-json.js +49 -55
  85. package/dist/esm/is-message.d.ts +1 -1
  86. package/dist/esm/is-message.js +3 -3
  87. package/dist/esm/reflect/guard.js +4 -4
  88. package/dist/esm/reflect/reflect-types.d.ts +13 -80
  89. package/dist/esm/reflect/reflect-types.js +0 -1
  90. package/dist/esm/reflect/reflect.d.ts +29 -18
  91. package/dist/esm/reflect/reflect.js +185 -80
  92. package/dist/esm/reflect/scalar.d.ts +1 -1
  93. package/dist/esm/reflect/unsafe.d.ts +0 -16
  94. package/dist/esm/reflect/unsafe.js +0 -16
  95. package/dist/esm/registry.d.ts +18 -2
  96. package/dist/esm/registry.js +60 -59
  97. package/dist/esm/to-binary.d.ts +1 -1
  98. package/dist/esm/to-binary.js +2 -2
  99. package/dist/esm/to-json.d.ts +14 -4
  100. package/dist/esm/to-json.js +24 -12
  101. package/dist/esm/types.d.ts +9 -0
  102. package/dist/esm/wire/binary-encoding.js +30 -9
  103. package/dist/esm/wkt/any.d.ts +7 -7
  104. package/dist/esm/wkt/any.js +6 -6
  105. package/dist/esm/wkt/gen/google/protobuf/any_pb.d.ts +9 -3
  106. package/dist/esm/wkt/gen/google/protobuf/any_pb.js +3 -3
  107. package/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +88 -9
  108. package/dist/esm/wkt/gen/google/protobuf/api_pb.js +9 -9
  109. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +107 -11
  110. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +11 -11
  111. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +1005 -92
  112. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +84 -84
  113. package/dist/esm/wkt/gen/google/protobuf/duration_pb.d.ts +7 -3
  114. package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +3 -3
  115. package/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +7 -3
  116. package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +3 -3
  117. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -3
  118. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +3 -3
  119. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +12 -3
  120. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +3 -3
  121. package/dist/esm/wkt/gen/google/protobuf/struct_pb.d.ts +25 -8
  122. package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +8 -8
  123. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -3
  124. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +3 -3
  125. package/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +165 -16
  126. package/dist/esm/wkt/gen/google/protobuf/type_pb.js +16 -16
  127. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +55 -19
  128. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +19 -19
  129. package/dist/esm/wkt/timestamp.js +2 -3
  130. package/package.json +2 -2
@@ -1,7 +1,7 @@
1
- import { type DescMessage } from "./descriptors.js";
1
+ import { type DescEnum, type DescMessage } from "./descriptors.js";
2
2
  import type { JsonValue } from "./json-value.js";
3
3
  import type { Registry } from "./registry.js";
4
- import type { MessageShape } from "./types.js";
4
+ import type { EnumJsonType, EnumShape, MessageShape } from "./types.js";
5
5
  /**
6
6
  * Options for parsing JSON data.
7
7
  */
@@ -21,7 +21,7 @@ export interface JsonReadOptions {
21
21
  /**
22
22
  * Parse a message from a JSON string.
23
23
  */
24
- export declare function fromJsonString<Desc extends DescMessage>(messageDesc: Desc, json: string, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
24
+ export declare function fromJsonString<Desc extends DescMessage>(schema: Desc, json: string, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
25
25
  /**
26
26
  * Parse a message from a JSON string, merging fields.
27
27
  *
@@ -31,11 +31,11 @@ export declare function fromJsonString<Desc extends DescMessage>(messageDesc: De
31
31
  * If a message field is already present, it will be merged with the
32
32
  * new data.
33
33
  */
34
- export declare function mergeFromJsonString<Desc extends DescMessage>(messageDesc: Desc, target: MessageShape<Desc>, json: string, options?: Partial<JsonReadOptions>): void;
34
+ export declare function mergeFromJsonString<Desc extends DescMessage>(schema: Desc, target: MessageShape<Desc>, json: string, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
35
35
  /**
36
36
  * Parse a message from a JSON value.
37
37
  */
38
- export declare function fromJson<Desc extends DescMessage>(messageDesc: Desc, json: JsonValue, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
38
+ export declare function fromJson<Desc extends DescMessage>(schema: Desc, json: JsonValue, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
39
39
  /**
40
40
  * Parse a message from a JSON value, merging fields.
41
41
  *
@@ -45,4 +45,12 @@ export declare function fromJson<Desc extends DescMessage>(messageDesc: Desc, js
45
45
  * If a message field is already present, it will be merged with the
46
46
  * new data.
47
47
  */
48
- export declare function mergeFromJson<Desc extends DescMessage>(messageDesc: Desc, target: MessageShape<Desc>, json: JsonValue, options?: Partial<JsonReadOptions>): void;
48
+ export declare function mergeFromJson<Desc extends DescMessage>(schema: Desc, target: MessageShape<Desc>, json: JsonValue, options?: Partial<JsonReadOptions>): MessageShape<Desc>;
49
+ /**
50
+ * Parses an enum value from JSON.
51
+ */
52
+ export declare function enumFromJson<Desc extends DescEnum>(descEnum: Desc, json: EnumJsonType<Desc>): EnumShape<Desc>;
53
+ /**
54
+ * Is the given value a JSON enum value?
55
+ */
56
+ export declare function isEnumJson<Desc extends DescEnum>(descEnum: Desc, value: unknown): value is EnumJsonType<Desc>;
@@ -13,7 +13,7 @@
13
13
  // See the License for the specific language governing permissions and
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.mergeFromJson = exports.fromJson = exports.mergeFromJsonString = exports.fromJsonString = void 0;
16
+ exports.isEnumJson = exports.enumFromJson = exports.mergeFromJson = exports.fromJson = exports.mergeFromJsonString = exports.fromJsonString = void 0;
17
17
  /* eslint-disable no-case-declarations,@typescript-eslint/restrict-template-expressions */
18
18
  const descriptors_js_1 = require("./descriptors.js");
19
19
  const proto_int64_js_1 = require("./proto-int64.js");
@@ -35,8 +35,8 @@ function makeReadOptions(options) {
35
35
  /**
36
36
  * Parse a message from a JSON string.
37
37
  */
38
- function fromJsonString(messageDesc, json, options) {
39
- return fromJson(messageDesc, parseJsonString(json, messageDesc.typeName), options);
38
+ function fromJsonString(schema, json, options) {
39
+ return fromJson(schema, parseJsonString(json, schema.typeName), options);
40
40
  }
41
41
  exports.fromJsonString = fromJsonString;
42
42
  /**
@@ -48,15 +48,15 @@ exports.fromJsonString = fromJsonString;
48
48
  * If a message field is already present, it will be merged with the
49
49
  * new data.
50
50
  */
51
- function mergeFromJsonString(messageDesc, target, json, options) {
52
- mergeFromJson(messageDesc, target, parseJsonString(json, messageDesc.typeName), options);
51
+ function mergeFromJsonString(schema, target, json, options) {
52
+ return mergeFromJson(schema, target, parseJsonString(json, schema.typeName), options);
53
53
  }
54
54
  exports.mergeFromJsonString = mergeFromJsonString;
55
55
  /**
56
56
  * Parse a message from a JSON value.
57
57
  */
58
- function fromJson(messageDesc, json, options) {
59
- const msg = (0, reflect_js_1.reflect)(messageDesc);
58
+ function fromJson(schema, json, options) {
59
+ const msg = (0, reflect_js_1.reflect)(schema);
60
60
  try {
61
61
  readMessage(msg, json, makeReadOptions(options));
62
62
  }
@@ -81,9 +81,9 @@ exports.fromJson = fromJson;
81
81
  * If a message field is already present, it will be merged with the
82
82
  * new data.
83
83
  */
84
- function mergeFromJson(messageDesc, target, json, options) {
84
+ function mergeFromJson(schema, target, json, options) {
85
85
  try {
86
- readMessage((0, reflect_js_1.reflect)(messageDesc, target), json, makeReadOptions(options));
86
+ readMessage((0, reflect_js_1.reflect)(schema, target), json, makeReadOptions(options));
87
87
  }
88
88
  catch (e) {
89
89
  if ((0, error_js_1.isFieldError)(e)) {
@@ -94,8 +94,27 @@ function mergeFromJson(messageDesc, target, json, options) {
94
94
  }
95
95
  throw e;
96
96
  }
97
+ return target;
97
98
  }
98
99
  exports.mergeFromJson = mergeFromJson;
100
+ /**
101
+ * Parses an enum value from JSON.
102
+ */
103
+ function enumFromJson(descEnum, json) {
104
+ const val = readEnum(descEnum, json, false, false);
105
+ if (val === tokenIgnoredUnknownEnum) {
106
+ throw new Error(`cannot decode ${String(descEnum)} from JSON: ${(0, reflect_check_js_1.formatVal)(json)}`);
107
+ }
108
+ return val;
109
+ }
110
+ exports.enumFromJson = enumFromJson;
111
+ /**
112
+ * Is the given value a JSON enum value?
113
+ */
114
+ function isEnumJson(descEnum, value) {
115
+ return undefined !== descEnum.values.find((v) => v.name === value);
116
+ }
117
+ exports.isEnumJson = isEnumJson;
99
118
  function readMessage(msg, json, opts) {
100
119
  var _a;
101
120
  if (tryWktFromJson(msg, json, opts)) {
@@ -153,17 +172,18 @@ function readField(msg, field, json, opts) {
153
172
  readMessageField(msg, field, json, opts);
154
173
  break;
155
174
  case "list":
156
- readListField(msg, field, json, opts);
175
+ readListField(msg.get(field), json, opts);
157
176
  break;
158
177
  case "map":
159
- readMapField(msg, field, json, opts);
178
+ readMapField(msg.get(field), json, opts);
160
179
  break;
161
180
  }
162
181
  }
163
- function readMapField(msg, field, json, opts) {
182
+ function readMapField(map, json, opts) {
164
183
  if (json === null) {
165
184
  return;
166
185
  }
186
+ const field = map.field();
167
187
  if (typeof json != "object" || Array.isArray(json)) {
168
188
  throw new error_js_1.FieldError(field, "expected object, got " + (0, reflect_check_js_1.formatVal)(json));
169
189
  }
@@ -171,45 +191,32 @@ function readMapField(msg, field, json, opts) {
171
191
  if (jsonMapValue === null) {
172
192
  throw new error_js_1.FieldError(field, "map value must not be null");
173
193
  }
174
- const key = mapKeyFromJson(field.mapKey, jsonMapKey);
194
+ let value;
175
195
  switch (field.mapKind) {
176
196
  case "message":
177
197
  const msgValue = (0, reflect_js_1.reflect)(field.message);
178
198
  readMessage(msgValue, jsonMapValue, opts);
179
- // TODO fix types
180
- // @ts-expect-error TODO
181
- const err = msg.setMapEntry(field, key, msgValue);
182
- if (err) {
183
- throw err;
184
- }
199
+ value = msgValue;
185
200
  break;
186
201
  case "enum":
187
- const enumValue = readEnum(field.enum, jsonMapValue, opts.ignoreUnknownFields, true);
188
- if (enumValue !== tokenIgnoredUnknownEnum) {
189
- // TODO fix types
190
- // @ts-expect-error TODO
191
- const err = msg.setMapEntry(field, key, enumValue);
192
- if (err) {
193
- throw err;
194
- }
202
+ value = readEnum(field.enum, jsonMapValue, opts.ignoreUnknownFields, true);
203
+ if (value === tokenIgnoredUnknownEnum) {
204
+ return;
195
205
  }
196
206
  break;
197
207
  case "scalar":
198
- const err2 = msg.setMapEntry(field,
199
- // TODO fix types
200
- // @ts-expect-error TODO
201
- key, scalarFromJson(field, jsonMapValue, true));
202
- if (err2) {
203
- throw err2;
204
- }
208
+ value = scalarFromJson(field, jsonMapValue, true);
205
209
  break;
206
210
  }
211
+ const key = mapKeyFromJson(field.mapKey, jsonMapKey);
212
+ map.set(key, value);
207
213
  }
208
214
  }
209
- function readListField(msg, field, json, opts) {
215
+ function readListField(list, json, opts) {
210
216
  if (json === null) {
211
217
  return;
212
218
  }
219
+ const field = list.field();
213
220
  if (!Array.isArray(json)) {
214
221
  throw new error_js_1.FieldError(field, "expected Array, got " + (0, reflect_check_js_1.formatVal)(json));
215
222
  }
@@ -221,19 +228,16 @@ function readListField(msg, field, json, opts) {
221
228
  case "message":
222
229
  const msgValue = (0, reflect_js_1.reflect)(field.message);
223
230
  readMessage(msgValue, jsonItem, opts);
224
- msg.addListItem(field, msgValue);
231
+ list.add(msgValue);
225
232
  break;
226
233
  case "enum":
227
234
  const enumValue = readEnum(field.enum, jsonItem, opts.ignoreUnknownFields, true);
228
235
  if (enumValue !== tokenIgnoredUnknownEnum) {
229
- msg.addListItem(field, enumValue);
236
+ list.add(enumValue);
230
237
  }
231
238
  break;
232
239
  case "scalar":
233
- const err = msg.addListItem(field, scalarFromJson(field, jsonItem, true));
234
- if (err) {
235
- throw err;
236
- }
240
+ list.add(scalarFromJson(field, jsonItem, true));
237
241
  break;
238
242
  }
239
243
  }
@@ -262,12 +266,7 @@ function readScalarField(msg, field, json) {
262
266
  msg.clear(field);
263
267
  }
264
268
  else {
265
- // TODO fix type error
266
- // @ts-expect-error TODO
267
- const err = msg.set(field, scalarValue);
268
- if (err) {
269
- throw err;
270
- }
269
+ msg.set(field, scalarValue);
271
270
  }
272
271
  }
273
272
  const tokenIgnoredUnknownEnum = Symbol();
@@ -467,10 +466,7 @@ function tryWktFromJson(msg, jsonValue, opts) {
467
466
  msg.clear(valueField);
468
467
  }
469
468
  else {
470
- const err = msg.set(valueField, scalarFromJson(valueField, jsonValue, true));
471
- if (err) {
472
- throw err;
473
- }
469
+ msg.set(valueField, scalarFromJson(valueField, jsonValue, true));
474
470
  }
475
471
  return true;
476
472
  }
@@ -581,7 +577,7 @@ function structFromJson(struct, json) {
581
577
  throw new Error(`cannot decode message ${struct.$typeName} from JSON ${(0, reflect_check_js_1.formatVal)(json)}`);
582
578
  }
583
579
  for (const [k, v] of Object.entries(json)) {
584
- const parsedV = (0, create_js_1.create)(index_js_1.ValueDesc);
580
+ const parsedV = (0, create_js_1.create)(index_js_1.ValueSchema);
585
581
  valueFromJson(parsedV, v);
586
582
  struct.fields[k] = parsedV;
587
583
  }
@@ -602,12 +598,12 @@ function valueFromJson(value, json) {
602
598
  value.kind = { case: "nullValue", value: index_js_1.NullValue.NULL_VALUE };
603
599
  }
604
600
  else if (Array.isArray(json)) {
605
- const listValue = (0, create_js_1.create)(index_js_1.ListValueDesc);
601
+ const listValue = (0, create_js_1.create)(index_js_1.ListValueSchema);
606
602
  listValueFromJson(listValue, json);
607
603
  value.kind = { case: "listValue", value: listValue };
608
604
  }
609
605
  else {
610
- const struct = (0, create_js_1.create)(index_js_1.StructDesc);
606
+ const struct = (0, create_js_1.create)(index_js_1.StructSchema);
611
607
  structFromJson(struct, json);
612
608
  value.kind = { case: "structValue", value: struct };
613
609
  }
@@ -622,7 +618,7 @@ function listValueFromJson(listValue, json) {
622
618
  throw new Error(`cannot decode message ${listValue.$typeName} from JSON ${(0, reflect_check_js_1.formatVal)(json)}`);
623
619
  }
624
620
  for (const e of json) {
625
- const value = (0, create_js_1.create)(index_js_1.ValueDesc);
621
+ const value = (0, create_js_1.create)(index_js_1.ValueSchema);
626
622
  valueFromJson(value, e);
627
623
  listValue.values.push(value);
628
624
  }
@@ -4,4 +4,4 @@ import type { DescMessage } from "./descriptors.js";
4
4
  * Determine whether the given `arg` is a message.
5
5
  * If `desc` is set, determine whether `arg` is this specific message.
6
6
  */
7
- export declare function isMessage<Desc extends DescMessage>(arg: unknown, desc?: Desc): arg is MessageShape<Desc>;
7
+ export declare function isMessage<Desc extends DescMessage>(arg: unknown, schema?: Desc): arg is MessageShape<Desc>;
@@ -18,7 +18,7 @@ exports.isMessage = void 0;
18
18
  * Determine whether the given `arg` is a message.
19
19
  * If `desc` is set, determine whether `arg` is this specific message.
20
20
  */
21
- function isMessage(arg, desc) {
21
+ function isMessage(arg, schema) {
22
22
  const isMessage = arg !== null &&
23
23
  typeof arg == "object" &&
24
24
  "$typeName" in arg &&
@@ -26,9 +26,9 @@ function isMessage(arg, desc) {
26
26
  if (!isMessage) {
27
27
  return false;
28
28
  }
29
- if (desc === undefined) {
29
+ if (schema === undefined) {
30
30
  return true;
31
31
  }
32
- return desc.typeName === arg.$typeName;
32
+ return schema.typeName === arg.$typeName;
33
33
  }
34
34
  exports.isMessage = isMessage;
@@ -15,7 +15,6 @@
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.isReflectMessage = exports.isReflectMap = exports.isReflectList = exports.isOneofADT = exports.isObject = void 0;
17
17
  const unsafe_js_1 = require("./unsafe.js");
18
- const is_message_js_1 = require("../is-message.js");
19
18
  function isObject(arg) {
20
19
  return arg !== null && typeof arg == "object" && !Array.isArray(arg);
21
20
  }
@@ -71,8 +70,9 @@ exports.isReflectMap = isReflectMap;
71
70
  function isReflectMessage(arg, messageDesc) {
72
71
  return (isObject(arg) &&
73
72
  unsafe_js_1.unsafeLocal in arg &&
74
- "message" in arg &&
75
- (0, is_message_js_1.isMessage)(arg.message) &&
76
- (messageDesc === undefined || arg.message.$typeName == messageDesc.typeName));
73
+ "desc" in arg &&
74
+ isObject(arg.desc) &&
75
+ arg.desc.kind === "message" &&
76
+ (messageDesc === undefined || arg.desc.typeName == messageDesc.typeName));
77
77
  }
78
78
  exports.isReflectMessage = isReflectMessage;
@@ -1,5 +1,4 @@
1
1
  import { type DescField, type DescMessage, type DescOneof } from "../descriptors.js";
2
- import { FieldError } from "./error.js";
3
2
  import { unsafeLocal } from "./unsafe.js";
4
3
  import type { Message, UnknownField } from "../types.js";
5
4
  import type { ScalarValue } from "./scalar.js";
@@ -87,7 +86,7 @@ export interface ReflectMessage {
87
86
  * Note that get() never returns `undefined`. To determine whether a field is
88
87
  * set, use isSet().
89
88
  */
90
- get<Field extends DescField>(field: Field): ReflectGetValue<Field>;
89
+ get<Field extends DescField>(field: Field): ReflectMessageGet<Field>;
91
90
  /**
92
91
  * Set a field value.
93
92
  *
@@ -105,22 +104,10 @@ export interface ReflectMessage {
105
104
  * - Map fields:
106
105
  * ReflectMap.
107
106
  *
108
- * Returns an error if the value is invalid for the field. `undefined` is not
107
+ * Throws an error if the value is invalid for the field. `undefined` is not
109
108
  * a valid value. To reset a field, use clear().
110
109
  */
111
- set<Field extends DescField>(field: Field, value: ReflectSetValue<Field>): FieldError | undefined;
112
- /**
113
- * Add an item to a list field.
114
- */
115
- addListItem<Field extends DescField & {
116
- fieldKind: "list";
117
- }>(field: Field, value: ReflectAddListItemValue<Field>): FieldError | undefined;
118
- /**
119
- * Set a map entry.
120
- */
121
- setMapEntry<Field extends DescField & {
122
- fieldKind: "map";
123
- }>(field: Field, key: MapEntryKey, value: ReflectSetMapEntryValue<Field>): FieldError | undefined;
110
+ set<Field extends DescField>(field: Field, value: unknown): void;
124
111
  /**
125
112
  * Returns the unknown fields of the message.
126
113
  */
@@ -159,16 +146,16 @@ export interface ReflectList<V = unknown> extends Iterable<V> {
159
146
  */
160
147
  get(index: number): V | undefined;
161
148
  /**
162
- * Adds an item - or several items - at the end of the list.
163
- * Returns an error if an item is invalid for this list.
149
+ * Adds an item at the end of the list.
150
+ * Throws an error if an item is invalid for this list.
164
151
  */
165
- add(...item: V[]): FieldError | undefined;
152
+ add(item: V): void;
166
153
  /**
167
154
  * Replaces the item at the specified index with the specified item.
168
- * Returns an error if the index is out of range (index < 0 || index >= size).
169
- * Returns an error if the item is invalid for this list.
155
+ * Throws an error if the index is out of range (index < 0 || index >= size).
156
+ * Throws an error if the item is invalid for this list.
170
157
  */
171
- set(index: number, item: V): FieldError | undefined;
158
+ set(index: number, item: V): void;
172
159
  /**
173
160
  * Removes all items from the list.
174
161
  */
@@ -190,7 +177,7 @@ export interface ReflectList<V = unknown> extends Iterable<V> {
190
177
  * ReflectMap converts keys to their closest possible type in TypeScript.
191
178
  * - Messages are wrapped in a ReflectMessage.
192
179
  */
193
- export interface ReflectMap<K extends MapEntryKey = MapEntryKey, V = unknown> extends ReadonlyMap<K, V> {
180
+ export interface ReflectMap<K = unknown, V = unknown> extends ReadonlyMap<K, V> {
194
181
  /**
195
182
  * Returns the map field.
196
183
  */
@@ -204,46 +191,19 @@ export interface ReflectMap<K extends MapEntryKey = MapEntryKey, V = unknown> ex
204
191
  delete(key: K): boolean;
205
192
  /**
206
193
  * Sets or replaces the item at the specified key with the specified value.
207
- * Returns an error if the key or value is invalid for this map.
194
+ * Throws an error if the key or value is invalid for this map.
208
195
  */
209
- set(key: K, value: V): FieldError | undefined;
196
+ set(key: K, value: V): this;
210
197
  /**
211
198
  * Removes all entries from the map.
212
199
  */
213
200
  clear(): void;
214
201
  [unsafeLocal]: Record<string, unknown>;
215
202
  }
216
- /**
217
- * A ReflectMap key.
218
- */
219
- export type MapEntryKey = string | number | bigint | boolean;
220
- type enumVal = number;
221
203
  /**
222
204
  * The return type of ReflectMessage.get()
223
205
  */
224
- export type ReflectGetValue<Field extends DescField = DescField> = (Field extends {
225
- fieldKind: "map";
226
- } ? (Field extends {
227
- mapKind: "message";
228
- } ? ReflectMap<MapEntryKey, ReflectMessage> : Field extends {
229
- mapKind: "enum";
230
- } ? ReflectMap<MapEntryKey, enumVal> : Field extends {
231
- mapKind: "scalar";
232
- scalar: infer T;
233
- } ? ReflectMap<MapEntryKey, ScalarValue<T>> : never) : Field extends {
234
- fieldKind: "list";
235
- } ? ReflectList : Field extends {
236
- fieldKind: "enum";
237
- } ? number : Field extends {
238
- fieldKind: "message";
239
- } ? ReflectMessage : Field extends {
240
- fieldKind: "scalar";
241
- scalar: infer T;
242
- } ? ScalarValue<T> : never);
243
- /**
244
- * The type of the "value" argument of ReflectMessage.set()
245
- */
246
- export type ReflectSetValue<Field extends DescField = DescField> = (Field extends {
206
+ export type ReflectMessageGet<Field extends DescField = DescField> = (Field extends {
247
207
  fieldKind: "map";
248
208
  } ? ReflectMap : Field extends {
249
209
  fieldKind: "list";
@@ -255,30 +215,3 @@ export type ReflectSetValue<Field extends DescField = DescField> = (Field extend
255
215
  fieldKind: "scalar";
256
216
  scalar: infer T;
257
217
  } ? ScalarValue<T> : never);
258
- /**
259
- * The type of the "value" argument of ReflectMessage.addListItem()
260
- */
261
- export type ReflectAddListItemValue<Field extends DescField & {
262
- fieldKind: "list";
263
- }> = (Field extends {
264
- listKind: "scalar";
265
- scalar: infer T;
266
- } ? ScalarValue<T> : Field extends {
267
- listKind: "enum";
268
- } ? enumVal : Field extends {
269
- listKind: "message";
270
- } ? ReflectMessage : never);
271
- /**
272
- * The type of the "value" argument of ReflectMessage.setMapEntry()
273
- */
274
- export type ReflectSetMapEntryValue<Field extends DescField & {
275
- fieldKind: "map";
276
- }> = (Field extends {
277
- mapKind: "enum";
278
- } ? enumVal : Field extends {
279
- mapKind: "message";
280
- } ? ReflectMessage : Field extends {
281
- mapKind: "scalar";
282
- scalar: infer T;
283
- } ? ScalarValue<T> : never);
284
- export {};
@@ -1,32 +1,43 @@
1
1
  import { type DescField, type DescMessage } from "../descriptors.js";
2
2
  import type { MessageShape } from "../types.js";
3
- import type { MapEntryKey, ReflectList, ReflectMap, ReflectMessage } from "./reflect-types.js";
3
+ import type { ReflectList, ReflectMap, ReflectMessage } from "./reflect-types.js";
4
4
  /**
5
5
  * Create a ReflectMessage.
6
6
  */
7
- export declare function reflect<Desc extends DescMessage>(messageDesc: Desc, message?: MessageShape<Desc>, opt?: {
8
- /**
9
- * By default, field values are validated when setting them. For example,
10
- * a value for an uint32 field must be a ECMAScript Number >= 0.
11
- *
12
- * Note that setting a message field validates the type of the message,
13
- * but does not check its fields.
14
- *
15
- * In some contexts, field values are trusted, and performance can be
16
- * improved by disabling validation by setting disableFieldValueCheck to
17
- * `false`.
18
- */
19
- disableFieldValueCheck?: boolean;
20
- }): ReflectMessage;
7
+ export declare function reflect<Desc extends DescMessage>(messageDesc: Desc, message?: MessageShape<Desc>,
8
+ /**
9
+ * By default, field values are validated when setting them. For example,
10
+ * a value for an uint32 field must be a ECMAScript Number >= 0.
11
+ *
12
+ * When field values are trusted, performance can be improved by disabling
13
+ * checks.
14
+ */
15
+ check?: boolean): ReflectMessage;
21
16
  /**
22
17
  * Create a ReflectList.
23
18
  */
24
19
  export declare function reflectList<V>(field: DescField & {
25
20
  fieldKind: "list";
26
- }, unsafeInput?: unknown[], check?: boolean): ReflectList<V>;
21
+ }, unsafeInput?: unknown[],
22
+ /**
23
+ * By default, field values are validated when setting them. For example,
24
+ * a value for an uint32 field must be a ECMAScript Number >= 0.
25
+ *
26
+ * When field values are trusted, performance can be improved by disabling
27
+ * checks.
28
+ */
29
+ check?: boolean): ReflectList<V>;
27
30
  /**
28
31
  * Create a ReflectMap.
29
32
  */
30
- export declare function reflectMap<K extends MapEntryKey, V>(field: DescField & {
33
+ export declare function reflectMap<K = unknown, V = unknown>(field: DescField & {
31
34
  fieldKind: "map";
32
- }, unsafeInput?: Record<string, unknown>, check?: boolean): ReflectMap<K, V>;
35
+ }, unsafeInput?: Record<string, unknown>,
36
+ /**
37
+ * By default, field values are validated when setting them. For example,
38
+ * a value for an uint32 field must be a ECMAScript Number >= 0.
39
+ *
40
+ * When field values are trusted, performance can be improved by disabling
41
+ * checks.
42
+ */
43
+ check?: boolean): ReflectMap<K, V>;