@bufbuild/protobuf 2.2.2 → 2.2.4

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 (129) hide show
  1. package/dist/cjs/clone.js +1 -1
  2. package/dist/cjs/codegenv1/boot.js +1 -1
  3. package/dist/cjs/codegenv1/embed.js +1 -1
  4. package/dist/cjs/codegenv1/enum.js +1 -1
  5. package/dist/cjs/codegenv1/extension.js +1 -1
  6. package/dist/cjs/codegenv1/file.js +1 -1
  7. package/dist/cjs/codegenv1/index.js +1 -1
  8. package/dist/cjs/codegenv1/message.js +1 -1
  9. package/dist/cjs/codegenv1/restore-json-names.js +1 -1
  10. package/dist/cjs/codegenv1/scalar.js +1 -1
  11. package/dist/cjs/codegenv1/service.js +1 -1
  12. package/dist/cjs/codegenv1/symbols.js +1 -1
  13. package/dist/cjs/codegenv1/types.js +1 -1
  14. package/dist/cjs/create.js +1 -1
  15. package/dist/cjs/descriptors.js +1 -1
  16. package/dist/cjs/equals.d.ts +34 -2
  17. package/dist/cjs/equals.js +104 -26
  18. package/dist/cjs/extensions.js +1 -1
  19. package/dist/cjs/fields.js +1 -1
  20. package/dist/cjs/from-binary.js +1 -1
  21. package/dist/cjs/from-json.js +2 -2
  22. package/dist/cjs/index.js +1 -1
  23. package/dist/cjs/is-message.js +1 -1
  24. package/dist/cjs/json-value.js +1 -1
  25. package/dist/cjs/proto-int64.js +1 -1
  26. package/dist/cjs/reflect/error.js +1 -1
  27. package/dist/cjs/reflect/guard.js +1 -1
  28. package/dist/cjs/reflect/index.js +1 -1
  29. package/dist/cjs/reflect/names.js +1 -1
  30. package/dist/cjs/reflect/nested-types.js +1 -1
  31. package/dist/cjs/reflect/reflect-check.js +23 -23
  32. package/dist/cjs/reflect/reflect-types.js +1 -1
  33. package/dist/cjs/reflect/reflect.js +1 -1
  34. package/dist/cjs/reflect/scalar.js +1 -1
  35. package/dist/cjs/reflect/unsafe.js +1 -1
  36. package/dist/cjs/registry.js +5 -2
  37. package/dist/cjs/to-binary.js +63 -55
  38. package/dist/cjs/to-json.js +1 -1
  39. package/dist/cjs/types.js +1 -1
  40. package/dist/cjs/wire/base64-encoding.js +1 -1
  41. package/dist/cjs/wire/binary-encoding.js +1 -1
  42. package/dist/cjs/wire/index.js +1 -1
  43. package/dist/cjs/wire/size-delimited.js +2 -2
  44. package/dist/cjs/wire/text-encoding.js +1 -1
  45. package/dist/cjs/wire/text-format.js +1 -1
  46. package/dist/cjs/wkt/any.js +3 -3
  47. package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +1 -1
  48. package/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +2 -2
  49. package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +1 -1
  50. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +1 -1
  51. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +96 -9
  52. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +27 -8
  53. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +1 -1
  54. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +1 -1
  55. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +1 -1
  56. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +1 -1
  57. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +1 -1
  58. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +1 -1
  59. package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +1 -1
  60. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +54 -0
  61. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +1 -1
  62. package/dist/cjs/wkt/index.js +1 -1
  63. package/dist/cjs/wkt/timestamp.js +1 -1
  64. package/dist/cjs/wkt/wrappers.js +1 -1
  65. package/dist/esm/clone.js +1 -1
  66. package/dist/esm/codegenv1/boot.js +1 -1
  67. package/dist/esm/codegenv1/embed.js +1 -1
  68. package/dist/esm/codegenv1/enum.js +1 -1
  69. package/dist/esm/codegenv1/extension.js +1 -1
  70. package/dist/esm/codegenv1/file.js +1 -1
  71. package/dist/esm/codegenv1/index.js +1 -1
  72. package/dist/esm/codegenv1/message.js +1 -1
  73. package/dist/esm/codegenv1/restore-json-names.js +1 -1
  74. package/dist/esm/codegenv1/scalar.js +1 -1
  75. package/dist/esm/codegenv1/service.js +1 -1
  76. package/dist/esm/codegenv1/symbols.js +1 -1
  77. package/dist/esm/codegenv1/types.js +1 -1
  78. package/dist/esm/create.js +1 -1
  79. package/dist/esm/descriptors.js +1 -1
  80. package/dist/esm/equals.d.ts +34 -2
  81. package/dist/esm/equals.js +104 -26
  82. package/dist/esm/extensions.js +1 -1
  83. package/dist/esm/fields.js +1 -1
  84. package/dist/esm/from-binary.js +1 -1
  85. package/dist/esm/from-json.js +2 -2
  86. package/dist/esm/index.js +1 -1
  87. package/dist/esm/is-message.js +1 -1
  88. package/dist/esm/json-value.js +1 -1
  89. package/dist/esm/proto-int64.js +1 -1
  90. package/dist/esm/reflect/error.js +1 -1
  91. package/dist/esm/reflect/guard.js +1 -1
  92. package/dist/esm/reflect/index.js +1 -1
  93. package/dist/esm/reflect/names.js +1 -1
  94. package/dist/esm/reflect/nested-types.js +1 -1
  95. package/dist/esm/reflect/reflect-check.js +23 -23
  96. package/dist/esm/reflect/reflect-types.js +1 -1
  97. package/dist/esm/reflect/reflect.js +1 -1
  98. package/dist/esm/reflect/scalar.js +1 -1
  99. package/dist/esm/reflect/unsafe.js +1 -1
  100. package/dist/esm/registry.js +5 -2
  101. package/dist/esm/to-binary.js +63 -55
  102. package/dist/esm/to-json.js +1 -1
  103. package/dist/esm/types.js +1 -1
  104. package/dist/esm/wire/base64-encoding.js +1 -1
  105. package/dist/esm/wire/binary-encoding.js +1 -1
  106. package/dist/esm/wire/index.js +1 -1
  107. package/dist/esm/wire/size-delimited.js +2 -2
  108. package/dist/esm/wire/text-encoding.js +1 -1
  109. package/dist/esm/wire/text-format.js +1 -1
  110. package/dist/esm/wkt/any.js +3 -3
  111. package/dist/esm/wkt/gen/google/protobuf/any_pb.js +1 -1
  112. package/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +2 -2
  113. package/dist/esm/wkt/gen/google/protobuf/api_pb.js +1 -1
  114. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +1 -1
  115. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +96 -9
  116. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +26 -7
  117. package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +1 -1
  118. package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +1 -1
  119. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +1 -1
  120. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +1 -1
  121. package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +1 -1
  122. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +1 -1
  123. package/dist/esm/wkt/gen/google/protobuf/type_pb.js +1 -1
  124. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +54 -0
  125. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +1 -1
  126. package/dist/esm/wkt/index.js +1 -1
  127. package/dist/esm/wkt/timestamp.js +1 -1
  128. package/dist/esm/wkt/wrappers.js +1 -1
  129. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,9 +1,41 @@
