@bufbuild/protobuf 2.0.0-alpha.2 → 2.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/clone.d.ts +1 -1
- package/dist/cjs/clone.js +2 -2
- package/dist/cjs/codegenv1/boot.d.ts +1 -1
- package/dist/cjs/codegenv1/boot.js +3 -5
- package/dist/cjs/codegenv1/embed.d.ts +1 -1
- package/dist/cjs/codegenv1/embed.js +39 -34
- package/dist/cjs/codegenv1/enum.d.ts +1 -1
- package/dist/cjs/codegenv1/extension.d.ts +1 -1
- package/dist/cjs/codegenv1/file.d.ts +1 -1
- package/dist/cjs/codegenv1/file.js +5 -7
- package/dist/cjs/codegenv1/index.d.ts +1 -0
- package/dist/cjs/codegenv1/index.js +1 -0
- package/dist/cjs/codegenv1/message.d.ts +1 -1
- package/dist/cjs/codegenv1/scalar.d.ts +5 -0
- package/dist/cjs/codegenv1/scalar.js +39 -0
- package/dist/cjs/codegenv1/service.d.ts +3 -3
- package/dist/cjs/codegenv1/types.d.ts +7 -9
- package/dist/cjs/create.d.ts +1 -1
- package/dist/cjs/create.js +6 -5
- package/dist/cjs/{desc-types.d.ts → descriptors.d.ts} +39 -7
- package/dist/cjs/descriptors.js +53 -0
- package/dist/cjs/equals.d.ts +1 -1
- package/dist/cjs/extensions.d.ts +1 -1
- package/dist/cjs/extensions.js +4 -3
- package/dist/cjs/fields.d.ts +1 -1
- package/dist/cjs/from-binary.d.ts +2 -2
- package/dist/cjs/from-binary.js +22 -22
- package/dist/cjs/from-json.d.ts +4 -4
- package/dist/cjs/from-json.js +200 -181
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/is-message.d.ts +1 -1
- package/dist/cjs/proto-int64.d.ts +4 -1
- package/dist/cjs/proto-int64.js +16 -6
- package/dist/cjs/reflect/error.d.ts +1 -1
- package/dist/cjs/reflect/guard.d.ts +1 -1
- package/dist/cjs/reflect/index.d.ts +0 -1
- package/dist/cjs/reflect/index.js +0 -1
- package/dist/cjs/reflect/names.d.ts +1 -1
- package/dist/cjs/reflect/names.js +1 -1
- package/dist/cjs/reflect/nested-types.d.ts +1 -1
- package/dist/cjs/reflect/reflect-check.d.ts +10 -1
- package/dist/cjs/reflect/reflect-check.js +126 -9
- package/dist/cjs/reflect/reflect-types.d.ts +4 -4
- package/dist/cjs/reflect/reflect.d.ts +1 -1
- package/dist/cjs/reflect/reflect.js +28 -27
- package/dist/cjs/reflect/scalar.d.ts +3 -55
- package/dist/cjs/reflect/scalar.js +26 -220
- package/dist/cjs/reflect/unsafe.d.ts +1 -1
- package/dist/cjs/reflect/unsafe.js +1 -1
- package/dist/cjs/{reflect/registry.d.ts → registry.d.ts} +2 -2
- package/dist/cjs/{reflect/registry.js → registry.js} +54 -36
- package/dist/cjs/to-binary.d.ts +1 -1
- package/dist/cjs/to-binary.js +27 -27
- package/dist/cjs/to-json.d.ts +7 -6
- package/dist/cjs/to-json.js +57 -44
- package/dist/cjs/types.d.ts +1 -1
- package/dist/cjs/wire/base64-encoding.js +2 -2
- package/dist/cjs/wire/binary-encoding.d.ts +20 -0
- package/dist/cjs/wire/binary-encoding.js +54 -8
- package/dist/cjs/wire/size-delimited.d.ts +1 -1
- package/dist/cjs/wire/text-format.d.ts +1 -2
- package/dist/cjs/wire/text-format.js +21 -19
- package/dist/cjs/wkt/any.d.ts +3 -3
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +6 -0
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
- package/dist/cjs/wkt/wrappers.d.ts +1 -1
- package/dist/esm/clone.d.ts +1 -1
- package/dist/esm/clone.js +1 -1
- package/dist/esm/codegenv1/boot.d.ts +1 -1
- package/dist/esm/codegenv1/boot.js +3 -5
- package/dist/esm/codegenv1/embed.d.ts +1 -1
- package/dist/esm/codegenv1/embed.js +9 -4
- package/dist/esm/codegenv1/enum.d.ts +1 -1
- package/dist/esm/codegenv1/extension.d.ts +1 -1
- package/dist/esm/codegenv1/file.d.ts +1 -1
- package/dist/esm/codegenv1/file.js +4 -6
- package/dist/esm/codegenv1/index.d.ts +1 -0
- package/dist/esm/codegenv1/index.js +1 -0
- package/dist/esm/codegenv1/message.d.ts +1 -1
- package/dist/esm/codegenv1/scalar.d.ts +5 -0
- package/dist/esm/codegenv1/scalar.js +35 -0
- package/dist/esm/codegenv1/service.d.ts +3 -3
- package/dist/esm/codegenv1/types.d.ts +7 -9
- package/dist/esm/create.d.ts +1 -1
- package/dist/esm/create.js +4 -3
- package/dist/esm/{desc-types.d.ts → descriptors.d.ts} +39 -7
- package/dist/esm/descriptors.js +50 -0
- package/dist/esm/equals.d.ts +1 -1
- package/dist/esm/extensions.d.ts +1 -1
- package/dist/esm/extensions.js +4 -3
- package/dist/esm/fields.d.ts +1 -1
- package/dist/esm/from-binary.d.ts +2 -2
- package/dist/esm/from-binary.js +4 -4
- package/dist/esm/from-json.d.ts +4 -4
- package/dist/esm/from-json.js +193 -174
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/is-message.d.ts +1 -1
- package/dist/esm/proto-int64.d.ts +4 -1
- package/dist/esm/proto-int64.js +16 -6
- package/dist/esm/reflect/error.d.ts +1 -1
- package/dist/esm/reflect/guard.d.ts +1 -1
- package/dist/esm/reflect/index.d.ts +0 -1
- package/dist/esm/reflect/index.js +0 -1
- package/dist/esm/reflect/names.d.ts +1 -1
- package/dist/esm/reflect/names.js +1 -1
- package/dist/esm/reflect/nested-types.d.ts +1 -1
- package/dist/esm/reflect/reflect-check.d.ts +10 -1
- package/dist/esm/reflect/reflect-check.js +119 -2
- package/dist/esm/reflect/reflect-types.d.ts +4 -4
- package/dist/esm/reflect/reflect-types.js +1 -0
- package/dist/esm/reflect/reflect.d.ts +1 -1
- package/dist/esm/reflect/reflect.js +10 -9
- package/dist/esm/reflect/scalar.d.ts +3 -55
- package/dist/esm/reflect/scalar.js +14 -205
- package/dist/esm/reflect/unsafe.d.ts +1 -1
- package/dist/esm/reflect/unsafe.js +1 -1
- package/dist/esm/{reflect/registry.d.ts → registry.d.ts} +2 -2
- package/dist/esm/{reflect/registry.js → registry.js} +44 -26
- package/dist/esm/to-binary.d.ts +1 -1
- package/dist/esm/to-binary.js +1 -1
- package/dist/esm/to-json.d.ts +7 -6
- package/dist/esm/to-json.js +42 -29
- package/dist/esm/types.d.ts +1 -1
- package/dist/esm/wire/base64-encoding.js +2 -2
- package/dist/esm/wire/binary-encoding.d.ts +20 -0
- package/dist/esm/wire/binary-encoding.js +47 -1
- package/dist/esm/wire/size-delimited.d.ts +1 -1
- package/dist/esm/wire/text-format.d.ts +1 -2
- package/dist/esm/wire/text-format.js +5 -3
- package/dist/esm/wkt/any.d.ts +3 -3
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +6 -0
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +1 -1
- package/dist/esm/wkt/wrappers.d.ts +1 -1
- package/package.json +1 -1
- package/dist/cjs/desc-types.js +0 -15
- package/dist/cjs/reflect/assert.d.ts +0 -16
- package/dist/cjs/reflect/assert.js +0 -59
- package/dist/esm/desc-types.js +0 -14
- package/dist/esm/reflect/assert.d.ts +0 -16
- package/dist/esm/reflect/assert.js +0 -52
package/dist/cjs/proto-int64.js
CHANGED
|
@@ -14,8 +14,11 @@
|
|
|
14
14
|
// limitations under the License.
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.protoInt64 = void 0;
|
|
17
|
-
const assert_js_1 = require("./reflect/assert.js");
|
|
18
17
|
const varint_js_1 = require("./wire/varint.js");
|
|
18
|
+
/**
|
|
19
|
+
* Int64Support for the current environment.
|
|
20
|
+
*/
|
|
21
|
+
exports.protoInt64 = makeInt64Support();
|
|
19
22
|
function makeInt64Support() {
|
|
20
23
|
const dv = new DataView(new ArrayBuffer(8));
|
|
21
24
|
// note that Safari 14 implements BigInt, but not the DataView methods
|
|
@@ -35,14 +38,14 @@ function makeInt64Support() {
|
|
|
35
38
|
parse(value) {
|
|
36
39
|
const bi = typeof value == "bigint" ? value : BigInt(value);
|
|
37
40
|
if (bi > MAX || bi < MIN) {
|
|
38
|
-
throw new Error(`int64
|
|
41
|
+
throw new Error(`invalid int64: ${value}`);
|
|
39
42
|
}
|
|
40
43
|
return bi;
|
|
41
44
|
},
|
|
42
45
|
uParse(value) {
|
|
43
46
|
const bi = typeof value == "bigint" ? value : BigInt(value);
|
|
44
47
|
if (bi > UMAX || bi < UMIN) {
|
|
45
|
-
throw new Error(`uint64
|
|
48
|
+
throw new Error(`invalid uint64: ${value}`);
|
|
46
49
|
}
|
|
47
50
|
return bi;
|
|
48
51
|
},
|
|
@@ -72,8 +75,6 @@ function makeInt64Support() {
|
|
|
72
75
|
},
|
|
73
76
|
};
|
|
74
77
|
}
|
|
75
|
-
const assertInt64String = (value) => (0, assert_js_1.assert)(/^-?[0-9]+$/.test(value), `int64 invalid: ${value}`);
|
|
76
|
-
const assertUInt64String = (value) => (0, assert_js_1.assert)(/^[0-9]+$/.test(value), `uint64 invalid: ${value}`);
|
|
77
78
|
return {
|
|
78
79
|
zero: "0",
|
|
79
80
|
supported: false,
|
|
@@ -113,4 +114,13 @@ function makeInt64Support() {
|
|
|
113
114
|
},
|
|
114
115
|
};
|
|
115
116
|
}
|
|
116
|
-
|
|
117
|
+
function assertInt64String(value) {
|
|
118
|
+
if (!/^-?[0-9]+$/.test(value)) {
|
|
119
|
+
throw new Error("invalid int64: " + value);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function assertUInt64String(value) {
|
|
123
|
+
if (!/^[0-9]+$/.test(value)) {
|
|
124
|
+
throw new Error("invalid uint64: " + value);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Message } from "../types.js";
|
|
2
2
|
import type { ScalarValue } from "./scalar.js";
|
|
3
3
|
import type { ReflectList, ReflectMap, ReflectMessage } from "./reflect-types.js";
|
|
4
|
-
import type { DescField, DescMessage } from "../
|
|
4
|
+
import type { DescField, DescMessage } from "../descriptors.js";
|
|
5
5
|
export declare function isObject(arg: unknown): arg is Record<string, unknown>;
|
|
6
6
|
export declare function isOneofADT(arg: unknown): arg is OneofADT;
|
|
7
7
|
export type OneofADT = {
|
|
@@ -3,6 +3,5 @@ export * from "./names.js";
|
|
|
3
3
|
export * from "./nested-types.js";
|
|
4
4
|
export * from "./reflect.js";
|
|
5
5
|
export * from "./reflect-types.js";
|
|
6
|
-
export * from "./registry.js";
|
|
7
6
|
export * from "./scalar.js";
|
|
8
7
|
export { isReflectList, isReflectMap, isReflectMessage } from "./guard.js";
|
|
@@ -33,7 +33,6 @@ __exportStar(require("./names.js"), exports);
|
|
|
33
33
|
__exportStar(require("./nested-types.js"), exports);
|
|
34
34
|
__exportStar(require("./reflect.js"), exports);
|
|
35
35
|
__exportStar(require("./reflect-types.js"), exports);
|
|
36
|
-
__exportStar(require("./registry.js"), exports);
|
|
37
36
|
__exportStar(require("./scalar.js"), exports);
|
|
38
37
|
var guard_js_1 = require("./guard.js");
|
|
39
38
|
Object.defineProperty(exports, "isReflectList", { enumerable: true, get: function () { return guard_js_1.isReflectList; } });
|
|
@@ -6,6 +6,6 @@ export declare function protoCamelCase(snakeCase: string): string;
|
|
|
6
6
|
/**
|
|
7
7
|
* Escapes names that are reserved for ECMAScript built-in object properties.
|
|
8
8
|
*
|
|
9
|
-
* Also see safeIdentifier() from @bufbuild/protoplugin
|
|
9
|
+
* Also see safeIdentifier() from @bufbuild/protoplugin.
|
|
10
10
|
*/
|
|
11
11
|
export declare function safeObjectProperty(name: string): string;
|
|
@@ -66,7 +66,7 @@ const reservedObjectProperties = new Set([
|
|
|
66
66
|
/**
|
|
67
67
|
* Escapes names that are reserved for ECMAScript built-in object properties.
|
|
68
68
|
*
|
|
69
|
-
* Also see safeIdentifier() from @bufbuild/protoplugin
|
|
69
|
+
* Also see safeIdentifier() from @bufbuild/protoplugin.
|
|
70
70
|
*/
|
|
71
71
|
function safeObjectProperty(name) {
|
|
72
72
|
return reservedObjectProperties.has(name) ? name + "$" : name;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AnyDesc, DescEnum, DescExtension, DescFile, DescMessage, DescService } from "../
|
|
1
|
+
import type { AnyDesc, DescEnum, DescExtension, DescFile, DescMessage, DescService } from "../descriptors.js";
|
|
2
2
|
/**
|
|
3
3
|
* Iterate over all types - enumerations, extensions, services, messages -
|
|
4
4
|
* and enumerations, extensions and messages nested in messages.
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DescField } from "../descriptors.js";
|
|
2
2
|
import { FieldError } from "./error.js";
|
|
3
|
+
/**
|
|
4
|
+
* Check whether the given field value is valid for the reflect API.
|
|
5
|
+
*/
|
|
3
6
|
export declare function checkField(field: DescField, value: unknown): FieldError | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Check whether the given list item is valid for the reflect API.
|
|
9
|
+
*/
|
|
4
10
|
export declare function checkListItem(field: DescField & {
|
|
5
11
|
fieldKind: "list";
|
|
6
12
|
}, index: number, value: unknown): FieldError | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Check whether the given map key and value are valid for the reflect API.
|
|
15
|
+
*/
|
|
7
16
|
export declare function checkMapEntry(field: DescField & {
|
|
8
17
|
fieldKind: "map";
|
|
9
18
|
}, key: unknown, value: unknown): FieldError | undefined;
|
|
@@ -14,11 +14,16 @@
|
|
|
14
14
|
// limitations under the License.
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.formatVal = exports.checkMapEntry = exports.checkListItem = exports.checkField = void 0;
|
|
17
|
-
const
|
|
18
|
-
const scalar_js_2 = require("./scalar.js");
|
|
17
|
+
const descriptors_js_1 = require("../descriptors.js");
|
|
19
18
|
const is_message_js_1 = require("../is-message.js");
|
|
20
19
|
const error_js_1 = require("./error.js");
|
|
21
20
|
const guard_js_1 = require("./guard.js");
|
|
21
|
+
const binary_encoding_js_1 = require("../wire/binary-encoding.js");
|
|
22
|
+
const text_encoding_js_1 = require("../wire/text-encoding.js");
|
|
23
|
+
const proto_int64_js_1 = require("../proto-int64.js");
|
|
24
|
+
/**
|
|
25
|
+
* Check whether the given field value is valid for the reflect API.
|
|
26
|
+
*/
|
|
22
27
|
function checkField(field, value) {
|
|
23
28
|
const check = field.fieldKind == "list"
|
|
24
29
|
? (0, guard_js_1.isReflectList)(value, field)
|
|
@@ -43,6 +48,9 @@ function checkField(field, value) {
|
|
|
43
48
|
return new error_js_1.FieldError(field, reason);
|
|
44
49
|
}
|
|
45
50
|
exports.checkField = checkField;
|
|
51
|
+
/**
|
|
52
|
+
* Check whether the given list item is valid for the reflect API.
|
|
53
|
+
*/
|
|
46
54
|
function checkListItem(field, index, value) {
|
|
47
55
|
const check = checkSingular(field, value);
|
|
48
56
|
if (check !== true) {
|
|
@@ -51,8 +59,11 @@ function checkListItem(field, index, value) {
|
|
|
51
59
|
return undefined;
|
|
52
60
|
}
|
|
53
61
|
exports.checkListItem = checkListItem;
|
|
62
|
+
/**
|
|
63
|
+
* Check whether the given map key and value are valid for the reflect API.
|
|
64
|
+
*/
|
|
54
65
|
function checkMapEntry(field, key, value) {
|
|
55
|
-
const checkKey =
|
|
66
|
+
const checkKey = checkScalarValue(key, field.mapKey);
|
|
56
67
|
if (checkKey !== true) {
|
|
57
68
|
return new error_js_1.FieldError(field, `invalid map key: ${reasonSingular({ scalar: field.mapKey }, key, checkKey)}`);
|
|
58
69
|
}
|
|
@@ -65,7 +76,7 @@ function checkMapEntry(field, key, value) {
|
|
|
65
76
|
exports.checkMapEntry = checkMapEntry;
|
|
66
77
|
function checkSingular(field, value) {
|
|
67
78
|
if (field.scalar !== undefined) {
|
|
68
|
-
return
|
|
79
|
+
return checkScalarValue(value, field.scalar);
|
|
69
80
|
}
|
|
70
81
|
if (field.enum !== undefined) {
|
|
71
82
|
if (field.enum.open) {
|
|
@@ -75,11 +86,89 @@ function checkSingular(field, value) {
|
|
|
75
86
|
}
|
|
76
87
|
return (0, guard_js_1.isReflectMessage)(value, field.message);
|
|
77
88
|
}
|
|
89
|
+
function checkScalarValue(value, scalar) {
|
|
90
|
+
switch (scalar) {
|
|
91
|
+
case descriptors_js_1.ScalarType.DOUBLE:
|
|
92
|
+
return typeof value == "number";
|
|
93
|
+
case descriptors_js_1.ScalarType.FLOAT:
|
|
94
|
+
if (typeof value != "number") {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
if (Number.isNaN(value) || !Number.isFinite(value)) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
if (value > binary_encoding_js_1.FLOAT32_MAX || value < binary_encoding_js_1.FLOAT32_MIN) {
|
|
101
|
+
return `${value.toFixed()} out of range`;
|
|
102
|
+
}
|
|
103
|
+
return true;
|
|
104
|
+
case descriptors_js_1.ScalarType.INT32:
|
|
105
|
+
case descriptors_js_1.ScalarType.SFIXED32:
|
|
106
|
+
case descriptors_js_1.ScalarType.SINT32:
|
|
107
|
+
// signed
|
|
108
|
+
if (typeof value !== "number" || !Number.isInteger(value)) {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
if (value > binary_encoding_js_1.INT32_MAX || value < binary_encoding_js_1.INT32_MIN) {
|
|
112
|
+
return `${value.toFixed()} out of range`;
|
|
113
|
+
}
|
|
114
|
+
return true;
|
|
115
|
+
case descriptors_js_1.ScalarType.FIXED32:
|
|
116
|
+
case descriptors_js_1.ScalarType.UINT32:
|
|
117
|
+
// unsigned
|
|
118
|
+
if (typeof value !== "number" || !Number.isInteger(value)) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
if (value > binary_encoding_js_1.UINT32_MAX || value < 0) {
|
|
122
|
+
return `${value.toFixed()} out of range`;
|
|
123
|
+
}
|
|
124
|
+
return true;
|
|
125
|
+
case descriptors_js_1.ScalarType.BOOL:
|
|
126
|
+
return typeof value == "boolean";
|
|
127
|
+
case descriptors_js_1.ScalarType.STRING:
|
|
128
|
+
if (typeof value != "string") {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
return (0, text_encoding_js_1.getTextEncoding)().checkUtf8(value) || "invalid UTF8";
|
|
132
|
+
case descriptors_js_1.ScalarType.BYTES:
|
|
133
|
+
return value instanceof Uint8Array;
|
|
134
|
+
case descriptors_js_1.ScalarType.INT64:
|
|
135
|
+
case descriptors_js_1.ScalarType.SFIXED64:
|
|
136
|
+
case descriptors_js_1.ScalarType.SINT64:
|
|
137
|
+
// signed
|
|
138
|
+
if (typeof value != "string" &&
|
|
139
|
+
typeof value !== "bigint" &&
|
|
140
|
+
typeof value !== "number") {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
proto_int64_js_1.protoInt64.parse(value);
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
return `${value} out of range`;
|
|
148
|
+
}
|
|
149
|
+
return true;
|
|
150
|
+
case descriptors_js_1.ScalarType.FIXED64:
|
|
151
|
+
case descriptors_js_1.ScalarType.UINT64:
|
|
152
|
+
// unsigned
|
|
153
|
+
if (typeof value != "string" &&
|
|
154
|
+
typeof value !== "bigint" &&
|
|
155
|
+
typeof value !== "number") {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
try {
|
|
159
|
+
proto_int64_js_1.protoInt64.uParse(value);
|
|
160
|
+
}
|
|
161
|
+
catch (e) {
|
|
162
|
+
return `${value} out of range`;
|
|
163
|
+
}
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
78
167
|
function reasonSingular(field, val, details) {
|
|
79
168
|
details =
|
|
80
169
|
typeof details == "string" ? `: ${details}` : `, got ${formatVal(val)}`;
|
|
81
170
|
if (field.scalar !== undefined) {
|
|
82
|
-
return `expected ${
|
|
171
|
+
return `expected ${scalarTypeDescription(field.scalar)}` + details;
|
|
83
172
|
}
|
|
84
173
|
else if (field.enum !== undefined) {
|
|
85
174
|
return `expected ${field.enum.toString()}` + details;
|
|
@@ -135,16 +224,44 @@ function formatReflectList(field) {
|
|
|
135
224
|
case "enum":
|
|
136
225
|
return `ReflectList (${field.enum.toString()})`;
|
|
137
226
|
case "scalar":
|
|
138
|
-
return `ReflectList (${
|
|
227
|
+
return `ReflectList (${descriptors_js_1.ScalarType[field.scalar]})`;
|
|
139
228
|
}
|
|
140
229
|
}
|
|
141
230
|
function formatReflectMap(field) {
|
|
142
231
|
switch (field.mapKind) {
|
|
143
232
|
case "message":
|
|
144
|
-
return `ReflectMap (${
|
|
233
|
+
return `ReflectMap (${descriptors_js_1.ScalarType[field.mapKey]}, ${field.message.toString()})`;
|
|
145
234
|
case "enum":
|
|
146
|
-
return `ReflectMap (${
|
|
235
|
+
return `ReflectMap (${descriptors_js_1.ScalarType[field.mapKey]}, ${field.enum.toString()})`;
|
|
147
236
|
case "scalar":
|
|
148
|
-
return `ReflectMap (${
|
|
237
|
+
return `ReflectMap (${descriptors_js_1.ScalarType[field.mapKey]}, ${descriptors_js_1.ScalarType[field.scalar]})`;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
function scalarTypeDescription(scalar) {
|
|
241
|
+
switch (scalar) {
|
|
242
|
+
case descriptors_js_1.ScalarType.STRING:
|
|
243
|
+
return "string";
|
|
244
|
+
case descriptors_js_1.ScalarType.BOOL:
|
|
245
|
+
return "boolean";
|
|
246
|
+
case descriptors_js_1.ScalarType.INT64:
|
|
247
|
+
case descriptors_js_1.ScalarType.SINT64:
|
|
248
|
+
case descriptors_js_1.ScalarType.SFIXED64:
|
|
249
|
+
return "bigint (int64)";
|
|
250
|
+
case descriptors_js_1.ScalarType.UINT64:
|
|
251
|
+
case descriptors_js_1.ScalarType.FIXED64:
|
|
252
|
+
return "bigint (uint64)";
|
|
253
|
+
case descriptors_js_1.ScalarType.BYTES:
|
|
254
|
+
return "Uint8Array";
|
|
255
|
+
case descriptors_js_1.ScalarType.DOUBLE:
|
|
256
|
+
return "number (float64)";
|
|
257
|
+
case descriptors_js_1.ScalarType.FLOAT:
|
|
258
|
+
return "number (float32)";
|
|
259
|
+
case descriptors_js_1.ScalarType.FIXED32:
|
|
260
|
+
case descriptors_js_1.ScalarType.UINT32:
|
|
261
|
+
return "number (uint32)";
|
|
262
|
+
case descriptors_js_1.ScalarType.INT32:
|
|
263
|
+
case descriptors_js_1.ScalarType.SFIXED32:
|
|
264
|
+
case descriptors_js_1.ScalarType.SINT32:
|
|
265
|
+
return "number (int32)";
|
|
149
266
|
}
|
|
150
267
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DescField, type DescMessage, type DescOneof } from "../descriptors.js";
|
|
2
2
|
import { FieldError } from "./error.js";
|
|
3
3
|
import { unsafeLocal } from "./unsafe.js";
|
|
4
4
|
import type { Message, UnknownField } from "../types.js";
|
|
5
|
-
import type {
|
|
5
|
+
import type { ScalarValue } from "./scalar.js";
|
|
6
6
|
/**
|
|
7
7
|
* ReflectMessage provides dynamic access and manipulation of a message.
|
|
8
8
|
*/
|
|
@@ -230,7 +230,7 @@ export type ReflectGetValue<Field extends DescField = DescField> = (Field extend
|
|
|
230
230
|
} ? ReflectMap<MapEntryKey, enumVal> : Field extends {
|
|
231
231
|
mapKind: "scalar";
|
|
232
232
|
scalar: infer T;
|
|
233
|
-
} ? ReflectMap<MapEntryKey, ScalarValue<T
|
|
233
|
+
} ? ReflectMap<MapEntryKey, ScalarValue<T>> : never) : Field extends {
|
|
234
234
|
fieldKind: "list";
|
|
235
235
|
} ? ReflectList : Field extends {
|
|
236
236
|
fieldKind: "enum";
|
|
@@ -280,5 +280,5 @@ export type ReflectSetMapEntryValue<Field extends DescField & {
|
|
|
280
280
|
} ? ReflectMessage : Field extends {
|
|
281
281
|
mapKind: "scalar";
|
|
282
282
|
scalar: infer T;
|
|
283
|
-
} ? ScalarValue<T
|
|
283
|
+
} ? ScalarValue<T> : never);
|
|
284
284
|
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type DescField, type DescMessage } from "../descriptors.js";
|
|
2
2
|
import type { MessageShape } from "../types.js";
|
|
3
3
|
import type { MapEntryKey, ReflectList, ReflectMap, ReflectMessage } from "./reflect-types.js";
|
|
4
4
|
/**
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
// limitations under the License.
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.reflectMap = exports.reflectList = exports.reflect = void 0;
|
|
17
|
+
const descriptors_js_1 = require("../descriptors.js");
|
|
17
18
|
const reflect_check_js_1 = require("./reflect-check.js");
|
|
18
19
|
const error_js_1 = require("./error.js");
|
|
19
20
|
const unsafe_js_1 = require("./unsafe.js");
|
|
@@ -88,7 +89,7 @@ class ReflectMessageImpl {
|
|
|
88
89
|
return new ReflectMessageImpl(field.message, value, this.check);
|
|
89
90
|
case "scalar":
|
|
90
91
|
return (value === undefined
|
|
91
|
-
? (0, scalar_js_1.scalarZeroValue)(field.scalar,
|
|
92
|
+
? (0, scalar_js_1.scalarZeroValue)(field.scalar, false)
|
|
92
93
|
: longToReflect(field, value));
|
|
93
94
|
case "enum":
|
|
94
95
|
return (value !== null && value !== void 0 ? value : field.enum.values[0].number);
|
|
@@ -102,7 +103,7 @@ class ReflectMessageImpl {
|
|
|
102
103
|
return err;
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
|
-
let local
|
|
106
|
+
let local;
|
|
106
107
|
if ((0, guard_js_1.isReflectMap)(value) || (0, guard_js_1.isReflectList)(value)) {
|
|
107
108
|
local = value[unsafe_js_1.unsafeLocal];
|
|
108
109
|
}
|
|
@@ -342,20 +343,20 @@ function mapKeyToLocal(key) {
|
|
|
342
343
|
*/
|
|
343
344
|
function mapKeyToReflect(key, type) {
|
|
344
345
|
switch (type) {
|
|
345
|
-
case
|
|
346
|
+
case descriptors_js_1.ScalarType.STRING:
|
|
346
347
|
return key;
|
|
347
|
-
case
|
|
348
|
-
case
|
|
349
|
-
case
|
|
350
|
-
case
|
|
351
|
-
case
|
|
348
|
+
case descriptors_js_1.ScalarType.INT32:
|
|
349
|
+
case descriptors_js_1.ScalarType.FIXED32:
|
|
350
|
+
case descriptors_js_1.ScalarType.UINT32:
|
|
351
|
+
case descriptors_js_1.ScalarType.SFIXED32:
|
|
352
|
+
case descriptors_js_1.ScalarType.SINT32: {
|
|
352
353
|
const n = Number.parseInt(key);
|
|
353
354
|
if (Number.isFinite(n)) {
|
|
354
355
|
return n;
|
|
355
356
|
}
|
|
356
357
|
break;
|
|
357
358
|
}
|
|
358
|
-
case
|
|
359
|
+
case descriptors_js_1.ScalarType.BOOL:
|
|
359
360
|
switch (key) {
|
|
360
361
|
case "true":
|
|
361
362
|
return true;
|
|
@@ -363,8 +364,8 @@ function mapKeyToReflect(key, type) {
|
|
|
363
364
|
return false;
|
|
364
365
|
}
|
|
365
366
|
break;
|
|
366
|
-
case
|
|
367
|
-
case
|
|
367
|
+
case descriptors_js_1.ScalarType.UINT64:
|
|
368
|
+
case descriptors_js_1.ScalarType.FIXED64:
|
|
368
369
|
try {
|
|
369
370
|
return proto_int64_js_1.protoInt64.uParse(key);
|
|
370
371
|
}
|
|
@@ -387,19 +388,19 @@ function mapKeyToReflect(key, type) {
|
|
|
387
388
|
function longToReflect(field, value) {
|
|
388
389
|
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
389
390
|
switch (field.scalar) {
|
|
390
|
-
case
|
|
391
|
-
case
|
|
392
|
-
case
|
|
393
|
-
if ("
|
|
394
|
-
field.
|
|
391
|
+
case descriptors_js_1.ScalarType.INT64:
|
|
392
|
+
case descriptors_js_1.ScalarType.SFIXED64:
|
|
393
|
+
case descriptors_js_1.ScalarType.SINT64:
|
|
394
|
+
if ("longAsString" in field &&
|
|
395
|
+
field.longAsString &&
|
|
395
396
|
typeof value == "string") {
|
|
396
397
|
value = proto_int64_js_1.protoInt64.parse(value);
|
|
397
398
|
}
|
|
398
399
|
break;
|
|
399
|
-
case
|
|
400
|
-
case
|
|
401
|
-
if ("
|
|
402
|
-
field.
|
|
400
|
+
case descriptors_js_1.ScalarType.FIXED64:
|
|
401
|
+
case descriptors_js_1.ScalarType.UINT64:
|
|
402
|
+
if ("longAsString" in field &&
|
|
403
|
+
field.longAsString &&
|
|
403
404
|
typeof value == "string") {
|
|
404
405
|
value = proto_int64_js_1.protoInt64.uParse(value);
|
|
405
406
|
}
|
|
@@ -410,19 +411,19 @@ function longToReflect(field, value) {
|
|
|
410
411
|
function longToLocal(field, value) {
|
|
411
412
|
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
412
413
|
switch (field.scalar) {
|
|
413
|
-
case
|
|
414
|
-
case
|
|
415
|
-
case
|
|
416
|
-
if ("
|
|
414
|
+
case descriptors_js_1.ScalarType.INT64:
|
|
415
|
+
case descriptors_js_1.ScalarType.SFIXED64:
|
|
416
|
+
case descriptors_js_1.ScalarType.SINT64:
|
|
417
|
+
if ("longAsString" in field && field.longAsString) {
|
|
417
418
|
value = String(value);
|
|
418
419
|
}
|
|
419
420
|
else if (typeof value == "string" || typeof value == "number") {
|
|
420
421
|
value = proto_int64_js_1.protoInt64.parse(value);
|
|
421
422
|
}
|
|
422
423
|
break;
|
|
423
|
-
case
|
|
424
|
-
case
|
|
425
|
-
if ("
|
|
424
|
+
case descriptors_js_1.ScalarType.FIXED64:
|
|
425
|
+
case descriptors_js_1.ScalarType.UINT64:
|
|
426
|
+
if ("longAsString" in field && field.longAsString) {
|
|
426
427
|
value = String(value);
|
|
427
428
|
}
|
|
428
429
|
else if (typeof value == "string" || typeof value == "number") {
|
|
@@ -1,56 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
* Scalar value types. This is a subset of field types declared by protobuf
|
|
3
|
-
* enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE
|
|
4
|
-
* are omitted, but the numerical values are identical.
|
|
5
|
-
*/
|
|
6
|
-
export declare enum ScalarType {
|
|
7
|
-
DOUBLE = 1,
|
|
8
|
-
FLOAT = 2,
|
|
9
|
-
INT64 = 3,
|
|
10
|
-
UINT64 = 4,
|
|
11
|
-
INT32 = 5,
|
|
12
|
-
FIXED64 = 6,
|
|
13
|
-
FIXED32 = 7,
|
|
14
|
-
BOOL = 8,
|
|
15
|
-
STRING = 9,
|
|
16
|
-
BYTES = 12,
|
|
17
|
-
UINT32 = 13,
|
|
18
|
-
SFIXED32 = 15,
|
|
19
|
-
SFIXED64 = 16,
|
|
20
|
-
SINT32 = 17,// Uses ZigZag encoding.
|
|
21
|
-
SINT64 = 18
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* JavaScript representation of fields with 64 bit integral types (int64, uint64,
|
|
25
|
-
* sint64, fixed64, sfixed64).
|
|
26
|
-
*
|
|
27
|
-
* This is a subset of google.protobuf.FieldOptions.JSType, which defines JS_NORMAL,
|
|
28
|
-
* JS_STRING, and JS_NUMBER. Protobuf-ES uses BigInt by default, but will use
|
|
29
|
-
* String if `[jstype = JS_STRING]` is specified.
|
|
30
|
-
*
|
|
31
|
-
* ```protobuf
|
|
32
|
-
* uint64 field_a = 1; // BigInt
|
|
33
|
-
* uint64 field_b = 2 [jstype = JS_NORMAL]; // BigInt
|
|
34
|
-
* uint64 field_b = 2 [jstype = JS_NUMBER]; // BigInt
|
|
35
|
-
* uint64 field_b = 2 [jstype = JS_STRING]; // String
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
export declare enum LongType {
|
|
39
|
-
/**
|
|
40
|
-
* Use JavaScript BigInt.
|
|
41
|
-
*/
|
|
42
|
-
BIGINT = 0,
|
|
43
|
-
/**
|
|
44
|
-
* Use JavaScript String.
|
|
45
|
-
*
|
|
46
|
-
* Field option `[jstype = JS_STRING]`.
|
|
47
|
-
*/
|
|
48
|
-
STRING = 1
|
|
49
|
-
}
|
|
1
|
+
import { ScalarType } from "../descriptors.js";
|
|
50
2
|
/**
|
|
51
3
|
* ScalarValue maps from a scalar field type to a TypeScript value type.
|
|
52
4
|
*/
|
|
53
|
-
export type ScalarValue<T = ScalarType,
|
|
5
|
+
export type ScalarValue<T = ScalarType, LongAsString extends boolean = false> = T extends ScalarType.STRING ? string : T extends ScalarType.INT32 ? number : T extends ScalarType.UINT32 ? number : T extends ScalarType.SINT32 ? number : T extends ScalarType.FIXED32 ? number : T extends ScalarType.SFIXED32 ? number : T extends ScalarType.FLOAT ? number : T extends ScalarType.DOUBLE ? number : T extends ScalarType.INT64 ? LongAsString extends true ? string : bigint : T extends ScalarType.SINT64 ? LongAsString extends true ? string : bigint : T extends ScalarType.SFIXED64 ? LongAsString extends true ? string : bigint : T extends ScalarType.UINT64 ? LongAsString extends true ? string : bigint : T extends ScalarType.FIXED64 ? LongAsString extends true ? string : bigint : T extends ScalarType.BOOL ? boolean : T extends ScalarType.BYTES ? Uint8Array : never;
|
|
54
6
|
/**
|
|
55
7
|
* Returns true if both scalar values are equal.
|
|
56
8
|
*/
|
|
@@ -58,7 +10,7 @@ export declare function scalarEquals(type: ScalarType, a: string | boolean | num
|
|
|
58
10
|
/**
|
|
59
11
|
* Returns the zero value for the given scalar type.
|
|
60
12
|
*/
|
|
61
|
-
export declare function scalarZeroValue<T extends ScalarType,
|
|
13
|
+
export declare function scalarZeroValue<T extends ScalarType, LongAsString extends boolean>(type: T, longAsString: LongAsString): ScalarValue<T, LongAsString>;
|
|
62
14
|
/**
|
|
63
15
|
* Returns true for a zero-value. For example, an integer has the zero-value `0`,
|
|
64
16
|
* a boolean is `false`, a string is `""`, and bytes is an empty Uint8Array.
|
|
@@ -67,7 +19,3 @@ export declare function scalarZeroValue<T extends ScalarType, L extends LongType
|
|
|
67
19
|
* optional or repeated.
|
|
68
20
|
*/
|
|
69
21
|
export declare function isScalarZeroValue(type: ScalarType, value: unknown): boolean;
|
|
70
|
-
export type InvalidScalarValueErr = false | "invalid UTF8" | `${string} out of range`;
|
|
71
|
-
export declare function checkScalarValue(value: unknown, scalar: ScalarType): true | InvalidScalarValueErr;
|
|
72
|
-
export declare function scalarTypeDescription(scalar: ScalarType): string;
|
|
73
|
-
export declare function scalarTypeScriptType(scalar: ScalarType, long: LongType): "string" | "boolean" | "bigint" | "bigint | string" | "Uint8Array" | "number";
|