@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
@@ -11,8 +11,11 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import { assert } from "./reflect/assert.js";
15
14
  import { int64FromString, int64ToString, uInt64ToString, } from "./wire/varint.js";
15
+ /**
16
+ * Int64Support for the current environment.
17
+ */
18
+ export const protoInt64 = /*@__PURE__*/ makeInt64Support();
16
19
  function makeInt64Support() {
17
20
  const dv = new DataView(new ArrayBuffer(8));
18
21
  // note that Safari 14 implements BigInt, but not the DataView methods
@@ -32,14 +35,14 @@ function makeInt64Support() {
32
35
  parse(value) {
33
36
  const bi = typeof value == "bigint" ? value : BigInt(value);
34
37
  if (bi > MAX || bi < MIN) {
35
- throw new Error(`int64 invalid: ${value}`);
38
+ throw new Error(`invalid int64: ${value}`);
36
39
  }
37
40
  return bi;
38
41
  },
39
42
  uParse(value) {
40
43
  const bi = typeof value == "bigint" ? value : BigInt(value);
41
44
  if (bi > UMAX || bi < UMIN) {
42
- throw new Error(`uint64 invalid: ${value}`);
45
+ throw new Error(`invalid uint64: ${value}`);
43
46
  }
44
47
  return bi;
45
48
  },
@@ -69,8 +72,6 @@ function makeInt64Support() {
69
72
  },
70
73
  };
71
74
  }
72
- const assertInt64String = (value) => assert(/^-?[0-9]+$/.test(value), `int64 invalid: ${value}`);
73
- const assertUInt64String = (value) => assert(/^[0-9]+$/.test(value), `uint64 invalid: ${value}`);
74
75
  return {
75
76
  zero: "0",
76
77
  supported: false,
@@ -110,4 +111,13 @@ function makeInt64Support() {
110
111
  },
111
112
  };
112
113
  }
113
- export const protoInt64 = makeInt64Support();
114
+ function assertInt64String(value) {
115
+ if (!/^-?[0-9]+$/.test(value)) {
116
+ throw new Error("invalid int64: " + value);
117
+ }
118
+ }
119
+ function assertUInt64String(value) {
120
+ if (!/^[0-9]+$/.test(value)) {
121
+ throw new Error("invalid uint64: " + value);
122
+ }
123
+ }
@@ -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";
@@ -16,6 +16,5 @@ export * from "./names.js";
16
16
  export * from "./nested-types.js";
17
17
  export * from "./reflect.js";
18
18
  export * from "./reflect-types.js";
19
- export * from "./registry.js";
20
19
  export * from "./scalar.js";
21
20
  export { isReflectList, isReflectMap, isReflectMessage } from "./guard.js";