1
1
  import type { MessageShape } from "./types.js";
2
- import type { DescMessage } from "./descriptors.js";
2
+ import { type DescMessage } from "./descriptors.js";
3
+ import type { Registry } from "./registry.js";
4
+ interface EqualsOptions {
5
+ /**
6
+ * A registry to look up extensions, and messages packed in Any.
7
+ *
8
+ * @private Experimental API, does not follow semantic versioning.
9
+ */
10
+ registry: Registry;
11
+ /**
12
+ * Unpack google.protobuf.Any before comparing.
13
+ * If a type is not in the registry, comparison falls back to comparing the
14
+ * fields of Any.
15
+ *
16
+ * @private Experimental API, does not follow semantic versioning.
17
+ */
18
+ unpackAny?: boolean;
19
+ /**
20
+ * Consider extensions when comparing.
21
+ *
22
+ * @private Experimental API, does not follow semantic versioning.
23
+ */
24
+ extensions?: boolean;
25
+ /**
26
+ * Consider unknown fields when comparing.
27
+ * The registry is used to distinguish between extensions, and unknown fields
28
+ * caused by schema changes.
29
+ *
30
+ * @private Experimental API, does not follow semantic versioning.
31
+ */
32
+ unknown?: boolean;
33
+ }
3
34
  /**
4
35
  * Compare two messages of the same type.
5
36
  *
6
37
  * Note that this function disregards extensions and unknown fields, and that
7
38
  * NaN is not equal NaN, following the IEEE standard.
8
39
  */
