66// License text available at https://opensource.org/licenses/MIT
77// Repository https://github.com/acacode/swagger-typescript-api
88
9- const prettier = require ( "prettier" ) ;
109const _ = require ( "lodash" ) ;
1110const { parseSchemas } = require ( "./schema" ) ;
1211const { parseRoutes, groupRoutes } = require ( "./routes" ) ;
1312const { createApiConfig } = require ( "./apiConfig" ) ;
1413const { prepareModelType } = require ( "./modelTypes" ) ;
1514const { getSwaggerObject, fixSwaggerScheme, convertSwaggerObject } = require ( "./swagger" ) ;
1615const { createComponentsMap, filterComponentsMap } = require ( "./components" ) ;
17- const { createFile, getFileContent , pathIsExist } = require ( "./files" ) ;
16+ const { createFile, pathIsExist } = require ( "./files" ) ;
1817const { addToConfig, config } = require ( "./config" ) ;
19- const { getTemplates, renderTemplate } = require ( "./templates" ) ;
18+ const { getTemplates } = require ( "./templates" ) ;
2019const constants = require ( "./constants" ) ;
21- const { classNameCase } = require ( "./render/utils " ) ;
20+ const { generateOutputFiles } = require ( "./output " ) ;
2221
2322module . exports = {
2423 generateApi : ( {
2524 input,
2625 output,
2726 url,
2827 spec,
29- name,
30- toJS,
28+ name : fileName ,
29+ toJS : translateToJavaScript ,
3130 modular,
3231 templates,
3332 generateResponses = config . generateResponses ,
@@ -52,6 +51,7 @@ module.exports = {
5251 templates,
5352 generateUnionEnums,
5453 moduleNameIndex,
54+ prettierOptions,
5555 modular,
5656 extractRequestParams,
5757 hooks : _ . merge ( config . hooks , rawHooks || { } ) ,
@@ -99,119 +99,36 @@ module.exports = {
9999 hasQueryRoutes,
100100 generateResponses,
101101 routes : groupRoutes ( routes ) ,
102+ extraTemplates,
103+ fileName,
104+ translateToJavaScript,
102105 utils : {
103106 ...require ( "./render/utils" ) ,
104107 ...require ( "./common" ) ,
105108 } ,
106109 } ;
107110
108- const prettierFormat = ( content ) => prettier . format ( content , prettierOptions ) ;
109-
110111 const configuration = config . hooks . onPrepareConfig ( rawConfiguration ) || rawConfiguration ;
111112
112- const files = modular
113- ? [
114- templatesToRender . dataContracts && {
115- name : `${ config . fileNames . dataContracts } .ts` ,
116- content : renderTemplate ( templatesToRender . dataContracts , configuration ) ,
117- } ,
118- configuration . config . generateRouteTypes &&
119- templatesToRender . routeTypes && {
120- name : `${ config . fileNames . routeTypes } .ts` ,
121- content : renderTemplate ( templatesToRender . routeTypes , configuration ) ,
122- } ,
123- configuration . config . generateClient &&
124- templatesToRender . httpClient && {
125- name : `${ config . fileNames . httpClient } .ts` ,
126- content : renderTemplate ( templatesToRender . httpClient , configuration ) ,
127- } ,
128- configuration . config . generateClient &&
129- templatesToRender . api &&
130- configuration . routes . $outOfModule && {
131- name : `${ config . fileNames . outOfModuleApi } .ts` ,
132- content : renderTemplate ( templatesToRender . api , {
133- ...configuration ,
134- route : configuration . routes . $outOfModule ,
135- } ) ,
136- } ,
137- ...( configuration . config . generateClient && templatesToRender . api
138- ? _ . reduce (
139- configuration . routes . combined ,
140- ( apis , route ) => [
141- ...apis ,
142- {
143- name : `${ classNameCase ( route . moduleName ) } .ts` ,
144- content : renderTemplate ( templatesToRender . api , {
145- ...configuration ,
146- route,
147- } ) ,
148- } ,
149- ] ,
150- [ ] ,
151- )
152- : [ ] ) ,
153- ] . filter ( Boolean )
154- : [
155- {
156- name : name ,
157- content : [
158- templatesToRender . dataContracts &&
159- renderTemplate ( templatesToRender . dataContracts , configuration ) ,
160- configuration . config . generateRouteTypes &&
161- templatesToRender . routeTypes &&
162- renderTemplate ( templatesToRender . routeTypes , configuration ) ,
163- configuration . config . generateClient &&
164- templatesToRender . httpClient &&
165- renderTemplate ( templatesToRender . httpClient , configuration ) ,
166- configuration . config . generateClient &&
167- templatesToRender . api &&
168- renderTemplate ( templatesToRender . api , configuration ) ,
169- ]
170- . filter ( Boolean )
171- . join ( "\n" ) ,
172- } ,
173- ] ;
174-
175- if ( extraTemplates ) {
176- extraTemplates . forEach ( ( extraTemplate ) => {
177- files . push ( {
178- name : `${ extraTemplate . name } .ts` ,
179- content : renderTemplate ( getFileContent ( extraTemplate . path ) , configuration ) ,
180- } ) ;
181- } ) ;
182- }
113+ const files = generateOutputFiles ( {
114+ modular,
115+ templatesToRender,
116+ configuration,
117+ } ) ;
183118
184119 const generatedFiles = files . map ( ( file ) => {
185- if ( toJS ) {
186- const { sourceFile, declarationFile } = require ( "./translators/JavaScript" ) . translate (
187- file . name ,
188- file . content ,
189- ) ;
190-
191- sourceFile . content = prettierFormat ( sourceFile . content ) ;
192- declarationFile . content = prettierFormat ( declarationFile . content ) ;
193-
194- if ( pathIsExist ( output ) ) {
195- createFile ( output , sourceFile . name , sourceFile . content ) ;
196- createFile ( output , declarationFile . name , declarationFile . content ) ;
197- console . log ( `✔️ your javascript api file created in "${ output } "` ) ;
198- }
199-
200- return {
201- name : file . name ,
202- content : sourceFile . content ,
203- declaration : declarationFile . content ,
204- } ;
205- } else {
206- file . content = prettierFormat ( file . content ) ;
207-
208- if ( pathIsExist ( output ) ) {
209- createFile ( output , file . name , file . content ) ;
210- console . log ( `✔️ your typescript api file created in "${ output } "` ) ;
211- }
120+ if ( ! pathIsExist ( output ) ) return file ;
212121
213- return file ;
122+ if ( translateToJavaScript ) {
123+ createFile ( output , file . name , file . content ) ;
124+ createFile ( output , file . declaration . name , file . declaration . content ) ;
125+ console . log ( `✔️ your javascript api file created in "${ output } "` ) ;
126+ } else {
127+ createFile ( output , file . name , file . content ) ;
128+ console . log ( `✔️ your typescript api file created in "${ output } "` ) ;
214129 }
130+
131+ return file ;
215132 } ) ;
216133
217134 resolve ( {
0 commit comments