@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.
Files changed (201) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/clone.d.ts +1 -1
  3. package/dist/cjs/clone.js +2 -2
  4. package/dist/cjs/codegenv1/boot.d.ts +1 -1
  5. package/dist/cjs/codegenv1/boot.js +3 -5
  6. package/dist/cjs/codegenv1/embed.d.ts +2 -2
  7. package/dist/cjs/codegenv1/embed.js +51 -46
  8. package/dist/cjs/codegenv1/enum.d.ts +1 -1
  9. package/dist/cjs/codegenv1/enum.js +2 -4
  10. package/dist/cjs/codegenv1/extension.d.ts +1 -1
  11. package/dist/cjs/codegenv1/file.d.ts +1 -1
  12. package/dist/cjs/codegenv1/file.js +5 -7
  13. package/dist/cjs/codegenv1/index.d.ts +1 -0
  14. package/dist/cjs/codegenv1/index.js +1 -0
  15. package/dist/cjs/codegenv1/message.d.ts +1 -1
  16. package/dist/cjs/codegenv1/restore-json-names.d.ts +3 -0
  17. package/dist/cjs/codegenv1/restore-json-names.js +3 -0
  18. package/dist/cjs/codegenv1/scalar.d.ts +5 -0
  19. package/dist/cjs/codegenv1/scalar.js +39 -0
  20. package/dist/cjs/codegenv1/service.d.ts +3 -3
  21. package/dist/cjs/codegenv1/symbols.d.ts +9 -0
  22. package/dist/cjs/codegenv1/symbols.js +9 -0
  23. package/dist/cjs/codegenv1/types.d.ts +59 -8
  24. package/dist/cjs/create.d.ts +1 -1
  25. package/dist/cjs/create.js +13 -23
  26. package/dist/cjs/{desc-types.d.ts → descriptors.d.ts} +66 -17
  27. package/dist/cjs/descriptors.js +53 -0
  28. package/dist/cjs/equals.d.ts +1 -1
  29. package/dist/cjs/extensions.d.ts +21 -1
  30. package/dist/cjs/extensions.js +42 -10
  31. package/dist/cjs/fields.d.ts +17 -16
  32. package/dist/cjs/fields.js +17 -10
  33. package/dist/cjs/from-binary.d.ts +2 -2
  34. package/dist/cjs/from-binary.js +31 -41
  35. package/dist/cjs/from-json.d.ts +4 -4
  36. package/dist/cjs/from-json.js +200 -185
  37. package/dist/cjs/index.d.ts +3 -2
  38. package/dist/cjs/index.js +5 -2
  39. package/dist/cjs/is-message.d.ts +1 -1
  40. package/dist/cjs/proto-int64.d.ts +4 -1
  41. package/dist/cjs/proto-int64.js +16 -6
  42. package/dist/cjs/reflect/error.d.ts +1 -1
  43. package/dist/cjs/reflect/guard.d.ts +1 -1
  44. package/dist/cjs/reflect/index.d.ts +0 -1
  45. package/dist/cjs/reflect/index.js +0 -1
  46. package/dist/cjs/reflect/names.d.ts +1 -13
  47. package/dist/cjs/reflect/names.js +2 -40
  48. package/dist/cjs/reflect/nested-types.d.ts +11 -1
  49. package/dist/cjs/reflect/nested-types.js +34 -1
  50. package/dist/cjs/reflect/reflect-check.d.ts +10 -1
  51. package/dist/cjs/reflect/reflect-check.js +126 -9
  52. package/dist/cjs/reflect/reflect-types.d.ts +162 -14
  53. package/dist/cjs/reflect/reflect.d.ts +12 -3
  54. package/dist/cjs/reflect/reflect.js +316 -290
  55. package/dist/cjs/reflect/scalar.d.ts +3 -55
  56. package/dist/cjs/reflect/scalar.js +26 -220
  57. package/dist/cjs/reflect/unsafe.d.ts +1 -1
  58. package/dist/cjs/reflect/unsafe.js +38 -43
  59. package/dist/cjs/{reflect/registry.d.ts → registry.d.ts} +2 -2
  60. package/dist/cjs/{reflect/registry.js → registry.js} +100 -73
  61. package/dist/cjs/to-binary.d.ts +1 -1
  62. package/dist/cjs/to-binary.js +28 -30
  63. package/dist/cjs/to-json.d.ts +7 -6
  64. package/dist/cjs/to-json.js +63 -70
  65. package/dist/cjs/types.d.ts +1 -1
  66. package/dist/cjs/wire/base64-encoding.js +4 -4
  67. package/dist/cjs/wire/binary-encoding.d.ts +25 -3
  68. package/dist/cjs/wire/binary-encoding.js +70 -18
  69. package/dist/cjs/wire/size-delimited.d.ts +1 -1
  70. package/dist/cjs/wire/text-format.d.ts +1 -2
  71. package/dist/cjs/wire/text-format.js +21 -19
  72. package/dist/cjs/wkt/any.d.ts +3 -3
  73. package/dist/cjs/wkt/gen/google/protobuf/any_pb.d.ts +7 -0
  74. package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +7 -2
  75. package/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
  76. package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +15 -6
  77. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
  78. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
  79. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +192 -0
  80. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +187 -84
  81. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
  82. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +7 -2
  83. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
  84. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +7 -2
  85. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
  86. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
  87. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
  88. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +7 -2
  89. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
  90. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +18 -7
  91. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
  92. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
  93. package/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
  94. package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +32 -13
  95. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
  96. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
  97. package/dist/cjs/wkt/wrappers.d.ts +1 -1
  98. package/dist/esm/clone.d.ts +1 -1
  99. package/dist/esm/clone.js +1 -1
  100. package/dist/esm/codegenv1/boot.d.ts +1 -1
  101. package/dist/esm/codegenv1/boot.js +3 -5
  102. package/dist/esm/codegenv1/embed.d.ts +2 -2
  103. package/dist/esm/codegenv1/embed.js +34 -29
  104. package/dist/esm/codegenv1/enum.d.ts +1 -1
  105. package/dist/esm/codegenv1/enum.js +2 -4
  106. package/dist/esm/codegenv1/extension.d.ts +1 -1
  107. package/dist/esm/codegenv1/file.d.ts +1 -1
  108. package/dist/esm/codegenv1/file.js +4 -6
  109. package/dist/esm/codegenv1/index.d.ts +1 -0
  110. package/dist/esm/codegenv1/index.js +1 -0
  111. package/dist/esm/codegenv1/message.d.ts +1 -1
  112. package/dist/esm/codegenv1/restore-json-names.d.ts +3 -0
  113. package/dist/esm/codegenv1/restore-json-names.js +3 -0
  114. package/dist/esm/codegenv1/scalar.d.ts +5 -0
  115. package/dist/esm/codegenv1/scalar.js +35 -0
  116. package/dist/esm/codegenv1/service.d.ts +3 -3
  117. package/dist/esm/codegenv1/symbols.d.ts +9 -0
  118. package/dist/esm/codegenv1/symbols.js +9 -0
  119. package/dist/esm/codegenv1/types.d.ts +59 -8
  120. package/dist/esm/create.d.ts +1 -1
  121. package/dist/esm/create.js +11 -21
  122. package/dist/esm/{desc-types.d.ts → descriptors.d.ts} +66 -17
  123. package/dist/esm/descriptors.js +50 -0
  124. package/dist/esm/equals.d.ts +1 -1
  125. package/dist/esm/extensions.d.ts +21 -1
  126. package/dist/esm/extensions.js +39 -9
  127. package/dist/esm/fields.d.ts +17 -16
  128. package/dist/esm/fields.js +17 -10
  129. package/dist/esm/from-binary.d.ts +2 -2
  130. package/dist/esm/from-binary.js +13 -23
  131. package/dist/esm/from-json.d.ts +4 -4
  132. package/dist/esm/from-json.js +193 -178
  133. package/dist/esm/index.d.ts +3 -2
  134. package/dist/esm/index.js +3 -2
  135. package/dist/esm/is-message.d.ts +1 -1
  136. package/dist/esm/proto-int64.d.ts +4 -1
  137. package/dist/esm/proto-int64.js +16 -6
  138. package/dist/esm/reflect/error.d.ts +1 -1
  139. package/dist/esm/reflect/guard.d.ts +1 -1
  140. package/dist/esm/reflect/index.d.ts +0 -1
  141. package/dist/esm/reflect/index.js +0 -1
  142. package/dist/esm/reflect/names.d.ts +1 -13
  143. package/dist/esm/reflect/names.js +1 -38
  144. package/dist/esm/reflect/nested-types.d.ts +11 -1
  145. package/dist/esm/reflect/nested-types.js +32 -0
  146. package/dist/esm/reflect/reflect-check.d.ts +10 -1
  147. package/dist/esm/reflect/reflect-check.js +119 -2
  148. package/dist/esm/reflect/reflect-types.d.ts +162 -14
  149. package/dist/esm/reflect/reflect-types.js +1 -0
  150. package/dist/esm/reflect/reflect.d.ts +12 -3
  151. package/dist/esm/reflect/reflect.js +305 -279
  152. package/dist/esm/reflect/scalar.d.ts +3 -55
  153. package/dist/esm/reflect/scalar.js +14 -205
  154. package/dist/esm/reflect/unsafe.d.ts +1 -1
  155. package/dist/esm/reflect/unsafe.js +38 -43
  156. package/dist/esm/{reflect/registry.d.ts → registry.d.ts} +2 -2
  157. package/dist/esm/{reflect/registry.js → registry.js} +90 -63
  158. package/dist/esm/to-binary.d.ts +1 -1
  159. package/dist/esm/to-binary.js +2 -4
  160. package/dist/esm/to-json.d.ts +7 -6
  161. package/dist/esm/to-json.js +48 -55
  162. package/dist/esm/types.d.ts +1 -1
  163. package/dist/esm/wire/base64-encoding.js +4 -4
  164. package/dist/esm/wire/binary-encoding.d.ts +25 -3
  165. package/dist/esm/wire/binary-encoding.js +63 -11
  166. package/dist/esm/wire/size-delimited.d.ts +1 -1
  167. package/dist/esm/wire/text-format.d.ts +1 -2
  168. package/dist/esm/wire/text-format.js +5 -3
  169. package/dist/esm/wkt/any.d.ts +3 -3
  170. package/dist/esm/wkt/gen/google/protobuf/any_pb.d.ts +7 -0
  171. package/dist/esm/wkt/gen/google/protobuf/any_pb.js +7 -2
  172. package/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
  173. package/dist/esm/wkt/gen/google/protobuf/api_pb.js +15 -6
  174. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
  175. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
  176. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +192 -0
  177. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +187 -84
  178. package/dist/esm/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
  179. package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +7 -2
  180. package/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
  181. package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +7 -2
  182. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
  183. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
  184. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
  185. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +7 -2
  186. package/dist/esm/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
  187. package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +18 -7
  188. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
  189. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
  190. package/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
  191. package/dist/esm/wkt/gen/google/protobuf/type_pb.js +32 -13
  192. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
  193. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
  194. package/dist/esm/wkt/wrappers.d.ts +1 -1
  195. package/package.json +2 -2
  196. package/dist/cjs/desc-types.js +0 -15
  197. package/dist/cjs/reflect/assert.d.ts +0 -16
  198. package/dist/cjs/reflect/assert.js +0 -59
  199. package/dist/esm/desc-types.js +0 -14
  200. package/dist/esm/reflect/assert.d.ts +0 -16
  201. package/dist/esm/reflect/assert.js +0 -52
