Skip to content

Commit 80deff8

Browse files
rookie-luochaodependabot[bot]Sean529
authored
perf: perf string_number enum, compatible default tags is empty (#130)
* build(deps): bump prettier from 3.4.1 to 3.4.2 Bumps [prettier](https://github.com/prettier/prettier) from 3.4.1 to 3.4.2. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.4.1...3.4.2) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <[email protected]> * perf: enum schemaObject.type 类型做兼容: 对数组中元素字符串和数字类型单独处理 (#129) * perf: enum schemaObject.type 类型做兼容: 对数组中元素字符串和数字类型单独处理 * perf: compatible default tags is empty * perf: perf string_number enum --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: AT <[email protected]>
1 parent 7dc117a commit 80deff8

File tree

5 files changed

+37
-12
lines changed

5 files changed

+37
-12
lines changed

.changeset/long-turtles-greet.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'openapi-ts-request': patch
3+
---
4+
5+
perf: compatible default tags is empty

.changeset/weak-dragons-impress.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'openapi-ts-request': patch
3+
---
4+
5+
perf: perf string_number enum

pnpm-lock.yaml

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/generator/serviceGenarator.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ import {
7575
getLastRefName,
7676
getRefName,
7777
handleDuplicateTypeNames,
78+
isAllNumber,
7879
isAllNumeric,
7980
isArraySchemaObject,
8081
isBinaryArraySchemaObject,
@@ -185,6 +186,10 @@ export default class ServiceGenerator {
185186

186187
// 这里判断tags
187188
tags.forEach((tag) => {
189+
if (!tag) {
190+
return;
191+
}
192+
188193
const tagLowerCase = tag.toLowerCase();
189194

190195
if (priorityRule === PriorityRule.include) {
@@ -1073,8 +1078,10 @@ export default class ServiceGenerator {
10731078
let enumStr = '';
10741079
let enumLabelTypeStr = '';
10751080

1076-
if (numberEnum.includes(schemaObject.type) || isAllNumeric(enumArray)) {
1081+
if (numberEnum.includes(schemaObject.type) || isAllNumber(enumArray)) {
10771082
enumStr = `{${map(enumArray, (value) => `"NUMBER_${value}"=${Number(value)}`).join(',')}}`;
1083+
} else if (isAllNumeric(enumArray)) {
1084+
enumStr = `{${map(enumArray, (value) => `"STRING_NUMBER_${value}"="${value}"`).join(',')}}`;
10781085
} else {
10791086
enumStr = `{${map(enumArray, (value) => `${value}="${value}"`).join(',')}}`;
10801087
}
@@ -1093,8 +1100,10 @@ export default class ServiceGenerator {
10931100
return `${value}:"${enumLabel}"`;
10941101
}).join(',')}}`;
10951102
} else {
1096-
if (numberEnum.includes(schemaObject.type) || isAllNumeric(enumArray)) {
1103+
if (numberEnum.includes(schemaObject.type) || isAllNumber(enumArray)) {
10971104
enumLabelTypeStr = `{${map(enumArray, (value) => `"NUMBER_${value}":${Number(value)}`).join(',')}}`;
1105+
} else if (isAllNumeric(enumArray)) {
1106+
enumLabelTypeStr = `{${map(enumArray, (value) => `"STRING_NUMBER_${value}":"${value}"`).join(',')}}`;
10981107
} else {
10991108
enumLabelTypeStr = `{${map(enumArray, (value) => `${value}:"${value}"`).join(',')}}`;
11001109
}

src/generator/util.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
isBoolean,
99
isEmpty,
1010
isNull,
11+
isNumber,
1112
isObject,
1213
isString,
1314
isUndefined,
@@ -483,3 +484,8 @@ export function resolveRefs(obj: OpenAPIObject, fields: string[]) {
483484
export function isAllNumeric(arr) {
484485
return every(arr, (item) => isString(item) && /^-?[0-9]+$/.test(item));
485486
}
487+
488+
// 检查数组每一项是否都是数字
489+
export function isAllNumber(arr) {
490+
return every(arr, (item) => isNumber(item));
491+
}

0 commit comments

Comments
 (0)