Skip to content

Commit 11d4e53

Browse files
feat: adjust entry export
1 parent 0ee7fc7 commit 11d4e53

File tree

6 files changed

+48
-21
lines changed

6 files changed

+48
-21
lines changed

.changeset/popular-moose-accept.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'openapi-ts-request': minor
3+
---
4+
5+
feat: adjust entry export

src/generator/serviceGenarator.ts

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -192,13 +192,17 @@ export default class ServiceGenerator {
192192
);
193193
}
194194

195+
const displayTypeLabels = filter(
196+
interfaceTPConfigs,
197+
(item) => !item.isEnum
198+
);
195199
// 生成 type 翻译
196-
if (this.config.isDisplayTypeLabel) {
200+
if (this.config.isDisplayTypeLabel && !isEmpty(displayTypeLabels)) {
197201
this.genFileFromTemplate(
198202
`${displayTypeLabelFileName}.ts`,
199203
TypescriptFileType.displayTypeLabel,
200204
{
201-
list: filter(interfaceTPConfigs, (item) => !item.isEnum),
205+
list: displayTypeLabels,
202206
namespace: this.config.namespace,
203207
interfaceFileName: interfaceFileName,
204208
}
@@ -228,20 +232,7 @@ export default class ServiceGenerator {
228232
log('🚥 格式化失败,请检查 service controller 文件内可能存在的语法错误');
229233
}
230234

231-
// 生成 service index 文件
232-
this.genFileFromTemplate(
233-
`${serviceEntryFileName}.ts`,
234-
TypescriptFileType.serviceIndex,
235-
{
236-
list: this.classNameList,
237-
namespace: this.config.namespace,
238-
interfaceFileName: interfaceFileName,
239-
schemaFileName: schemaFileName,
240-
isGenJsonSchemas: this.config.isGenJsonSchemas,
241-
}
242-
);
243-
244-
if (this.config.isGenJsonSchemas) {
235+
if (this.config.isGenJsonSchemas && !isEmpty(this.schemaList)) {
245236
// 处理重复的 schemaName
246237
handleDuplicateTypeNames(this.schemaList);
247238
// 生成 schema 文件
@@ -254,6 +245,25 @@ export default class ServiceGenerator {
254245
);
255246
}
256247

248+
// 生成 service index 文件
249+
this.genFileFromTemplate(
250+
`${serviceEntryFileName}.ts`,
251+
TypescriptFileType.serviceIndex,
252+
{
253+
list: this.classNameList,
254+
namespace: this.config.namespace,
255+
interfaceFileName: interfaceFileName,
256+
isGenJsonSchemas:
257+
this.config.isGenJsonSchemas && !isEmpty(this.schemaList),
258+
schemaFileName: schemaFileName,
259+
isDisplayEnumLabel: !isEmpty(enums),
260+
displayEnumLabelFileName: displayEnumLabelFileName,
261+
isDisplayTypeLabel:
262+
this.config.isDisplayTypeLabel && !isEmpty(displayTypeLabels),
263+
displayTypeLabelFileName: displayTypeLabelFileName,
264+
}
265+
);
266+
257267
// 打印日志
258268
log('✅ 成功生成 api 文件');
259269
}

templates/interface.njk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,5 @@
5252
{%- endif %}
5353
{% endfor %}
5454
{%- else %}
55-
export default {}
55+
export {}
5656
{%- endif %}

templates/schema.njk

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,4 @@
33
export const {{ type.typeName }} = {{ type.type }}
44

55
{% endfor -%}
6-
{%- else %}
7-
export default {}
86
{%- endif %}

templates/serviceIndex.njk

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
11
/* eslint-disable */
22
// @ts-ignore
33
import * as {{ namespace }} from './{{ interfaceFileName }}';
4+
{%- if isDisplayEnumLabel %}
5+
import * as displayEnumLabels from './{{ displayEnumLabelFileName }}';
6+
{%- endif %}
7+
{%- if isDisplayTypeLabel %}
8+
import * as displayTypeLabels from './{{ displayTypeLabelFileName }}';
9+
{%- endif %}
410
{%- if isGenJsonSchemas %}
511
import * as schemas from './{{ schemaFileName }}';
612
{%- endif %}
713
{% for api in list -%}
814
import * as {{ api.controllerName }} from './{{ api.fileName }}';
915
{% endfor -%}
1016

11-
export default {
17+
export {
18+
{{ namespace }},
19+
{%- if isDisplayEnumLabel %}
20+
displayEnumLabels,
21+
{%- endif %}
22+
{%- if isDisplayTypeLabel %}
23+
displayTypeLabels,
24+
{%- endif %}
1225
{%- if isGenJsonSchemas %}
1326
schemas,
1427
{%- endif %}
15-
{{ namespace }},
1628
{% for api in list -%}
1729
{{ api.controllerName }},
1830
{% endfor -%}

test/test.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ const gen = async () => {
99
await openAPI.generateService({
1010
schemaPath: `${__dirname}/example-files/openapi-empty.json`,
1111
serversPath: './apis/empty',
12+
isDisplayTypeLabel: true,
13+
isGenJsonSchemas: true,
1214
});
1315

1416
// 测试 swagger => openapi, schema 循环引用

0 commit comments

Comments
 (0)