diff --git a/.changeset/weak-beds-tap.md b/.changeset/weak-beds-tap.md new file mode 100644 index 0000000..a09c644 --- /dev/null +++ b/.changeset/weak-beds-tap.md @@ -0,0 +1,5 @@ +--- +'openapi-ts-request': patch +--- + +fix: fix generate number type enum error #117 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 52c1df2..ca3b061 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: dependencies: '@prettier/sync': specifier: ^0.5.2 - version: 0.5.2(prettier@3.3.3) + version: 0.5.2(prettier@3.4.1) '@trivago/prettier-plugin-sort-imports': specifier: ^4.3.0 - version: 4.3.0(prettier@3.3.3) + version: 4.3.0(prettier@3.4.1) axios: specifier: ^1.7.2 - version: 1.7.7 + version: 1.7.8 bing-translate-api: specifier: ^4.0.2 version: 4.0.2 @@ -55,7 +55,7 @@ importers: version: 3.2.4 prettier: specifier: ^3.3.2 - version: 3.3.3 + version: 3.4.1 reserved-words: specifier: ^0.1.2 version: 0.1.2 @@ -625,8 +625,8 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - axios@1.7.7: - resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + axios@1.7.8: + resolution: {integrity: sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1606,8 +1606,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + prettier@3.4.1: + resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==} engines: {node: '>=14'} hasBin: true @@ -2412,10 +2412,10 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - '@prettier/sync@0.5.2(prettier@3.3.3)': + '@prettier/sync@0.5.2(prettier@3.4.1)': dependencies: make-synchronized: 0.2.9 - prettier: 3.3.3 + prettier: 3.4.1 '@sindresorhus/is@4.6.0': {} @@ -2423,7 +2423,7 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.3.3)': + '@trivago/prettier-plugin-sort-imports@4.3.0(prettier@3.4.1)': dependencies: '@babel/generator': 7.17.7 '@babel/parser': 7.25.6 @@ -2431,7 +2431,7 @@ snapshots: '@babel/types': 7.17.0 javascript-natural-sort: 0.7.1 lodash: 4.17.21 - prettier: 3.3.3 + prettier: 3.4.1 transitivePeerDependencies: - supports-color @@ -2637,7 +2637,7 @@ snapshots: asynckit@0.4.0: {} - axios@1.7.7: + axios@1.7.8: dependencies: follow-redirects: 1.15.9 form-data: 4.0.0 @@ -3592,7 +3592,7 @@ snapshots: prettier@2.8.8: {} - prettier@3.3.3: {} + prettier@3.4.1: {} proxy-from-env@1.1.0: {} diff --git a/src/generator/serviceGenarator.ts b/src/generator/serviceGenarator.ts index 70a9609..1ef0ca6 100644 --- a/src/generator/serviceGenarator.ts +++ b/src/generator/serviceGenarator.ts @@ -1074,7 +1074,7 @@ export default class ServiceGenerator { let enumLabelTypeStr = ''; if (numberEnum.includes(schemaObject.type) || isAllNumeric(enumArray)) { - enumStr = `{${map(enumArray, (value) => `NUMBER_${value}=${Number(value)}`).join(',')}}`; + enumStr = `{${map(enumArray, (value) => `"NUMBER_${value}"=${Number(value)}`).join(',')}}`; } else { enumStr = `{${map(enumArray, (value) => `${value}="${value}"`).join(',')}}`; } @@ -1094,7 +1094,7 @@ export default class ServiceGenerator { }).join(',')}}`; } else { if (numberEnum.includes(schemaObject.type) || isAllNumeric(enumArray)) { - enumLabelTypeStr = `{${map(enumArray, (value) => `NUMBER_${value}:${Number(value)}`).join(',')}}`; + enumLabelTypeStr = `{${map(enumArray, (value) => `"NUMBER_${value}":${Number(value)}`).join(',')}}`; } else { enumLabelTypeStr = `{${map(enumArray, (value) => `${value}:"${value}"`).join(',')}}`; } diff --git a/src/generator/util.ts b/src/generator/util.ts index 7a33a71..3b09e39 100644 --- a/src/generator/util.ts +++ b/src/generator/util.ts @@ -481,5 +481,5 @@ export function resolveRefs(obj: OpenAPIObject, fields: string[]) { } export function isAllNumeric(arr) { - return every(arr, (item) => isString(item) && /^[0-9]+$/.test(item)); + return every(arr, (item) => isString(item) && /^-?[0-9]+$/.test(item)); } diff --git a/test/example-files/openapi-number-enum.json b/test/example-files/openapi-number-enum.json index ead55d5..9b149f7 100644 --- a/test/example-files/openapi-number-enum.json +++ b/test/example-files/openapi-number-enum.json @@ -153,6 +153,8 @@ "Poi2CategoryEnum": { "type": "string", "enum": [ + "-1", + "-1000", "010700", "010800", "010900",