6
6
// License text available at https://opensource.org/licenses/MIT
7
7
// Repository https://github.com/acacode/swagger-typescript-api
8
8
9
- const prettier = require ( "prettier" ) ;
10
9
const _ = require ( "lodash" ) ;
11
10
const { parseSchemas } = require ( "./schema" ) ;
12
11
const { parseRoutes, groupRoutes } = require ( "./routes" ) ;
13
12
const { createApiConfig } = require ( "./apiConfig" ) ;
14
13
const { prepareModelType } = require ( "./modelTypes" ) ;
15
14
const { getSwaggerObject, fixSwaggerScheme, convertSwaggerObject } = require ( "./swagger" ) ;
16
15
const { createComponentsMap, filterComponentsMap } = require ( "./components" ) ;
17
- const { createFile, getFileContent , pathIsExist } = require ( "./files" ) ;
16
+ const { createFile, pathIsExist } = require ( "./files" ) ;
18
17
const { addToConfig, config } = require ( "./config" ) ;
19
- const { getTemplates, renderTemplate } = require ( "./templates" ) ;
18
+ const { getTemplates } = require ( "./templates" ) ;
20
19
const constants = require ( "./constants" ) ;
21
- const { classNameCase } = require ( "./render/utils " ) ;
20
+ const { generateOutputFiles } = require ( "./output " ) ;
22
21
23
22
module . exports = {
24
23
generateApi : ( {
25
24
input,
26
25
output,
27
26
url,
28
27
spec,
29
- name,
30
- toJS,
28
+ name : fileName ,
29
+ toJS : translateToJavaScript ,
31
30
modular,
32
31
templates,
33
32
generateResponses = config . generateResponses ,
@@ -52,6 +51,7 @@ module.exports = {
52
51
templates,
53
52
generateUnionEnums,
54
53
moduleNameIndex,
54
+ prettierOptions,
55
55
modular,
56
56
extractRequestParams,
57
57
hooks : _ . merge ( config . hooks , rawHooks || { } ) ,
@@ -99,119 +99,36 @@ module.exports = {
99
99
hasQueryRoutes,
100
100
generateResponses,
101
101
routes : groupRoutes ( routes ) ,
102
+ extraTemplates,
103
+ fileName,
104
+ translateToJavaScript,
102
105
utils : {
103
106
...require ( "./render/utils" ) ,
104
107
...require ( "./common" ) ,
105
108
} ,
106
109
} ;
107
110
108
- const prettierFormat = ( content ) => prettier . format ( content , prettierOptions ) ;
109
-
110
111
const configuration = config . hooks . onPrepareConfig ( rawConfiguration ) || rawConfiguration ;
111
112
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
+ } ) ;
183
118
184
119
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 ;
212
121
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 } "` ) ;
214
129
}
130
+
131
+ return file ;
215
132
} ) ;
216
133
217
134
resolve ( {
0 commit comments