@@ -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;
@@ -62,7 +62,7 @@ const reservedObjectProperties = new Set([
62
62
  /**
63
63
  * Escapes names that are reserved for ECMAScript built-in object properties.
64
64
  *
65
- * Also see safeIdentifier() from @bufbuild/protoplugin/ecmascript.
65
+ * Also see safeIdentifier() from @bufbuild/protoplugin.
66
66
  */
67
67
  export function safeObjectProperty(name) {
68
68
  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;
@@ -11,11 +11,16 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
- import { ScalarType, scalarTypeDescription } from "./scalar.js";
15
- import { checkScalarValue } from "./scalar.js";
14
+ import { ScalarType, } from "../descriptors.js";
16
15
  import { isMessage } from "../is-message.js";
17
16
  import { FieldError } from "./error.js";
18
17
  import { isReflectList, isReflectMap, isReflectMessage } from "./guard.js";
18
+ import { FLOAT32_MAX, FLOAT32_MIN, INT32_MAX, INT32_MIN, UINT32_MAX, } from "../wire/binary-encoding.js";
19
+ import { getTextEncoding } from "../wire/text-encoding.js";
20
+ import { protoInt64 } from "../proto-int64.js";
21
+ /**
22
+ * Check whether the given field value is valid for the reflect API.
23
+ */
19
24
  export function checkField(field, value) {
20
25
  const check = field.fieldKind == "list"
21
26
  ? isReflectList(value, field)
@@ -39,6 +44,9 @@ export function checkField(field, value) {
39
44
  }
40
45
  return new FieldError(field, reason);
41
46
  }
47
+ /**
48
+ * Check whether the given list item is valid for the reflect API.
49
+ */
42
50
  export function checkListItem(field, index, value) {
43
51
  const check = checkSingular(field, value);
44
52
  if (check !== true) {
@@ -46,6 +54,9 @@ export function checkListItem(field, index, value) {
46
54
  }
47
55
  return undefined;
48
56
  }
57
+ /**
58
+ * Check whether the given map key and value are valid for the reflect API.
59
+ */
49
60
  export function checkMapEntry(field, key, value) {
50
61
  const checkKey = checkScalarValue(key, field.mapKey);
51
62
  if (checkKey !== true) {
@@ -69,6 +80,84 @@ function checkSingular(field, value) {
69
80
  }
70
81
  return isReflectMessage(value, field.message);
71
82
  }
83
+ function checkScalarValue(value, scalar) {
84
+ switch (scalar) {
85
+ case ScalarType.DOUBLE:
86
+ return typeof value == "number";
87
+ case ScalarType.FLOAT:
88
+ if (typeof value != "number") {
89
+ return false;
90
+ }
91
+ if (Number.isNaN(value) || !Number.isFinite(value)) {
92
+ return true;
93
+ }
94
+ if (value > FLOAT32_MAX || value < FLOAT32_MIN) {
95
+ return `${value.toFixed()} out of range`;
96
+ }
97
+ return true;
98
+ case ScalarType.INT32:
99
+ case ScalarType.SFIXED32:
100
+ case ScalarType.SINT32:
101
+ // signed
102
+ if (typeof value !== "number" || !Number.isInteger(value)) {
103
+ return false;
104
+ }
105
+ if (value > INT32_MAX || value < INT32_MIN) {
106
+ return `${value.toFixed()} out of range`;
107
+ }
108
+ return true;
109
+ case ScalarType.FIXED32:
110
+ case ScalarType.UINT32:
111
+ // unsigned
112
+ if (typeof value !== "number" || !Number.isInteger(value)) {
113
+ return false;
114
+ }
115
+ if (value > UINT32_MAX || value < 0) {
116
+ return `${value.toFixed()} out of range`;
117
+ }
118
+ return true;
119
+ case ScalarType.BOOL:
120
+ return typeof value == "boolean";
121
+ case ScalarType.STRING:
122
+ if (typeof value != "string") {
123
+ return false;
124
+ }
125
+ return getTextEncoding().checkUtf8(value) || "invalid UTF8";
126
+ case ScalarType.BYTES:
127
+ return value instanceof Uint8Array;
128
+ case ScalarType.INT64:
129
+ case ScalarType.SFIXED64:
130
+ case ScalarType.SINT64:
131
+ // signed
132
+ if (typeof value != "string" &&
133
+ typeof value !== "bigint" &&
134
+ typeof value !== "number") {
135
+ return false;
136
+ }
137
+ try {
138
+ protoInt64.parse(value);
139
+ }
140
+ catch (e) {
141
+ return `${value} out of range`;
142
+ }
143
+ return true;
144
+ case ScalarType.FIXED64:
145
+ case ScalarType.UINT64:
146
+ // unsigned
147
+ if (typeof value != "string" &&
148
+ typeof value !== "bigint" &&
149
+ typeof value !== "number") {
150
+ return false;
151
+ }
152
+ try {
153
+ protoInt64.uParse(value);
154
+ }
155
+ catch (e) {
156
+ return `${value} out of range`;
157
+ }
158
+ return true;
159
+ }
160
+ }
72
161
  function reasonSingular(field, val, details) {
73
162
  details =
74
163
  typeof details == "string" ? `: ${details}` : `, got ${formatVal(val)}`;
@@ -141,3 +230,31 @@ function formatReflectMap(field) {
141
230
  return `ReflectMap (${ScalarType[field.mapKey]}, ${ScalarType[field.scalar]})`;
142
231
  }
143
232
  }
233
+ function scalarTypeDescription(scalar) {
234
+ switch (scalar) {
235
+ case ScalarType.STRING:
236
+ return "string";
237
+ case ScalarType.BOOL:
238
+ return "boolean";
239
+ case ScalarType.INT64:
240
+ case ScalarType.SINT64:
241
+ case ScalarType.SFIXED64:
242
+ return "bigint (int64)";
243
+ case ScalarType.UINT64:
244
+ case ScalarType.FIXED64:
245
+ return "bigint (uint64)";
246
+ case ScalarType.BYTES:
247
+ return "Uint8Array";
248
+ case ScalarType.DOUBLE:
249
+ return "number (float64)";
250
+ case ScalarType.FLOAT:
251
+ return "number (float32)";
252
+ case ScalarType.FIXED32:
253
+ case ScalarType.UINT32:
254
+ return "number (uint32)";
255
+ case ScalarType.INT32:
256
+ case ScalarType.SFIXED32:
257
+ case ScalarType.SINT32:
258
+ return "number (int32)";
259
+ }
260
+ }
@@ -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 {};
@@ -11,5 +11,6 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
+ import {} from "../descriptors.js";
14
15
  import { FieldError } from "./error.js";
15
16
  import { unsafeLocal } from "./unsafe.js";
@@ -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
  /**
@@ -11,12 +11,13 @@
11
11
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  // See the License for the specific language governing permissions and
13
13
  // limitations under the License.
14
+ import { ScalarType, } from "../descriptors.js";
14
15
  import { checkField, checkListItem, checkMapEntry } from "./reflect-check.js";
15
16
  import { FieldError } from "./error.js";
16
17
  import { unsafeAddListItem, unsafeClear, unsafeGet, unsafeIsSet, unsafeLocal, unsafeOneofCase, unsafeSet, unsafeSetMapEntry, } from "./unsafe.js";
17
18
  import { create } from "../create.js";
18
19
  import { isWrapper, isWrapperDesc } from "../wkt/wrappers.js";
19
- import { LongType, ScalarType, scalarZeroValue } from "./scalar.js";
20
+ import { scalarZeroValue } from "./scalar.js";
20
21
  import { protoInt64 } from "../proto-int64.js";
21
22
  import { isReflectList, isReflectMap, isReflectMessage } from "./guard.js";
22
23
  /**
@@ -84,7 +85,7 @@ class ReflectMessageImpl {
84
85
  return new ReflectMessageImpl(field.message, value, this.check);
85
86
  case "scalar":
86
87
  return (value === undefined
87
- ? scalarZeroValue(field.scalar, LongType.BIGINT)
88
+ ? scalarZeroValue(field.scalar, false)
88
89
  : longToReflect(field, value));
89
90
  case "enum":
90
91
  return (value !== null && value !== void 0 ? value : field.enum.values[0].number);
@@ -98,7 +99,7 @@ class ReflectMessageImpl {
98
99
  return err;
99
100
  }
100
101
  }
101
- let local = value;
102
+ let local;
102
103
  if (isReflectMap(value) || isReflectList(value)) {
103
104
  local = value[unsafeLocal];
104
105
  }
@@ -384,16 +385,16 @@ function longToReflect(field, value) {
384
385
  case ScalarType.INT64:
385
386
  case ScalarType.SFIXED64:
386
387
  case ScalarType.SINT64:
387
- if ("longType" in field &&
388
- field.longType == LongType.STRING &&
388
+ if ("longAsString" in field &&
389
+ field.longAsString &&
389
390
  typeof value == "string") {
390
391
  value = protoInt64.parse(value);
391
392
  }
392
393
  break;
393
394
  case ScalarType.FIXED64:
394
395
  case ScalarType.UINT64:
395
- if ("longType" in field &&
396
- field.longType == LongType.STRING &&
396
+ if ("longAsString" in field &&
397
+ field.longAsString &&
397
398
  typeof value == "string") {
398
399
  value = protoInt64.uParse(value);
399
400
  }
@@ -407,7 +408,7 @@ function longToLocal(field, value) {
407
408
  case ScalarType.INT64:
408
409
  case ScalarType.SFIXED64:
409
410
  case ScalarType.SINT64:
410
- if ("longType" in field && field.longType == LongType.STRING) {
411
+ if ("longAsString" in field && field.longAsString) {
411
412
  value = String(value);
412
413
  }
413
414
  else if (typeof value == "string" || typeof value == "number") {
@@ -416,7 +417,7 @@ function longToLocal(field, value) {
416
417
  break;
417
418
  case ScalarType.FIXED64:
418
419
  case ScalarType.UINT64:
419
- if ("longType" in field && field.longType == LongType.STRING) {
420
+ if ("longAsString" in field && field.longAsString) {
420
421
  value = String(value);
421
422
  }
422
423
  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";