ts-proto 1.93.3 → 1.94.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/CHANGELOG.md +7 -0
- package/build/case.js +2 -8
- package/build/main.js +6 -0
- package/build/options.js +7 -1
- package/build/types.js +14 -1
- package/build/utils.js +6 -6
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
# [1.94.0](https://github.com/stephenh/ts-proto/compare/v1.93.3...v1.94.0) (2021-12-14)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* Round numbers in toJSON. ([#444](https://github.com/stephenh/ts-proto/issues/444)) ([bd2df7b](https://github.com/stephenh/ts-proto/commit/bd2df7b7176e961955ed1dcacb3602384e13ee45))
|
|
7
|
+
|
|
1
8
|
## [1.93.3](https://github.com/stephenh/ts-proto/compare/v1.93.2...v1.93.3) (2021-12-13)
|
|
2
9
|
|
|
3
10
|
|
package/build/case.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.camelCase = exports.capitalize = exports.camelToSnake = exports.
|
|
3
|
+
exports.camelCase = exports.capitalize = exports.camelToSnake = exports.maybeSnakeToCamel = void 0;
|
|
4
4
|
function maybeSnakeToCamel(s, options) {
|
|
5
|
-
|
|
6
|
-
const fromBooleanSnakeToCamel = options.snakeToCamel === true;
|
|
7
|
-
if ((fromBooleanSnakeToCamel || fromStringSnakeToCamel) && s.includes('_')) {
|
|
5
|
+
if (options.snakeToCamel.includes('keys') && s.includes('_')) {
|
|
8
6
|
return s
|
|
9
7
|
.split('_')
|
|
10
8
|
.map((word, i) => {
|
|
@@ -23,10 +21,6 @@ function maybeSnakeToCamel(s, options) {
|
|
|
23
21
|
}
|
|
24
22
|
}
|
|
25
23
|
exports.maybeSnakeToCamel = maybeSnakeToCamel;
|
|
26
|
-
function stringToSnakeCase(s) {
|
|
27
|
-
return s.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();
|
|
28
|
-
}
|
|
29
|
-
exports.stringToSnakeCase = stringToSnakeCase;
|
|
30
24
|
function camelToSnake(s) {
|
|
31
25
|
return s
|
|
32
26
|
.replace(/[\w]([A-Z])/g, function (m) {
|
package/build/main.js
CHANGED
|
@@ -980,6 +980,9 @@ function generateToJson(ctx, fullName, messageDesc) {
|
|
|
980
980
|
else if (types_1.isLong(valueType) && options.forceLong === options_1.LongOption.LONG) {
|
|
981
981
|
return ts_poet_1.code `${from}.toString()`;
|
|
982
982
|
}
|
|
983
|
+
else if (types_1.isWholeNumber(valueType) && !(types_1.isLong(valueType) && options.forceLong === options_1.LongOption.STRING)) {
|
|
984
|
+
return ts_poet_1.code `Math.round(${from})`;
|
|
985
|
+
}
|
|
983
986
|
else if (types_1.isScalar(valueType) || types_1.isValueType(ctx, valueType)) {
|
|
984
987
|
return ts_poet_1.code `${from}`;
|
|
985
988
|
}
|
|
@@ -1010,6 +1013,9 @@ function generateToJson(ctx, fullName, messageDesc) {
|
|
|
1010
1013
|
const v = types_1.isWithinOneOf(field) ? 'undefined' : types_1.defaultValue(ctx, field);
|
|
1011
1014
|
return ts_poet_1.code `(${from} || ${v}).toString()`;
|
|
1012
1015
|
}
|
|
1016
|
+
else if (types_1.isWholeNumber(field) && !(types_1.isLong(field) && options.forceLong === options_1.LongOption.STRING)) {
|
|
1017
|
+
return ts_poet_1.code `Math.round(${from})`;
|
|
1018
|
+
}
|
|
1013
1019
|
else {
|
|
1014
1020
|
return ts_poet_1.code `${from}`;
|
|
1015
1021
|
}
|
package/build/options.js
CHANGED
|
@@ -34,7 +34,7 @@ var ServiceOption;
|
|
|
34
34
|
function defaultOptions() {
|
|
35
35
|
return {
|
|
36
36
|
context: false,
|
|
37
|
-
snakeToCamel:
|
|
37
|
+
snakeToCamel: ['json', 'keys'],
|
|
38
38
|
forceLong: LongOption.NUMBER,
|
|
39
39
|
useOptionals: false,
|
|
40
40
|
useDate: DateOption.DATE,
|
|
@@ -100,6 +100,12 @@ function optionsFromParameter(parameter) {
|
|
|
100
100
|
// Treat useDate=false as TIMESTAMP
|
|
101
101
|
options.useDate = DateOption.TIMESTAMP;
|
|
102
102
|
}
|
|
103
|
+
if (options.snakeToCamel === false) {
|
|
104
|
+
options.snakeToCamel = [];
|
|
105
|
+
}
|
|
106
|
+
else if (options.snakeToCamel === true) {
|
|
107
|
+
options.snakeToCamel = ['keys', 'json'];
|
|
108
|
+
}
|
|
103
109
|
return options;
|
|
104
110
|
}
|
|
105
111
|
exports.optionsFromParameter = optionsFromParameter;
|
package/build/types.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.detectBatchMethod = exports.responsePromiseOrObservable = exports.responseObservable = exports.responsePromise = exports.responseType = exports.requestType = exports.rawRequestType = exports.detectMapType = exports.toTypeName = exports.getEnumMethod = exports.messageToTypeName = exports.wrapperTypeName = exports.valueTypeName = exports.isEmptyType = exports.isLongValueType = exports.isStructTypeName = exports.isStructType = exports.isListValueTypeName = exports.isListValueType = exports.isBytesValueType = exports.isAnyValueTypeName = exports.isAnyValueType = exports.isValueType = exports.isTimestamp = exports.isMapType = exports.isLong = exports.isRepeated = exports.isWithinOneOfThatShouldBeUnion = exports.isWithinOneOf = exports.isEnum = exports.isMessage = exports.isBytes = exports.isPrimitive = exports.isScalar = exports.createTypeMap = exports.notDefaultCheck = exports.defaultValue = exports.packedType = exports.toReaderCall = exports.basicTypeName = exports.basicLongWireType = exports.basicWireType = void 0;
|
|
3
|
+
exports.detectBatchMethod = exports.responsePromiseOrObservable = exports.responseObservable = exports.responsePromise = exports.responseType = exports.requestType = exports.rawRequestType = exports.detectMapType = exports.toTypeName = exports.getEnumMethod = exports.messageToTypeName = exports.wrapperTypeName = exports.valueTypeName = exports.isEmptyType = exports.isLongValueType = exports.isStructTypeName = exports.isStructType = exports.isListValueTypeName = exports.isListValueType = exports.isBytesValueType = exports.isAnyValueTypeName = exports.isAnyValueType = exports.isValueType = exports.isTimestamp = exports.isMapType = exports.isWholeNumber = exports.isLong = exports.isRepeated = exports.isWithinOneOfThatShouldBeUnion = exports.isWithinOneOf = exports.isEnum = exports.isMessage = exports.isBytes = exports.isPrimitive = exports.isScalar = exports.createTypeMap = exports.notDefaultCheck = exports.defaultValue = exports.packedType = exports.toReaderCall = exports.basicTypeName = exports.basicLongWireType = exports.basicWireType = void 0;
|
|
4
4
|
const ts_proto_descriptors_1 = require("ts-proto-descriptors");
|
|
5
5
|
const ts_poet_1 = require("ts-poet");
|
|
6
6
|
const options_1 = require("./options");
|
|
@@ -347,6 +347,19 @@ function isLong(field) {
|
|
|
347
347
|
return basicLongWireType(field.type) !== undefined;
|
|
348
348
|
}
|
|
349
349
|
exports.isLong = isLong;
|
|
350
|
+
function isWholeNumber(field) {
|
|
351
|
+
return (field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_INT32 ||
|
|
352
|
+
field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_INT64 ||
|
|
353
|
+
field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_UINT32 ||
|
|
354
|
+
field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_UINT64 ||
|
|
355
|
+
field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_SINT32 ||
|
|
356
|
+
field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_SINT64 ||
|
|
357
|
+
field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_FIXED32 ||
|
|
358
|
+
field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_FIXED64 ||
|
|
359
|
+
field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_SFIXED32 ||
|
|
360
|
+
field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_SFIXED64);
|
|
361
|
+
}
|
|
362
|
+
exports.isWholeNumber = isWholeNumber;
|
|
350
363
|
function isMapType(ctx, messageDesc, field) {
|
|
351
364
|
return detectMapType(ctx, messageDesc, field) !== undefined;
|
|
352
365
|
}
|
package/build/utils.js
CHANGED
|
@@ -145,14 +145,14 @@ class FormattedMethodDescriptor {
|
|
|
145
145
|
}
|
|
146
146
|
exports.FormattedMethodDescriptor = FormattedMethodDescriptor;
|
|
147
147
|
function determineFieldJsonName(field, options) {
|
|
148
|
-
//
|
|
149
|
-
//
|
|
150
|
-
|
|
151
|
-
const fromBooleanSnakeToCamel = options.snakeToCamel === true;
|
|
152
|
-
if (fromBooleanSnakeToCamel || fromStringSnakeToCamel) {
|
|
148
|
+
// jsonName will be camelCased by the protocol compiler, plus can be overridden by the user,
|
|
149
|
+
// so just use that instead of our own maybeSnakeToCamel
|
|
150
|
+
if (options.snakeToCamel.includes('json')) {
|
|
153
151
|
return field.jsonName;
|
|
154
152
|
}
|
|
155
|
-
|
|
153
|
+
else {
|
|
154
|
+
return field.name;
|
|
155
|
+
}
|
|
156
156
|
}
|
|
157
157
|
exports.determineFieldJsonName = determineFieldJsonName;
|
|
158
158
|
function impProto(options, module, type) {
|