@bufbuild/protobuf 2.10.1 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/clone.js +1 -1
- package/dist/cjs/codegenv1/enum.js +1 -1
- package/dist/cjs/codegenv1/extension.js +1 -1
- package/dist/cjs/codegenv1/file.js +1 -1
- package/dist/cjs/codegenv1/index.js +1 -1
- package/dist/cjs/codegenv1/message.js +1 -1
- package/dist/cjs/codegenv1/service.js +1 -1
- package/dist/cjs/codegenv1/symbols.js +1 -1
- package/dist/cjs/codegenv1/types.js +1 -1
- package/dist/cjs/codegenv2/boot.js +1 -1
- package/dist/cjs/codegenv2/embed.js +1 -1
- package/dist/cjs/codegenv2/enum.js +1 -1
- package/dist/cjs/codegenv2/extension.js +1 -1
- package/dist/cjs/codegenv2/file.js +1 -1
- package/dist/cjs/codegenv2/index.js +1 -1
- package/dist/cjs/codegenv2/message.js +1 -1
- package/dist/cjs/codegenv2/restore-json-names.js +1 -1
- package/dist/cjs/codegenv2/scalar.js +1 -1
- package/dist/cjs/codegenv2/service.js +1 -1
- package/dist/cjs/codegenv2/symbols.js +1 -1
- package/dist/cjs/codegenv2/types.js +1 -1
- package/dist/cjs/create.js +1 -1
- package/dist/cjs/descriptors.js +1 -1
- package/dist/cjs/equals.js +1 -1
- package/dist/cjs/extensions.js +1 -1
- package/dist/cjs/fields.js +1 -1
- package/dist/cjs/from-binary.js +1 -1
- package/dist/cjs/from-json.js +80 -83
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/is-message.js +1 -1
- package/dist/cjs/json-value.js +1 -1
- package/dist/cjs/merge.js +1 -1
- package/dist/cjs/proto-int64.js +1 -1
- package/dist/cjs/reflect/error.js +1 -1
- package/dist/cjs/reflect/guard.js +1 -1
- package/dist/cjs/reflect/index.js +1 -1
- package/dist/cjs/reflect/names.d.ts +11 -0
- package/dist/cjs/reflect/names.js +15 -1
- package/dist/cjs/reflect/nested-types.js +1 -1
- package/dist/cjs/reflect/path.js +1 -1
- package/dist/cjs/reflect/reflect-check.js +1 -1
- package/dist/cjs/reflect/reflect-types.js +1 -1
- package/dist/cjs/reflect/reflect.js +1 -1
- package/dist/cjs/reflect/scalar.js +1 -1
- package/dist/cjs/reflect/unsafe.js +1 -1
- package/dist/cjs/registry.js +2 -2
- package/dist/cjs/to-binary.js +1 -1
- package/dist/cjs/to-json.js +3 -5
- package/dist/cjs/types.js +1 -1
- package/dist/cjs/wire/base64-encoding.js +1 -1
- package/dist/cjs/wire/binary-encoding.js +1 -1
- package/dist/cjs/wire/index.js +1 -1
- package/dist/cjs/wire/size-delimited.js +1 -1
- package/dist/cjs/wire/text-encoding.js +1 -1
- package/dist/cjs/wire/text-format.js +1 -1
- package/dist/cjs/wkt/any.js +1 -1
- package/dist/cjs/wkt/duration.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/cpp_features_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +7 -1
- package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +8 -2
- package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/go_features_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/java_features_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +1 -1
- package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +1 -1
- package/dist/cjs/wkt/index.js +1 -1
- package/dist/cjs/wkt/timestamp.js +1 -1
- package/dist/cjs/wkt/wrappers.js +1 -1
- package/dist/esm/clone.js +1 -1
- package/dist/esm/codegenv1/enum.js +1 -1
- package/dist/esm/codegenv1/extension.js +1 -1
- package/dist/esm/codegenv1/file.js +1 -1
- package/dist/esm/codegenv1/index.js +1 -1
- package/dist/esm/codegenv1/message.js +1 -1
- package/dist/esm/codegenv1/service.js +1 -1
- package/dist/esm/codegenv1/symbols.js +1 -1
- package/dist/esm/codegenv1/types.js +1 -1
- package/dist/esm/codegenv2/boot.js +1 -1
- package/dist/esm/codegenv2/embed.js +1 -1
- package/dist/esm/codegenv2/enum.js +1 -1
- package/dist/esm/codegenv2/extension.js +1 -1
- package/dist/esm/codegenv2/file.js +1 -1
- package/dist/esm/codegenv2/index.js +1 -1
- package/dist/esm/codegenv2/message.js +1 -1
- package/dist/esm/codegenv2/restore-json-names.js +1 -1
- package/dist/esm/codegenv2/scalar.js +1 -1
- package/dist/esm/codegenv2/service.js +1 -1
- package/dist/esm/codegenv2/symbols.js +1 -1
- package/dist/esm/codegenv2/types.js +1 -1
- package/dist/esm/create.js +1 -1
- package/dist/esm/descriptors.js +1 -1
- package/dist/esm/equals.js +1 -1
- package/dist/esm/extensions.js +1 -1
- package/dist/esm/fields.js +1 -1
- package/dist/esm/from-binary.js +1 -1
- package/dist/esm/from-json.js +80 -83
- package/dist/esm/index.js +1 -1
- package/dist/esm/is-message.js +1 -1
- package/dist/esm/json-value.js +1 -1
- package/dist/esm/merge.js +1 -1
- package/dist/esm/proto-int64.js +1 -1
- package/dist/esm/reflect/error.js +1 -1
- package/dist/esm/reflect/guard.js +1 -1
- package/dist/esm/reflect/index.js +1 -1
- package/dist/esm/reflect/names.d.ts +11 -0
- package/dist/esm/reflect/names.js +14 -1
- package/dist/esm/reflect/nested-types.js +1 -1
- package/dist/esm/reflect/path.js +1 -1
- package/dist/esm/reflect/reflect-check.js +1 -1
- package/dist/esm/reflect/reflect-types.js +1 -1
- package/dist/esm/reflect/reflect.js +1 -1
- package/dist/esm/reflect/scalar.js +1 -1
- package/dist/esm/reflect/unsafe.js +1 -1
- package/dist/esm/registry.js +2 -2
- package/dist/esm/to-binary.js +1 -1
- package/dist/esm/to-json.js +4 -6
- package/dist/esm/types.js +1 -1
- package/dist/esm/wire/base64-encoding.js +1 -1
- package/dist/esm/wire/binary-encoding.js +1 -1
- package/dist/esm/wire/index.js +1 -1
- package/dist/esm/wire/size-delimited.js +1 -1
- package/dist/esm/wire/text-encoding.js +1 -1
- package/dist/esm/wire/text-format.js +1 -1
- package/dist/esm/wkt/any.js +1 -1
- package/dist/esm/wkt/duration.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/any_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/api_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/cpp_features_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +7 -1
- package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +8 -2
- package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/go_features_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/java_features_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/type_pb.js +1 -1
- package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +1 -1
- package/dist/esm/wkt/index.js +1 -1
- package/dist/esm/wkt/timestamp.js +1 -1
- package/dist/esm/wkt/wrappers.js +1 -1
- package/package.json +1 -1
package/dist/cjs/clone.js
CHANGED
package/dist/cjs/create.js
CHANGED
package/dist/cjs/descriptors.js
CHANGED
package/dist/cjs/equals.js
CHANGED
package/dist/cjs/extensions.js
CHANGED
package/dist/cjs/fields.js
CHANGED
package/dist/cjs/from-binary.js
CHANGED
package/dist/cjs/from-json.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2021-
|
|
2
|
+
// Copyright 2021-2026 Buf Technologies, Inc.
|
|
3
3
|
//
|
|
4
4
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
// you may not use this file except in compliance with the License.
|
|
@@ -25,7 +25,7 @@ const create_js_1 = require("./create.js");
|
|
|
25
25
|
const reflect_js_1 = require("./reflect/reflect.js");
|
|
26
26
|
const error_js_1 = require("./reflect/error.js");
|
|
27
27
|
const reflect_check_js_1 = require("./reflect/reflect-check.js");
|
|
28
|
-
const
|
|
28
|
+
const names_js_1 = require("./reflect/names.js");
|
|
29
29
|
const base64_encoding_js_1 = require("./wire/base64-encoding.js");
|
|
30
30
|
const index_js_1 = require("./wkt/index.js");
|
|
31
31
|
const extensions_js_1 = require("./extensions.js");
|
|
@@ -101,11 +101,7 @@ function mergeFromJson(schema, target, json, options) {
|
|
|
101
101
|
* Parses an enum value from JSON.
|
|
102
102
|
*/
|
|
103
103
|
function enumFromJson(descEnum, json) {
|
|
104
|
-
|
|
105
|
-
if (val === tokenIgnoredUnknownEnum) {
|
|
106
|
-
throw new Error(`cannot decode ${descEnum} from JSON: ${(0, reflect_check_js_1.formatVal)(json)}`);
|
|
107
|
-
}
|
|
108
|
-
return val;
|
|
104
|
+
return readEnum(descEnum, json, false);
|
|
109
105
|
}
|
|
110
106
|
/**
|
|
111
107
|
* Is the given value a JSON enum value?
|
|
@@ -113,6 +109,18 @@ function enumFromJson(descEnum, json) {
|
|
|
113
109
|
function isEnumJson(descEnum, value) {
|
|
114
110
|
return undefined !== descEnum.values.find((v) => v.name === value);
|
|
115
111
|
}
|
|
112
|
+
const messageJsonFields = new WeakMap();
|
|
113
|
+
function getJsonField(desc, jsonKey) {
|
|
114
|
+
var _a;
|
|
115
|
+
if (!messageJsonFields.has(desc)) {
|
|
116
|
+
const jsonNames = new Map();
|
|
117
|
+
for (const field of desc.fields) {
|
|
118
|
+
jsonNames.set(field.name, field).set(field.jsonName, field);
|
|
119
|
+
}
|
|
120
|
+
messageJsonFields.set(desc, jsonNames);
|
|
121
|
+
}
|
|
122
|
+
return (_a = messageJsonFields.get(desc)) === null || _a === void 0 ? void 0 : _a.get(jsonKey);
|
|
123
|
+
}
|
|
116
124
|
function readMessage(msg, json, opts) {
|
|
117
125
|
var _a;
|
|
118
126
|
if (tryWktFromJson(msg, json, opts)) {
|
|
@@ -122,12 +130,8 @@ function readMessage(msg, json, opts) {
|
|
|
122
130
|
throw new Error(`cannot decode ${msg.desc} from JSON: ${(0, reflect_check_js_1.formatVal)(json)}`);
|
|
123
131
|
}
|
|
124
132
|
const oneofSeen = new Map();
|
|
125
|
-
const jsonNames = new Map();
|
|
126
|
-
for (const field of msg.desc.fields) {
|
|
127
|
-
jsonNames.set(field.name, field).set(field.jsonName, field);
|
|
128
|
-
}
|
|
129
133
|
for (const [jsonKey, jsonValue] of Object.entries(json)) {
|
|
130
|
-
const field =
|
|
134
|
+
const field = getJsonField(msg.desc, jsonKey);
|
|
131
135
|
if (field) {
|
|
132
136
|
if (field.oneof) {
|
|
133
137
|
if (jsonValue === null && field.fieldKind == "scalar") {
|
|
@@ -178,6 +182,20 @@ function readField(msg, field, json, opts) {
|
|
|
178
182
|
break;
|
|
179
183
|
}
|
|
180
184
|
}
|
|
185
|
+
function readListOrMapItem(field, json, opts) {
|
|
186
|
+
if (field.scalar && json !== null) {
|
|
187
|
+
return scalarFromJson(field, json);
|
|
188
|
+
}
|
|
189
|
+
if (field.message && !isResetSentinelNullValue(field, json)) {
|
|
190
|
+
const msgValue = (0, reflect_js_1.reflect)(field.message);
|
|
191
|
+
readMessage(msgValue, json, opts);
|
|
192
|
+
return msgValue;
|
|
193
|
+
}
|
|
194
|
+
if (field.enum && !isResetSentinelNullValue(field, json)) {
|
|
195
|
+
return readEnum(field.enum, json, opts.ignoreUnknownFields);
|
|
196
|
+
}
|
|
197
|
+
throw new error_js_1.FieldError(field, `${field.fieldKind === "list" ? "list item" : "map value"} must not be null`);
|
|
198
|
+
}
|
|
181
199
|
function readMapField(map, json, opts) {
|
|
182
200
|
if (json === null) {
|
|
183
201
|
return;
|
|
@@ -187,28 +205,11 @@ function readMapField(map, json, opts) {
|
|
|
187
205
|
throw new error_js_1.FieldError(field, "expected object, got " + (0, reflect_check_js_1.formatVal)(json));
|
|
188
206
|
}
|
|
189
207
|
for (const [jsonMapKey, jsonMapValue] of Object.entries(json)) {
|
|
190
|
-
if (jsonMapValue === null) {
|
|
191
|
-
throw new error_js_1.FieldError(field, "map value must not be null");
|
|
192
|
-
}
|
|
193
|
-
let value;
|
|
194
|
-
switch (field.mapKind) {
|
|
195
|
-
case "message":
|
|
196
|
-
const msgValue = (0, reflect_js_1.reflect)(field.message);
|
|
197
|
-
readMessage(msgValue, jsonMapValue, opts);
|
|
198
|
-
value = msgValue;
|
|
199
|
-
break;
|
|
200
|
-
case "enum":
|
|
201
|
-
value = readEnum(field.enum, jsonMapValue, opts.ignoreUnknownFields, true);
|
|
202
|
-
if (value === tokenIgnoredUnknownEnum) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
break;
|
|
206
|
-
case "scalar":
|
|
207
|
-
value = scalarFromJson(field, jsonMapValue, true);
|
|
208
|
-
break;
|
|
209
|
-
}
|
|
210
208
|
const key = mapKeyFromJson(field.mapKey, jsonMapKey);
|
|
211
|
-
|
|
209
|
+
const value = readListOrMapItem(field, jsonMapValue, opts);
|
|
210
|
+
if (value !== tokenIgnoredUnknownEnum) {
|
|
211
|
+
map.set(key, value);
|
|
212
|
+
}
|
|
212
213
|
}
|
|
213
214
|
}
|
|
214
215
|
function readListField(list, json, opts) {
|
|
@@ -220,29 +221,14 @@ function readListField(list, json, opts) {
|
|
|
220
221
|
throw new error_js_1.FieldError(field, "expected Array, got " + (0, reflect_check_js_1.formatVal)(json));
|
|
221
222
|
}
|
|
222
223
|
for (const jsonItem of json) {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
switch (field.listKind) {
|
|
227
|
-
case "message":
|
|
228
|
-
const msgValue = (0, reflect_js_1.reflect)(field.message);
|
|
229
|
-
readMessage(msgValue, jsonItem, opts);
|
|
230
|
-
list.add(msgValue);
|
|
231
|
-
break;
|
|
232
|
-
case "enum":
|
|
233
|
-
const enumValue = readEnum(field.enum, jsonItem, opts.ignoreUnknownFields, true);
|
|
234
|
-
if (enumValue !== tokenIgnoredUnknownEnum) {
|
|
235
|
-
list.add(enumValue);
|
|
236
|
-
}
|
|
237
|
-
break;
|
|
238
|
-
case "scalar":
|
|
239
|
-
list.add(scalarFromJson(field, jsonItem, true));
|
|
240
|
-
break;
|
|
224
|
+
const value = readListOrMapItem(field, jsonItem, opts);
|
|
225
|
+
if (value !== tokenIgnoredUnknownEnum) {
|
|
226
|
+
list.add(value);
|
|
241
227
|
}
|
|
242
228
|
}
|
|
243
229
|
}
|
|
244
230
|
function readMessageField(msg, field, json, opts) {
|
|
245
|
-
if (
|
|
231
|
+
if (isResetSentinelNullValue(field, json)) {
|
|
246
232
|
msg.clear(field);
|
|
247
233
|
return;
|
|
248
234
|
}
|
|
@@ -251,30 +237,44 @@ function readMessageField(msg, field, json, opts) {
|
|
|
251
237
|
msg.set(field, msgValue);
|
|
252
238
|
}
|
|
253
239
|
function readEnumField(msg, field, json, opts) {
|
|
254
|
-
|
|
255
|
-
if (enumValue === tokenNull) {
|
|
240
|
+
if (isResetSentinelNullValue(field, json)) {
|
|
256
241
|
msg.clear(field);
|
|
242
|
+
return;
|
|
257
243
|
}
|
|
258
|
-
|
|
244
|
+
const enumValue = readEnum(field.enum, json, opts.ignoreUnknownFields);
|
|
245
|
+
if (enumValue !== tokenIgnoredUnknownEnum) {
|
|
259
246
|
msg.set(field, enumValue);
|
|
260
247
|
}
|
|
261
248
|
}
|
|
262
249
|
function readScalarField(msg, field, json) {
|
|
263
|
-
|
|
264
|
-
if (scalarValue === tokenNull) {
|
|
250
|
+
if (json === null) {
|
|
265
251
|
msg.clear(field);
|
|
266
252
|
}
|
|
267
253
|
else {
|
|
268
|
-
msg.set(field,
|
|
254
|
+
msg.set(field, scalarFromJson(field, json));
|
|
269
255
|
}
|
|
270
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* Indicates whether a value is a sentinel for reseting a field.
|
|
259
|
+
*
|
|
260
|
+
* For this to be true, the value must be a JSON null and the field must not
|
|
261
|
+
* permit a present, Protobuf-serializable null.
|
|
262
|
+
*
|
|
263
|
+
* Only message google.protobuf.Value and enum google.protobuf.NullValue fields
|
|
264
|
+
* permit Protobuf-serializable nulls.
|
|
265
|
+
*
|
|
266
|
+
* Note that field-resetting sentinel nulls are not permitted in lists and maps.
|
|
267
|
+
*/
|
|
268
|
+
function isResetSentinelNullValue(field, json) {
|
|
269
|
+
var _a, _b;
|
|
270
|
+
return (json === null &&
|
|
271
|
+
((_a = field.message) === null || _a === void 0 ? void 0 : _a.typeName) != "google.protobuf.Value" &&
|
|
272
|
+
((_b = field.enum) === null || _b === void 0 ? void 0 : _b.typeName) != "google.protobuf.NullValue");
|
|
273
|
+
}
|
|
271
274
|
const tokenIgnoredUnknownEnum = Symbol();
|
|
272
|
-
function readEnum(desc, json, ignoreUnknownFields
|
|
275
|
+
function readEnum(desc, json, ignoreUnknownFields) {
|
|
273
276
|
if (json === null) {
|
|
274
|
-
|
|
275
|
-
return 0; // google.protobuf.NullValue.NULL_VALUE = 0
|
|
276
|
-
}
|
|
277
|
-
return nullAsZeroValue ? desc.values[0].number : tokenNull;
|
|
277
|
+
return desc.values[0].number;
|
|
278
278
|
}
|
|
279
279
|
switch (typeof json) {
|
|
280
280
|
case "number":
|
|
@@ -294,14 +294,13 @@ function readEnum(desc, json, ignoreUnknownFields, nullAsZeroValue) {
|
|
|
294
294
|
}
|
|
295
295
|
throw new Error(`cannot decode ${desc} from JSON: ${(0, reflect_check_js_1.formatVal)(json)}`);
|
|
296
296
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
}
|
|
297
|
+
/**
|
|
298
|
+
* Try to parse a JSON value to a scalar value for the reflect API.
|
|
299
|
+
*
|
|
300
|
+
* Returns the input if the JSON value cannot be converted. Raises a FieldError
|
|
301
|
+
* if conversion would be ambiguous.
|
|
302
|
+
*/
|
|
303
|
+
function scalarFromJson(field, json) {
|
|
305
304
|
// int64, sfixed64, sint64, fixed64, uint64: Reflect supports string and number.
|
|
306
305
|
// string, bool: Supported by reflect.
|
|
307
306
|
switch (field.scalar) {
|
|
@@ -374,24 +373,24 @@ function scalarFromJson(field, json, nullAsZeroValue) {
|
|
|
374
373
|
*
|
|
375
374
|
* Returns the input if the JSON value cannot be converted.
|
|
376
375
|
*/
|
|
377
|
-
function mapKeyFromJson(type,
|
|
376
|
+
function mapKeyFromJson(type, jsonString) {
|
|
378
377
|
switch (type) {
|
|
379
378
|
case descriptors_js_1.ScalarType.BOOL:
|
|
380
|
-
switch (
|
|
379
|
+
switch (jsonString) {
|
|
381
380
|
case "true":
|
|
382
381
|
return true;
|
|
383
382
|
case "false":
|
|
384
383
|
return false;
|
|
385
384
|
}
|
|
386
|
-
return
|
|
385
|
+
return jsonString;
|
|
387
386
|
case descriptors_js_1.ScalarType.INT32:
|
|
388
387
|
case descriptors_js_1.ScalarType.FIXED32:
|
|
389
388
|
case descriptors_js_1.ScalarType.UINT32:
|
|
390
389
|
case descriptors_js_1.ScalarType.SFIXED32:
|
|
391
390
|
case descriptors_js_1.ScalarType.SINT32:
|
|
392
|
-
return int32FromJson(
|
|
391
|
+
return int32FromJson(jsonString);
|
|
393
392
|
default:
|
|
394
|
-
return
|
|
393
|
+
return jsonString;
|
|
395
394
|
}
|
|
396
395
|
}
|
|
397
396
|
/**
|
|
@@ -462,7 +461,7 @@ function tryWktFromJson(msg, jsonValue, opts) {
|
|
|
462
461
|
msg.clear(valueField);
|
|
463
462
|
}
|
|
464
463
|
else {
|
|
465
|
-
msg.set(valueField, scalarFromJson(valueField, jsonValue
|
|
464
|
+
msg.set(valueField, scalarFromJson(valueField, jsonValue));
|
|
466
465
|
}
|
|
467
466
|
return true;
|
|
468
467
|
}
|
|
@@ -560,14 +559,12 @@ function fieldMaskFromJson(fieldMask, json) {
|
|
|
560
559
|
if (json === "") {
|
|
561
560
|
return;
|
|
562
561
|
}
|
|
563
|
-
|
|
564
|
-
if (
|
|
562
|
+
fieldMask.paths = json.split(",").map((path) => {
|
|
563
|
+
if (path.includes("_")) {
|
|
565
564
|
throw new Error(`cannot decode message ${fieldMask.$typeName} from JSON: path names must be lowerCamelCase`);
|
|
566
565
|
}
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
}
|
|
570
|
-
fieldMask.paths = json.split(",").map(camelToSnake);
|
|
566
|
+
return (0, names_js_1.protoSnakeCase)(path);
|
|
567
|
+
});
|
|
571
568
|
}
|
|
572
569
|
function structFromJson(struct, json) {
|
|
573
570
|
if (typeof json != "object" || json == null || Array.isArray(json)) {
|
package/dist/cjs/index.js
CHANGED
package/dist/cjs/is-message.js
CHANGED
package/dist/cjs/json-value.js
CHANGED
package/dist/cjs/merge.js
CHANGED
package/dist/cjs/proto-int64.js
CHANGED
|
@@ -9,8 +9,19 @@ export declare function qualifiedName(desc: AnyDesc): string;
|
|
|
9
9
|
/**
|
|
10
10
|
* Converts snake_case to protoCamelCase according to the convention
|
|
11
11
|
* used by protoc to convert a field name to a JSON name.
|
|
12
|
+
*
|
|
13
|
+
* See https://protobuf.com/docs/language-spec#default-json-names
|
|
14
|
+
*
|
|
15
|
+
* The function protoSnakeCase provides the reverse.
|
|
12
16
|
*/
|
|
13
17
|
export declare function protoCamelCase(snakeCase: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Converts protoCamelCase to snake_case.
|
|
20
|
+
*
|
|
21
|
+
* This function is the reverse of function protoCamelCase. Note that some names
|
|
22
|
+
* are not reversible - for example, "foo__bar" -> "fooBar" -> "foo_bar".
|
|
23
|
+
*/
|
|
24
|
+
export declare function protoSnakeCase(lowerCamelCase: string): string;
|
|
14
25
|
/**
|
|
15
26
|
* Escapes names that are reserved for ECMAScript built-in object properties.
|
|
16
27
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
// Copyright 2021-
|
|
2
|
+
// Copyright 2021-2026 Buf Technologies, Inc.
|
|
3
3
|
//
|
|
4
4
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
5
|
// you may not use this file except in compliance with the License.
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.qualifiedName = qualifiedName;
|
|
17
17
|
exports.protoCamelCase = protoCamelCase;
|
|
18
|
+
exports.protoSnakeCase = protoSnakeCase;
|
|
18
19
|
exports.safeObjectProperty = safeObjectProperty;
|
|
19
20
|
/**
|
|
20
21
|
* Return a fully-qualified name for a Protobuf descriptor.
|
|
@@ -46,6 +47,10 @@ function qualifiedName(desc) {
|
|
|
46
47
|
/**
|
|
47
48
|
* Converts snake_case to protoCamelCase according to the convention
|
|
48
49
|
* used by protoc to convert a field name to a JSON name.
|
|
50
|
+
*
|
|
51
|
+
* See https://protobuf.com/docs/language-spec#default-json-names
|
|
52
|
+
*
|
|
53
|
+
* The function protoSnakeCase provides the reverse.
|
|
49
54
|
*/
|
|
50
55
|
function protoCamelCase(snakeCase) {
|
|
51
56
|
let capNext = false;
|
|
@@ -80,6 +85,15 @@ function protoCamelCase(snakeCase) {
|
|
|
80
85
|
}
|
|
81
86
|
return b.join("");
|
|
82
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Converts protoCamelCase to snake_case.
|
|
90
|
+
*
|
|
91
|
+
* This function is the reverse of function protoCamelCase. Note that some names
|
|
92
|
+
* are not reversible - for example, "foo__bar" -> "fooBar" -> "foo_bar".
|
|
93
|
+
*/
|
|
94
|
+
function protoSnakeCase(lowerCamelCase) {
|
|
95
|
+
return lowerCamelCase.replace(/[A-Z]/g, (letter) => "_" + letter.toLowerCase());
|
|
96
|
+
}
|
|
83
97
|
/**
|
|
84
98
|
* Names that cannot be used for object properties because they are reserved
|
|
85
99
|
* by built-in JavaScript properties.
|