@bufbuild/protobuf 0.0.1-alpha.1 → 0.0.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/README.md +21 -1
- package/dist/cjs/binary-encoding.js +402 -410
- package/dist/cjs/descriptor-registry.js +407 -449
- package/dist/cjs/descriptor-set.js +416 -513
- package/dist/cjs/field.js +30 -30
- package/dist/cjs/google/protobuf/any_pb.js +122 -140
- package/dist/cjs/google/protobuf/api_pb.js +177 -224
- package/dist/cjs/google/protobuf/compiler/plugin_pb.js +125 -227
- package/dist/cjs/google/protobuf/descriptor_pb.js +1029 -1888
- package/dist/cjs/google/protobuf/duration_pb.js +72 -88
- package/dist/cjs/google/protobuf/empty_pb.js +17 -17
- package/dist/cjs/google/protobuf/field_mask_pb.js +77 -94
- package/dist/cjs/google/protobuf/source_context_pb.js +25 -25
- package/dist/cjs/google/protobuf/struct_pb.js +144 -181
- package/dist/cjs/google/protobuf/timestamp_pb.js +86 -123
- package/dist/cjs/google/protobuf/type_pb.js +406 -462
- package/dist/cjs/google/protobuf/wrappers_pb.js +407 -470
- package/dist/cjs/index.js +24 -122
- package/dist/cjs/message.js +81 -89
- package/dist/cjs/private/assert.js +20 -26
- package/dist/cjs/private/base64.js +79 -78
- package/dist/cjs/private/binary-format-common.js +195 -208
- package/dist/cjs/private/binary-format-proto2.js +75 -109
- package/dist/cjs/private/binary-format-proto3.js +57 -90
- package/dist/cjs/private/enum.js +38 -43
- package/dist/cjs/private/field-list.js +51 -50
- package/dist/cjs/private/field-wrapper.js +8 -10
- package/dist/cjs/private/field.js +22 -25
- package/dist/cjs/private/goog-varint.js +275 -0
- package/dist/cjs/private/json-format-common.js +414 -440
- package/dist/cjs/private/json-format-proto2.js +78 -89
- package/dist/cjs/private/json-format-proto3.js +69 -93
- package/dist/cjs/private/message-type.js +26 -27
- package/dist/cjs/private/names.js +58 -62
- package/dist/cjs/private/proto-runtime.js +11 -16
- package/dist/cjs/private/scalars.js +100 -103
- package/dist/cjs/private/util-common.js +180 -210
- package/dist/cjs/proto-int64.js +111 -112
- package/dist/cjs/proto2.js +50 -63
- package/dist/cjs/proto3.js +61 -74
- package/dist/cjs/service-type.js +14 -17
- package/dist/cjs/type-registry.js +33 -31
- package/dist/esm/binary-encoding.js +401 -414
- package/dist/esm/descriptor-registry.js +409 -458
- package/dist/esm/descriptor-set.js +417 -478
- package/dist/esm/field.js +29 -29
- package/dist/esm/google/protobuf/any_pb.js +122 -140
- package/dist/esm/google/protobuf/api_pb.js +177 -197
- package/dist/esm/google/protobuf/compiler/plugin_pb.js +123 -216
- package/dist/esm/google/protobuf/descriptor_pb.js +1013 -1804
- package/dist/esm/google/protobuf/duration_pb.js +72 -88
- package/dist/esm/google/protobuf/empty_pb.js +17 -17
- package/dist/esm/google/protobuf/field_mask_pb.js +77 -94
- package/dist/esm/google/protobuf/source_context_pb.js +25 -25
- package/dist/esm/google/protobuf/struct_pb.js +143 -180
- package/dist/esm/google/protobuf/timestamp_pb.js +86 -123
- package/dist/esm/google/protobuf/type_pb.js +401 -421
- package/dist/esm/google/protobuf/wrappers_pb.js +406 -397
- package/dist/esm/index.js +1 -1
- package/dist/esm/message.js +81 -89
- package/dist/esm/private/assert.js +19 -21
- package/dist/esm/private/base64.js +79 -78
- package/dist/esm/private/binary-format-common.js +196 -207
- package/dist/esm/private/binary-format-proto2.js +76 -81
- package/dist/esm/private/binary-format-proto3.js +58 -67
- package/dist/esm/private/enum.js +38 -43
- package/dist/esm/private/field-list.js +51 -50
- package/dist/esm/private/field-wrapper.js +8 -10
- package/dist/esm/private/field.js +22 -22
- package/dist/esm/private/goog-varint.js +266 -0
- package/dist/esm/private/json-format-common.js +414 -435
- package/dist/esm/private/json-format-proto2.js +76 -81
- package/dist/esm/private/json-format-proto3.js +66 -80
- package/dist/esm/private/message-type.js +27 -28
- package/dist/esm/private/names.js +57 -57
- package/dist/esm/private/proto-runtime.js +11 -11
- package/dist/esm/private/scalars.js +99 -99
- package/dist/esm/private/util-common.js +180 -192
- package/dist/esm/proto-int64.js +111 -112
- package/dist/esm/proto2.js +50 -57
- package/dist/esm/proto3.js +61 -68
- package/dist/esm/service-type.js +12 -12
- package/dist/esm/type-registry.js +33 -31
- package/dist/types/binary-encoding.d.ts +398 -398
- package/dist/types/binary-format.d.ts +69 -91
- package/dist/types/descriptor-registry.d.ts +23 -29
- package/dist/types/descriptor-set.d.ts +107 -128
- package/dist/types/enum.d.ts +21 -21
- package/dist/types/field-list.d.ts +21 -21
- package/dist/types/field.d.ts +191 -231
- package/dist/types/google/protobuf/any_pb.d.ts +56 -77
- package/dist/types/google/protobuf/api_pb.d.ts +144 -187
- package/dist/types/google/protobuf/compiler/plugin_pb.d.ts +195 -257
- package/dist/types/google/protobuf/descriptor_pb.d.ts +1360 -1737
- package/dist/types/google/protobuf/duration_pb.d.ts +30 -50
- package/dist/types/google/protobuf/empty_pb.d.ts +9 -28
- package/dist/types/google/protobuf/field_mask_pb.d.ts +17 -37
- package/dist/types/google/protobuf/source_context_pb.d.ts +16 -35
- package/dist/types/google/protobuf/struct_pb.d.ts +64 -115
- package/dist/types/google/protobuf/timestamp_pb.d.ts +31 -51
- package/dist/types/google/protobuf/type_pb.d.ts +355 -422
- package/dist/types/google/protobuf/wrappers_pb.d.ts +181 -297
- package/dist/types/index.d.ts +4 -27
- package/dist/types/json-format.d.ts +70 -89
- package/dist/types/message-type.d.ts +38 -46
- package/dist/types/message.d.ts +73 -99
- package/dist/types/private/assert.d.ts +1 -4
- package/dist/types/private/binary-format-common.d.ts +6 -32
- package/dist/types/private/enum.d.ts +4 -11
- package/dist/types/private/field-list.d.ts +14 -21
- package/dist/types/private/field-wrapper.d.ts +5 -11
- package/dist/types/private/field.d.ts +12 -12
- package/dist/types/{google/varint.d.ts → private/goog-varint.d.ts} +6 -13
- package/dist/types/private/json-format-common.d.ts +5 -27
- package/dist/types/private/message-type.d.ts +3 -8
- package/dist/types/private/names.d.ts +1 -4
- package/dist/types/private/options-map.d.ts +1 -1
- package/dist/types/private/proto-runtime.d.ts +29 -42
- package/dist/types/private/scalars.d.ts +5 -12
- package/dist/types/private/util-common.d.ts +1 -4
- package/dist/types/private/util.d.ts +29 -41
- package/dist/types/proto-int64.d.ts +42 -42
- package/dist/types/service-type.d.ts +37 -57
- package/dist/types/type-registry.d.ts +13 -15
- package/package.json +2 -2
- package/dist/cjs/google/varint.js +0 -280
- package/dist/esm/google/varint.js +0 -265
|
@@ -3,88 +3,83 @@ import { assert } from "./assert.js";
|
|
|
3
3
|
import { makeJsonFormatCommon } from "./json-format-common.js";
|
|
4
4
|
/* eslint-disable no-case-declarations, @typescript-eslint/restrict-plus-operands,@typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument */
|
|
5
5
|
export function makeJsonFormatProto2() {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
return makeJsonFormatCommon((writeEnum, writeScalar) => {
|
|
7
|
+
return function writeField(field, value, options) {
|
|
8
|
+
if (field.kind == "map") {
|
|
9
|
+
const jsonObj = {};
|
|
10
|
+
switch (field.V.kind) {
|
|
11
|
+
case "scalar":
|
|
12
|
+
for (const [entryKey, entryValue] of Object.entries(value)) {
|
|
13
|
+
const val = writeScalar(field.V.T, entryValue, true);
|
|
14
|
+
assert(val !== undefined);
|
|
15
|
+
jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key
|
|
16
|
+
}
|
|
17
|
+
break;
|
|
18
|
+
case "message":
|
|
19
|
+
for (const [entryKey, entryValue] of Object.entries(value)) {
|
|
20
|
+
// JSON standard allows only (double quoted) string as property key
|
|
21
|
+
jsonObj[entryKey.toString()] = entryValue.toJson(options);
|
|
22
|
+
}
|
|
23
|
+
break;
|
|
24
|
+
case "enum":
|
|
25
|
+
const enumType = field.V.T;
|
|
26
|
+
for (const [entryKey, entryValue] of Object.entries(value)) {
|
|
27
|
+
assert(entryValue === undefined || typeof entryValue == "number");
|
|
28
|
+
const val = writeEnum(enumType, entryValue, true, options.enumAsInteger);
|
|
29
|
+
assert(val !== undefined);
|
|
30
|
+
jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key
|
|
31
|
+
}
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
return options.emitDefaultValues || Object.keys(jsonObj).length > 0
|
|
35
|
+
? jsonObj
|
|
36
|
+
: undefined;
|
|
16
37
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
38
|
+
else if (field.repeated) {
|
|
39
|
+
const jsonArr = [];
|
|
40
|
+
switch (field.kind) {
|
|
41
|
+
case "scalar":
|
|
42
|
+
for (let i = 0; i < value.length; i++) {
|
|
43
|
+
jsonArr.push(writeScalar(field.T, value[i], true));
|
|
44
|
+
}
|
|
45
|
+
break;
|
|
46
|
+
case "enum":
|
|
47
|
+
for (let i = 0; i < value.length; i++) {
|
|
48
|
+
jsonArr.push(writeEnum(field.T, value[i], true, options.enumAsInteger));
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
case "message":
|
|
52
|
+
for (let i = 0; i < value.length; i++) {
|
|
53
|
+
jsonArr.push(value[i].toJson(options));
|
|
54
|
+
}
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
return options.emitDefaultValues || jsonArr.length > 0
|
|
58
|
+
? jsonArr
|
|
59
|
+
: undefined;
|
|
22
60
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
61
|
+
else {
|
|
62
|
+
// In contrast to proto3, we raise an error if a non-optional (proto2 required)
|
|
63
|
+
// field is missing a value.
|
|
64
|
+
if (value === undefined) {
|
|
65
|
+
if (!field.oneof && !field.opt) {
|
|
66
|
+
throw `required field not set`;
|
|
67
|
+
}
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
switch (field.kind) {
|
|
71
|
+
case "scalar":
|
|
72
|
+
// In contrast to proto3, we do not skip intrinsic default values.
|
|
73
|
+
// Explicit default values are not special cased either.
|
|
74
|
+
return writeScalar(field.T, value, true);
|
|
75
|
+
case "enum":
|
|
76
|
+
// In contrast to proto3, we do not skip intrinsic default values.
|
|
77
|
+
// Explicit default values are not special cased either.
|
|
78
|
+
return writeEnum(field.T, value, true, options.enumAsInteger);
|
|
79
|
+
case "message":
|
|
80
|
+
return wrapField(field.T, value).toJson(options);
|
|
81
|
+
}
|
|
36
82
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return options.emitDefaultValues || Object.keys(jsonObj).length > 0
|
|
40
|
-
? jsonObj
|
|
41
|
-
: undefined;
|
|
42
|
-
} else if (field.repeated) {
|
|
43
|
-
const jsonArr = [];
|
|
44
|
-
switch (field.kind) {
|
|
45
|
-
case "scalar":
|
|
46
|
-
for (let i = 0; i < value.length; i++) {
|
|
47
|
-
jsonArr.push(writeScalar(field.T, value[i], true));
|
|
48
|
-
}
|
|
49
|
-
break;
|
|
50
|
-
case "enum":
|
|
51
|
-
for (let i = 0; i < value.length; i++) {
|
|
52
|
-
jsonArr.push(
|
|
53
|
-
writeEnum(field.T, value[i], true, options.enumAsInteger)
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
break;
|
|
57
|
-
case "message":
|
|
58
|
-
for (let i = 0; i < value.length; i++) {
|
|
59
|
-
jsonArr.push(value[i].toJson(options));
|
|
60
|
-
}
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
return options.emitDefaultValues || jsonArr.length > 0
|
|
64
|
-
? jsonArr
|
|
65
|
-
: undefined;
|
|
66
|
-
} else {
|
|
67
|
-
// In contrast to proto3, we raise an error if a non-optional (proto2 required)
|
|
68
|
-
// field is missing a value.
|
|
69
|
-
if (value === undefined) {
|
|
70
|
-
if (!field.oneof && !field.opt) {
|
|
71
|
-
throw `required field not set`;
|
|
72
|
-
}
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
switch (field.kind) {
|
|
76
|
-
case "scalar":
|
|
77
|
-
// In contrast to proto3, we do not skip intrinsic default values.
|
|
78
|
-
// Explicit default values are not special cased either.
|
|
79
|
-
return writeScalar(field.T, value, true);
|
|
80
|
-
case "enum":
|
|
81
|
-
// In contrast to proto3, we do not skip intrinsic default values.
|
|
82
|
-
// Explicit default values are not special cased either.
|
|
83
|
-
return writeEnum(field.T, value, true, options.enumAsInteger);
|
|
84
|
-
case "message":
|
|
85
|
-
return wrapField(field.T, value).toJson(options);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
});
|
|
83
|
+
};
|
|
84
|
+
});
|
|
90
85
|
}
|
|
@@ -3,87 +3,73 @@ import { assert } from "./assert.js";
|
|
|
3
3
|
import { makeJsonFormatCommon } from "./json-format-common.js";
|
|
4
4
|
/* eslint-disable no-case-declarations, @typescript-eslint/restrict-plus-operands,@typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-return,@typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-argument */
|
|
5
5
|
export function makeJsonFormatProto3() {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
6
|
+
return makeJsonFormatCommon((writeEnum, writeScalar) => {
|
|
7
|
+
return function writeField(field, value, options) {
|
|
8
|
+
if (field.kind == "map") {
|
|
9
|
+
const jsonObj = {};
|
|
10
|
+
switch (field.V.kind) {
|
|
11
|
+
case "scalar":
|
|
12
|
+
for (const [entryKey, entryValue] of Object.entries(value)) {
|
|
13
|
+
const val = writeScalar(field.V.T, entryValue, true);
|
|
14
|
+
assert(val !== undefined);
|
|
15
|
+
jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key
|
|
16
|
+
}
|
|
17
|
+
break;
|
|
18
|
+
case "message":
|
|
19
|
+
for (const [entryKey, entryValue] of Object.entries(value)) {
|
|
20
|
+
// JSON standard allows only (double quoted) string as property key
|
|
21
|
+
jsonObj[entryKey.toString()] = entryValue.toJson(options);
|
|
22
|
+
}
|
|
23
|
+
break;
|
|
24
|
+
case "enum":
|
|
25
|
+
const enumType = field.V.T;
|
|
26
|
+
for (const [entryKey, entryValue] of Object.entries(value)) {
|
|
27
|
+
assert(entryValue === undefined || typeof entryValue == "number");
|
|
28
|
+
const val = writeEnum(enumType, entryValue, true, options.enumAsInteger);
|
|
29
|
+
assert(val !== undefined);
|
|
30
|
+
jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key
|
|
31
|
+
}
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
return options.emitDefaultValues || Object.keys(jsonObj).length > 0
|
|
35
|
+
? jsonObj
|
|
36
|
+
: undefined;
|
|
16
37
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
38
|
+
else if (field.repeated) {
|
|
39
|
+
const jsonArr = [];
|
|
40
|
+
switch (field.kind) {
|
|
41
|
+
case "scalar":
|
|
42
|
+
for (let i = 0; i < value.length; i++) {
|
|
43
|
+
jsonArr.push(writeScalar(field.T, value[i], true));
|
|
44
|
+
}
|
|
45
|
+
break;
|
|
46
|
+
case "enum":
|
|
47
|
+
for (let i = 0; i < value.length; i++) {
|
|
48
|
+
jsonArr.push(writeEnum(field.T, value[i], true, options.enumAsInteger));
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
case "message":
|
|
52
|
+
for (let i = 0; i < value.length; i++) {
|
|
53
|
+
jsonArr.push(wrapField(field.T, value[i]).toJson(options));
|
|
54
|
+
}
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
return options.emitDefaultValues || jsonArr.length > 0
|
|
58
|
+
? jsonArr
|
|
59
|
+
: undefined;
|
|
22
60
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
assert(val !== undefined);
|
|
35
|
-
jsonObj[entryKey.toString()] = val; // JSON standard allows only (double quoted) string as property key
|
|
61
|
+
else {
|
|
62
|
+
switch (field.kind) {
|
|
63
|
+
case "scalar":
|
|
64
|
+
return writeScalar(field.T, value, !!field.oneof || field.opt || options.emitDefaultValues);
|
|
65
|
+
case "enum":
|
|
66
|
+
return writeEnum(field.T, value, !!field.oneof || field.opt || options.emitDefaultValues, options.enumAsInteger);
|
|
67
|
+
case "message":
|
|
68
|
+
return value !== undefined
|
|
69
|
+
? wrapField(field.T, value).toJson(options)
|
|
70
|
+
: undefined;
|
|
71
|
+
}
|
|
36
72
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return options.emitDefaultValues || Object.keys(jsonObj).length > 0
|
|
40
|
-
? jsonObj
|
|
41
|
-
: undefined;
|
|
42
|
-
} else if (field.repeated) {
|
|
43
|
-
const jsonArr = [];
|
|
44
|
-
switch (field.kind) {
|
|
45
|
-
case "scalar":
|
|
46
|
-
for (let i = 0; i < value.length; i++) {
|
|
47
|
-
jsonArr.push(writeScalar(field.T, value[i], true));
|
|
48
|
-
}
|
|
49
|
-
break;
|
|
50
|
-
case "enum":
|
|
51
|
-
for (let i = 0; i < value.length; i++) {
|
|
52
|
-
jsonArr.push(
|
|
53
|
-
writeEnum(field.T, value[i], true, options.enumAsInteger)
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
break;
|
|
57
|
-
case "message":
|
|
58
|
-
for (let i = 0; i < value.length; i++) {
|
|
59
|
-
jsonArr.push(wrapField(field.T, value[i]).toJson(options));
|
|
60
|
-
}
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
return options.emitDefaultValues || jsonArr.length > 0
|
|
64
|
-
? jsonArr
|
|
65
|
-
: undefined;
|
|
66
|
-
} else {
|
|
67
|
-
switch (field.kind) {
|
|
68
|
-
case "scalar":
|
|
69
|
-
return writeScalar(
|
|
70
|
-
field.T,
|
|
71
|
-
value,
|
|
72
|
-
!!field.oneof || field.opt || options.emitDefaultValues
|
|
73
|
-
);
|
|
74
|
-
case "enum":
|
|
75
|
-
return writeEnum(
|
|
76
|
-
field.T,
|
|
77
|
-
value,
|
|
78
|
-
!!field.oneof || field.opt || options.emitDefaultValues,
|
|
79
|
-
options.enumAsInteger
|
|
80
|
-
);
|
|
81
|
-
case "message":
|
|
82
|
-
return value !== undefined
|
|
83
|
-
? wrapField(field.T, value).toJson(options)
|
|
84
|
-
: undefined;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
});
|
|
73
|
+
};
|
|
74
|
+
});
|
|
89
75
|
}
|
|
@@ -1,33 +1,32 @@
|
|
|
1
|
-
import { Message } from "../message.js";
|
|
1
|
+
import { Message, } from "../message.js";
|
|
2
2
|
/**
|
|
3
3
|
* Create a new message type using the given runtime.
|
|
4
4
|
*/
|
|
5
5
|
export function makeMessageType(runtime, typeName, fields, opt) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return type;
|
|
6
|
+
const localName = opt?.localName ?? typeName.substring(typeName.lastIndexOf(".") + 1);
|
|
7
|
+
const type = {
|
|
8
|
+
[localName]: function (data) {
|
|
9
|
+
runtime.util.initFields(this);
|
|
10
|
+
runtime.util.initPartial(data, this);
|
|
11
|
+
},
|
|
12
|
+
}[localName];
|
|
13
|
+
Object.setPrototypeOf(type.prototype, new Message());
|
|
14
|
+
Object.assign(type, {
|
|
15
|
+
runtime,
|
|
16
|
+
typeName,
|
|
17
|
+
fields: runtime.util.newFieldList(fields),
|
|
18
|
+
fromBinary(bytes, options) {
|
|
19
|
+
return new type().fromBinary(bytes, options);
|
|
20
|
+
},
|
|
21
|
+
fromJson(jsonValue, options) {
|
|
22
|
+
return new type().fromJson(jsonValue, options);
|
|
23
|
+
},
|
|
24
|
+
fromJsonString(jsonString, options) {
|
|
25
|
+
return new type().fromJsonString(jsonString, options);
|
|
26
|
+
},
|
|
27
|
+
equals(a, b) {
|
|
28
|
+
return runtime.util.equals(type, a, b);
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
return type;
|
|
33
32
|
}
|
|
@@ -2,67 +2,67 @@
|
|
|
2
2
|
* Returns the JSON name for a protobuf field, exactly like protoc does.
|
|
3
3
|
*/
|
|
4
4
|
export function makeJsonName(protoName) {
|
|
5
|
-
|
|
5
|
+
return protoCamelCase(protoName);
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Returns the local name of a field, exactly like protoc-gen-es does.
|
|
9
9
|
*/
|
|
10
10
|
export function makeFieldName(protoName, inOneof) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const n = protoCamelCase(protoName);
|
|
12
|
+
if (inOneof) {
|
|
13
|
+
return n;
|
|
14
|
+
}
|
|
15
|
+
return rProp[n] ? n + escapeChar : n;
|
|
16
16
|
}
|
|
17
17
|
/**
|
|
18
18
|
* Returns the local name of a oneof group, exactly like protoc-gen-es does.
|
|
19
19
|
*/
|
|
20
20
|
export function makeOneofName(protoName) {
|
|
21
|
-
|
|
21
|
+
return makeFieldName(protoName, false);
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* Returns the local name of a rpc, exactly like protoc-gen-es does.
|
|
25
25
|
*/
|
|
26
26
|
export function makeMethodName(protoName) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
if (protoName.length == 0) {
|
|
28
|
+
return protoName;
|
|
29
|
+
}
|
|
30
|
+
return protoName[0].toLowerCase() + protoName.substring(1);
|
|
31
31
|
}
|
|
32
32
|
// Converts snake_case to protoCamelCase according to the convention
|
|
33
33
|
// used by protoc to convert a field name to a JSON name.
|
|
34
34
|
function protoCamelCase(snakeCase) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
35
|
+
let capNext = false;
|
|
36
|
+
const b = [];
|
|
37
|
+
for (let i = 0; i < snakeCase.length; i++) {
|
|
38
|
+
let c = snakeCase.charAt(i);
|
|
39
|
+
switch (c) {
|
|
40
|
+
case "_":
|
|
41
|
+
capNext = true;
|
|
42
|
+
break;
|
|
43
|
+
case "0":
|
|
44
|
+
case "1":
|
|
45
|
+
case "2":
|
|
46
|
+
case "3":
|
|
47
|
+
case "4":
|
|
48
|
+
case "5":
|
|
49
|
+
case "6":
|
|
50
|
+
case "7":
|
|
51
|
+
case "8":
|
|
52
|
+
case "9":
|
|
53
|
+
b.push(c);
|
|
54
|
+
capNext = false;
|
|
55
|
+
break;
|
|
56
|
+
default:
|
|
57
|
+
if (capNext) {
|
|
58
|
+
capNext = false;
|
|
59
|
+
c = c.toUpperCase();
|
|
60
|
+
}
|
|
61
|
+
b.push(c);
|
|
62
|
+
break;
|
|
60
63
|
}
|
|
61
|
-
b.push(c);
|
|
62
|
-
break;
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
-
return b.join("");
|
|
65
|
+
return b.join("");
|
|
66
66
|
}
|
|
67
67
|
// escapeChar must be appended to a reserved name.
|
|
68
68
|
// We choose '$' because it is invalid in proto identifiers.
|
|
@@ -70,21 +70,21 @@ const escapeChar = "$";
|
|
|
70
70
|
// Names that cannot be used for object properties.
|
|
71
71
|
// See buf_es/protoc-gen-es/internal/protoplugin/names.go
|
|
72
72
|
const rProp = {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
73
|
+
// names reserved by JavaScript
|
|
74
|
+
constructor: true,
|
|
75
|
+
toString: true,
|
|
76
|
+
toJSON: true,
|
|
77
|
+
valueOf: true,
|
|
78
|
+
// names reserved by the runtime
|
|
79
|
+
getType: true,
|
|
80
|
+
clone: true,
|
|
81
|
+
equals: true,
|
|
82
|
+
fromBinary: true,
|
|
83
|
+
fromJson: true,
|
|
84
|
+
fromJsonString: true,
|
|
85
|
+
toBinary: true,
|
|
86
|
+
toJson: true,
|
|
87
|
+
toJsonString: true,
|
|
88
|
+
// names reserved by the runtime for the future
|
|
89
|
+
toObject: true,
|
|
90
90
|
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { getEnumType, makeEnumType } from "./enum.js";
|
|
2
2
|
import { makeMessageType } from "./message-type.js";
|
|
3
3
|
export function makeProtoRuntime(syntax, json, bin, util) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
4
|
+
return {
|
|
5
|
+
syntax,
|
|
6
|
+
json,
|
|
7
|
+
bin,
|
|
8
|
+
util,
|
|
9
|
+
makeMessageType(typeName, fields, opt) {
|
|
10
|
+
return makeMessageType(this, typeName, fields, opt);
|
|
11
|
+
},
|
|
12
|
+
makeEnumType,
|
|
13
|
+
getEnumType,
|
|
14
|
+
};
|
|
15
15
|
}
|