@bufbuild/protobuf 1.9.0 → 2.0.0-alpha.2
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 +6 -0
- package/dist/cjs/clone.js +77 -0
- package/dist/cjs/codegenv1/boot.d.ts +63 -0
- package/dist/cjs/codegenv1/boot.js +102 -0
- package/dist/cjs/codegenv1/embed.d.ts +43 -0
- package/dist/cjs/codegenv1/embed.js +238 -0
- package/dist/cjs/codegenv1/enum.d.ts +17 -0
- package/dist/cjs/codegenv1/enum.js +41 -0
- package/dist/cjs/codegenv1/extension.d.ts +9 -0
- package/dist/cjs/codegenv1/extension.js +29 -0
- package/dist/cjs/codegenv1/file.d.ts +7 -0
- package/dist/cjs/codegenv1/file.js +38 -0
- package/dist/cjs/codegenv1/index.d.ts +9 -0
- package/dist/cjs/codegenv1/index.js +38 -0
- package/dist/cjs/codegenv1/message.d.ts +9 -0
- package/dist/cjs/codegenv1/message.js +25 -0
- package/dist/cjs/codegenv1/restore-json-names.d.ts +5 -0
- package/dist/cjs/codegenv1/restore-json-names.js +30 -0
- package/dist/cjs/codegenv1/service.d.ts +8 -0
- package/dist/cjs/codegenv1/service.js +28 -0
- package/dist/cjs/codegenv1/symbols.d.ts +125 -0
- package/dist/cjs/codegenv1/symbols.js +67 -0
- package/dist/cjs/codegenv1/types.d.ts +72 -0
- package/dist/cjs/codegenv1/types.js +21 -0
- package/dist/cjs/create.d.ts +9 -0
- package/dist/cjs/create.js +231 -0
- package/dist/{esm/descriptor-set.d.ts → cjs/desc-types.d.ts} +162 -243
- package/dist/cjs/equals.d.ts +9 -0
- package/dist/cjs/equals.js +133 -0
- package/dist/cjs/extensions.d.ts +59 -0
- package/dist/cjs/extensions.js +169 -0
- package/dist/cjs/fields.d.ts +23 -0
- package/dist/cjs/fields.js +46 -0
- package/dist/cjs/from-binary.d.ts +34 -0
- package/dist/cjs/from-binary.js +211 -0
- package/dist/cjs/from-json.d.ts +48 -0
- package/dist/cjs/from-json.js +610 -0
- package/dist/cjs/index.d.ts +16 -42
- package/dist/cjs/index.js +23 -55
- package/dist/cjs/is-message.d.ts +5 -20
- package/dist/cjs/is-message.js +11 -29
- package/dist/cjs/json-value.d.ts +16 -0
- package/dist/cjs/proto-int64.js +2 -2
- package/dist/cjs/reflect/error.d.ts +9 -0
- package/dist/cjs/reflect/error.js +36 -0
- package/dist/cjs/reflect/guard.d.ts +20 -0
- package/dist/cjs/reflect/guard.js +78 -0
- package/dist/cjs/reflect/index.d.ts +8 -0
- package/dist/cjs/reflect/index.js +41 -0
- package/dist/cjs/reflect/names.d.ts +11 -0
- package/dist/cjs/reflect/names.js +74 -0
- package/dist/cjs/reflect/nested-types.d.ts +12 -0
- package/dist/cjs/reflect/nested-types.js +71 -0
- package/dist/cjs/reflect/reflect-check.d.ts +10 -0
- package/dist/cjs/reflect/reflect-check.js +150 -0
- package/dist/cjs/reflect/reflect-types.d.ts +284 -0
- package/dist/cjs/{extension.js → reflect/reflect-types.js} +1 -0
- package/dist/cjs/reflect/reflect.d.ts +32 -0
- package/dist/cjs/reflect/reflect.js +434 -0
- package/dist/cjs/reflect/registry.d.ts +82 -0
- package/dist/cjs/reflect/registry.js +879 -0
- package/dist/{esm → cjs/reflect}/scalar.d.ts +21 -1
- package/dist/cjs/reflect/scalar.js +298 -0
- package/dist/cjs/reflect/unsafe.d.ts +58 -0
- package/dist/cjs/reflect/unsafe.js +166 -0
- package/dist/cjs/to-binary.d.ts +24 -0
- package/dist/cjs/to-binary.js +192 -0
- package/dist/cjs/to-json.d.ts +50 -0
- package/dist/cjs/to-json.js +364 -0
- package/dist/cjs/types.d.ts +68 -0
- package/dist/cjs/wire/base64-encoding.d.ts +23 -0
- package/dist/cjs/wire/base64-encoding.js +156 -0
- package/dist/cjs/wire/binary-encoding.d.ts +244 -0
- package/dist/cjs/{binary-encoding.js → wire/binary-encoding.js} +27 -20
- package/dist/cjs/wire/index.d.ts +5 -0
- package/dist/cjs/wire/index.js +34 -0
- package/dist/cjs/wire/size-delimited.d.ts +51 -0
- package/dist/cjs/wire/size-delimited.js +154 -0
- package/dist/cjs/wire/text-encoding.d.ts +26 -0
- package/dist/cjs/wire/text-encoding.js +55 -0
- package/dist/cjs/wire/text-format.d.ts +14 -0
- package/dist/cjs/{private → wire}/text-format.js +12 -2
- package/dist/{esm/google → cjs/wire}/varint.d.ts +2 -2
- package/dist/cjs/{google → wire}/varint.js +11 -10
- package/dist/cjs/wkt/any.d.ts +38 -0
- package/dist/cjs/wkt/any.js +76 -0
- package/dist/{esm → cjs/wkt/gen}/google/protobuf/any_pb.d.ts +13 -27
- package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +27 -0
- package/dist/cjs/{google → wkt/gen/google}/protobuf/api_pb.d.ts +29 -38
- package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +39 -0
- package/dist/cjs/{google → wkt/gen/google}/protobuf/compiler/plugin_pb.d.ts +67 -75
- package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +68 -0
- package/dist/cjs/{google → wkt/gen/google}/protobuf/descriptor_pb.d.ts +564 -527
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +794 -0
- package/dist/cjs/{google → wkt/gen/google}/protobuf/duration_pb.d.ts +13 -18
- package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +27 -0
- package/dist/cjs/wkt/gen/google/protobuf/empty_pb.d.ts +24 -0
- package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +27 -0
- package/dist/{esm → cjs/wkt/gen}/google/protobuf/field_mask_pb.d.ts +13 -18
- package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +27 -0
- package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.d.ts +26 -0
- package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +27 -0
- package/dist/{esm → cjs/wkt/gen}/google/protobuf/struct_pb.d.ts +44 -55
- package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +59 -0
- package/dist/cjs/{google → wkt/gen/google}/protobuf/timestamp_pb.d.ts +13 -21
- package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +27 -0
- package/dist/{esm → cjs/wkt/gen}/google/protobuf/type_pb.d.ts +77 -80
- package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +242 -0
- package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +186 -0
- package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +67 -0
- package/dist/cjs/wkt/index.d.ts +15 -0
- package/dist/cjs/wkt/index.js +44 -0
- package/dist/cjs/wkt/timestamp.d.ts +21 -0
- package/dist/cjs/wkt/timestamp.js +58 -0
- package/dist/cjs/wkt/wrappers.d.ts +15 -0
- package/dist/cjs/wkt/wrappers.js +43 -0
- package/dist/esm/clone.d.ts +6 -0
- package/dist/esm/clone.js +73 -0
- package/dist/esm/codegenv1/boot.d.ts +63 -0
- package/dist/esm/codegenv1/boot.js +97 -0
- package/dist/esm/codegenv1/embed.d.ts +43 -0
- package/dist/esm/codegenv1/embed.js +232 -0
- package/dist/esm/codegenv1/enum.d.ts +17 -0
- package/dist/esm/codegenv1/enum.js +36 -0
- package/dist/esm/codegenv1/extension.d.ts +9 -0
- package/dist/esm/codegenv1/extension.js +25 -0
- package/dist/esm/codegenv1/file.d.ts +7 -0
- package/dist/esm/codegenv1/file.js +34 -0
- package/dist/esm/codegenv1/index.d.ts +9 -0
- package/dist/esm/codegenv1/index.js +22 -0
- package/dist/esm/codegenv1/message.d.ts +9 -0
- package/dist/esm/codegenv1/message.js +21 -0
- package/dist/esm/codegenv1/restore-json-names.d.ts +5 -0
- package/dist/esm/codegenv1/restore-json-names.js +26 -0
- package/dist/esm/codegenv1/service.d.ts +8 -0
- package/dist/esm/codegenv1/service.js +24 -0
- package/dist/esm/codegenv1/symbols.d.ts +125 -0
- package/dist/esm/codegenv1/symbols.js +64 -0
- package/dist/esm/codegenv1/types.d.ts +72 -0
- package/dist/esm/{field-list.js → codegenv1/types.js} +6 -0
- package/dist/esm/create.d.ts +9 -0
- package/dist/esm/create.js +228 -0
- package/dist/{cjs/descriptor-set.d.ts → esm/desc-types.d.ts} +162 -243
- package/dist/esm/equals.d.ts +9 -0
- package/dist/esm/equals.js +129 -0
- package/dist/esm/extensions.d.ts +59 -0
- package/dist/esm/extensions.js +159 -0
- package/dist/esm/fields.d.ts +23 -0
- package/dist/esm/fields.js +41 -0
- package/dist/esm/from-binary.d.ts +34 -0
- package/dist/esm/from-binary.js +205 -0
- package/dist/esm/from-json.d.ts +48 -0
- package/dist/esm/from-json.js +603 -0
- package/dist/esm/index.d.ts +16 -42
- package/dist/esm/index.js +13 -30
- package/dist/esm/is-message.d.ts +5 -20
- package/dist/esm/is-message.js +11 -29
- package/dist/esm/json-value.d.ts +16 -0
- package/dist/esm/proto-int64.js +2 -2
- package/dist/esm/reflect/error.d.ts +9 -0
- package/dist/esm/reflect/error.js +31 -0
- package/dist/esm/reflect/guard.d.ts +20 -0
- package/dist/esm/reflect/guard.js +70 -0
- package/dist/esm/reflect/index.d.ts +8 -0
- package/dist/esm/reflect/index.js +21 -0
- package/dist/esm/reflect/names.d.ts +11 -0
- package/dist/esm/reflect/names.js +69 -0
- package/dist/esm/reflect/nested-types.d.ts +12 -0
- package/dist/esm/reflect/nested-types.js +66 -0
- package/dist/esm/reflect/reflect-check.d.ts +10 -0
- package/dist/esm/reflect/reflect-check.js +143 -0
- package/dist/esm/reflect/reflect-types.d.ts +284 -0
- package/dist/esm/reflect/reflect-types.js +15 -0
- package/dist/esm/reflect/reflect.d.ts +32 -0
- package/dist/esm/reflect/reflect.js +428 -0
- package/dist/esm/reflect/registry.d.ts +82 -0
- package/dist/esm/reflect/registry.js +874 -0
- package/dist/{cjs → esm/reflect}/scalar.d.ts +21 -1
- package/dist/esm/reflect/scalar.js +289 -0
- package/dist/esm/reflect/unsafe.d.ts +58 -0
- package/dist/esm/reflect/unsafe.js +155 -0
- package/dist/esm/to-binary.d.ts +24 -0
- package/dist/esm/to-binary.js +187 -0
- package/dist/esm/to-json.d.ts +50 -0
- package/dist/esm/to-json.js +359 -0
- package/dist/esm/types.d.ts +68 -0
- package/dist/esm/wire/base64-encoding.d.ts +23 -0
- package/dist/esm/wire/base64-encoding.js +151 -0
- package/dist/esm/wire/binary-encoding.d.ts +244 -0
- package/dist/esm/{binary-encoding.js → wire/binary-encoding.js} +27 -20
- package/dist/esm/wire/index.d.ts +5 -0
- package/dist/esm/wire/index.js +18 -0
- package/dist/esm/wire/size-delimited.d.ts +51 -0
- package/dist/esm/wire/size-delimited.js +148 -0
- package/dist/esm/wire/text-encoding.d.ts +26 -0
- package/dist/esm/wire/text-encoding.js +50 -0
- package/dist/esm/wire/text-format.d.ts +14 -0
- package/dist/esm/{private → wire}/text-format.js +12 -2
- package/dist/{cjs/google → esm/wire}/varint.d.ts +2 -2
- package/dist/esm/{google → wire}/varint.js +11 -10
- package/dist/esm/wkt/any.d.ts +38 -0
- package/dist/esm/wkt/any.js +69 -0
- package/dist/{cjs → esm/wkt/gen}/google/protobuf/any_pb.d.ts +13 -27
- package/dist/esm/wkt/gen/google/protobuf/any_pb.js +24 -0
- package/dist/esm/{google → wkt/gen/google}/protobuf/api_pb.d.ts +29 -38
- package/dist/esm/wkt/gen/google/protobuf/api_pb.js +36 -0
- package/dist/esm/{google → wkt/gen/google}/protobuf/compiler/plugin_pb.d.ts +67 -75
- package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +65 -0
- package/dist/esm/{google → wkt/gen/google}/protobuf/descriptor_pb.d.ts +564 -527
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +790 -0
- package/dist/esm/{google → wkt/gen/google}/protobuf/duration_pb.d.ts +13 -18
- package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +24 -0
- package/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +24 -0
- package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +24 -0
- package/dist/{cjs → esm/wkt/gen}/google/protobuf/field_mask_pb.d.ts +13 -18
- package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +24 -0
- package/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +26 -0
- package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +24 -0
- package/dist/{cjs → esm/wkt/gen}/google/protobuf/struct_pb.d.ts +44 -55
- package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +56 -0
- package/dist/esm/{google → wkt/gen/google}/protobuf/timestamp_pb.d.ts +13 -21
- package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +24 -0
- package/dist/{cjs → esm/wkt/gen}/google/protobuf/type_pb.d.ts +77 -80
- package/dist/esm/wkt/gen/google/protobuf/type_pb.js +239 -0
- package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +186 -0
- package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +64 -0
- package/dist/esm/wkt/index.d.ts +15 -0
- package/dist/esm/wkt/index.js +28 -0
- package/dist/esm/wkt/timestamp.d.ts +21 -0
- package/dist/esm/wkt/timestamp.js +50 -0
- package/dist/esm/wkt/wrappers.d.ts +15 -0
- package/dist/esm/wkt/wrappers.js +38 -0
- package/package.json +37 -5
- package/dist/cjs/binary-encoding.d.ts +0 -420
- package/dist/cjs/binary-format.d.ts +0 -113
- package/dist/cjs/codegen-info.d.ts +0 -33
- package/dist/cjs/codegen-info.js +0 -69
- package/dist/cjs/create-descriptor-set.d.ts +0 -36
- package/dist/cjs/create-descriptor-set.js +0 -910
- package/dist/cjs/create-registry-from-desc.d.ts +0 -15
- package/dist/cjs/create-registry-from-desc.js +0 -264
- package/dist/cjs/create-registry.d.ts +0 -9
- package/dist/cjs/create-registry.js +0 -94
- package/dist/cjs/enum.d.ts +0 -35
- package/dist/cjs/extension-accessor.d.ts +0 -35
- package/dist/cjs/extension-accessor.js +0 -114
- package/dist/cjs/extension.d.ts +0 -24
- package/dist/cjs/field-list.d.ts +0 -27
- package/dist/cjs/field-list.js +0 -15
- package/dist/cjs/field.d.ts +0 -314
- package/dist/cjs/field.js +0 -15
- package/dist/cjs/google/protobuf/any_pb.js +0 -273
- package/dist/cjs/google/protobuf/api_pb.js +0 -316
- package/dist/cjs/google/protobuf/compiler/plugin_pb.js +0 -219
- package/dist/cjs/google/protobuf/descriptor_pb.js +0 -2034
- package/dist/cjs/google/protobuf/duration_pb.js +0 -169
- package/dist/cjs/google/protobuf/empty_pb.d.ts +0 -28
- package/dist/cjs/google/protobuf/empty_pb.js +0 -52
- package/dist/cjs/google/protobuf/field_mask_pb.js +0 -311
- package/dist/cjs/google/protobuf/source_context_pb.d.ts +0 -29
- package/dist/cjs/google/protobuf/source_context_pb.js +0 -55
- package/dist/cjs/google/protobuf/struct_pb.js +0 -240
- package/dist/cjs/google/protobuf/timestamp_pb.js +0 -213
- package/dist/cjs/google/protobuf/type_pb.js +0 -562
- package/dist/cjs/google/protobuf/wrappers_pb.d.ts +0 -267
- package/dist/cjs/google/protobuf/wrappers_pb.js +0 -569
- package/dist/cjs/json-format.d.ts +0 -111
- package/dist/cjs/json-format.js +0 -15
- package/dist/cjs/message-type.d.ts +0 -51
- package/dist/cjs/message-type.js +0 -15
- package/dist/cjs/message.d.ts +0 -131
- package/dist/cjs/message.js +0 -129
- package/dist/cjs/private/binary-format.d.ts +0 -7
- package/dist/cjs/private/binary-format.js +0 -430
- package/dist/cjs/private/enum.d.ts +0 -27
- package/dist/cjs/private/enum.js +0 -94
- package/dist/cjs/private/extensions.d.ts +0 -34
- package/dist/cjs/private/extensions.js +0 -86
- package/dist/cjs/private/feature-set.d.ts +0 -19
- package/dist/cjs/private/feature-set.js +0 -106
- package/dist/cjs/private/field-list.d.ts +0 -18
- package/dist/cjs/private/field-list.js +0 -76
- package/dist/cjs/private/field-normalize.d.ts +0 -9
- package/dist/cjs/private/field-normalize.js +0 -69
- package/dist/cjs/private/field-wrapper.d.ts +0 -25
- package/dist/cjs/private/field-wrapper.js +0 -57
- package/dist/cjs/private/field.d.ts +0 -16
- package/dist/cjs/private/field.js +0 -45
- package/dist/cjs/private/json-format.d.ts +0 -2
- package/dist/cjs/private/json-format.js +0 -626
- package/dist/cjs/private/message-type.d.ts +0 -18
- package/dist/cjs/private/message-type.js +0 -50
- package/dist/cjs/private/names.d.ts +0 -43
- package/dist/cjs/private/names.js +0 -278
- package/dist/cjs/private/options-map.d.ts +0 -7
- package/dist/cjs/private/options-map.js +0 -15
- package/dist/cjs/private/proto-runtime.d.ts +0 -53
- package/dist/cjs/private/proto-runtime.js +0 -41
- package/dist/cjs/private/reflect.d.ts +0 -9
- package/dist/cjs/private/reflect.js +0 -79
- package/dist/cjs/private/reify-wkt.d.ts +0 -102
- package/dist/cjs/private/reify-wkt.js +0 -172
- package/dist/cjs/private/scalars.d.ts +0 -18
- package/dist/cjs/private/scalars.js +0 -105
- package/dist/cjs/private/text-format.d.ts +0 -4
- package/dist/cjs/private/util-common.d.ts +0 -2
- package/dist/cjs/private/util-common.js +0 -237
- package/dist/cjs/private/util.d.ts +0 -38
- package/dist/cjs/private/util.js +0 -15
- package/dist/cjs/proto-base64.d.ts +0 -18
- package/dist/cjs/proto-base64.js +0 -128
- package/dist/cjs/proto-delimited.d.ts +0 -54
- package/dist/cjs/proto-delimited.js +0 -155
- package/dist/cjs/proto-double.d.ts +0 -5
- package/dist/cjs/proto-double.js +0 -29
- package/dist/cjs/proto2.d.ts +0 -4
- package/dist/cjs/proto2.js +0 -53
- package/dist/cjs/proto3.d.ts +0 -4
- package/dist/cjs/proto3.js +0 -56
- package/dist/cjs/scalar.js +0 -81
- package/dist/cjs/service-type.d.ts +0 -96
- package/dist/cjs/service-type.js +0 -53
- package/dist/cjs/to-plain-message.d.ts +0 -12
- package/dist/cjs/to-plain-message.js +0 -72
- package/dist/cjs/type-registry.d.ts +0 -57
- package/dist/cjs/type-registry.js +0 -15
- package/dist/esm/binary-encoding.d.ts +0 -420
- package/dist/esm/binary-format.d.ts +0 -113
- package/dist/esm/codegen-info.d.ts +0 -33
- package/dist/esm/codegen-info.js +0 -67
- package/dist/esm/create-descriptor-set.d.ts +0 -36
- package/dist/esm/create-descriptor-set.js +0 -906
- package/dist/esm/create-registry-from-desc.d.ts +0 -15
- package/dist/esm/create-registry-from-desc.js +0 -261
- package/dist/esm/create-registry.d.ts +0 -9
- package/dist/esm/create-registry.js +0 -90
- package/dist/esm/descriptor-set.js +0 -14
- package/dist/esm/enum.d.ts +0 -35
- package/dist/esm/extension-accessor.d.ts +0 -35
- package/dist/esm/extension-accessor.js +0 -107
- package/dist/esm/extension.d.ts +0 -24
- package/dist/esm/field-list.d.ts +0 -27
- package/dist/esm/field.d.ts +0 -314
- package/dist/esm/field.js +0 -14
- package/dist/esm/google/protobuf/any_pb.js +0 -269
- package/dist/esm/google/protobuf/api_pb.js +0 -310
- package/dist/esm/google/protobuf/compiler/plugin_pb.js +0 -212
- package/dist/esm/google/protobuf/descriptor_pb.js +0 -1999
- package/dist/esm/google/protobuf/duration_pb.js +0 -165
- package/dist/esm/google/protobuf/empty_pb.d.ts +0 -28
- package/dist/esm/google/protobuf/empty_pb.js +0 -48
- package/dist/esm/google/protobuf/field_mask_pb.js +0 -307
- package/dist/esm/google/protobuf/source_context_pb.d.ts +0 -29
- package/dist/esm/google/protobuf/source_context_pb.js +0 -51
- package/dist/esm/google/protobuf/struct_pb.js +0 -234
- package/dist/esm/google/protobuf/timestamp_pb.js +0 -209
- package/dist/esm/google/protobuf/type_pb.js +0 -554
- package/dist/esm/google/protobuf/wrappers_pb.d.ts +0 -267
- package/dist/esm/google/protobuf/wrappers_pb.js +0 -557
- package/dist/esm/json-format.d.ts +0 -111
- package/dist/esm/json-format.js +0 -14
- package/dist/esm/message-type.d.ts +0 -51
- package/dist/esm/message-type.js +0 -14
- package/dist/esm/message.d.ts +0 -131
- package/dist/esm/message.js +0 -125
- package/dist/esm/private/binary-format.d.ts +0 -7
- package/dist/esm/private/binary-format.js +0 -426
- package/dist/esm/private/enum.d.ts +0 -27
- package/dist/esm/private/enum.js +0 -87
- package/dist/esm/private/extensions.d.ts +0 -34
- package/dist/esm/private/extensions.js +0 -81
- package/dist/esm/private/feature-set.d.ts +0 -19
- package/dist/esm/private/feature-set.js +0 -102
- package/dist/esm/private/field-list.d.ts +0 -18
- package/dist/esm/private/field-list.js +0 -72
- package/dist/esm/private/field-normalize.d.ts +0 -9
- package/dist/esm/private/field-normalize.js +0 -65
- package/dist/esm/private/field-wrapper.d.ts +0 -25
- package/dist/esm/private/field-wrapper.js +0 -53
- package/dist/esm/private/field.d.ts +0 -16
- package/dist/esm/private/field.js +0 -41
- package/dist/esm/private/json-format.d.ts +0 -2
- package/dist/esm/private/json-format.js +0 -623
- package/dist/esm/private/message-type.d.ts +0 -18
- package/dist/esm/private/message-type.js +0 -46
- package/dist/esm/private/names.d.ts +0 -43
- package/dist/esm/private/names.js +0 -269
- package/dist/esm/private/options-map.d.ts +0 -7
- package/dist/esm/private/options-map.js +0 -14
- package/dist/esm/private/proto-runtime.d.ts +0 -53
- package/dist/esm/private/proto-runtime.js +0 -37
- package/dist/esm/private/reflect.d.ts +0 -9
- package/dist/esm/private/reflect.js +0 -74
- package/dist/esm/private/reify-wkt.d.ts +0 -102
- package/dist/esm/private/reify-wkt.js +0 -168
- package/dist/esm/private/scalars.d.ts +0 -18
- package/dist/esm/private/scalars.js +0 -99
- package/dist/esm/private/text-format.d.ts +0 -4
- package/dist/esm/private/util-common.d.ts +0 -2
- package/dist/esm/private/util-common.js +0 -234
- package/dist/esm/private/util.d.ts +0 -38
- package/dist/esm/private/util.js +0 -14
- package/dist/esm/proto-base64.d.ts +0 -18
- package/dist/esm/proto-base64.js +0 -125
- package/dist/esm/proto-delimited.d.ts +0 -54
- package/dist/esm/proto-delimited.js +0 -152
- package/dist/esm/proto-double.d.ts +0 -5
- package/dist/esm/proto-double.js +0 -26
- package/dist/esm/proto2.d.ts +0 -4
- package/dist/esm/proto2.js +0 -50
- package/dist/esm/proto3.d.ts +0 -4
- package/dist/esm/proto3.js +0 -53
- package/dist/esm/scalar.js +0 -78
- package/dist/esm/service-type.d.ts +0 -96
- package/dist/esm/service-type.js +0 -50
- package/dist/esm/to-plain-message.d.ts +0 -12
- package/dist/esm/to-plain-message.js +0 -70
- package/dist/esm/type-registry.d.ts +0 -57
- package/dist/esm/type-registry.js +0 -14
- /package/dist/cjs/{binary-format.js → desc-types.js} +0 -0
- /package/dist/cjs/{descriptor-set.js → json-value.js} +0 -0
- /package/dist/cjs/{private → reflect}/assert.d.ts +0 -0
- /package/dist/cjs/{private → reflect}/assert.js +0 -0
- /package/dist/cjs/{enum.js → types.js} +0 -0
- /package/dist/esm/{binary-format.js → desc-types.js} +0 -0
- /package/dist/esm/{enum.js → json-value.js} +0 -0
- /package/dist/esm/{private → reflect}/assert.d.ts +0 -0
- /package/dist/esm/{private → reflect}/assert.js +0 -0
- /package/dist/esm/{extension.js → types.js} +0 -0
|
@@ -0,0 +1,879 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright 2021-2024 Buf Technologies, Inc.
|
|
3
|
+
//
|
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
// you may not use this file except in compliance with the License.
|
|
6
|
+
// You may obtain a copy of the License at
|
|
7
|
+
//
|
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
//
|
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
// See the License for the specific language governing permissions and
|
|
14
|
+
// limitations under the License.
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.maximumEdition = exports.minimumEdition = exports.createFileRegistry = exports.createRegistry = void 0;
|
|
17
|
+
const assert_js_1 = require("./assert.js");
|
|
18
|
+
const text_format_js_1 = require("../wire/text-format.js");
|
|
19
|
+
const scalar_js_1 = require("./scalar.js");
|
|
20
|
+
const nested_types_js_1 = require("./nested-types.js");
|
|
21
|
+
const unsafe_js_1 = require("./unsafe.js");
|
|
22
|
+
const names_js_1 = require("./names.js");
|
|
23
|
+
/**
|
|
24
|
+
* Create a registry from the given inputs.
|
|
25
|
+
*
|
|
26
|
+
* An input can be:
|
|
27
|
+
* - Any message, enum, service, or extension descriptor, which adds just the
|
|
28
|
+
* descriptor for this type.
|
|
29
|
+
* - A file descriptor, which adds all typed defined in this file.
|
|
30
|
+
* - A registry, which adds all types from the registry.
|
|
31
|
+
*
|
|
32
|
+
* For duplicate descriptors (same type name), the one given last wins.
|
|
33
|
+
*/
|
|
34
|
+
function createRegistry(...input) {
|
|
35
|
+
const reg = createMutableRegistry();
|
|
36
|
+
for (const i of input) {
|
|
37
|
+
switch (i.kind) {
|
|
38
|
+
case "registry":
|
|
39
|
+
for (const n of i) {
|
|
40
|
+
reg.add(n);
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
case "file":
|
|
44
|
+
for (const n of (0, nested_types_js_1.nestedTypes)(i)) {
|
|
45
|
+
reg.add(n);
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
default:
|
|
49
|
+
reg.add(i);
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return reg;
|
|
54
|
+
}
|
|
55
|
+
exports.createRegistry = createRegistry;
|
|
56
|
+
function createFileRegistry(...args) {
|
|
57
|
+
const registry = createMutableRegistry();
|
|
58
|
+
if ("$typeName" in args[0] &&
|
|
59
|
+
args[0].$typeName == "google.protobuf.FileDescriptorSet") {
|
|
60
|
+
for (const file of args[0].file) {
|
|
61
|
+
addFile(file, registry);
|
|
62
|
+
}
|
|
63
|
+
return registry;
|
|
64
|
+
}
|
|
65
|
+
if ("$typeName" in args[0]) {
|
|
66
|
+
const input = args[0];
|
|
67
|
+
const resolve = args[1];
|
|
68
|
+
const seen = new Set();
|
|
69
|
+
// eslint-disable-next-line no-inner-declarations
|
|
70
|
+
function recurseDeps(file) {
|
|
71
|
+
const deps = [];
|
|
72
|
+
for (const protoFileName of file.dependency) {
|
|
73
|
+
if (registry.getFile(protoFileName) != undefined) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (seen.has(protoFileName)) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const dep = resolve(protoFileName);
|
|
80
|
+
if (!dep) {
|
|
81
|
+
throw new Error(`Unable to resolve ${protoFileName}, imported by ${file.name}`);
|
|
82
|
+
}
|
|
83
|
+
if ("kind" in dep) {
|
|
84
|
+
addDescFile(dep, registry);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
seen.add(dep.name);
|
|
88
|
+
deps.push(dep);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return [...deps, ...deps.flatMap((dep) => recurseDeps(dep))];
|
|
92
|
+
}
|
|
93
|
+
for (const file of [input, ...recurseDeps(input)].reverse()) {
|
|
94
|
+
addFile(file, registry);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
for (const fileReg of args) {
|
|
99
|
+
for (const file of fileReg.files) {
|
|
100
|
+
registry.add(file);
|
|
101
|
+
for (const type of (0, nested_types_js_1.nestedTypes)(file)) {
|
|
102
|
+
registry.add(type);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return registry;
|
|
108
|
+
}
|
|
109
|
+
exports.createFileRegistry = createFileRegistry;
|
|
110
|
+
/**
|
|
111
|
+
* Create a mutable file registry.
|
|
112
|
+
* @private
|
|
113
|
+
*/
|
|
114
|
+
function createMutableRegistry() {
|
|
115
|
+
const types = new Map();
|
|
116
|
+
const extendees = new Map();
|
|
117
|
+
const files = new Map();
|
|
118
|
+
return {
|
|
119
|
+
kind: "registry",
|
|
120
|
+
[Symbol.iterator]() {
|
|
121
|
+
return types.values();
|
|
122
|
+
},
|
|
123
|
+
get files() {
|
|
124
|
+
return files.values();
|
|
125
|
+
},
|
|
126
|
+
add(desc) {
|
|
127
|
+
switch (desc.kind) {
|
|
128
|
+
case "file":
|
|
129
|
+
files.set(desc.proto.name, desc);
|
|
130
|
+
break;
|
|
131
|
+
// @ts-expect-error TS7029
|
|
132
|
+
case "extension":
|
|
133
|
+
// eslint-disable-next-line no-case-declarations
|
|
134
|
+
let numberToExt = extendees.get(desc.extendee.typeName);
|
|
135
|
+
if (!numberToExt) {
|
|
136
|
+
extendees.set(desc.extendee.typeName, (numberToExt = new Map()));
|
|
137
|
+
}
|
|
138
|
+
numberToExt.set(desc.number, desc);
|
|
139
|
+
// eslint-disable-next-line no-fallthrough
|
|
140
|
+
default:
|
|
141
|
+
types.set(desc.typeName, desc);
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
remove(desc) {
|
|
145
|
+
switch (desc.kind) {
|
|
146
|
+
case "file":
|
|
147
|
+
files.delete(desc.proto.name);
|
|
148
|
+
break;
|
|
149
|
+
default:
|
|
150
|
+
types.delete(desc.typeName);
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
get(typeName) {
|
|
154
|
+
return types.get(typeName);
|
|
155
|
+
},
|
|
156
|
+
getFile(fileName) {
|
|
157
|
+
return files.get(fileName);
|
|
158
|
+
},
|
|
159
|
+
getMessage(typeName) {
|
|
160
|
+
const t = types.get(typeName);
|
|
161
|
+
return (t === null || t === void 0 ? void 0 : t.kind) == "message" ? t : undefined;
|
|
162
|
+
},
|
|
163
|
+
getEnum(typeName) {
|
|
164
|
+
const t = types.get(typeName);
|
|
165
|
+
return (t === null || t === void 0 ? void 0 : t.kind) == "enum" ? t : undefined;
|
|
166
|
+
},
|
|
167
|
+
getExtension(typeName) {
|
|
168
|
+
const t = types.get(typeName);
|
|
169
|
+
return (t === null || t === void 0 ? void 0 : t.kind) == "extension" ? t : undefined;
|
|
170
|
+
},
|
|
171
|
+
getExtensionFor(extendee, no) {
|
|
172
|
+
var _a;
|
|
173
|
+
return (_a = extendees.get(extendee.typeName)) === null || _a === void 0 ? void 0 : _a.get(no);
|
|
174
|
+
},
|
|
175
|
+
getService(typeName) {
|
|
176
|
+
const t = types.get(typeName);
|
|
177
|
+
return (t === null || t === void 0 ? void 0 : t.kind) == "service" ? t : undefined;
|
|
178
|
+
},
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Add the file descriptor and the types it contains to the registry.
|
|
183
|
+
*/
|
|
184
|
+
function addDescFile(file, reg) {
|
|
185
|
+
reg.add(file);
|
|
186
|
+
for (const type of (0, nested_types_js_1.nestedTypes)(file)) {
|
|
187
|
+
reg.add(type);
|
|
188
|
+
}
|
|
189
|
+
for (const dep of file.dependencies) {
|
|
190
|
+
addDescFile(dep, reg);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// bootstrap-inject google.protobuf.Edition.EDITION_PROTO2: const $name: Edition.$localName = $number;
|
|
194
|
+
const EDITION_PROTO2 = 998;
|
|
195
|
+
// bootstrap-inject google.protobuf.Edition.EDITION_PROTO3: const $name: Edition.$localName = $number;
|
|
196
|
+
const EDITION_PROTO3 = 999;
|
|
197
|
+
// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_STRING: const $name: FieldDescriptorProto_Type.$localName = $number;
|
|
198
|
+
const TYPE_STRING = 9;
|
|
199
|
+
// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_GROUP: const $name: FieldDescriptorProto_Type.$localName = $number;
|
|
200
|
+
const TYPE_GROUP = 10;
|
|
201
|
+
// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_MESSAGE: const $name: FieldDescriptorProto_Type.$localName = $number;
|
|
202
|
+
const TYPE_MESSAGE = 11;
|
|
203
|
+
// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_BYTES: const $name: FieldDescriptorProto_Type.$localName = $number;
|
|
204
|
+
const TYPE_BYTES = 12;
|
|
205
|
+
// bootstrap-inject google.protobuf.FieldDescriptorProto.Type.TYPE_ENUM: const $name: FieldDescriptorProto_Type.$localName = $number;
|
|
206
|
+
const TYPE_ENUM = 14;
|
|
207
|
+
// bootstrap-inject google.protobuf.FieldDescriptorProto.Label.LABEL_REPEATED: const $name: FieldDescriptorProto_Label.$localName = $number;
|
|
208
|
+
const LABEL_REPEATED = 3;
|
|
209
|
+
// bootstrap-inject google.protobuf.FieldDescriptorProto.Label.LABEL_REQUIRED: const $name: FieldDescriptorProto_Label.$localName = $number;
|
|
210
|
+
const LABEL_REQUIRED = 2;
|
|
211
|
+
// bootstrap-inject google.protobuf.FieldOptions.JSType.JS_STRING: const $name: FieldOptions_JSType.$localName = $number;
|
|
212
|
+
const JS_STRING = 1;
|
|
213
|
+
// bootstrap-inject google.protobuf.MethodOptions.IdempotencyLevel.IDEMPOTENCY_UNKNOWN: const $name: MethodOptions_IdempotencyLevel.$localName = $number;
|
|
214
|
+
const IDEMPOTENCY_UNKNOWN = 0;
|
|
215
|
+
// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.EXPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;
|
|
216
|
+
const EXPLICIT = 1;
|
|
217
|
+
// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;
|
|
218
|
+
const IMPLICIT = 2;
|
|
219
|
+
// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.LEGACY_REQUIRED: const $name: FeatureSet_FieldPresence.$localName = $number;
|
|
220
|
+
const LEGACY_REQUIRED = 3;
|
|
221
|
+
// bootstrap-inject google.protobuf.FeatureSet.RepeatedFieldEncoding.PACKED: const $name: FeatureSet_RepeatedFieldEncoding.$localName = $number;
|
|
222
|
+
const PACKED = 1;
|
|
223
|
+
// bootstrap-inject google.protobuf.FeatureSet.MessageEncoding.DELIMITED: const $name: FeatureSet_MessageEncoding.$localName = $number;
|
|
224
|
+
const DELIMITED = 2;
|
|
225
|
+
// bootstrap-inject google.protobuf.FeatureSet.EnumType.OPEN: const $name: FeatureSet_EnumType.$localName = $number;
|
|
226
|
+
const OPEN = 1;
|
|
227
|
+
// prettier-ignore
|
|
228
|
+
// bootstrap-inject defaults: EDITION_PROTO2 to EDITION_2023: export const minimumEdition: SupportedEdition = $minimumEdition, maximumEdition: SupportedEdition = $maximumEdition;
|
|
229
|
+
// generated from protoc v27.0-rc2
|
|
230
|
+
exports.minimumEdition = 998, exports.maximumEdition = 1000;
|
|
231
|
+
const featureDefaults = {
|
|
232
|
+
// EDITION_PROTO2
|
|
233
|
+
998: {
|
|
234
|
+
fieldPresence: 1, // EXPLICIT,
|
|
235
|
+
enumType: 2, // CLOSED,
|
|
236
|
+
repeatedFieldEncoding: 2, // EXPANDED,
|
|
237
|
+
utf8Validation: 3, // NONE,
|
|
238
|
+
messageEncoding: 1, // LENGTH_PREFIXED,
|
|
239
|
+
jsonFormat: 2, // LEGACY_BEST_EFFORT,
|
|
240
|
+
},
|
|
241
|
+
// EDITION_PROTO3
|
|
242
|
+
999: {
|
|
243
|
+
fieldPresence: 2, // IMPLICIT,
|
|
244
|
+
enumType: 1, // OPEN,
|
|
245
|
+
repeatedFieldEncoding: 1, // PACKED,
|
|
246
|
+
utf8Validation: 2, // VERIFY,
|
|
247
|
+
messageEncoding: 1, // LENGTH_PREFIXED,
|
|
248
|
+
jsonFormat: 1, // ALLOW,
|
|
249
|
+
},
|
|
250
|
+
// EDITION_2023
|
|
251
|
+
1000: {
|
|
252
|
+
fieldPresence: 1, // EXPLICIT,
|
|
253
|
+
enumType: 1, // OPEN,
|
|
254
|
+
repeatedFieldEncoding: 1, // PACKED,
|
|
255
|
+
utf8Validation: 2, // VERIFY,
|
|
256
|
+
messageEncoding: 1, // LENGTH_PREFIXED,
|
|
257
|
+
jsonFormat: 1, // ALLOW,
|
|
258
|
+
},
|
|
259
|
+
};
|
|
260
|
+
/**
|
|
261
|
+
* Create a descriptor for a file, add it to the registry.
|
|
262
|
+
*/
|
|
263
|
+
function addFile(proto, reg) {
|
|
264
|
+
var _a, _b;
|
|
265
|
+
const file = {
|
|
266
|
+
kind: "file",
|
|
267
|
+
proto,
|
|
268
|
+
deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,
|
|
269
|
+
edition: getFileEdition(proto),
|
|
270
|
+
name: proto.name.replace(/\.proto$/, ""),
|
|
271
|
+
dependencies: findFileDependencies(proto, reg),
|
|
272
|
+
enums: [],
|
|
273
|
+
messages: [],
|
|
274
|
+
extensions: [],
|
|
275
|
+
services: [],
|
|
276
|
+
toString() {
|
|
277
|
+
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions -- we asserted above
|
|
278
|
+
return `file ${proto.name}`;
|
|
279
|
+
},
|
|
280
|
+
};
|
|
281
|
+
const mapEntriesStore = new Map();
|
|
282
|
+
const mapEntries = {
|
|
283
|
+
get(typeName) {
|
|
284
|
+
return mapEntriesStore.get(typeName);
|
|
285
|
+
},
|
|
286
|
+
add(desc) {
|
|
287
|
+
var _a;
|
|
288
|
+
(0, assert_js_1.assert)(((_a = desc.proto.options) === null || _a === void 0 ? void 0 : _a.mapEntry) === true);
|
|
289
|
+
mapEntriesStore.set(desc.typeName, desc);
|
|
290
|
+
},
|
|
291
|
+
};
|
|
292
|
+
for (const enumProto of proto.enumType) {
|
|
293
|
+
addEnum(enumProto, file, undefined, reg);
|
|
294
|
+
}
|
|
295
|
+
for (const messageProto of proto.messageType) {
|
|
296
|
+
addMessage(messageProto, file, undefined, reg, mapEntries);
|
|
297
|
+
}
|
|
298
|
+
for (const serviceProto of proto.service) {
|
|
299
|
+
addService(serviceProto, file, reg);
|
|
300
|
+
}
|
|
301
|
+
addExtensions(file, reg);
|
|
302
|
+
for (const mapEntry of mapEntriesStore.values()) {
|
|
303
|
+
// to create a map field, we need access to the map entry's fields
|
|
304
|
+
addFields(mapEntry, reg, mapEntries);
|
|
305
|
+
}
|
|
306
|
+
for (const message of file.messages) {
|
|
307
|
+
addFields(message, reg, mapEntries);
|
|
308
|
+
addExtensions(message, reg);
|
|
309
|
+
}
|
|
310
|
+
reg.add(file);
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Create descriptors for extensions, and add them to the message / file,
|
|
314
|
+
* and to our cart.
|
|
315
|
+
* Recurses into nested types.
|
|
316
|
+
*/
|
|
317
|
+
function addExtensions(desc, reg) {
|
|
318
|
+
switch (desc.kind) {
|
|
319
|
+
case "file":
|
|
320
|
+
for (const proto of desc.proto.extension) {
|
|
321
|
+
const ext = newField(proto, desc, reg);
|
|
322
|
+
desc.extensions.push(ext);
|
|
323
|
+
reg.add(ext);
|
|
324
|
+
}
|
|
325
|
+
break;
|
|
326
|
+
case "message":
|
|
327
|
+
for (const proto of desc.proto.extension) {
|
|
328
|
+
const ext = newField(proto, desc, reg);
|
|
329
|
+
desc.nestedExtensions.push(ext);
|
|
330
|
+
reg.add(ext);
|
|
331
|
+
}
|
|
332
|
+
for (const message of desc.nestedMessages) {
|
|
333
|
+
addExtensions(message, reg);
|
|
334
|
+
}
|
|
335
|
+
break;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Create descriptors for fields and oneof groups, and add them to the message.
|
|
340
|
+
* Recurses into nested types.
|
|
341
|
+
*/
|
|
342
|
+
function addFields(message, reg, mapEntries) {
|
|
343
|
+
const allOneofs = message.proto.oneofDecl.map((proto) => newOneof(proto, message));
|
|
344
|
+
const oneofsSeen = new Set();
|
|
345
|
+
for (const proto of message.proto.field) {
|
|
346
|
+
const oneof = findOneof(proto, allOneofs);
|
|
347
|
+
const field = newField(proto, message, reg, oneof, mapEntries);
|
|
348
|
+
message.fields.push(field);
|
|
349
|
+
message.field[field.localName] = field;
|
|
350
|
+
if (oneof === undefined) {
|
|
351
|
+
message.members.push(field);
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
oneof.fields.push(field);
|
|
355
|
+
if (!oneofsSeen.has(oneof)) {
|
|
356
|
+
oneofsSeen.add(oneof);
|
|
357
|
+
message.members.push(oneof);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
for (const oneof of allOneofs.filter((o) => oneofsSeen.has(o))) {
|
|
362
|
+
message.oneofs.push(oneof);
|
|
363
|
+
}
|
|
364
|
+
for (const child of message.nestedMessages) {
|
|
365
|
+
addFields(child, reg, mapEntries);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Create a descriptor for an enumeration, and add it our cart and to the
|
|
370
|
+
* parent type, if any.
|
|
371
|
+
*/
|
|
372
|
+
function addEnum(proto, file, parent, reg) {
|
|
373
|
+
var _a, _b, _c;
|
|
374
|
+
const sharedPrefix = findEnumSharedPrefix(proto.name, proto.value);
|
|
375
|
+
const desc = {
|
|
376
|
+
kind: "enum",
|
|
377
|
+
proto,
|
|
378
|
+
deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,
|
|
379
|
+
file,
|
|
380
|
+
parent,
|
|
381
|
+
open: true,
|
|
382
|
+
name: proto.name,
|
|
383
|
+
typeName: makeTypeName(proto, parent, file),
|
|
384
|
+
values: [],
|
|
385
|
+
sharedPrefix,
|
|
386
|
+
toString() {
|
|
387
|
+
return `enum ${this.typeName}`;
|
|
388
|
+
},
|
|
389
|
+
};
|
|
390
|
+
desc.open = isEnumOpen(desc);
|
|
391
|
+
reg.add(desc);
|
|
392
|
+
proto.value.forEach((proto) => {
|
|
393
|
+
var _a, _b;
|
|
394
|
+
const name = proto.name;
|
|
395
|
+
desc.values.push({
|
|
396
|
+
kind: "enum_value",
|
|
397
|
+
proto,
|
|
398
|
+
deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,
|
|
399
|
+
parent: desc,
|
|
400
|
+
name: proto.name,
|
|
401
|
+
localName: (0, names_js_1.safeObjectProperty)(sharedPrefix == undefined ? name : name.substring(sharedPrefix.length)),
|
|
402
|
+
number: proto.number,
|
|
403
|
+
toString() {
|
|
404
|
+
return `enum value ${desc.typeName}.${this.name}`;
|
|
405
|
+
},
|
|
406
|
+
});
|
|
407
|
+
});
|
|
408
|
+
((_c = parent === null || parent === void 0 ? void 0 : parent.nestedEnums) !== null && _c !== void 0 ? _c : file.enums).push(desc);
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Create a descriptor for a message, including nested types, and add it to our
|
|
412
|
+
* cart. Note that this does not create descriptors fields.
|
|
413
|
+
*/
|
|
414
|
+
function addMessage(proto, file, parent, reg, mapEntries) {
|
|
415
|
+
var _a, _b, _c, _d;
|
|
416
|
+
const desc = {
|
|
417
|
+
kind: "message",
|
|
418
|
+
proto,
|
|
419
|
+
deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,
|
|
420
|
+
file,
|
|
421
|
+
parent,
|
|
422
|
+
name: proto.name,
|
|
423
|
+
typeName: makeTypeName(proto, parent, file),
|
|
424
|
+
fields: [],
|
|
425
|
+
field: {},
|
|
426
|
+
oneofs: [],
|
|
427
|
+
members: [],
|
|
428
|
+
nestedEnums: [],
|
|
429
|
+
nestedMessages: [],
|
|
430
|
+
nestedExtensions: [],
|
|
431
|
+
toString() {
|
|
432
|
+
return `message ${this.typeName}`;
|
|
433
|
+
},
|
|
434
|
+
};
|
|
435
|
+
if (((_c = proto.options) === null || _c === void 0 ? void 0 : _c.mapEntry) === true) {
|
|
436
|
+
mapEntries.add(desc);
|
|
437
|
+
}
|
|
438
|
+
else {
|
|
439
|
+
((_d = parent === null || parent === void 0 ? void 0 : parent.nestedMessages) !== null && _d !== void 0 ? _d : file.messages).push(desc);
|
|
440
|
+
reg.add(desc);
|
|
441
|
+
}
|
|
442
|
+
for (const enumProto of proto.enumType) {
|
|
443
|
+
addEnum(enumProto, file, desc, reg);
|
|
444
|
+
}
|
|
445
|
+
for (const messageProto of proto.nestedType) {
|
|
446
|
+
addMessage(messageProto, file, desc, reg, mapEntries);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
/**
|
|
450
|
+
* Create a descriptor for a service, including methods, and add it to our
|
|
451
|
+
* cart.
|
|
452
|
+
*/
|
|
453
|
+
function addService(proto, file, reg) {
|
|
454
|
+
var _a, _b;
|
|
455
|
+
const desc = {
|
|
456
|
+
kind: "service",
|
|
457
|
+
proto,
|
|
458
|
+
deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,
|
|
459
|
+
file,
|
|
460
|
+
name: proto.name,
|
|
461
|
+
typeName: makeTypeName(proto, undefined, file),
|
|
462
|
+
methods: [],
|
|
463
|
+
toString() {
|
|
464
|
+
return `service ${this.typeName}`;
|
|
465
|
+
},
|
|
466
|
+
};
|
|
467
|
+
file.services.push(desc);
|
|
468
|
+
reg.add(desc);
|
|
469
|
+
for (const methodProto of proto.method) {
|
|
470
|
+
desc.methods.push(newMethod(methodProto, desc, reg));
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Create a descriptor for a method.
|
|
475
|
+
*/
|
|
476
|
+
function newMethod(proto, parent, reg) {
|
|
477
|
+
var _a, _b, _c, _d;
|
|
478
|
+
let methodKind;
|
|
479
|
+
if (proto.clientStreaming && proto.serverStreaming) {
|
|
480
|
+
methodKind = "bidi_streaming";
|
|
481
|
+
}
|
|
482
|
+
else if (proto.clientStreaming) {
|
|
483
|
+
methodKind = "client_streaming";
|
|
484
|
+
}
|
|
485
|
+
else if (proto.serverStreaming) {
|
|
486
|
+
methodKind = "server_streaming";
|
|
487
|
+
}
|
|
488
|
+
else {
|
|
489
|
+
methodKind = "unary";
|
|
490
|
+
}
|
|
491
|
+
const input = reg.getMessage(trimLeadingDot(proto.inputType));
|
|
492
|
+
const output = reg.getMessage(trimLeadingDot(proto.outputType));
|
|
493
|
+
(0, assert_js_1.assert)(input, `invalid MethodDescriptorProto: input_type ${proto.inputType} not found`);
|
|
494
|
+
(0, assert_js_1.assert)(output, `invalid MethodDescriptorProto: output_type ${proto.inputType} not found`);
|
|
495
|
+
const name = proto.name;
|
|
496
|
+
return {
|
|
497
|
+
kind: "rpc",
|
|
498
|
+
proto,
|
|
499
|
+
deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,
|
|
500
|
+
parent,
|
|
501
|
+
name,
|
|
502
|
+
localName: (0, names_js_1.safeObjectProperty)(name.length
|
|
503
|
+
? (0, names_js_1.safeObjectProperty)(name[0].toLowerCase() + name.substring(1))
|
|
504
|
+
: name),
|
|
505
|
+
methodKind,
|
|
506
|
+
input,
|
|
507
|
+
output,
|
|
508
|
+
idempotency: (_d = (_c = proto.options) === null || _c === void 0 ? void 0 : _c.idempotencyLevel) !== null && _d !== void 0 ? _d : IDEMPOTENCY_UNKNOWN,
|
|
509
|
+
toString() {
|
|
510
|
+
return `rpc ${parent.typeName}.${name}`;
|
|
511
|
+
},
|
|
512
|
+
};
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Create a descriptor for a oneof group.
|
|
516
|
+
*/
|
|
517
|
+
function newOneof(proto, parent) {
|
|
518
|
+
return {
|
|
519
|
+
kind: "oneof",
|
|
520
|
+
proto,
|
|
521
|
+
deprecated: false,
|
|
522
|
+
parent,
|
|
523
|
+
fields: [],
|
|
524
|
+
name: proto.name,
|
|
525
|
+
localName: (0, names_js_1.safeObjectProperty)((0, names_js_1.protoCamelCase)(proto.name)),
|
|
526
|
+
toString() {
|
|
527
|
+
return `oneof ${parent.typeName}.${this.name}`;
|
|
528
|
+
},
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
function newField(proto, parentOrFile, reg, oneof, mapEntries) {
|
|
532
|
+
var _a, _b, _c;
|
|
533
|
+
const isExtension = mapEntries === undefined;
|
|
534
|
+
const field = {
|
|
535
|
+
kind: "field",
|
|
536
|
+
proto,
|
|
537
|
+
deprecated: (_b = (_a = proto.options) === null || _a === void 0 ? void 0 : _a.deprecated) !== null && _b !== void 0 ? _b : false,
|
|
538
|
+
name: proto.name,
|
|
539
|
+
number: proto.number,
|
|
540
|
+
scalar: undefined,
|
|
541
|
+
message: undefined,
|
|
542
|
+
enum: undefined,
|
|
543
|
+
presence: getFieldPresence(proto, oneof, isExtension, parentOrFile),
|
|
544
|
+
listKind: undefined,
|
|
545
|
+
mapKind: undefined,
|
|
546
|
+
mapKey: undefined,
|
|
547
|
+
delimitedEncoding: undefined,
|
|
548
|
+
packed: undefined,
|
|
549
|
+
longType: undefined,
|
|
550
|
+
getDefaultValue: undefined,
|
|
551
|
+
};
|
|
552
|
+
if (isExtension) {
|
|
553
|
+
// extension field
|
|
554
|
+
const file = parentOrFile.kind == "file" ? parentOrFile : parentOrFile.file;
|
|
555
|
+
const parent = parentOrFile.kind == "file" ? undefined : parentOrFile;
|
|
556
|
+
const typeName = makeTypeName(proto, parent, file);
|
|
557
|
+
field.kind = "extension";
|
|
558
|
+
field.file = file;
|
|
559
|
+
field.parent = parent;
|
|
560
|
+
field.oneof = undefined;
|
|
561
|
+
field.typeName = typeName;
|
|
562
|
+
field.jsonName = `[${typeName}]`; // option json_name is not allowed on extension fields
|
|
563
|
+
field.toString = () => `extension ${typeName}`;
|
|
564
|
+
const extendee = reg.getMessage(trimLeadingDot(proto.extendee));
|
|
565
|
+
(0, assert_js_1.assert)(extendee, `invalid FieldDescriptorProto: extendee ${proto.extendee} not found`);
|
|
566
|
+
field.extendee = extendee;
|
|
567
|
+
}
|
|
568
|
+
else {
|
|
569
|
+
// regular field
|
|
570
|
+
const parent = parentOrFile;
|
|
571
|
+
(0, assert_js_1.assert)(parent.kind == "message");
|
|
572
|
+
field.parent = parent;
|
|
573
|
+
field.oneof = oneof;
|
|
574
|
+
field.localName = oneof
|
|
575
|
+
? (0, names_js_1.protoCamelCase)(proto.name)
|
|
576
|
+
: (0, names_js_1.safeObjectProperty)((0, names_js_1.protoCamelCase)(proto.name));
|
|
577
|
+
field.jsonName = proto.jsonName;
|
|
578
|
+
field.toString = () => `field ${parent.typeName}.${proto.name}`;
|
|
579
|
+
}
|
|
580
|
+
const label = proto.label;
|
|
581
|
+
const type = proto.type;
|
|
582
|
+
const jstype = (_c = proto.options) === null || _c === void 0 ? void 0 : _c.jstype;
|
|
583
|
+
if (label === LABEL_REPEATED) {
|
|
584
|
+
// list or map field
|
|
585
|
+
const mapEntry = type == TYPE_MESSAGE
|
|
586
|
+
? mapEntries === null || mapEntries === void 0 ? void 0 : mapEntries.get(trimLeadingDot(proto.typeName))
|
|
587
|
+
: undefined;
|
|
588
|
+
if (mapEntry) {
|
|
589
|
+
// map field
|
|
590
|
+
field.fieldKind = "map";
|
|
591
|
+
const keyField = mapEntry.fields.find((f) => f.number === 1);
|
|
592
|
+
(0, assert_js_1.assert)(keyField);
|
|
593
|
+
(0, assert_js_1.assert)(keyField.fieldKind == "scalar");
|
|
594
|
+
(0, assert_js_1.assert)(keyField.scalar != scalar_js_1.ScalarType.BYTES &&
|
|
595
|
+
keyField.scalar != scalar_js_1.ScalarType.FLOAT &&
|
|
596
|
+
keyField.scalar != scalar_js_1.ScalarType.DOUBLE);
|
|
597
|
+
const valueField = mapEntry.fields.find((f) => f.number === 2);
|
|
598
|
+
(0, assert_js_1.assert)(valueField);
|
|
599
|
+
(0, assert_js_1.assert)(valueField.fieldKind != "list" && valueField.fieldKind != "map");
|
|
600
|
+
field.mapKey = keyField.scalar;
|
|
601
|
+
field.mapKind = valueField.fieldKind;
|
|
602
|
+
field.message = valueField.message;
|
|
603
|
+
field.delimitedEncoding = false; // map fields are always LENGTH_PREFIXED
|
|
604
|
+
field.enum = valueField.enum;
|
|
605
|
+
field.scalar = valueField.scalar;
|
|
606
|
+
return field;
|
|
607
|
+
}
|
|
608
|
+
// list field
|
|
609
|
+
field.fieldKind = "list";
|
|
610
|
+
switch (type) {
|
|
611
|
+
case TYPE_MESSAGE:
|
|
612
|
+
case TYPE_GROUP:
|
|
613
|
+
field.listKind = "message";
|
|
614
|
+
field.message = reg.getMessage(trimLeadingDot(proto.typeName));
|
|
615
|
+
(0, assert_js_1.assert)(field.message);
|
|
616
|
+
field.delimitedEncoding = isDelimitedEncoding(proto, parentOrFile);
|
|
617
|
+
break;
|
|
618
|
+
case TYPE_ENUM:
|
|
619
|
+
field.listKind = "enum";
|
|
620
|
+
field.enum = reg.getEnum(trimLeadingDot(proto.typeName));
|
|
621
|
+
(0, assert_js_1.assert)(field.enum);
|
|
622
|
+
break;
|
|
623
|
+
default:
|
|
624
|
+
field.listKind = "scalar";
|
|
625
|
+
field.scalar = type;
|
|
626
|
+
field.longType =
|
|
627
|
+
jstype == JS_STRING ? scalar_js_1.LongType.STRING : scalar_js_1.LongType.BIGINT;
|
|
628
|
+
break;
|
|
629
|
+
}
|
|
630
|
+
field.packed = isPackedField(proto, parentOrFile);
|
|
631
|
+
return field;
|
|
632
|
+
}
|
|
633
|
+
// singular
|
|
634
|
+
switch (type) {
|
|
635
|
+
case TYPE_MESSAGE:
|
|
636
|
+
case TYPE_GROUP:
|
|
637
|
+
field.fieldKind = "message";
|
|
638
|
+
field.message = reg.getMessage(trimLeadingDot(proto.typeName));
|
|
639
|
+
(0, assert_js_1.assert)(field.message, `invalid FieldDescriptorProto: type_name ${proto.typeName} not found`);
|
|
640
|
+
field.delimitedEncoding = isDelimitedEncoding(proto, parentOrFile);
|
|
641
|
+
field.getDefaultValue = () => undefined;
|
|
642
|
+
break;
|
|
643
|
+
case TYPE_ENUM: {
|
|
644
|
+
const enumeration = reg.getEnum(trimLeadingDot(proto.typeName));
|
|
645
|
+
(0, assert_js_1.assert)(enumeration !== undefined, `invalid FieldDescriptorProto: type_name ${proto.typeName} not found`);
|
|
646
|
+
field.fieldKind = "enum";
|
|
647
|
+
field.enum = reg.getEnum(trimLeadingDot(proto.typeName));
|
|
648
|
+
field.getDefaultValue = () => {
|
|
649
|
+
return (0, unsafe_js_1.unsafeIsSetExplicit)(proto, "defaultValue")
|
|
650
|
+
? (0, text_format_js_1.parseTextFormatEnumValue)(enumeration, proto.defaultValue)
|
|
651
|
+
: undefined;
|
|
652
|
+
};
|
|
653
|
+
break;
|
|
654
|
+
}
|
|
655
|
+
default: {
|
|
656
|
+
field.fieldKind = "scalar";
|
|
657
|
+
field.scalar = type;
|
|
658
|
+
field.longType = jstype == JS_STRING ? scalar_js_1.LongType.STRING : scalar_js_1.LongType.BIGINT;
|
|
659
|
+
field.getDefaultValue = () => {
|
|
660
|
+
return (0, unsafe_js_1.unsafeIsSetExplicit)(proto, "defaultValue")
|
|
661
|
+
? (0, text_format_js_1.parseTextFormatScalarValue)(type, proto.defaultValue)
|
|
662
|
+
: undefined;
|
|
663
|
+
};
|
|
664
|
+
break;
|
|
665
|
+
}
|
|
666
|
+
}
|
|
667
|
+
return field;
|
|
668
|
+
}
|
|
669
|
+
/**
|
|
670
|
+
* Parse the "syntax" and "edition" fields, returning one of the supported
|
|
671
|
+
* editions.
|
|
672
|
+
*/
|
|
673
|
+
function getFileEdition(proto) {
|
|
674
|
+
switch (proto.syntax) {
|
|
675
|
+
case "":
|
|
676
|
+
case "proto2":
|
|
677
|
+
return EDITION_PROTO2;
|
|
678
|
+
case "proto3":
|
|
679
|
+
return EDITION_PROTO3;
|
|
680
|
+
case "editions":
|
|
681
|
+
if (proto.edition in featureDefaults) {
|
|
682
|
+
return proto.edition;
|
|
683
|
+
}
|
|
684
|
+
throw new Error(`${proto.name}: unsupported edition`);
|
|
685
|
+
default:
|
|
686
|
+
throw new Error(`${proto.name}: unsupported syntax "${proto.syntax}"`);
|
|
687
|
+
}
|
|
688
|
+
}
|
|
689
|
+
/**
|
|
690
|
+
* Resolve dependencies of FileDescriptorProto to DescFile.
|
|
691
|
+
*/
|
|
692
|
+
function findFileDependencies(proto, reg) {
|
|
693
|
+
return proto.dependency.map((wantName) => {
|
|
694
|
+
const dep = reg.getFile(wantName);
|
|
695
|
+
if (!dep) {
|
|
696
|
+
throw new Error(`Cannot find ${wantName}, imported by ${proto.name}`);
|
|
697
|
+
}
|
|
698
|
+
return dep;
|
|
699
|
+
});
|
|
700
|
+
}
|
|
701
|
+
/**
|
|
702
|
+
* Finds a prefix shared by enum values, for example `my_enum_` for
|
|
703
|
+
* `enum MyEnum {MY_ENUM_A=0; MY_ENUM_B=1;}`.
|
|
704
|
+
*/
|
|
705
|
+
function findEnumSharedPrefix(enumName, values) {
|
|
706
|
+
const prefix = camelToSnakeCase(enumName) + "_";
|
|
707
|
+
for (const value of values) {
|
|
708
|
+
if (!value.name.toLowerCase().startsWith(prefix)) {
|
|
709
|
+
return undefined;
|
|
710
|
+
}
|
|
711
|
+
const shortName = value.name.substring(prefix.length);
|
|
712
|
+
if (shortName.length == 0) {
|
|
713
|
+
return undefined;
|
|
714
|
+
}
|
|
715
|
+
if (/^\d/.test(shortName)) {
|
|
716
|
+
// identifiers must not start with numbers
|
|
717
|
+
return undefined;
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
return prefix;
|
|
721
|
+
}
|
|
722
|
+
/**
|
|
723
|
+
* Converts lowerCamelCase or UpperCamelCase into lower_snake_case.
|
|
724
|
+
* This is used to find shared prefixes in an enum.
|
|
725
|
+
*/
|
|
726
|
+
function camelToSnakeCase(camel) {
|
|
727
|
+
return (camel.substring(0, 1) + camel.substring(1).replace(/[A-Z]/g, (c) => "_" + c)).toLowerCase();
|
|
728
|
+
}
|
|
729
|
+
/**
|
|
730
|
+
* Create a fully qualified name for a protobuf type or extension field.
|
|
731
|
+
*
|
|
732
|
+
* The fully qualified name for messages, enumerations, and services is
|
|
733
|
+
* constructed by concatenating the package name (if present), parent
|
|
734
|
+
* message names (for nested types), and the type name. We omit the leading
|
|
735
|
+
* dot added by protobuf compilers. Examples:
|
|
736
|
+
* - mypackage.MyMessage
|
|
737
|
+
* - mypackage.MyMessage.NestedMessage
|
|
738
|
+
*
|
|
739
|
+
* The fully qualified name for extension fields is constructed by
|
|
740
|
+
* concatenating the package name (if present), parent message names (for
|
|
741
|
+
* extensions declared within a message), and the field name. Examples:
|
|
742
|
+
* - mypackage.extfield
|
|
743
|
+
* - mypackage.MyMessage.extfield
|
|
744
|
+
*/
|
|
745
|
+
function makeTypeName(proto, parent, file) {
|
|
746
|
+
let typeName;
|
|
747
|
+
if (parent) {
|
|
748
|
+
typeName = `${parent.typeName}.${proto.name}`;
|
|
749
|
+
}
|
|
750
|
+
else if (file.proto.package.length > 0) {
|
|
751
|
+
typeName = `${file.proto.package}.${proto.name}`;
|
|
752
|
+
}
|
|
753
|
+
else {
|
|
754
|
+
typeName = `${proto.name}`;
|
|
755
|
+
}
|
|
756
|
+
return typeName;
|
|
757
|
+
}
|
|
758
|
+
/**
|
|
759
|
+
* Remove the leading dot from a fully qualified type name.
|
|
760
|
+
*/
|
|
761
|
+
function trimLeadingDot(typeName) {
|
|
762
|
+
return typeName.startsWith(".") ? typeName.substring(1) : typeName;
|
|
763
|
+
}
|
|
764
|
+
/**
|
|
765
|
+
* Did the user put the field in a oneof group?
|
|
766
|
+
* Synthetic oneofs for proto3 optionals are ignored.
|
|
767
|
+
*/
|
|
768
|
+
function findOneof(proto, allOneofs) {
|
|
769
|
+
if (!(0, unsafe_js_1.unsafeIsSetExplicit)(proto, "oneofIndex")) {
|
|
770
|
+
return undefined;
|
|
771
|
+
}
|
|
772
|
+
if (proto.proto3Optional) {
|
|
773
|
+
return undefined;
|
|
774
|
+
}
|
|
775
|
+
const oneof = allOneofs[proto.oneofIndex];
|
|
776
|
+
(0, assert_js_1.assert)(oneof, `invalid FieldDescriptorProto: oneof #${proto.oneofIndex} for field #${proto.number} not found`);
|
|
777
|
+
return oneof;
|
|
778
|
+
}
|
|
779
|
+
/**
|
|
780
|
+
* Presence of the field.
|
|
781
|
+
* See https://protobuf.dev/programming-guides/field_presence/
|
|
782
|
+
*/
|
|
783
|
+
function getFieldPresence(proto, oneof, isExtension, parent) {
|
|
784
|
+
if (proto.label == LABEL_REQUIRED) {
|
|
785
|
+
// proto2 required is LEGACY_REQUIRED
|
|
786
|
+
return LEGACY_REQUIRED;
|
|
787
|
+
}
|
|
788
|
+
if (proto.label == LABEL_REPEATED) {
|
|
789
|
+
// repeated fields (including maps) do not track presence
|
|
790
|
+
return IMPLICIT;
|
|
791
|
+
}
|
|
792
|
+
if (!!oneof || proto.proto3Optional) {
|
|
793
|
+
// oneof is always explicit
|
|
794
|
+
return EXPLICIT;
|
|
795
|
+
}
|
|
796
|
+
if (proto.type == TYPE_MESSAGE) {
|
|
797
|
+
// singular message field cannot be implicit
|
|
798
|
+
return EXPLICIT;
|
|
799
|
+
}
|
|
800
|
+
if (isExtension) {
|
|
801
|
+
// extensions always track presence
|
|
802
|
+
return EXPLICIT;
|
|
803
|
+
}
|
|
804
|
+
return resolveFeature("fieldPresence", { proto, parent });
|
|
805
|
+
}
|
|
806
|
+
/**
|
|
807
|
+
* Pack this repeated field?
|
|
808
|
+
*/
|
|
809
|
+
function isPackedField(proto, parent) {
|
|
810
|
+
if (proto.label != LABEL_REPEATED) {
|
|
811
|
+
return false;
|
|
812
|
+
}
|
|
813
|
+
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
814
|
+
switch (proto.type) {
|
|
815
|
+
case TYPE_STRING:
|
|
816
|
+
case TYPE_BYTES:
|
|
817
|
+
case TYPE_GROUP:
|
|
818
|
+
case TYPE_MESSAGE:
|
|
819
|
+
// length-delimited types cannot be packed
|
|
820
|
+
return false;
|
|
821
|
+
}
|
|
822
|
+
const o = proto.options;
|
|
823
|
+
if (o && (0, unsafe_js_1.unsafeIsSetExplicit)(o, "packed")) {
|
|
824
|
+
// prefer the field option over edition features
|
|
825
|
+
return o.packed;
|
|
826
|
+
}
|
|
827
|
+
return (PACKED ==
|
|
828
|
+
resolveFeature("repeatedFieldEncoding", {
|
|
829
|
+
proto,
|
|
830
|
+
parent,
|
|
831
|
+
}));
|
|
832
|
+
}
|
|
833
|
+
/**
|
|
834
|
+
* Enumerations can be open or closed.
|
|
835
|
+
* See https://protobuf.dev/programming-guides/enum/
|
|
836
|
+
*/
|
|
837
|
+
function isEnumOpen(desc) {
|
|
838
|
+
var _a;
|
|
839
|
+
return (OPEN ==
|
|
840
|
+
resolveFeature("enumType", {
|
|
841
|
+
proto: desc.proto,
|
|
842
|
+
parent: (_a = desc.parent) !== null && _a !== void 0 ? _a : desc.file,
|
|
843
|
+
}));
|
|
844
|
+
}
|
|
845
|
+
/**
|
|
846
|
+
* Encode the message delimited (a.k.a. proto2 group encoding), or
|
|
847
|
+
* length-prefixed?
|
|
848
|
+
*/
|
|
849
|
+
function isDelimitedEncoding(proto, parent) {
|
|
850
|
+
if (proto.type == TYPE_GROUP) {
|
|
851
|
+
return true;
|
|
852
|
+
}
|
|
853
|
+
return (DELIMITED ==
|
|
854
|
+
resolveFeature("messageEncoding", {
|
|
855
|
+
proto,
|
|
856
|
+
parent,
|
|
857
|
+
}));
|
|
858
|
+
}
|
|
859
|
+
function resolveFeature(name, ref) {
|
|
860
|
+
var _a, _b;
|
|
861
|
+
const featureSet = (_a = ref.proto.options) === null || _a === void 0 ? void 0 : _a.features;
|
|
862
|
+
if (featureSet) {
|
|
863
|
+
const val = featureSet[name];
|
|
864
|
+
if (val != 0) {
|
|
865
|
+
return val;
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
if ("kind" in ref) {
|
|
869
|
+
if (ref.kind == "message") {
|
|
870
|
+
return resolveFeature(name, (_b = ref.parent) !== null && _b !== void 0 ? _b : ref.file);
|
|
871
|
+
}
|
|
872
|
+
const editionDefaults = featureDefaults[ref.edition];
|
|
873
|
+
if (!editionDefaults) {
|
|
874
|
+
throw new Error(`feature default for edition ${ref.edition} not found`);
|
|
875
|
+
}
|
|
876
|
+
return editionDefaults[name];
|
|
877
|
+
}
|
|
878
|
+
return resolveFeature(name, ref.parent);
|
|
879
|
+
}
|