@bufbuild/protobuf 2.0.0-alpha.2 → 2.0.0-alpha.3

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