Comparing version 1.172.0 to 1.173.0
@@ -38,2 +38,3 @@ import { ToStringOpts } from "ts-poet/build/Code"; | ||
forceLong: LongOption; | ||
useJsTypeOverride: boolean; | ||
globalThisPolyfill: boolean; | ||
@@ -40,0 +41,0 @@ useOptionals: boolean | "none" | "deprecatedOnly" | "messages" | "all"; |
@@ -49,2 +49,3 @@ "use strict"; | ||
forceLong: LongOption.NUMBER, | ||
useJsTypeOverride: false, | ||
useOptionals: "none", | ||
@@ -51,0 +52,0 @@ useDate: DateOption.DATE, |
@@ -15,2 +15,3 @@ import { CodeGeneratorRequest, DescriptorProto, EnumDescriptorProto, FieldDescriptorProto, FieldDescriptorProto_Type, FileDescriptorProto, MessageOptions, MethodDescriptorProto, ServiceDescriptorProto } from "ts-proto-descriptors"; | ||
export declare function packedType(type: FieldDescriptorProto_Type): number | undefined; | ||
export declare function getFieldOptionsJsType(field: FieldDescriptorProto, options: Options): FieldDescriptorProto_Type | undefined; | ||
export declare function defaultValue(ctx: Context, field: FieldDescriptorProto): any; | ||
@@ -105,1 +106,2 @@ /** Creates code that checks that the field is not the default value. Supports scalars and enums. */ | ||
export declare function detectBatchMethod(ctx: Context, fileDesc: FileDescriptorProto, serviceDesc: ServiceDescriptorProto, methodDesc: MethodDescriptorProto): BatchMethod | undefined; | ||
export declare function isJsTypeFieldOption(options: Options, field: FieldDescriptorProto): boolean; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.detectBatchMethod = exports.responsePromiseOrObservable = exports.responseObservable = exports.responsePromise = exports.responseType = exports.requestType = exports.observableType = exports.rawRequestType = exports.detectMapType = exports.shouldGenerateJSMapType = exports.toTypeName = exports.getEnumMethod = exports.messageToTypeName = exports.wrapperTypeName = exports.valueTypeName = exports.isEmptyType = exports.isLongValueType = exports.isStructTypeName = exports.isStructType = exports.isListValueTypeName = exports.isListValueType = exports.isFieldMaskTypeName = exports.isFieldMaskType = exports.isBytesValueType = exports.isAnyValueTypeName = exports.isAnyValueType = exports.isValueType = exports.isTimestamp = exports.isObjectId = exports.isMapType = exports.isWholeNumber = exports.isLong = exports.isRepeated = exports.isWithinOneOfThatShouldBeUnion = exports.isWithinOneOf = exports.isEnum = exports.isMessage = exports.isBytes = exports.isPrimitive = exports.isOptionalProperty = exports.isScalar = exports.createTypeMap = exports.notDefaultCheck = exports.defaultValue = exports.packedType = exports.toReaderCall = exports.basicTypeName = exports.basicLongWireType = exports.basicWireType = void 0; | ||
exports.detectBatchMethod = exports.responsePromiseOrObservable = exports.responseObservable = exports.responsePromise = exports.responseType = exports.requestType = exports.observableType = exports.rawRequestType = exports.detectMapType = exports.shouldGenerateJSMapType = exports.toTypeName = exports.getEnumMethod = exports.messageToTypeName = exports.wrapperTypeName = exports.valueTypeName = exports.isEmptyType = exports.isLongValueType = exports.isStructTypeName = exports.isStructType = exports.isListValueTypeName = exports.isListValueType = exports.isFieldMaskTypeName = exports.isFieldMaskType = exports.isBytesValueType = exports.isAnyValueTypeName = exports.isAnyValueType = exports.isValueType = exports.isTimestamp = exports.isObjectId = exports.isMapType = exports.isWholeNumber = exports.isLong = exports.isRepeated = exports.isWithinOneOfThatShouldBeUnion = exports.isWithinOneOf = exports.isEnum = exports.isMessage = exports.isBytes = exports.isPrimitive = exports.isOptionalProperty = exports.isScalar = exports.createTypeMap = exports.notDefaultCheck = exports.defaultValue = exports.getFieldOptionsJsType = exports.packedType = exports.toReaderCall = exports.basicTypeName = exports.basicLongWireType = exports.basicWireType = void 0; | ||
exports.isJsTypeFieldOption = void 0; | ||
const ts_proto_descriptors_1 = require("ts-proto-descriptors"); | ||
@@ -63,4 +64,6 @@ const ts_poet_1 = require("ts-poet"); | ||
function basicTypeName(ctx, field, typeOptions = {}) { | ||
var _a, _b; | ||
const { options } = ctx; | ||
switch (field.type) { | ||
const fieldType = (_a = getFieldOptionsJsType(field, ctx.options)) !== null && _a !== void 0 ? _a : field.type; | ||
switch (fieldType) { | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_DOUBLE: | ||
@@ -79,4 +82,6 @@ case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_FLOAT: | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_SFIXED64: | ||
// this handles 2^53, Long is only needed for 2^64; this is effectively pbjs's forceNumber | ||
return longTypeName(ctx); | ||
return isJsTypeFieldOption(options, field) | ||
? (_b = jsTypeName(field)) !== null && _b !== void 0 ? _b : longTypeName(ctx) | ||
: // this handles 2^53, Long is only needed for 2^64; this is effectively pbjs's forceNumber | ||
longTypeName(ctx); | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_BOOL: | ||
@@ -169,6 +174,24 @@ return (0, ts_poet_1.code) `boolean`; | ||
exports.packedType = packedType; | ||
function getFieldOptionsJsType(field, options) { | ||
var _a; | ||
if (!options.useJsTypeOverride || ((_a = field.options) === null || _a === void 0 ? void 0 : _a.jstype) === undefined) { | ||
return; | ||
} | ||
switch (field.options.jstype) { | ||
case ts_proto_descriptors_1.FieldOptions_JSType.JS_STRING: | ||
return ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_STRING; | ||
case ts_proto_descriptors_1.FieldOptions_JSType.JS_NUMBER: | ||
return ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_INT64; | ||
// In the case of JS_NORMAL, we don't want to override the type, so we return | ||
case ts_proto_descriptors_1.FieldOptions_JSType.JS_NORMAL: | ||
// In the case of UNRECOGNIZED, we assume default behavior and we don't want to override the type, so we return | ||
case ts_proto_descriptors_1.FieldOptions_JSType.UNRECOGNIZED: | ||
return; | ||
} | ||
} | ||
exports.getFieldOptionsJsType = getFieldOptionsJsType; | ||
function defaultValue(ctx, field) { | ||
const { typeMap, options, utils, currentFile } = ctx; | ||
const useDefaultValue = !currentFile.isProto3Syntax && !options.disableProto2DefaultValues && field.defaultValue; | ||
const numbericDefaultVal = useDefaultValue ? field.defaultValue : 0; | ||
const numericDefaultVal = useDefaultValue ? field.defaultValue : 0; | ||
switch (field.type) { | ||
@@ -182,3 +205,3 @@ case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_DOUBLE: | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_SFIXED32: | ||
return numbericDefaultVal; | ||
return numericDefaultVal; | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_ENUM: | ||
@@ -200,30 +223,29 @@ // proto3 enforces enums starting at 0, however proto2 does not, so we have | ||
} | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_INT64: | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_UINT64: | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_FIXED64: | ||
if (options.forceLong === options_1.LongOption.LONG) { | ||
return (0, ts_poet_1.code) `${utils.Long}.${useDefaultValue ? "fromNumber" : "UZERO"}${useDefaultValue ? `(${numbericDefaultVal})` : ""}`; | ||
} | ||
else if (options.forceLong === options_1.LongOption.STRING) { | ||
return `"${numbericDefaultVal}"`; | ||
} | ||
else if (options.forceLong === options_1.LongOption.BIGINT) { | ||
return `BigInt("${numbericDefaultVal}")`; | ||
} | ||
else { | ||
return numbericDefaultVal; | ||
} | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_INT64: | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_SINT64: | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_SFIXED64: | ||
if (isJsTypeFieldOption(options, field)) { | ||
switch (field.options.jstype) { | ||
case ts_proto_descriptors_1.FieldOptions_JSType.JS_STRING: | ||
return `"${numericDefaultVal}"`; | ||
case ts_proto_descriptors_1.FieldOptions_JSType.JS_NUMBER: | ||
return numericDefaultVal; | ||
} | ||
} | ||
if (options.forceLong === options_1.LongOption.LONG) { | ||
return (0, ts_poet_1.code) `${utils.Long}.${useDefaultValue ? "fromNumber" : "ZERO"}${useDefaultValue ? `(${numbericDefaultVal})` : ""}`; | ||
const value = field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_UINT64 || field.type === ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_FIXED64 | ||
? "UZERO" | ||
: "ZERO"; | ||
return (0, ts_poet_1.code) `${utils.Long}.${useDefaultValue ? "fromNumber" : value}${useDefaultValue ? `(${numericDefaultVal})` : ""}`; | ||
} | ||
else if (options.forceLong === options_1.LongOption.STRING) { | ||
return `"${numbericDefaultVal}"`; | ||
return `"${numericDefaultVal}"`; | ||
} | ||
else if (options.forceLong === options_1.LongOption.BIGINT) { | ||
return `BigInt("${numbericDefaultVal}")`; | ||
return `BigInt("${numericDefaultVal}")`; | ||
} | ||
else { | ||
return numbericDefaultVal; | ||
return numericDefaultVal; | ||
} | ||
@@ -286,3 +308,3 @@ case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_BOOL: | ||
case ts_proto_descriptors_1.FieldDescriptorProto_Type.TYPE_SFIXED64: | ||
if (options.forceLong === options_1.LongOption.LONG) { | ||
if (options.forceLong === options_1.LongOption.LONG && !isJsTypeFieldOption(options, field)) { | ||
return (0, ts_poet_1.code) `${maybeNotUndefinedAnd} !${place}.equals(${defaultValue(ctx, field)})`; | ||
@@ -550,2 +572,11 @@ } | ||
} | ||
function jsTypeName(field) { | ||
var _a, _b; | ||
if (((_a = field.options) === null || _a === void 0 ? void 0 : _a.jstype) === ts_proto_descriptors_1.FieldOptions_JSType.JS_STRING) { | ||
return (0, ts_poet_1.code) `string`; | ||
} | ||
else if (((_b = field.options) === null || _b === void 0 ? void 0 : _b.jstype) === ts_proto_descriptors_1.FieldOptions_JSType.JS_NUMBER) { | ||
return (0, ts_poet_1.code) `number`; | ||
} | ||
} | ||
/** Maps `.some_proto_namespace.Message` to a TypeName. */ | ||
@@ -594,2 +625,3 @@ function messageToTypeName(ctx, protoType, typeOptions = {}) { | ||
function toTypeName(ctx, messageDesc, field, ensureOptional = false) { | ||
var _a; | ||
function finalize(type, isOptional) { | ||
@@ -601,3 +633,4 @@ if (isOptional) { | ||
} | ||
let type = basicTypeName(ctx, field, { keepValueType: false }); | ||
const fieldType = (_a = getFieldOptionsJsType(field, ctx.options)) !== null && _a !== void 0 ? _a : field.type; | ||
const type = basicTypeName(ctx, { ...field, type: fieldType }, { keepValueType: false }); | ||
if (isRepeated(field)) { | ||
@@ -768,1 +801,7 @@ const mapType = messageDesc ? detectMapType(ctx, messageDesc, field) : false; | ||
} | ||
function isJsTypeFieldOption(options, field) { | ||
var _a, _b; | ||
return (options.useJsTypeOverride && | ||
(((_a = field.options) === null || _a === void 0 ? void 0 : _a.jstype) === ts_proto_descriptors_1.FieldOptions_JSType.JS_NUMBER || ((_b = field.options) === null || _b === void 0 ? void 0 : _b.jstype) === ts_proto_descriptors_1.FieldOptions_JSType.JS_STRING)); | ||
} | ||
exports.isJsTypeFieldOption = isJsTypeFieldOption; |
{ | ||
"name": "ts-proto", | ||
"version": "1.172.0", | ||
"version": "1.173.0", | ||
"description": "", | ||
@@ -65,3 +65,3 @@ "main": "build/plugin.js", | ||
"ts-jest": "^29.1.1", | ||
"tsx": "^3.12.7", | ||
"tsx": "^3.14.0", | ||
"typescript": "^5.1.6", | ||
@@ -68,0 +68,0 @@ "uglify-js": "^3.17.4" |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
392557
6793
1033