package/README.md CHANGED
@@ -15,7 +15,7 @@ Some additional features that set it apart from the others:
15
15
  - ECMAScript module support
16
16
  - First-class TypeScript support
17
17
  - Generation of idiomatic JavaScript and TypeScript code.
18
- - Generation of [much smaller bundles](https://github.com/bufbuild/protobuf-es/blob/main/packages/protobuf-bench)
18
+ - Generation of [much smaller bundles](https://github.com/bufbuild/protobuf-es/blob/main/packages/bundle-size)
19
19
  - Implementation of all proto3 features, including the [canonical JSON format](https://developers.google.com/protocol-buffers/docs/proto3#json).
20
20
  - Implementation of all proto2 features, except for extensions and the text format.
21
21
  - Usage of standard JavaScript APIs instead of the [Closure Library](http://googlecode.blogspot.com/2009/11/introducing-closure-tools.html)
@@ -1,5 +1,5 @@
1
1
  import type { MessageShape } from "./types.js";
2
- import type { DescMessage } from "./desc-types.js";
2
+ import { type DescMessage } from "./descriptors.js";
3
3
  /**
4
4
  * Create a deep copy of a message, including extensions and unknown fields.
5
5
  */
package/dist/cjs/clone.js CHANGED
@@ -14,9 +14,9 @@
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.clone = void 0;
17
+ const descriptors_js_1 = require("./descriptors.js");
17
18
  const reflect_js_1 = require("./reflect/reflect.js");
18
19
  const guard_js_1 = require("./reflect/guard.js");
19
- const scalar_js_1 = require("./reflect/scalar.js");
20
20
  /**
21
21
  * Create a deep copy of a message, including extensions and unknown fields.
22
22
  */
@@ -69,7 +69,7 @@ function cloneSingular(field, value) {
69
69
  if (field.message !== undefined && (0, guard_js_1.isReflectMessage)(value)) {
70
70
  return cloneReflect(value);
71
71
  }
72
- if (field.scalar == scalar_js_1.ScalarType.BYTES && value instanceof Uint8Array) {
72
+ if (field.scalar == descriptors_js_1.ScalarType.BYTES && value instanceof Uint8Array) {
73
73
  // @ts-expect-error T cannot extend Uint8Array in practice
74
74
  return value.slice();
75
75
  }
@@ -1,5 +1,5 @@
1
1
  import type { DescriptorProto_ExtensionRange, FieldDescriptorProto_Label, FieldDescriptorProto_Type, FieldOptions_OptionRetention, FieldOptions_OptionTargetType, FieldOptions_EditionDefault, EnumValueDescriptorProto, FileDescriptorProto } from "../wkt/gen/google/protobuf/descriptor_pb.js";
2
- import type { DescFile } from "../desc-types.js";
2
+ import type { DescFile } from "../descriptors.js";
3
3
  /**
4
4
  * Hydrate a file descriptor for google/protobuf/descriptor.proto from a plain
5
5
  * object.
@@ -15,8 +15,7 @@
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.bootFileDescriptorProto = exports.boot = void 0;
17
17
  const restore_json_names_js_1 = require("./restore-json-names.js");
18
- const registry_js_1 = require("../reflect/registry.js");
19
- const assert_js_1 = require("../reflect/assert.js");
18
+ const registry_js_1 = require("../registry.js");
20
19
  /**
21
20
  * Hydrate a file descriptor for google/protobuf/descriptor.proto from a plain
22
21
  * object.
@@ -29,9 +28,8 @@ function boot(boot) {
29
28
  const root = bootFileDescriptorProto(boot);
30
29
  root.messageType.forEach(restore_json_names_js_1.restoreJsonNames);
31
30
  const reg = (0, registry_js_1.createFileRegistry)(root, () => undefined);
32
- const file = reg.getFile(root.name);
33
- (0, assert_js_1.assert)(file);
34
- return file;
31
+ // non-null assertion because we just created the registry from the file we look up
32
+ return reg.getFile(root.name);
35
33
  }
36
34
  exports.boot = boot;
37
35
  /**
@@ -1,4 +1,4 @@
1
- import type { DescEnum, DescExtension, DescFile, DescMessage, DescService } from "../desc-types.js";
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: DescFile): EmbedUnknown | EmbedDescriptorProto;
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.
@@ -15,7 +15,6 @@
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.createFileDescriptorProtoBoot = exports.pathInFileDesc = exports.embedFileDesc = void 0;
17
17
  const names_js_1 = require("../reflect/names.js");
18
- const assert_js_1 = require("../reflect/assert.js");
19
18
  const fields_js_1 = require("../fields.js");
20
19
  const base64_encoding_js_1 = require("../wire/base64-encoding.js");
21
20
  const to_binary_js_1 = require("../to-binary.js");
@@ -31,9 +30,9 @@ function embedFileDesc(file) {
31
30
  const embed = {
32
31
  bootable: false,
33
32
  proto() {
34
- const stripped = (0, clone_js_1.clone)(descriptor_pb_js_1.FileDescriptorProtoDesc, file.proto);
35
- (0, fields_js_1.clearField)(descriptor_pb_js_1.FileDescriptorProtoDesc, stripped, "dependency");
36
- (0, fields_js_1.clearField)(descriptor_pb_js_1.FileDescriptorProtoDesc, stripped, "sourceCodeInfo");
33
+ const stripped = (0, clone_js_1.clone)(descriptor_pb_js_1.FileDescriptorProtoDesc, file);
34
+ (0, fields_js_1.clearField)(stripped, descriptor_pb_js_1.FileDescriptorProtoDesc.field.dependency);
35
+ (0, fields_js_1.clearField)(stripped, descriptor_pb_js_1.FileDescriptorProtoDesc.field.sourceCodeInfo);
37
36
  stripped.messageType.map(stripJsonNames);
38
37
  return stripped;
39
38
  },
@@ -42,7 +41,7 @@ function embedFileDesc(file) {
42
41
  return (0, base64_encoding_js_1.base64Encode)(bytes, "std_raw");
43
42
  },
44
43
  };
45
- return file.proto.name == "google/protobuf/descriptor.proto"
44
+ return file.name == "google/protobuf/descriptor.proto"
46
45
  ? Object.assign(Object.assign({}, embed), { bootable: true, boot() {
47
46
  return createFileDescriptorProtoBoot(this.proto());
48
47
  } }) : embed;
@@ -51,7 +50,7 @@ exports.embedFileDesc = embedFileDesc;
51
50
  function stripJsonNames(d) {
52
51
  for (const f of d.field) {
53
52
  if (f.jsonName === (0, names_js_1.protoCamelCase)(f.name)) {
54
- (0, fields_js_1.clearField)(descriptor_pb_js_1.FieldDescriptorProtoDesc, f, "jsonName");
53
+ (0, fields_js_1.clearField)(f, descriptor_pb_js_1.FieldDescriptorProtoDesc.field.jsonName);
55
54
  }
56
55
  }
57
56
  for (const n of d.nestedType) {
@@ -118,17 +117,17 @@ exports.pathInFileDesc = pathInFileDesc;
118
117
  */
119
118
  function createFileDescriptorProtoBoot(proto) {
120
119
  var _a;
121
- (0, assert_js_1.assert)(proto.name == "google/protobuf/descriptor.proto");
122
- (0, assert_js_1.assert)(proto.package == "google.protobuf");
123
- (0, assert_js_1.assert)(!proto.dependency.length);
124
- (0, assert_js_1.assert)(!proto.publicDependency.length);
125
- (0, assert_js_1.assert)(!proto.weakDependency.length);
126
- (0, assert_js_1.assert)(!proto.service.length);
127
- (0, assert_js_1.assert)(!proto.extension.length);
128
- (0, assert_js_1.assert)(proto.sourceCodeInfo === undefined);
129
- (0, assert_js_1.assert)(proto.syntax == "" || proto.syntax == "proto2");
130
- (0, assert_js_1.assert)(!((_a = proto.options) === null || _a === void 0 ? void 0 : _a.features)); // we're dropping file options
131
- (0, assert_js_1.assert)(proto.edition === descriptor_pb_js_1.Edition.EDITION_UNKNOWN);
120
+ assert(proto.name == "google/protobuf/descriptor.proto");
121
+ assert(proto.package == "google.protobuf");
122
+ assert(!proto.dependency.length);
123
+ assert(!proto.publicDependency.length);
124
+ assert(!proto.weakDependency.length);
125
+ assert(!proto.service.length);
126
+ assert(!proto.extension.length);
127
+ assert(proto.sourceCodeInfo === undefined);
128
+ assert(proto.syntax == "" || proto.syntax == "proto2");
129
+ assert(!((_a = proto.options) === null || _a === void 0 ? void 0 : _a.features)); // we're dropping file options
130
+ assert(proto.edition === descriptor_pb_js_1.Edition.EDITION_UNKNOWN);
132
131
  return {
133
132
  name: proto.name,
134
133
  package: proto.package,
@@ -138,10 +137,9 @@ function createFileDescriptorProtoBoot(proto) {
138
137
  }
139
138
  exports.createFileDescriptorProtoBoot = createFileDescriptorProtoBoot;
140
139
  function createDescriptorBoot(proto) {
141
- (0, assert_js_1.assert)(proto.extension.length == 0);
142
- (0, assert_js_1.assert)(!proto.oneofDecl.length);
143
- (0, assert_js_1.assert)(!proto.options);
144
- (0, assert_js_1.assert)(!proto.reservedName.length); // we're also dropping reserved_range
140
+ assert(proto.extension.length == 0);
141
+ assert(!proto.oneofDecl.length);
142
+ assert(!proto.options);
145
143
  const b = {
146
144
  name: proto.name,
147
145
  };
@@ -156,34 +154,34 @@ function createDescriptorBoot(proto) {
156
154
  }
157
155
  if (proto.extensionRange.length) {
158
156
  b.extensionRange = proto.extensionRange.map((r) => {
159
- (0, assert_js_1.assert)(!r.options);
157
+ assert(!r.options);
160
158
  return { start: r.start, end: r.end };
161
159
  });
162
160
  }
163
161
  return b;
164
162
  }
165
163
  function createFieldDescriptorBoot(proto) {
166
- (0, assert_js_1.assert)((0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldDescriptorProtoDesc, proto, "name"));
167
- (0, assert_js_1.assert)((0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldDescriptorProtoDesc, proto, "number"));
168
- (0, assert_js_1.assert)((0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldDescriptorProtoDesc, proto, "type"));
169
- (0, assert_js_1.assert)(!(0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldDescriptorProtoDesc, proto, "oneofIndex"));
170
- (0, assert_js_1.assert)(!(0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldDescriptorProtoDesc, proto, "jsonName") ||
164
+ assert((0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldDescriptorProtoDesc.field.name));
165
+ assert((0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldDescriptorProtoDesc.field.number));
166
+ assert((0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldDescriptorProtoDesc.field.type));
167
+ assert(!(0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldDescriptorProtoDesc.field.oneofIndex));
168
+ assert(!(0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldDescriptorProtoDesc.field.jsonName) ||
171
169
  proto.jsonName === (0, names_js_1.protoCamelCase)(proto.name));
172
170
  const b = {
173
171
  name: proto.name,
174
172
  number: proto.number,
175
173
  type: proto.type,
176
174
  };
177
- if ((0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldDescriptorProtoDesc, proto, "label")) {
175
+ if ((0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldDescriptorProtoDesc.field.label)) {
178
176
  b.label = proto.label;
179
177
  }
180
- if ((0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldDescriptorProtoDesc, proto, "typeName")) {
178
+ if ((0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldDescriptorProtoDesc.field.typeName)) {
181
179
  b.typeName = proto.typeName;
182
180
  }
183
- if ((0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldDescriptorProtoDesc, proto, "extendee")) {
181
+ if ((0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldDescriptorProtoDesc.field.extendee)) {
184
182
  b.extendee = proto.extendee;
185
183
  }
186
- if ((0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldDescriptorProtoDesc, proto, "defaultValue")) {
184
+ if ((0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldDescriptorProtoDesc.field.defaultValue)) {
187
185
  b.defaultValue = proto.defaultValue;
188
186
  }
189
187
  if (proto.options) {
@@ -193,19 +191,19 @@ function createFieldDescriptorBoot(proto) {
193
191
  }
194
192
  function createFieldOptionsBoot(proto) {
195
193
  const b = {};
196
- (0, assert_js_1.assert)(!(0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "ctype"));
197
- if ((0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "packed")) {
194
+ assert(!(0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.ctype));
195
+ if ((0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.packed)) {
198
196
  b.packed = proto.packed;
199
197
  }
200
- (0, assert_js_1.assert)(!(0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "jstype"));
201
- (0, assert_js_1.assert)(!(0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "lazy"));
202
- (0, assert_js_1.assert)(!(0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "unverifiedLazy"));
203
- if ((0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "deprecated")) {
198
+ assert(!(0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.jstype));
199
+ assert(!(0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.lazy));
200
+ assert(!(0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.unverifiedLazy));
201
+ if ((0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.deprecated)) {
204
202
  b.deprecated = proto.deprecated;
205
203
  }
206
- (0, assert_js_1.assert)(!(0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "weak"));
207
- (0, assert_js_1.assert)(!(0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "debugRedact"));
208
- if ((0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "retention")) {
204
+ assert(!(0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.weak));
205
+ assert(!(0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.debugRedact));
206
+ if ((0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.retention)) {
209
207
  b.retention = proto.retention;
210
208
  }
211
209
  if (proto.targets.length) {
@@ -217,18 +215,16 @@ function createFieldOptionsBoot(proto) {
217
215
  edition: d.edition,
218
216
  }));
219
217
  }
220
- (0, assert_js_1.assert)(!(0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "features"));
221
- (0, assert_js_1.assert)(!(0, fields_js_1.isFieldSet)(descriptor_pb_js_1.FieldOptionsDesc, proto, "uninterpretedOption"));
218
+ assert(!(0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.features));
219
+ assert(!(0, fields_js_1.isFieldSet)(proto, descriptor_pb_js_1.FieldOptionsDesc.field.uninterpretedOption));
222
220
  return b;
223
221
  }
224
222
  function createEnumDescriptorBoot(proto) {
225
- (0, assert_js_1.assert)(!proto.reservedName.length);
226
- (0, assert_js_1.assert)(!proto.reservedRange.length);
227
- (0, assert_js_1.assert)(!proto.options);
223
+ assert(!proto.options);
228
224
  return {
229
225
  name: proto.name,
230
226
  value: proto.value.map((v) => {
231
- (0, assert_js_1.assert)(!v.options);
227
+ assert(!v.options);
232
228
  return {
233
229
  name: v.name,
234
230
  number: v.number,
@@ -236,3 +232,12 @@ function createEnumDescriptorBoot(proto) {
236
232
  }),
237
233
  };
238
234
  }
235
+ /**
236
+ * Assert that condition is truthy or throw error.
237
+ */
238
+ function assert(condition) {
239
+ // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions -- we want the implicit conversion to boolean
240
+ if (!condition) {
241
+ throw new Error();
242
+ }
243
+ }
@@ -1,4 +1,4 @@
1
- import type { DescEnum, DescFile } from "../desc-types.js";
1
+ import type { DescEnum, DescFile } from "../descriptors.js";
2
2
  import type { GenDescEnum } from "./types.js";
3
3
  /**
4
4
  * Hydrate an enum descriptor.
@@ -14,7 +14,6 @@
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.tsEnum = exports.enumDesc = void 0;
17
- const names_js_1 = require("../reflect/names.js");
18
17
  /**
19
18
  * Hydrate an enum descriptor.
20
19
  *
@@ -34,9 +33,8 @@ exports.enumDesc = enumDesc;
34
33
  function tsEnum(desc) {
35
34
  const enumObject = {};
36
35
  for (const value of desc.values) {
37
- const name = (0, names_js_1.localName)(value);
38
- enumObject[name] = value.number;
39
- enumObject[value.number] = name;
36
+ enumObject[value.localName] = value.number;
37
+ enumObject[value.number] = value.localName;
40
38
  }
41
39
  return enumObject;
42
40
  }
@@ -1,5 +1,5 @@
1
1
  import type { Message } from "../types.js";
2
- import type { DescFile } from "../desc-types.js";
2
+ import type { DescFile } from "../descriptors.js";
3
3
  import type { GenDescExtension } from "./types.js";
4
4
  /**
5
5
  * Hydrate an extension descriptor.
@@ -1,4 +1,4 @@
1
- import type { DescFile } from "../desc-types.js";
1
+ import type { DescFile } from "../descriptors.js";
2
2
  /**
3
3
  * Hydrate a file descriptor.
4
4
  *
@@ -14,10 +14,9 @@
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.fileDesc = void 0;
17
- const index_js_1 = require("../wire/index.js");
17
+ const base64_encoding_js_1 = require("../wire/base64-encoding.js");
18
18
  const descriptor_pb_js_1 = require("../wkt/gen/google/protobuf/descriptor_pb.js");
19
- const registry_js_1 = require("../reflect/registry.js");
20
- const assert_js_1 = require("../reflect/assert.js");
19
+ const registry_js_1 = require("../registry.js");
21
20
  const restore_json_names_js_1 = require("./restore-json-names.js");
22
21
  const from_binary_js_1 = require("../from-binary.js");
23
22
  /**
@@ -27,12 +26,11 @@ const from_binary_js_1 = require("../from-binary.js");
27
26
  */
28
27
  function fileDesc(b64, imports) {
29
28
  var _a;
30
- const root = (0, from_binary_js_1.fromBinary)(descriptor_pb_js_1.FileDescriptorProtoDesc, (0, index_js_1.base64Decode)(b64));
29
+ const root = (0, from_binary_js_1.fromBinary)(descriptor_pb_js_1.FileDescriptorProtoDesc, (0, base64_encoding_js_1.base64Decode)(b64));
31
30
  root.messageType.forEach(restore_json_names_js_1.restoreJsonNames);
32
31
  root.dependency = (_a = imports === null || imports === void 0 ? void 0 : imports.map((f) => f.proto.name)) !== null && _a !== void 0 ? _a : [];
33
32
  const reg = (0, registry_js_1.createFileRegistry)(root, (protoFileName) => imports === null || imports === void 0 ? void 0 : imports.find((f) => f.proto.name === protoFileName));
34
- const file = reg.getFile(root.name);
35
- (0, assert_js_1.assert)(file);
36
- return file;
33
+ // non-null assertion because we just created the registry from the file we look up
34
+ return reg.getFile(root.name);
37
35
  }
38
36
  exports.fileDesc = fileDesc;
@@ -6,4 +6,5 @@ export * from "./file.js";
6
6
  export * from "./message.js";
7
7
  export * from "./service.js";
8
8
  export * from "./symbols.js";
9
+ export * from "./scalar.js";
9
10
  export * from "./types.js";
@@ -35,4 +35,5 @@ __exportStar(require("./file.js"), exports);
35
35
  __exportStar(require("./message.js"), exports);
36
36
  __exportStar(require("./service.js"), exports);
37
37
  __exportStar(require("./symbols.js"), exports);
38
+ __exportStar(require("./scalar.js"), exports);
38
39
  __exportStar(require("./types.js"), exports);
@@ -1,5 +1,5 @@
1
1
  import type { Message } from "../types.js";
2
- import type { DescFile } from "../desc-types.js";
2
+ import type { DescFile } from "../descriptors.js";
3
3
  import type { GenDescMessage } from "./types.js";
4
4
  /**
5
5
  * Hydrate a message descriptor.
@@ -1,2 +1,5 @@
1
1
  import type { DescriptorProto } from "../wkt/gen/google/protobuf/descriptor_pb.js";
2
+ /**
3
+ * @private
4
+ */
2
5
  export declare function restoreJsonNames(message: DescriptorProto): void;
@@ -16,6 +16,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.restoreJsonNames = void 0;
17
17
  const names_js_1 = require("../reflect/names.js");
18
18
  const unsafe_js_1 = require("../reflect/unsafe.js");
19
+ /**
20
+ * @private
21
+ */
19
22
  function restoreJsonNames(message) {
20
23
  for (const f of message.field) {
21
24
  if (!(0, unsafe_js_1.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,39 @@
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.scalarTypeScriptType = void 0;
17
+ const descriptors_js_1 = require("../descriptors.js");
18
+ /**
19
+ * Return the TypeScript type (as a string) for the given scalar type.
20
+ */
21
+ function scalarTypeScriptType(scalar, longAsString) {
22
+ switch (scalar) {
23
+ case descriptors_js_1.ScalarType.STRING:
24
+ return "string";
25
+ case descriptors_js_1.ScalarType.BOOL:
26
+ return "boolean";
27
+ case descriptors_js_1.ScalarType.UINT64:
28
+ case descriptors_js_1.ScalarType.SFIXED64:
29
+ case descriptors_js_1.ScalarType.FIXED64:
30
+ case descriptors_js_1.ScalarType.SINT64:
31
+ case descriptors_js_1.ScalarType.INT64:
32
+ return longAsString ? "string" : "bigint";
33
+ case descriptors_js_1.ScalarType.BYTES:
34
+ return "Uint8Array";
35
+ default:
36
+ return "number";
37
+ }
38
+ }
39
+ exports.scalarTypeScriptType = scalarTypeScriptType;
@@ -1,8 +1,8 @@
1
- import type { GenDescService, GenDescServiceShape } from "./types.js";
2
- import type { DescFile } from "../desc-types.js";
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 GenDescServiceShape>(file: DescFile, path: number, ...paths: number[]): GenDescService<T>;
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;
@@ -14,7 +14,13 @@
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.symbols = exports.wktPublicImportPaths = exports.packageName = void 0;
17
+ /**
18
+ * @private
19
+ */
17
20
  exports.packageName = "@bufbuild/protobuf";
21
+ /**
22
+ * @private
23
+ */
18
24
  exports.wktPublicImportPaths = {
19
25
  "google/protobuf/compiler/plugin.proto": exports.packageName + "/wkt",
20
26
  "google/protobuf/any.proto": exports.packageName + "/wkt",
@@ -29,6 +35,9 @@ exports.wktPublicImportPaths = {
29
35
  "google/protobuf/type.proto": exports.packageName + "/wkt",
30
36
  "google/protobuf/wrappers.proto": exports.packageName + "/wkt",
31
37
  };
38
+ /**
39
+ * @private
40
+ */
32
41
  // prettier-ignore
33
42
  exports.symbols = {
34
43
  isMessage: { typeOnly: false, bootstrapWktFrom: "../../is-message.js", from: exports.packageName },
@@ -1,19 +1,70 @@
1
1
  import type { Message } from "../types.js";
2
- import type { DescEnum, DescExtension, DescFile, DescMessage, DescService } from "../desc-types.js";
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
- export type GenDescMessage<RuntimeShape extends Message> = DescMessage & brand<RuntimeShape>;
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
- export type GenDescService<RuntimeShape extends GenDescServiceShape> = DescService & brand<RuntimeShape>;
8
- export type GenDescServiceShape = {
9
- [localName: string]: {
10
- kind: "unary" | "server_streaming" | "client_streaming" | "bidi_streaming";
11
- I: Message;
12
- O: Message;
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 {};
@@ -1,4 +1,4 @@
1
- import type { DescMessage } from "./desc-types.js";
1
+ import { type DescMessage } from "./descriptors.js";
2
2
  import type { MessageInitShape, MessageShape } from "./types.js";
3
3
  /**
4
4
  * Create a new message instance.