11import fs from 'fs/promises' ;
2+ import { isBoolean , isString } from 'lodash-es' ;
23import path from 'path' ;
3- import { generateApi } from 'swagger-typescript-api' ;
4+ import { generateApi , GenerateApiParams } from 'swagger-typescript-api' ;
45import { axiosImportDefault , helpersImport , templatesDir } from './const' ;
5- import {
6- Generated ,
7- GeneratedCallback ,
8- OpenApiSpec ,
9- OpenApiSpecAsLocal ,
10- OpenApiSpecAsRemote ,
11- StrictConfig ,
12- } from './types' ;
6+ import { Generated , GeneratedCallback , OpenapiConfig , StrictConfig } from './types' ;
137
14- export async function generateItem ( oasItem : OpenApiSpec , config : StrictConfig ) : Promise < Generated > {
15- const { name, axiosImport : axiosImportScope } = oasItem ;
16- const { cwd , dest , axiosImport : axiosImportGlobal , unwrapResponseData } = config ;
17- const axiosImport = axiosImportScope || axiosImportGlobal || axiosImportDefault ;
18- const { files } = await generateApi ( {
8+ export function generateParams ( openapiConfig : OpenapiConfig , config : StrictConfig ) : GenerateApiParams {
9+ const { name, schema , unwrapResponseData : unwrapResponseDataScope } = openapiConfig ;
10+ const { unwrapResponseData : unwrapResponseDataGlobal } = config ;
11+ const unwrapResponseData = isBoolean ( unwrapResponseDataScope ) ? unwrapResponseDataScope : unwrapResponseDataGlobal ;
12+ const common : Omit < GenerateApiParams , 'url' | 'input' | 'spec' > = {
1913 name,
20- url : ( oasItem as OpenApiSpecAsRemote ) . url ,
21- spec : ( oasItem as OpenApiSpecAsLocal ) . spec ,
2214 output : false ,
2315 httpClientType : 'axios' ,
2416 templates : templatesDir ,
2517 silent : true ,
2618 unwrapResponseData,
27- } ) ;
19+ } ;
20+
21+ if ( isString ( schema ) ) {
22+ if ( / ^ h t t p s : \/ \/ / i. test ( schema ) ) {
23+ return {
24+ ...common ,
25+ url : schema ,
26+ } ;
27+ } else {
28+ return {
29+ ...common ,
30+ input : schema ,
31+ } ;
32+ }
33+ } else {
34+ return {
35+ ...common ,
36+ spec : schema ,
37+ } ;
38+ }
39+ }
2840
41+ export async function generateItem ( openapiConfig : OpenapiConfig , config : StrictConfig ) : Promise < Generated > {
42+ const { axiosImport : axiosImportScope , schema } = openapiConfig ;
43+ const { cwd, dest, axiosImport : axiosImportGlobal , unwrapResponseData } = config ;
44+ const axiosImport = axiosImportScope || axiosImportGlobal || axiosImportDefault ;
45+ const params = generateParams ( openapiConfig , config ) ;
46+ const { files } = await generateApi ( params ) ;
2947 const generated : Generated = {
3048 files : [ ] ,
31- oasItem ,
49+ openapi : openapiConfig ,
3250 config,
3351 } ;
3452
@@ -47,17 +65,17 @@ export async function generateItem(oasItem: OpenApiSpec, config: StrictConfig):
4765}
4866
4967export async function generate ( config : StrictConfig , callback ?: GeneratedCallback ) : Promise < Generated [ ] > {
50- const { list , onGenerated } = config ;
68+ const { apis , onGenerated } = config ;
5169 let index = 0 ;
52- const length = list . length ;
70+ const length = apis . length ;
5371 const generatedList : Generated [ ] = [ ] ;
5472
55- for ( const oasItem of list ) {
73+ for ( const oasItem of apis ) {
5674 const start = Date . now ( ) ;
5775 callback ?.(
5876 {
5977 files : [ ] ,
60- oasItem,
78+ openapi : oasItem ,
6179 config,
6280 } ,
6381 { index, length, done : false , start, end : start }
0 commit comments