9
- export declare function equals<Desc extends DescMessage>(schema: Desc, a: MessageShape<Desc>, b: MessageShape<Desc>): boolean;
40
+ export declare function equals<Desc extends DescMessage>(schema: Desc, a: MessageShape<Desc>, b: MessageShape<Desc>, options?: EqualsOptions): boolean;
41
+ export {};
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -13,30 +13,43 @@
13
13
  // limitations under the License.
14
14
  import { scalarEquals } from "./reflect/scalar.js";
15
15
  import { reflect } from "./reflect/reflect.js";
16
+ import { ScalarType, } from "./descriptors.js";
17
+ import { anyUnpack } from "./wkt/index.js";
18
+ import { createExtensionContainer, getExtension } from "./extensions.js";
16
19
  /**
17
20
  * Compare two messages of the same type.
18
21
  *
19
22
  * Note that this function disregards extensions and unknown fields, and that
20
23
  * NaN is not equal NaN, following the IEEE standard.
21
24
  */
22
- export function equals(schema, a, b) {
25
+ export function equals(schema, a, b, options) {
23
26
  if (a.$typeName != schema.typeName || b.$typeName != schema.typeName) {
24
27
  return false;
25
28
  }
26
29
  if (a === b) {
27
30
  return true;
28
31
  }
29
- return reflectEquals(reflect(schema, a), reflect(schema, b));
32
+ return reflectEquals(reflect(schema, a), reflect(schema, b), options);
30
33
  }
31
- function reflectEquals(a, b) {
34
+ function reflectEquals(a, b, opts) {
35
+ if (a.desc.typeName === "google.protobuf.Any" && (opts === null || opts === void 0 ? void 0 : opts.unpackAny) == true) {
36
+ return anyUnpackedEquals(a.message, b.message, opts);
37
+ }
32
38
  for (const f of a.fields) {
33
- if (!fieldEquals(f, a, b)) {
39
+ if (!fieldEquals(f, a, b, opts)) {
34
40
  return false;
35
41
  }
36
42
  }
43
+ if ((opts === null || opts === void 0 ? void 0 : opts.unknown) == true && !unknownEquals(a, b, opts.registry)) {
44
+ return false;
45
+ }
46
+ if ((opts === null || opts === void 0 ? void 0 : opts.extensions) == true && !extensionsEquals(a, b, opts)) {
47
+ return false;
48
+ }
37
49
  return true;
38
50
  }
39
- function fieldEquals(f, a, b) {
51
+ // TODO(tstamm) add an option to consider NaN equal to NaN?
52
+ function fieldEquals(f, a, b, opts) {
40
53
  if (!a.isSet(f) && !b.isSet(f)) {
41
54
  return true;
42
55
  }
@@ -49,25 +62,26 @@ function fieldEquals(f, a, b) {
49
62
  case "enum":
50
63
  return a.get(f) === b.get(f);
51
64
  case "message":
52
- return reflectEquals(a.get(f), b.get(f));
65
+ return reflectEquals(a.get(f), b.get(f), opts);
53
66
  case "map": {
54
- const ma = a.get(f);
55
- const mb = b.get(f);
56
- const keysA = [];
57
- for (const k of ma.keys()) {
58
- if (!mb.has(k)) {
67
+ // TODO(tstamm) can't we compare sizes first?
68
+ const mapA = a.get(f);
69
+ const mapB = b.get(f);
70
+ const keys = [];
71
+ for (const k of mapA.keys()) {
72
+ if (!mapB.has(k)) {
59
73
  return false;
60
74
  }
61
- keysA.push(k);
75
+ keys.push(k);
62
76
  }
63
- for (const k of mb.keys()) {
64
- if (!ma.has(k)) {
77
+ for (const k of mapB.keys()) {
78
+ if (!mapA.has(k)) {
65
79
  return false;
66
80
  }
67
81
  }
68
- for (const key of keysA) {
69
- const va = ma.get(key);
70
- const vb = mb.get(key);
82
+ for (const key of keys) {
83
+ const va = mapA.get(key);
84
+ const vb = mapB.get(key);
71
85
  if (va === vb) {
72
86
  continue;
73
87
  }
@@ -75,7 +89,7 @@ function fieldEquals(f, a, b) {
75
89
  case "enum":
76
90
  return false;
77
91
  case "message":
78
- if (!reflectEquals(va, vb)) {
92
+ if (!reflectEquals(va, vb, opts)) {
79
93
  return false;
80
94
  }
81
95
  break;
@@ -89,14 +103,14 @@ function fieldEquals(f, a, b) {
89
103
  break;
90
104
  }
91
105
  case "list": {
92
- const la = a.get(f);
93
- const lb = b.get(f);
94
- if (la.size != lb.size) {
106
+ const listA = a.get(f);
107
+ const listB = b.get(f);
108
+ if (listA.size != listB.size) {
95
109
  return false;
96
110
  }
97
- for (let i = 0; i < la.size; i++) {
98
- const va = la.get(i);
99
- const vb = lb.get(i);
111
+ for (let i = 0; i < listA.size; i++) {
112
+ const va = listA.get(i);
113
+ const vb = listB.get(i);
100
114
  if (va === vb) {
101
115
  continue;
102
116
  }
@@ -104,7 +118,7 @@ function fieldEquals(f, a, b) {
104
118
  case "enum":
105
119
  return false;
106
120
  case "message":
107
- if (!reflectEquals(va, vb)) {
121
+ if (!reflectEquals(va, vb, opts)) {
108
122
  return false;
109
123
  }
110
124
  break;
@@ -120,3 +134,67 @@ function fieldEquals(f, a, b) {
120
134
  }
121
135
  return true;
122
136
  }
137
+ function anyUnpackedEquals(a, b, opts) {
138
+ if (a.typeUrl !== b.typeUrl) {
139
+ return false;
140
+ }
141
+ const unpackedA = anyUnpack(a, opts.registry);
142
+ const unpackedB = anyUnpack(b, opts.registry);
143
+ if (unpackedA && unpackedB) {
144
+ const schema = opts.registry.getMessage(unpackedA.$typeName);
145
+ if (schema) {
146
+ return equals(schema, unpackedA, unpackedB, opts);
147
+ }
148
+ }
149
+ return scalarEquals(ScalarType.BYTES, a.value, b.value);
150
+ }
151
+ function unknownEquals(a, b, registry) {
152
+ function getTrulyUnknown(msg, registry) {
153
+ var _a;
154
+ const u = (_a = msg.getUnknown()) !== null && _a !== void 0 ? _a : [];
155
+ return registry
156
+ ? u.filter((uf) => !registry.getExtensionFor(msg.desc, uf.no))
157
+ : u;
158
+ }
159
+ const unknownA = getTrulyUnknown(a, registry);
160
+ const unknownB = getTrulyUnknown(b, registry);
161
+ if (unknownA.length != unknownB.length) {
162
+ return false;
163
+ }
164
+ for (let i = 0; i < unknownA.length; i++) {
165
+ const a = unknownA[i], b = unknownB[i];
166
+ if (a.no != b.no) {
167
+ return false;
168
+ }
169
+ if (a.wireType != b.wireType) {
170
+ return false;
171
+ }
172
+ if (!scalarEquals(ScalarType.BYTES, a.data, b.data)) {
173
+ return false;
174
+ }
175
+ }
176
+ return true;
177
+ }
178
+ function extensionsEquals(a, b, opts) {
179
+ function getSetExtensions(msg, registry) {
180
+ var _a;
181
+ return ((_a = msg.getUnknown()) !== null && _a !== void 0 ? _a : [])
182
+ .map((uf) => registry.getExtensionFor(msg.desc, uf.no))
183
+ .filter((e) => e != undefined)
184
+ .filter((e, index, arr) => arr.indexOf(e) === index);
185
+ }
186
+ const extensionsA = getSetExtensions(a, opts.registry);
187
+ const extensionsB = getSetExtensions(b, opts.registry);
188
+ if (extensionsA.length != extensionsB.length ||
189
+ extensionsA.some((e) => !extensionsB.includes(e))) {
190
+ return false;
191
+ }
192
+ for (const extension of extensionsA) {
193
+ const [containerA, field] = createExtensionContainer(extension, getExtension(a.message, extension));
194
+ const [containerB] = createExtensionContainer(extension, getExtension(b.message, extension));
195
+ if (!fieldEquals(field, containerA, containerB, opts)) {
196
+ return false;
197
+ }
198
+ }
199
+ return true;
200
+ }
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -503,7 +503,7 @@ function timestampFromJson(timestamp, json) {
503
503
  if (typeof json !== "string") {
504
504
  throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: ${formatVal(json)}`);
505
505
  }
506
- const matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);
506
+ const matches = json.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.([0-9]{1,9}))?(?:Z|([+-][0-9][0-9]:[0-9][0-9]))$/);
507
507
  if (!matches) {
508
508
  throw new Error(`cannot decode message ${timestamp.$typeName} from JSON: invalid RFC 3339 string`);
509
509
  }
package/dist/esm/index.js CHANGED
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -129,33 +129,33 @@ function checkScalarValue(value, scalar) {
129
129
  case ScalarType.SFIXED64:
130
130
  case ScalarType.SINT64:
131
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);
132
+ if (typeof value == "bigint" ||
133
+ typeof value == "number" ||
134
+ (typeof value == "string" && value.length > 0)) {
135
+ try {
136
+ protoInt64.parse(value);
137
+ return true;
138
+ }
139
+ catch (e) {
140
+ return `${value} out of range`;
141
+ }
139
142
  }
140
- catch (e) {
141
- return `${value} out of range`;
142
- }
143
- return true;
143
+ return false;
144
144
  case ScalarType.FIXED64:
145
145
  case ScalarType.UINT64:
146
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);
147
+ if (typeof value == "bigint" ||
148
+ typeof value == "number" ||
149
+ (typeof value == "string" && value.length > 0)) {
150
+ try {
151
+ protoInt64.uParse(value);
152
+ return true;
153
+ }
154
+ catch (e) {
155
+ return `${value} out of range`;
156
+ }
154
157
  }
155
- catch (e) {
156
- return `${value} out of range`;
157
- }
158
- return true;
158
+ return false;
159
159
  }
160
160
  }
161
161
  function reasonSingular(field, val, details) {
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -224,7 +224,7 @@ const DELIMITED = 2;
224
224
  const OPEN = 1;
225
225
  // prettier-ignore
226
226
  // bootstrap-inject defaults: EDITION_PROTO2 to EDITION_2023: export const minimumEdition: SupportedEdition = $minimumEdition, maximumEdition: SupportedEdition = $maximumEdition;
227
- // generated from protoc v28.3
227
+ // generated from protoc v30.0
228
228
  export const minimumEdition = 998, maximumEdition = 1000;
229
229
  const featureDefaults = {
230
230
  // EDITION_PROTO2
@@ -235,6 +235,7 @@ const featureDefaults = {
235
235
  utf8Validation: 3, // NONE,
236
236
  messageEncoding: 1, // LENGTH_PREFIXED,
237
237
  jsonFormat: 2, // LEGACY_BEST_EFFORT,
238
+ enforceNamingStyle: 2, // STYLE_LEGACY,
238
239
  },
239
240
  // EDITION_PROTO3
240
241
  999: {
@@ -244,6 +245,7 @@ const featureDefaults = {
244
245
  utf8Validation: 2, // VERIFY,
245
246
  messageEncoding: 1, // LENGTH_PREFIXED,
246
247
  jsonFormat: 1, // ALLOW,
248
+ enforceNamingStyle: 2, // STYLE_LEGACY,
247
249
  },
248
250
  // EDITION_2023
249
251
  1000: {
@@ -253,6 +255,7 @@ const featureDefaults = {
253
255
  utf8Validation: 2, // VERIFY,
254
256
  messageEncoding: 1, // LENGTH_PREFIXED,
255
257
  jsonFormat: 1, // ALLOW,
258
+ enforceNamingStyle: 2, // STYLE_LEGACY,
256
259
  },
257
260
  };
258
261
  /**
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -52,7 +52,7 @@ export function writeField(writer, opts, msg, field) {
52
52
  switch (field.fieldKind) {
53
53
  case "scalar":
54
54
  case "enum":
55
- writeScalar(writer, (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32, field.number, msg.get(field));
55
+ writeScalar(writer, msg.desc.typeName, field.name, (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32, field.number, msg.get(field));
56
56
  break;
57
57
  case "list":
58
58
  writeListField(writer, opts, field, msg.get(field));
@@ -67,8 +67,8 @@ export function writeField(writer, opts, msg, field) {
67
67
  break;
68
68
  }
69
69
  }
70
- function writeScalar(writer, scalarType, fieldNo, value) {
71
- writeScalarValue(writer.tag(fieldNo, writeTypeOfScalar(scalarType)), scalarType, value);
70
+ function writeScalar(writer, msgName, fieldName, scalarType, fieldNo, value) {
71
+ writeScalarValue(writer.tag(fieldNo, writeTypeOfScalar(scalarType)), msgName, fieldName, scalarType, value);
72
72
  }
73
73
  function writeMessageField(writer, opts, field, message) {
74
74
  if (field.delimitedEncoding) {
@@ -93,25 +93,25 @@ function writeListField(writer, opts, field, list) {
93
93
  }
94
94
  writer.tag(field.number, WireType.LengthDelimited).fork();
95
95
  for (const item of list) {
96
- writeScalarValue(writer, scalarType, item);
96
+ writeScalarValue(writer, field.parent.typeName, field.name, scalarType, item);
97
97
  }
98
98
  writer.join();
99
99
  return;
100
100
  }
101
101
  for (const item of list) {
102
- writeScalar(writer, scalarType, field.number, item);
102
+ writeScalar(writer, field.parent.typeName, field.name, scalarType, field.number, item);
103
103
  }
104
104
  }
105
105
  function writeMapEntry(writer, opts, field, key, value) {
106
106
  var _a;
107
107
  writer.tag(field.number, WireType.LengthDelimited).fork();
108
108
  // write key, expecting key field number = 1
109
- writeScalar(writer, field.mapKey, 1, key);
109
+ writeScalar(writer, field.parent.typeName, field.name, field.mapKey, 1, key);
110
110
  // write value, expecting value field number = 2
111
111
  switch (field.mapKind) {
112
112
  case "scalar":
113
113
  case "enum":
114
- writeScalar(writer, (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32, 2, value);
114
+ writeScalar(writer, field.parent.typeName, field.name, (_a = field.scalar) !== null && _a !== void 0 ? _a : ScalarType.INT32, 2, value);
115
115
  break;
116
116
  case "message":
117
117
  writeFields(writer.tag(2, WireType.LengthDelimited).fork(), opts, value).join();
@@ -119,53 +119,61 @@ function writeMapEntry(writer, opts, field, key, value) {
119
119
  }
120
120
  writer.join();
121
121
  }
122
- function writeScalarValue(writer, type, value) {
123
- switch (type) {
124
- case ScalarType.STRING:
125
- writer.string(value);
126
- break;
127
- case ScalarType.BOOL:
128
- writer.bool(value);
129
- break;
130
- case ScalarType.DOUBLE:
131
- writer.double(value);
132
- break;
133
- case ScalarType.FLOAT:
134
- writer.float(value);
135
- break;
136
- case ScalarType.INT32:
137
- writer.int32(value);
138
- break;
139
- case ScalarType.INT64:
140
- writer.int64(value);
141
- break;
142
- case ScalarType.UINT64:
143
- writer.uint64(value);
144
- break;
145
- case ScalarType.FIXED64:
146
- writer.fixed64(value);
147
- break;
148
- case ScalarType.BYTES:
149
- writer.bytes(value);
150
- break;
151
- case ScalarType.FIXED32:
152
- writer.fixed32(value);
153
- break;
154
- case ScalarType.SFIXED32:
155
- writer.sfixed32(value);
156
- break;
157
- case ScalarType.SFIXED64:
158
- writer.sfixed64(value);
159
- break;
160
- case ScalarType.SINT64:
161
- writer.sint64(value);
162
- break;
163
- case ScalarType.UINT32:
164
- writer.uint32(value);
165
- break;
166
- case ScalarType.SINT32:
167
- writer.sint32(value);
168
- break;
122
+ function writeScalarValue(writer, msgName, fieldName, type, value) {
123
+ try {
124
+ switch (type) {
125
+ case ScalarType.STRING:
126
+ writer.string(value);
127
+ break;
128
+ case ScalarType.BOOL:
129
+ writer.bool(value);
130
+ break;
131
+ case ScalarType.DOUBLE:
132
+ writer.double(value);
133
+ break;
134
+ case ScalarType.FLOAT:
135
+ writer.float(value);
136
+ break;
137
+ case ScalarType.INT32:
138
+ writer.int32(value);
139
+ break;
140
+ case ScalarType.INT64:
141
+ writer.int64(value);
142
+ break;
143
+ case ScalarType.UINT64:
144
+ writer.uint64(value);
145
+ break;
146
+ case ScalarType.FIXED64:
147
+ writer.fixed64(value);
148
+ break;
149
+ case ScalarType.BYTES:
150
+ writer.bytes(value);
151
+ break;
152
+ case ScalarType.FIXED32:
153
+ writer.fixed32(value);
154
+ break;
155
+ case ScalarType.SFIXED32:
156
+ writer.sfixed32(value);
157
+ break;
158
+ case ScalarType.SFIXED64:
159
+ writer.sfixed64(value);
160
+ break;
161
+ case ScalarType.SINT64:
162
+ writer.sint64(value);
163
+ break;
164
+ case ScalarType.UINT32:
165
+ writer.uint32(value);
166
+ break;
167
+ case ScalarType.SINT32:
168
+ writer.sint32(value);
169
+ break;
170
+ }
171
+ }
172
+ catch (e) {
173
+ if (e instanceof Error) {
174
+ throw new Error(`cannot encode field ${msgName}.${fieldName} to binary: ${e.message}`);
175
+ }
176
+ throw e;
169
177
  }
170
178
  }
171
179
  function writeTypeOfScalar(type) {
@@ -1,4 +1,4 @@
1
- // Copyright 2021-2024 Buf Technologies, Inc.
1
+ // Copyright 2021-2025 Buf Technologies, Inc.
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.