@bufbuild/protobuf 2.0.0-alpha.1 → 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 +2 -2
- package/dist/cjs/codegenv1/embed.js +51 -46
- package/dist/cjs/codegenv1/enum.d.ts +1 -1
- package/dist/cjs/codegenv1/enum.js +2 -4
- 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/restore-json-names.d.ts +3 -0
- package/dist/cjs/codegenv1/restore-json-names.js +3 -0
- 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/symbols.d.ts +9 -0
- package/dist/cjs/codegenv1/symbols.js +9 -0
- package/dist/cjs/codegenv1/types.d.ts +59 -8
- package/dist/cjs/create.d.ts +1 -1
- package/dist/cjs/create.js +13 -23
- package/dist/cjs/{desc-types.d.ts → descriptors.d.ts} +66 -17
- package/dist/cjs/descriptors.js +53 -0
- package/dist/cjs/equals.d.ts +1 -1
- package/dist/cjs/extensions.d.ts +21 -1
- package/dist/cjs/extensions.js +42 -10
- package/dist/cjs/fields.d.ts +17 -16
- package/dist/cjs/fields.js +17 -10
- package/dist/cjs/from-binary.d.ts +2 -2
- package/dist/cjs/from-binary.js +31 -41
- package/dist/cjs/from-json.d.ts +4 -4
- package/dist/cjs/from-json.js +200 -185
- package/dist/cjs/index.d.ts +3 -2
- package/dist/cjs/index.js +5 -2
- 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 -13
- package/dist/cjs/reflect/names.js +2 -40
- package/dist/cjs/reflect/nested-types.d.ts +11 -1
- package/dist/cjs/reflect/nested-types.js +34 -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 +162 -14
- package/dist/cjs/reflect/reflect.d.ts +12 -3
- package/dist/cjs/reflect/reflect.js +316 -290
- 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 +38 -43
- package/dist/cjs/{reflect/registry.d.ts → registry.d.ts} +2 -2
- package/dist/cjs/{reflect/registry.js → registry.js} +100 -73
- package/dist/cjs/to-binary.d.ts +1 -1
- package/dist/cjs/to-binary.js +28 -30
- package/dist/cjs/to-json.d.ts +7 -6
- package/dist/cjs/to-json.js +63 -70
- package/dist/cjs/types.d.ts +1 -1
- package/dist/cjs/wire/base64-encoding.js +4 -4
- package/dist/cjs/wire/binary-encoding.d.ts +25 -3
- package/dist/cjs/wire/binary-encoding.js +70 -18
- 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/any_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
- package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +15 -6
- package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
- package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +192 -0
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +187 -84
- package/dist/cjs/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
- package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +18 -7
- package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
- package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
- package/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
- package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +32 -13
- package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
- package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
- 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 +2 -2
- package/dist/esm/codegenv1/embed.js +34 -29
- package/dist/esm/codegenv1/enum.d.ts +1 -1
- package/dist/esm/codegenv1/enum.js +2 -4
- 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/restore-json-names.d.ts +3 -0
- package/dist/esm/codegenv1/restore-json-names.js +3 -0
- 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/symbols.d.ts +9 -0
- package/dist/esm/codegenv1/symbols.js +9 -0
- package/dist/esm/codegenv1/types.d.ts +59 -8
- package/dist/esm/create.d.ts +1 -1
- package/dist/esm/create.js +11 -21
- package/dist/esm/{desc-types.d.ts → descriptors.d.ts} +66 -17
- package/dist/esm/descriptors.js +50 -0
- package/dist/esm/equals.d.ts +1 -1
- package/dist/esm/extensions.d.ts +21 -1
- package/dist/esm/extensions.js +39 -9
- package/dist/esm/fields.d.ts +17 -16
- package/dist/esm/fields.js +17 -10
- package/dist/esm/from-binary.d.ts +2 -2
- package/dist/esm/from-binary.js +13 -23
- package/dist/esm/from-json.d.ts +4 -4
- package/dist/esm/from-json.js +193 -178
- package/dist/esm/index.d.ts +3 -2
- package/dist/esm/index.js +3 -2
- 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 -13
- package/dist/esm/reflect/names.js +1 -38
- package/dist/esm/reflect/nested-types.d.ts +11 -1
- package/dist/esm/reflect/nested-types.js +32 -0
- 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 +162 -14
- package/dist/esm/reflect/reflect-types.js +1 -0
- package/dist/esm/reflect/reflect.d.ts +12 -3
- package/dist/esm/reflect/reflect.js +305 -279
- 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 +38 -43
- package/dist/esm/{reflect/registry.d.ts → registry.d.ts} +2 -2
- package/dist/esm/{reflect/registry.js → registry.js} +90 -63
- package/dist/esm/to-binary.d.ts +1 -1
- package/dist/esm/to-binary.js +2 -4
- package/dist/esm/to-json.d.ts +7 -6
- package/dist/esm/to-json.js +48 -55
- package/dist/esm/types.d.ts +1 -1
- package/dist/esm/wire/base64-encoding.js +4 -4
- package/dist/esm/wire/binary-encoding.d.ts +25 -3
- package/dist/esm/wire/binary-encoding.js +63 -11
- 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/any_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/any_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
- package/dist/esm/wkt/gen/google/protobuf/api_pb.js +15 -6
- package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
- package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +192 -0
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +187 -84
- package/dist/esm/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
- package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +18 -7
- package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
- package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
- package/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
- package/dist/esm/wkt/gen/google/protobuf/type_pb.js +32 -13
- package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
- package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
- package/dist/esm/wkt/wrappers.d.ts +1 -1
- package/package.json +2 -2
- 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
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
import { restoreJsonNames } from "./restore-json-names.js";
|
|
15
|
-
import { createFileRegistry } from "../
|
|
16
|
-
import { assert } from "../reflect/assert.js";
|
|
15
|
+
import { createFileRegistry } from "../registry.js";
|
|
17
16
|
/**
|
|
18
17
|
* Hydrate a file descriptor for google/protobuf/descriptor.proto from a plain
|
|
19
18
|
* object.
|
|
@@ -26,9 +25,8 @@ export function boot(boot) {
|
|
|
26
25
|
const root = bootFileDescriptorProto(boot);
|
|
27
26
|
root.messageType.forEach(restoreJsonNames);
|
|
28
27
|
const reg = createFileRegistry(root, () => undefined);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return file;
|
|
28
|
+
// non-null assertion because we just created the registry from the file we look up
|
|
29
|
+
return reg.getFile(root.name);
|
|
32
30
|
}
|
|
33
31
|
/**
|
|
34
32
|
* Creates the message google.protobuf.FileDescriptorProto from an object literal.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DescEnum, DescExtension,
|
|
1
|
+
import type { DescEnum, DescExtension, DescMessage, DescService } from "../descriptors.js";
|
|
2
2
|
import type { FileDescriptorProto } from "../wkt/gen/google/protobuf/descriptor_pb.js";
|
|
3
3
|
import type { FileDescriptorProtoBoot } from "./boot.js";
|
|
4
4
|
type EmbedUnknown = {
|
|
@@ -16,7 +16,7 @@ type EmbedDescriptorProto = Omit<EmbedUnknown, "bootable"> & {
|
|
|
16
16
|
*
|
|
17
17
|
* @private
|
|
18
18
|
*/
|
|
19
|
-
export declare function embedFileDesc(file:
|
|
19
|
+
export declare function embedFileDesc(file: FileDescriptorProto): EmbedUnknown | EmbedDescriptorProto;
|
|
20
20
|
/**
|
|
21
21
|
* Compute the path to a message, enumeration, extension, or service in a
|
|
22
22
|
* file descriptor.
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
import { protoCamelCase } from "../reflect/names.js";
|
|
15
|
-
import { assert } from "../reflect/assert.js";
|
|
16
15
|
import { isFieldSet, clearField } from "../fields.js";
|
|
17
16
|
import { base64Encode } from "../wire/base64-encoding.js";
|
|
18
17
|
import { toBinary } from "../to-binary.js";
|
|
@@ -28,9 +27,9 @@ export function embedFileDesc(file) {
|
|
|
28
27
|
const embed = {
|
|
29
28
|
bootable: false,
|
|
30
29
|
proto() {
|
|
31
|
-
const stripped = clone(FileDescriptorProtoDesc, file
|
|
32
|
-
clearField(
|
|
33
|
-
clearField(
|
|
30
|
+
const stripped = clone(FileDescriptorProtoDesc, file);
|
|
31
|
+
clearField(stripped, FileDescriptorProtoDesc.field.dependency);
|
|
32
|
+
clearField(stripped, FileDescriptorProtoDesc.field.sourceCodeInfo);
|
|
34
33
|
stripped.messageType.map(stripJsonNames);
|
|
35
34
|
return stripped;
|
|
36
35
|
},
|
|
@@ -39,7 +38,7 @@ export function embedFileDesc(file) {
|
|
|
39
38
|
return base64Encode(bytes, "std_raw");
|
|
40
39
|
},
|
|
41
40
|
};
|
|
42
|
-
return file.
|
|
41
|
+
return file.name == "google/protobuf/descriptor.proto"
|
|
43
42
|
? Object.assign(Object.assign({}, embed), { bootable: true, boot() {
|
|
44
43
|
return createFileDescriptorProtoBoot(this.proto());
|
|
45
44
|
} }) : embed;
|
|
@@ -47,7 +46,7 @@ export function embedFileDesc(file) {
|
|
|
47
46
|
function stripJsonNames(d) {
|
|
48
47
|
for (const f of d.field) {
|
|
49
48
|
if (f.jsonName === protoCamelCase(f.name)) {
|
|
50
|
-
clearField(
|
|
49
|
+
clearField(f, FieldDescriptorProtoDesc.field.jsonName);
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
52
|
for (const n of d.nestedType) {
|
|
@@ -135,7 +134,6 @@ function createDescriptorBoot(proto) {
|
|
|
135
134
|
assert(proto.extension.length == 0);
|
|
136
135
|
assert(!proto.oneofDecl.length);
|
|
137
136
|
assert(!proto.options);
|
|
138
|
-
assert(!proto.reservedName.length); // we're also dropping reserved_range
|
|
139
137
|
const b = {
|
|
140
138
|
name: proto.name,
|
|
141
139
|
};
|
|
@@ -157,27 +155,27 @@ function createDescriptorBoot(proto) {
|
|
|
157
155
|
return b;
|
|
158
156
|
}
|
|
159
157
|
function createFieldDescriptorBoot(proto) {
|
|
160
|
-
assert(isFieldSet(
|
|
161
|
-
assert(isFieldSet(
|
|
162
|
-
assert(isFieldSet(
|
|
163
|
-
assert(!isFieldSet(
|
|
164
|
-
assert(!isFieldSet(
|
|
158
|
+
assert(isFieldSet(proto, FieldDescriptorProtoDesc.field.name));
|
|
159
|
+
assert(isFieldSet(proto, FieldDescriptorProtoDesc.field.number));
|
|
160
|
+
assert(isFieldSet(proto, FieldDescriptorProtoDesc.field.type));
|
|
161
|
+
assert(!isFieldSet(proto, FieldDescriptorProtoDesc.field.oneofIndex));
|
|
162
|
+
assert(!isFieldSet(proto, FieldDescriptorProtoDesc.field.jsonName) ||
|
|
165
163
|
proto.jsonName === protoCamelCase(proto.name));
|
|
166
164
|
const b = {
|
|
167
165
|
name: proto.name,
|
|
168
166
|
number: proto.number,
|
|
169
167
|
type: proto.type,
|
|
170
168
|
};
|
|
171
|
-
if (isFieldSet(
|
|
169
|
+
if (isFieldSet(proto, FieldDescriptorProtoDesc.field.label)) {
|
|
172
170
|
b.label = proto.label;
|
|
173
171
|
}
|
|
174
|
-
if (isFieldSet(
|
|
172
|
+
if (isFieldSet(proto, FieldDescriptorProtoDesc.field.typeName)) {
|
|
175
173
|
b.typeName = proto.typeName;
|
|
176
174
|
}
|
|
177
|
-
if (isFieldSet(
|
|
175
|
+
if (isFieldSet(proto, FieldDescriptorProtoDesc.field.extendee)) {
|
|
178
176
|
b.extendee = proto.extendee;
|
|
179
177
|
}
|
|
180
|
-
if (isFieldSet(
|
|
178
|
+
if (isFieldSet(proto, FieldDescriptorProtoDesc.field.defaultValue)) {
|
|
181
179
|
b.defaultValue = proto.defaultValue;
|
|
182
180
|
}
|
|
183
181
|
if (proto.options) {
|
|
@@ -187,19 +185,19 @@ function createFieldDescriptorBoot(proto) {
|
|
|
187
185
|
}
|
|
188
186
|
function createFieldOptionsBoot(proto) {
|
|
189
187
|
const b = {};
|
|
190
|
-
assert(!isFieldSet(
|
|
191
|
-
if (isFieldSet(
|
|
188
|
+
assert(!isFieldSet(proto, FieldOptionsDesc.field.ctype));
|
|
189
|
+
if (isFieldSet(proto, FieldOptionsDesc.field.packed)) {
|
|
192
190
|
b.packed = proto.packed;
|
|
193
191
|
}
|
|
194
|
-
assert(!isFieldSet(
|
|
195
|
-
assert(!isFieldSet(
|
|
196
|
-
assert(!isFieldSet(
|
|
197
|
-
if (isFieldSet(
|
|
192
|
+
assert(!isFieldSet(proto, FieldOptionsDesc.field.jstype));
|
|
193
|
+
assert(!isFieldSet(proto, FieldOptionsDesc.field.lazy));
|
|
194
|
+
assert(!isFieldSet(proto, FieldOptionsDesc.field.unverifiedLazy));
|
|
195
|
+
if (isFieldSet(proto, FieldOptionsDesc.field.deprecated)) {
|
|
198
196
|
b.deprecated = proto.deprecated;
|
|
199
197
|
}
|
|
200
|
-
assert(!isFieldSet(
|
|
201
|
-
assert(!isFieldSet(
|
|
202
|
-
if (isFieldSet(
|
|
198
|
+
assert(!isFieldSet(proto, FieldOptionsDesc.field.weak));
|
|
199
|
+
assert(!isFieldSet(proto, FieldOptionsDesc.field.debugRedact));
|
|
200
|
+
if (isFieldSet(proto, FieldOptionsDesc.field.retention)) {
|
|
203
201
|
b.retention = proto.retention;
|
|
204
202
|
}
|
|
205
203
|
if (proto.targets.length) {
|
|
@@ -211,13 +209,11 @@ function createFieldOptionsBoot(proto) {
|
|
|
211
209
|
edition: d.edition,
|
|
212
210
|
}));
|
|
213
211
|
}
|
|
214
|
-
assert(!isFieldSet(
|
|
215
|
-
assert(!isFieldSet(
|
|
212
|
+
assert(!isFieldSet(proto, FieldOptionsDesc.field.features));
|
|
213
|
+
assert(!isFieldSet(proto, FieldOptionsDesc.field.uninterpretedOption));
|
|
216
214
|
return b;
|
|
217
215
|
}
|
|
218
216
|
function createEnumDescriptorBoot(proto) {
|
|
219
|
-
assert(!proto.reservedName.length);
|
|
220
|
-
assert(!proto.reservedRange.length);
|
|
221
217
|
assert(!proto.options);
|
|
222
218
|
return {
|
|
223
219
|
name: proto.name,
|
|
@@ -230,3 +226,12 @@ function createEnumDescriptorBoot(proto) {
|
|
|
230
226
|
}),
|
|
231
227
|
};
|
|
232
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Assert that condition is truthy or throw error.
|
|
231
|
+
*/
|
|
232
|
+
function assert(condition) {
|
|
233
|
+
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions -- we want the implicit conversion to boolean
|
|
234
|
+
if (!condition) {
|
|
235
|
+
throw new Error();
|
|
236
|
+
}
|
|
237
|
+
}
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
import { localName } from "../reflect/names.js";
|
|
15
14
|
/**
|
|
16
15
|
* Hydrate an enum descriptor.
|
|
17
16
|
*
|
|
@@ -30,9 +29,8 @@ export function enumDesc(file, path, ...paths) {
|
|
|
30
29
|
export function tsEnum(desc) {
|
|
31
30
|
const enumObject = {};
|
|
32
31
|
for (const value of desc.values) {
|
|
33
|
-
|
|
34
|
-
enumObject[
|
|
35
|
-
enumObject[value.number] = name;
|
|
32
|
+
enumObject[value.localName] = value.number;
|
|
33
|
+
enumObject[value.number] = value.localName;
|
|
36
34
|
}
|
|
37
35
|
return enumObject;
|
|
38
36
|
}
|
|
@@ -11,10 +11,9 @@
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
-
import { base64Decode } from "../wire/
|
|
14
|
+
import { base64Decode } from "../wire/base64-encoding.js";
|
|
15
15
|
import { FileDescriptorProtoDesc } from "../wkt/gen/google/protobuf/descriptor_pb.js";
|
|
16
|
-
import { createFileRegistry } from "../
|
|
17
|
-
import { assert } from "../reflect/assert.js";
|
|
16
|
+
import { createFileRegistry } from "../registry.js";
|
|
18
17
|
import { restoreJsonNames } from "./restore-json-names.js";
|
|
19
18
|
import { fromBinary } from "../from-binary.js";
|
|
20
19
|
/**
|
|
@@ -28,7 +27,6 @@ export function fileDesc(b64, imports) {
|
|
|
28
27
|
root.messageType.forEach(restoreJsonNames);
|
|
29
28
|
root.dependency = (_a = imports === null || imports === void 0 ? void 0 : imports.map((f) => f.proto.name)) !== null && _a !== void 0 ? _a : [];
|
|
30
29
|
const reg = createFileRegistry(root, (protoFileName) => imports === null || imports === void 0 ? void 0 : imports.find((f) => f.proto.name === protoFileName));
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return file;
|
|
30
|
+
// non-null assertion because we just created the registry from the file we look up
|
|
31
|
+
return reg.getFile(root.name);
|
|
34
32
|
}
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
import { protoCamelCase } from "../reflect/names.js";
|
|
15
15
|
import { unsafeIsSetExplicit } from "../reflect/unsafe.js";
|
|
16
|
+
/**
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
16
19
|
export function restoreJsonNames(message) {
|
|
17
20
|
for (const f of message.field) {
|
|
18
21
|
if (!unsafeIsSetExplicit(f, "jsonName")) {
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ScalarType } from "../descriptors.js";
|
|
2
|
+
/**
|
|
3
|
+
* Return the TypeScript type (as a string) for the given scalar type.
|
|
4
|
+
*/
|
|
5
|
+
export declare function scalarTypeScriptType(scalar: ScalarType, longAsString: boolean): "string" | "boolean" | "bigint" | "bigint | string" | "Uint8Array" | "number";
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// Copyright 2021-2024 Buf Technologies, Inc.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
import { ScalarType } from "../descriptors.js";
|
|
15
|
+
/**
|
|
16
|
+
* Return the TypeScript type (as a string) for the given scalar type.
|
|
17
|
+
*/
|
|
18
|
+
export function scalarTypeScriptType(scalar, longAsString) {
|
|
19
|
+
switch (scalar) {
|
|
20
|
+
case ScalarType.STRING:
|
|
21
|
+
return "string";
|
|
22
|
+
case ScalarType.BOOL:
|
|
23
|
+
return "boolean";
|
|
24
|
+
case ScalarType.UINT64:
|
|
25
|
+
case ScalarType.SFIXED64:
|
|
26
|
+
case ScalarType.FIXED64:
|
|
27
|
+
case ScalarType.SINT64:
|
|
28
|
+
case ScalarType.INT64:
|
|
29
|
+
return longAsString ? "string" : "bigint";
|
|
30
|
+
case ScalarType.BYTES:
|
|
31
|
+
return "Uint8Array";
|
|
32
|
+
default:
|
|
33
|
+
return "number";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { GenDescService,
|
|
2
|
-
import type { DescFile } from "../
|
|
1
|
+
import type { GenDescService, GenDescServiceMethods } from "./types.js";
|
|
2
|
+
import type { DescFile } from "../descriptors.js";
|
|
3
3
|
/**
|
|
4
4
|
* Hydrate a service descriptor.
|
|
5
5
|
*
|
|
6
6
|
* @private
|
|
7
7
|
*/
|
|
8
|
-
export declare function serviceDesc<T extends
|
|
8
|
+
export declare function serviceDesc<T extends GenDescServiceMethods>(file: DescFile, path: number, ...paths: number[]): GenDescService<T>;
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @private
|
|
3
|
+
*/
|
|
1
4
|
export declare const packageName = "@bufbuild/protobuf";
|
|
5
|
+
/**
|
|
6
|
+
* @private
|
|
7
|
+
*/
|
|
2
8
|
export declare const wktPublicImportPaths: Readonly<Record<string, string>>;
|
|
9
|
+
/**
|
|
10
|
+
* @private
|
|
11
|
+
*/
|
|
3
12
|
export declare const symbols: {
|
|
4
13
|
readonly isMessage: {
|
|
5
14
|
readonly typeOnly: false;
|
|
@@ -11,7 +11,13 @@
|
|
|
11
11
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
|
+
/**
|
|
15
|
+
* @private
|
|
16
|
+
*/
|
|
14
17
|
export const packageName = "@bufbuild/protobuf";
|
|
18
|
+
/**
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
15
21
|
export const wktPublicImportPaths = {
|
|
16
22
|
"google/protobuf/compiler/plugin.proto": packageName + "/wkt",
|
|
17
23
|
"google/protobuf/any.proto": packageName + "/wkt",
|
|
@@ -26,6 +32,9 @@ export const wktPublicImportPaths = {
|
|
|
26
32
|
"google/protobuf/type.proto": packageName + "/wkt",
|
|
27
33
|
"google/protobuf/wrappers.proto": packageName + "/wkt",
|
|
28
34
|
};
|
|
35
|
+
/**
|
|
36
|
+
* @private
|
|
37
|
+
*/
|
|
29
38
|
// prettier-ignore
|
|
30
39
|
export const symbols = {
|
|
31
40
|
isMessage: { typeOnly: false, bootstrapWktFrom: "../../is-message.js", from: packageName },
|
|
@@ -1,19 +1,70 @@
|
|
|
1
1
|
import type { Message } from "../types.js";
|
|
2
|
-
import type { DescEnum, DescExtension, DescFile, DescMessage, DescService } from "../
|
|
2
|
+
import type { DescEnum, DescExtension, DescField, DescFile, DescMessage, DescMethod, DescService } from "../descriptors.js";
|
|
3
|
+
/**
|
|
4
|
+
* Describes a protobuf source file.
|
|
5
|
+
*
|
|
6
|
+
* @private
|
|
7
|
+
*/
|
|
3
8
|
export type GenDescFile = DescFile;
|
|
4
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Describes a message declaration in a protobuf source file.
|
|
11
|
+
*
|
|
12
|
+
* This type is identical to DescMessage, but carries additional type
|
|
13
|
+
* information.
|
|
14
|
+
*
|
|
15
|
+
* @private
|
|
16
|
+
*/
|
|
17
|
+
export type GenDescMessage<RuntimeShape extends Message> = Omit<DescMessage, "field"> & {
|
|
18
|
+
field: Record<MessageFieldNames<RuntimeShape>, DescField>;
|
|
19
|
+
} & brand<RuntimeShape>;
|
|
20
|
+
/**
|
|
21
|
+
* Describes an enumeration in a protobuf source file.
|
|
22
|
+
*
|
|
23
|
+
* This type is identical to DescEnum, but carries additional type
|
|
24
|
+
* information.
|
|
25
|
+
*
|
|
26
|
+
* @private
|
|
27
|
+
*/
|
|
5
28
|
export type GenDescEnum<RuntimeShape> = DescEnum & brand<RuntimeShape>;
|
|
29
|
+
/**
|
|
30
|
+
* Describes an extension in a protobuf source file.
|
|
31
|
+
*
|
|
32
|
+
* This type is identical to DescExtension, but carries additional type
|
|
33
|
+
* information.
|
|
34
|
+
*
|
|
35
|
+
* @private
|
|
36
|
+
*/
|
|
6
37
|
export type GenDescExtension<Extendee extends Message = Message, RuntimeShape = unknown> = DescExtension & brand<Extendee, RuntimeShape>;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Describes a service declaration in a protobuf source file.
|
|
40
|
+
*
|
|
41
|
+
* This type is identical to DescService, but carries additional type
|
|
42
|
+
* information.
|
|
43
|
+
*
|
|
44
|
+
* @private
|
|
45
|
+
*/
|
|
46
|
+
export type GenDescService<RuntimeShape extends GenDescServiceMethods> = Omit<DescService, "method"> & {
|
|
47
|
+
method: {
|
|
48
|
+
[K in keyof RuntimeShape]: RuntimeShape[K] & DescMethod;
|
|
13
49
|
};
|
|
14
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
54
|
+
export type GenDescServiceMethods = Record<string, Pick<DescMethod, "input" | "output" | "methodKind">>;
|
|
15
55
|
declare class brand<A, B = unknown> {
|
|
16
56
|
protected a: A | boolean;
|
|
17
57
|
protected b: B | boolean;
|
|
18
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Union of the property names of all fields, including oneof members.
|
|
61
|
+
* For an anonymous message (no generated message shape), it's simply a string.
|
|
62
|
+
*/
|
|
63
|
+
type MessageFieldNames<T extends Message> = Message extends T ? string : Exclude<keyof {
|
|
64
|
+
[P in keyof T as P extends ("$typeName" | "$unknown") ? never : T[P] extends Oneof<infer K> ? K : P]-?: true;
|
|
65
|
+
}, number | symbol>;
|
|
66
|
+
type Oneof<K extends string> = {
|
|
67
|
+
case: K | undefined;
|
|
68
|
+
value?: unknown;
|
|
69
|
+
};
|
|
19
70
|
export {};
|
package/dist/esm/create.d.ts
CHANGED
package/dist/esm/create.js
CHANGED
|
@@ -12,16 +12,14 @@
|
|
|
12
12
|
// See the License for the specific language governing permissions and
|
|
13
13
|
// limitations under the License.
|
|
14
14
|
import { isMessage } from "./is-message.js";
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
15
|
+
import { ScalarType, } from "./descriptors.js";
|
|
16
|
+
import { scalarZeroValue } from "./reflect/scalar.js";
|
|
17
17
|
import { FieldError } from "./reflect/error.js";
|
|
18
18
|
import { isObject } from "./reflect/guard.js";
|
|
19
19
|
import { unsafeGet, unsafeOneofCase, unsafeSet } from "./reflect/unsafe.js";
|
|
20
20
|
import { isWrapperDesc } from "./wkt/wrappers.js";
|
|
21
21
|
// bootstrap-inject google.protobuf.Edition.EDITION_PROTO3: const $name: Edition.$localName = $number;
|
|
22
22
|
const EDITION_PROTO3 = 999;
|
|
23
|
-
// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.EXPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;
|
|
24
|
-
const EXPLICIT = 1;
|
|
25
23
|
// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;
|
|
26
24
|
const IMPLICIT = 2;
|
|
27
25
|
/**
|
|
@@ -45,7 +43,7 @@ export function create(messageDesc, init) {
|
|
|
45
43
|
*/
|
|
46
44
|
function initMessage(messageDesc, message, init) {
|
|
47
45
|
for (const member of messageDesc.members) {
|
|
48
|
-
let value = init[localName
|
|
46
|
+
let value = init[member.localName];
|
|
49
47
|
if (value == null) {
|
|
50
48
|
// intentionally ignore undefined and null
|
|
51
49
|
continue;
|
|
@@ -143,17 +141,9 @@ function createZeroMessage(desc) {
|
|
|
143
141
|
// the `optional` keyword generate an optional property.
|
|
144
142
|
msg = {};
|
|
145
143
|
for (const member of desc.members) {
|
|
146
|
-
if (member.kind == "
|
|
147
|
-
|
|
148
|
-
member.fieldKind == "enum" ||
|
|
149
|
-
member.fieldKind == "message") {
|
|
150
|
-
if (member.presence == EXPLICIT) {
|
|
151
|
-
// skips message fields and optional scalar/enum
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
144
|
+
if (member.kind == "oneof" || member.presence == IMPLICIT) {
|
|
145
|
+
msg[member.localName] = createZeroField(member);
|
|
155
146
|
}
|
|
156
|
-
msg[localName(member)] = createZeroField(member);
|
|
157
147
|
}
|
|
158
148
|
}
|
|
159
149
|
else {
|
|
@@ -180,12 +170,12 @@ function createZeroMessage(desc) {
|
|
|
180
170
|
continue;
|
|
181
171
|
}
|
|
182
172
|
if (member.presence == IMPLICIT) {
|
|
183
|
-
// implicit presence tracks field presence by zero values
|
|
184
|
-
//
|
|
173
|
+
// implicit presence tracks field presence by zero values - e.g. 0, false, "", are unset, 1, true, "x" are set.
|
|
174
|
+
// message, map, list fields are mutable, and also have IMPLICIT presence.
|
|
185
175
|
continue;
|
|
186
176
|
}
|
|
187
177
|
members.add(member);
|
|
188
|
-
prototype[localName
|
|
178
|
+
prototype[member.localName] = createZeroField(member);
|
|
189
179
|
}
|
|
190
180
|
messagePrototypes.set(desc, { prototype, members });
|
|
191
181
|
}
|
|
@@ -204,7 +194,7 @@ function createZeroMessage(desc) {
|
|
|
204
194
|
}
|
|
205
195
|
}
|
|
206
196
|
}
|
|
207
|
-
msg[localName
|
|
197
|
+
msg[member.localName] = createZeroField(member);
|
|
208
198
|
}
|
|
209
199
|
}
|
|
210
200
|
msg.$typeName = desc.typeName;
|
|
@@ -229,11 +219,11 @@ function createZeroField(field) {
|
|
|
229
219
|
}
|
|
230
220
|
const defaultValue = field.getDefaultValue();
|
|
231
221
|
if (defaultValue !== undefined) {
|
|
232
|
-
return field.fieldKind == "scalar" && field.
|
|
222
|
+
return field.fieldKind == "scalar" && field.longAsString
|
|
233
223
|
? defaultValue.toString()
|
|
234
224
|
: defaultValue;
|
|
235
225
|
}
|
|
236
226
|
return field.fieldKind == "scalar"
|
|
237
|
-
? scalarZeroValue(field.scalar, field.
|
|
227
|
+
? scalarZeroValue(field.scalar, field.longAsString)
|
|
238
228
|
: field.enum.values[0].number;
|
|
239
229
|
}
|