@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.
- package/dist/cjs/clone.d.ts +1 -1
- package/dist/cjs/clone.js +9 -17
- package/dist/cjs/codegenv1/embed.js +25 -25
- package/dist/cjs/codegenv1/enum.d.ts +2 -1
- package/dist/cjs/codegenv1/file.js +1 -1
- package/dist/cjs/codegenv1/message.d.ts +2 -1
- package/dist/cjs/codegenv1/scalar.d.ts +4 -0
- package/dist/cjs/codegenv1/scalar.js +30 -1
- package/dist/cjs/codegenv1/symbols.d.ts +10 -0
- package/dist/cjs/codegenv1/symbols.js +2 -0
- package/dist/cjs/codegenv1/types.d.ts +7 -5
- package/dist/cjs/codegenv1/types.js +2 -1
- package/dist/cjs/create.d.ts +1 -1
- package/dist/cjs/create.js +47 -20
- package/dist/cjs/equals.d.ts +1 -1
- package/dist/cjs/equals.js +8 -15
- package/dist/cjs/from-binary.d.ts +2 -2
- package/dist/cjs/from-binary.js +17 -14
- package/dist/cjs/from-json.d.ts +14 -6
- package/dist/cjs/from-json.js +51 -55
- package/dist/cjs/is-message.d.ts +1 -1
- package/dist/cjs/is-message.js +3 -3
- package/dist/cjs/reflect/guard.js +4 -4
- package/dist/cjs/reflect/reflect-types.d.ts +13 -80
- package/dist/cjs/reflect/reflect.d.ts +29 -18
- package/dist/cjs/reflect/reflect.js +183 -78
- package/dist/cjs/reflect/scalar.d.ts +1 -1
- package/dist/cjs/reflect/unsafe.d.ts +0 -16
- package/dist/cjs/reflect/unsafe.js +1 -19
- package/dist/cjs/registry.d.ts +18 -2
- package/dist/cjs/registry.js +62 -60
- package/dist/cjs/to-binary.d.ts +1 -1
- package/dist/cjs/to-binary.js +2 -2
- package/dist/cjs/to-json.d.ts +14 -4
- package/dist/cjs/to-json.js +26 -13
- package/dist/cjs/types.d.ts +9 -0
- package/dist/cjs/wire/binary-encoding.js +30 -9
- package/dist/cjs/wkt/any.d.ts +7 -7
- package/dist/cjs/wkt/any.js +5 -5
- package/dist/cjs/wkt/gen/google/protobuf/any_pb.d.ts +9 -3
- package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +4 -4
- package/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +88 -9
- package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +8 -8
- package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +107 -11
- package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +11 -11
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +1005 -92
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +86 -86
- package/dist/cjs/wkt/gen/google/protobuf/duration_pb.d.ts +7 -3
- package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +4 -4
- package/dist/cjs/wkt/gen/google/protobuf/empty_pb.d.ts +7 -3
- package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +4 -4
- package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -3
- package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +4 -4
- package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.d.ts +12 -3
- package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +4 -4
- package/dist/cjs/wkt/gen/google/protobuf/struct_pb.d.ts +25 -8
- package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +9 -9
- package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -3
- package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +4 -4
- package/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +165 -16
- package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +15 -15
- package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +55 -19
- package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +20 -20
- package/dist/cjs/wkt/timestamp.js +1 -2
- package/dist/esm/clone.d.ts +1 -1
- package/dist/esm/clone.js +9 -17
- package/dist/esm/codegenv1/embed.js +26 -26
- package/dist/esm/codegenv1/enum.d.ts +2 -1
- package/dist/esm/codegenv1/file.js +2 -2
- package/dist/esm/codegenv1/message.d.ts +2 -1
- package/dist/esm/codegenv1/scalar.d.ts +4 -0
- package/dist/esm/codegenv1/scalar.js +28 -0
- package/dist/esm/codegenv1/symbols.d.ts +10 -0
- package/dist/esm/codegenv1/symbols.js +2 -0
- package/dist/esm/codegenv1/types.d.ts +7 -5
- package/dist/esm/codegenv1/types.js +2 -1
- package/dist/esm/create.d.ts +1 -1
- package/dist/esm/create.js +47 -20
- package/dist/esm/equals.d.ts +1 -1
- package/dist/esm/equals.js +8 -15
- package/dist/esm/from-binary.d.ts +2 -2
- package/dist/esm/from-binary.js +17 -14
- package/dist/esm/from-json.d.ts +14 -6
- package/dist/esm/from-json.js +49 -55
- package/dist/esm/is-message.d.ts +1 -1
- package/dist/esm/is-message.js +3 -3
- package/dist/esm/reflect/guard.js +4 -4
- package/dist/esm/reflect/reflect-types.d.ts +13 -80
- package/dist/esm/reflect/reflect-types.js +0 -1
- package/dist/esm/reflect/reflect.d.ts +29 -18
- package/dist/esm/reflect/reflect.js +185 -80
- package/dist/esm/reflect/scalar.d.ts +1 -1
- package/dist/esm/reflect/unsafe.d.ts +0 -16
- package/dist/esm/reflect/unsafe.js +0 -16
- package/dist/esm/registry.d.ts +18 -2
- package/dist/esm/registry.js +60 -59
- package/dist/esm/to-binary.d.ts +1 -1
- package/dist/esm/to-binary.js +2 -2
- package/dist/esm/to-json.d.ts +14 -4
- package/dist/esm/to-json.js +24 -12
- package/dist/esm/types.d.ts +9 -0
- package/dist/esm/wire/binary-encoding.js +30 -9
- package/dist/esm/wkt/any.d.ts +7 -7
- package/dist/esm/wkt/any.js +6 -6
- package/dist/esm/wkt/gen/google/protobuf/any_pb.d.ts +9 -3
- package/dist/esm/wkt/gen/google/protobuf/any_pb.js +3 -3
- package/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +88 -9
- package/dist/esm/wkt/gen/google/protobuf/api_pb.js +9 -9
- package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +107 -11
- package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +11 -11
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +1005 -92
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +84 -84
- package/dist/esm/wkt/gen/google/protobuf/duration_pb.d.ts +7 -3
- package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +3 -3
- package/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +7 -3
- package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +3 -3
- package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -3
- package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +3 -3
- package/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +12 -3
- package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +3 -3
- package/dist/esm/wkt/gen/google/protobuf/struct_pb.d.ts +25 -8
- package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +8 -8
- package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -3
- package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +3 -3
- package/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +165 -16
- package/dist/esm/wkt/gen/google/protobuf/type_pb.js +16 -16
- package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +55 -19
- package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +19 -19
- package/dist/esm/wkt/timestamp.js +2 -3
- package/package.json +2 -2
package/dist/cjs/from-json.d.ts
CHANGED
|
@@ -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>(
|
|
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>(
|
|
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>(
|
|
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>(
|
|
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>;
|
package/dist/cjs/from-json.js
CHANGED
|
@@ -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(
|
|
39
|
-
return fromJson(
|
|
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(
|
|
52
|
-
mergeFromJson(
|
|
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(
|
|
59
|
-
const msg = (0, reflect_js_1.reflect)(
|
|
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(
|
|
84
|
+
function mergeFromJson(schema, target, json, options) {
|
|
85
85
|
try {
|
|
86
|
-
readMessage((0, reflect_js_1.reflect)(
|
|
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
|
|
175
|
+
readListField(msg.get(field), json, opts);
|
|
157
176
|
break;
|
|
158
177
|
case "map":
|
|
159
|
-
readMapField(msg
|
|
178
|
+
readMapField(msg.get(field), json, opts);
|
|
160
179
|
break;
|
|
161
180
|
}
|
|
162
181
|
}
|
|
163
|
-
function readMapField(
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
188
|
-
if (
|
|
189
|
-
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
236
|
+
list.add(enumValue);
|
|
230
237
|
}
|
|
231
238
|
break;
|
|
232
239
|
case "scalar":
|
|
233
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
}
|
package/dist/cjs/is-message.d.ts
CHANGED
|
@@ -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,
|
|
7
|
+
export declare function isMessage<Desc extends DescMessage>(arg: unknown, schema?: Desc): arg is MessageShape<Desc>;
|
package/dist/cjs/is-message.js
CHANGED
|
@@ -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,
|
|
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 (
|
|
29
|
+
if (schema === undefined) {
|
|
30
30
|
return true;
|
|
31
31
|
}
|
|
32
|
-
return
|
|
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
|
-
"
|
|
75
|
-
(
|
|
76
|
-
|
|
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):
|
|
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
|
-
*
|
|
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:
|
|
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
|
|
163
|
-
*
|
|
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(
|
|
152
|
+
add(item: V): void;
|
|
166
153
|
/**
|
|
167
154
|
* Replaces the item at the specified index with the specified item.
|
|
168
|
-
*
|
|
169
|
-
*
|
|
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):
|
|
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
|
|
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
|
-
*
|
|
194
|
+
* Throws an error if the key or value is invalid for this map.
|
|
208
195
|
*/
|
|
209
|
-
set(key: K, value: V):
|
|
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
|
|
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 {
|
|
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>,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
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[],
|
|
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
|
|
33
|
+
export declare function reflectMap<K = unknown, V = unknown>(field: DescField & {
|
|
31
34
|
fieldKind: "map";
|
|
32
|
-
}, unsafeInput?: Record<string, unknown>,
|
|
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>;
|