swagger-typescript-api 13.0.3 → 13.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +310 -369
  2. package/cli/constants.js +3 -3
  3. package/cli/execute.js +12 -12
  4. package/cli/index.js +16 -16
  5. package/cli/operations/display-help.js +25 -25
  6. package/cli/parse-args.js +3 -3
  7. package/cli/process-option.js +11 -11
  8. package/index.d.ts +140 -45
  9. package/index.js +110 -111
  10. package/package.json +93 -108
  11. package/src/code-formatter.js +6 -6
  12. package/src/code-gen-process.js +45 -45
  13. package/src/commands/generate-templates/configuration.js +2 -2
  14. package/src/commands/generate-templates/index.js +1 -1
  15. package/src/commands/generate-templates/templates-gen-process.js +21 -21
  16. package/src/component-type-name-resolver.js +4 -4
  17. package/src/configuration.js +107 -107
  18. package/src/constants.js +26 -26
  19. package/src/index.js +3 -3
  20. package/src/schema-components-map.js +3 -3
  21. package/src/schema-parser/base-schema-parsers/array.js +3 -3
  22. package/src/schema-parser/base-schema-parsers/complex.js +5 -5
  23. package/src/schema-parser/base-schema-parsers/discriminator.js +12 -12
  24. package/src/schema-parser/base-schema-parsers/enum.js +12 -12
  25. package/src/schema-parser/base-schema-parsers/object.js +8 -8
  26. package/src/schema-parser/base-schema-parsers/primitive.js +3 -3
  27. package/src/schema-parser/complex-schema-parsers/all-of.js +2 -2
  28. package/src/schema-parser/complex-schema-parsers/any-of.js +2 -2
  29. package/src/schema-parser/complex-schema-parsers/not.js +1 -1
  30. package/src/schema-parser/complex-schema-parsers/one-of.js +2 -2
  31. package/src/schema-parser/mono-schema-parser.js +1 -1
  32. package/src/schema-parser/schema-formatters.js +14 -14
  33. package/src/schema-parser/schema-parser-fabric.js +5 -5
  34. package/src/schema-parser/schema-parser.js +24 -24
  35. package/src/schema-parser/schema-utils.js +21 -21
  36. package/src/schema-parser/util/enum-key-resolver.js +2 -2
  37. package/src/schema-routes/schema-routes.js +68 -68
  38. package/src/schema-routes/util/specific-arg-name-resolver.js +2 -2
  39. package/src/schema-walker.js +7 -7
  40. package/src/swagger-schema-resolver.js +16 -16
  41. package/src/templates-worker.js +21 -18
  42. package/src/translators/javascript.js +7 -7
  43. package/src/translators/translator.js +1 -1
  44. package/src/type-name-formatter.js +16 -16
  45. package/src/util/file-system.js +13 -14
  46. package/src/util/id.js +2 -2
  47. package/src/util/internal-case.js +1 -1
  48. package/src/util/logger.js +27 -27
  49. package/src/util/name-resolver.js +5 -5
  50. package/src/util/object-assign.js +2 -2
  51. package/src/util/pascal-case.js +1 -1
  52. package/src/util/request.js +15 -10
  53. package/templates/README.md +15 -14
  54. package/templates/base/README.md +4 -5
  55. package/templates/base/http-clients/fetch-http-client.ejs +1 -1
  56. package/templates/base/route-name.ejs +4 -4
  57. package/templates/default/README.md +4 -4
  58. package/templates/modular/README.md +4 -4
package/index.js CHANGED
@@ -6,294 +6,294 @@
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 { version, name } = require('./package.json');
10
- const { cli } = require('./cli');
11
- const { generateApi, generateTemplates } = require('./src');
12
- const { HTTP_CLIENT } = require('./src/constants');
13
- const { resolve } = require('path');
14
- const { CodeGenConfig } = require('./src/configuration');
9
+ const { version, name } = require("./package.json");
10
+ const { cli } = require("./cli");
11
+ const { generateApi, generateTemplates } = require("./src");
12
+ const { HTTP_CLIENT } = require("./src/constants");
13
+ const { resolve } = require("node:path");
14
+ const { CodeGenConfig } = require("./src/configuration");
15
15
  const {
16
16
  TemplatesGenConfig,
17
- } = require('./src/commands/generate-templates/configuration');
17
+ } = require("./src/commands/generate-templates/configuration");
18
18
 
19
19
  const codeGenBaseConfig = new CodeGenConfig({});
20
20
  const templateGenBaseConfig = new TemplatesGenConfig({});
21
21
 
22
22
  const program = cli({
23
23
  name: name,
24
- alias: 'sta',
24
+ alias: "sta",
25
25
  version: version,
26
26
  description:
27
- 'Generate api via swagger scheme.\nSupports OA 3.0, 2.0, JSON, yaml.',
27
+ "Generate api via swagger scheme.\nSupports OA 3.0, 2.0, JSON, yaml.",
28
28
  options: [
29
29
  {
30
- flags: '-p, --path <string>',
31
- description: 'path/url to swagger scheme',
30
+ flags: "-p, --path <string>",
31
+ description: "path/url to swagger scheme",
32
32
  required: true,
33
33
  },
34
34
  {
35
- flags: '-o, --output <string>',
36
- description: 'output path of typescript api file',
37
- default: './',
35
+ flags: "-o, --output <string>",
36
+ description: "output path of typescript api file",
37
+ default: "./",
38
38
  },
39
39
  {
40
- flags: '-n, --name <string>',
41
- description: 'name of output typescript api file',
40
+ flags: "-n, --name <string>",
41
+ description: "name of output typescript api file",
42
42
  default: codeGenBaseConfig.fileName,
43
43
  },
44
44
  {
45
- flags: '-t, --templates <string>',
46
- description: 'path to folder containing templates',
45
+ flags: "-t, --templates <string>",
46
+ description: "path to folder containing templates",
47
47
  },
48
48
  {
49
- flags: '-d, --default-as-success',
49
+ flags: "-d, --default-as-success",
50
50
  description:
51
51
  'use "default" response status code as success response too.\n' +
52
52
  'some swagger schemas use "default" response status code as success response type by default.',
53
53
  default: codeGenBaseConfig.defaultResponseAsSuccess,
54
- internal: { name: 'defaultResponseAsSuccess' },
54
+ internal: { name: "defaultResponseAsSuccess" },
55
55
  },
56
56
  {
57
- flags: '-r, --responses',
57
+ flags: "-r, --responses",
58
58
  description:
59
- 'generate additional information about request responses\n' +
60
- 'also add typings for bad responses',
59
+ "generate additional information about request responses\n" +
60
+ "also add typings for bad responses",
61
61
  default: codeGenBaseConfig.generateResponses,
62
- internal: { name: 'generateResponses' },
62
+ internal: { name: "generateResponses" },
63
63
  },
64
64
  {
65
- flags: '--union-enums',
65
+ flags: "--union-enums",
66
66
  description: 'generate all "enum" types as union types (T1 | T2 | TN)',
67
67
  default: codeGenBaseConfig.generateUnionEnums,
68
- internal: { name: 'generateUnionEnums' },
68
+ internal: { name: "generateUnionEnums" },
69
69
  },
70
70
  {
71
- flags: '--add-readonly',
72
- description: 'generate readonly properties',
71
+ flags: "--add-readonly",
72
+ description: "generate readonly properties",
73
73
  default: codeGenBaseConfig.addReadonly,
74
74
  },
75
75
  {
76
- flags: '--route-types',
77
- description: 'generate type definitions for API routes',
76
+ flags: "--route-types",
77
+ description: "generate type definitions for API routes",
78
78
  default: codeGenBaseConfig.generateRouteTypes,
79
- internal: { name: 'generateRouteTypes' },
79
+ internal: { name: "generateRouteTypes" },
80
80
  },
81
81
  {
82
- flags: '--no-client',
83
- description: 'do not generate an API class',
82
+ flags: "--no-client",
83
+ description: "do not generate an API class",
84
84
  default: codeGenBaseConfig.generateClient,
85
85
  },
86
86
  {
87
- flags: '--enum-names-as-values',
87
+ flags: "--enum-names-as-values",
88
88
  description:
89
89
  "use values in 'x-enumNames' as enum values (not only as keys)",
90
90
  default: codeGenBaseConfig.enumNamesAsValues,
91
91
  },
92
92
  {
93
- flags: '--extract-request-params',
93
+ flags: "--extract-request-params",
94
94
  description:
95
- 'extract request params to data contract (Also combine path params and query params into one object)',
95
+ "extract request params to data contract (Also combine path params and query params into one object)",
96
96
  default: codeGenBaseConfig.extractRequestParams,
97
97
  internal: { formatter: Boolean },
98
98
  },
99
99
  {
100
- flags: '--extract-request-body',
101
- description: 'extract request body type to data contract',
100
+ flags: "--extract-request-body",
101
+ description: "extract request body type to data contract",
102
102
  default: codeGenBaseConfig.extractRequestBody,
103
103
  internal: { formatter: Boolean },
104
104
  },
105
105
  {
106
- flags: '--extract-response-body',
107
- description: 'extract response body type to data contract',
106
+ flags: "--extract-response-body",
107
+ description: "extract response body type to data contract",
108
108
  default: codeGenBaseConfig.extractResponseBody,
109
109
  internal: { formatter: Boolean },
110
110
  },
111
111
  {
112
- flags: '--extract-response-error',
113
- description: 'extract response error type to data contract',
112
+ flags: "--extract-response-error",
113
+ description: "extract response error type to data contract",
114
114
  default: codeGenBaseConfig.extractResponseError,
115
115
  internal: { formatter: Boolean },
116
116
  },
117
117
  {
118
- flags: '--extract-responses',
119
- description: 'extract all responses described in /components/responses',
118
+ flags: "--extract-responses",
119
+ description: "extract all responses described in /components/responses",
120
120
  default: codeGenBaseConfig.extractResponses,
121
121
  internal: { formatter: Boolean },
122
122
  },
123
123
  {
124
- flags: '--modular',
124
+ flags: "--modular",
125
125
  description:
126
- 'generate separated files for http client, data contracts, and routes',
126
+ "generate separated files for http client, data contracts, and routes",
127
127
  default: codeGenBaseConfig.modular,
128
128
  internal: { formatter: Boolean },
129
129
  },
130
130
  {
131
- flags: '--js',
132
- description: 'generate js api module with declaration file',
131
+ flags: "--js",
132
+ description: "generate js api module with declaration file",
133
133
  default: codeGenBaseConfig.toJS,
134
- internal: { formatter: Boolean, name: 'toJS' },
134
+ internal: { formatter: Boolean, name: "toJS" },
135
135
  },
136
136
  {
137
- flags: '--module-name-index <number>',
137
+ flags: "--module-name-index <number>",
138
138
  description:
139
- 'determines which path index should be used for routes separation (example: GET:/fruites/getFruit -> index:0 -> moduleName -> fruites)',
139
+ "determines which path index should be used for routes separation (example: GET:/fruits/getFruit -> index:0 -> moduleName -> fruits)",
140
140
  default: codeGenBaseConfig.moduleNameIndex,
141
141
  internal: { formatter: (moduleNameIndex) => +moduleNameIndex || 0 },
142
142
  },
143
143
  {
144
- flags: '--module-name-first-tag',
145
- description: 'splits routes based on the first tag',
144
+ flags: "--module-name-first-tag",
145
+ description: "splits routes based on the first tag",
146
146
  default: codeGenBaseConfig.moduleNameFirstTag,
147
147
  },
148
148
  {
149
- flags: '--disableStrictSSL',
150
- description: 'disabled strict SSL',
149
+ flags: "--disableStrictSSL",
150
+ description: "disabled strict SSL",
151
151
  default: codeGenBaseConfig.disableStrictSSL,
152
152
  internal: { formatter: Boolean },
153
153
  },
154
154
  {
155
- flags: '--disableProxy',
156
- description: 'disabled proxy',
155
+ flags: "--disableProxy",
156
+ description: "disabled proxy",
157
157
  default: codeGenBaseConfig.disableProxy,
158
158
  internal: { formatter: Boolean },
159
159
  },
160
160
  {
161
- flags: '--axios',
162
- description: 'generate axios http client',
161
+ flags: "--axios",
162
+ description: "generate axios http client",
163
163
  default: codeGenBaseConfig.httpClientType === HTTP_CLIENT.AXIOS,
164
164
  },
165
165
  {
166
- flags: '--unwrap-response-data',
167
- description: 'unwrap the data item from the response',
166
+ flags: "--unwrap-response-data",
167
+ description: "unwrap the data item from the response",
168
168
  default: codeGenBaseConfig.unwrapResponseData,
169
169
  },
170
170
  {
171
- flags: '--disable-throw-on-error',
172
- description: 'Do not throw an error when response.ok is not true',
171
+ flags: "--disable-throw-on-error",
172
+ description: "Do not throw an error when response.ok is not true",
173
173
  default: codeGenBaseConfig.disableThrowOnError,
174
174
  },
175
175
  {
176
- flags: '--single-http-client',
177
- description: 'Ability to send HttpClient instance to Api constructor',
176
+ flags: "--single-http-client",
177
+ description: "Ability to send HttpClient instance to Api constructor",
178
178
  default: codeGenBaseConfig.singleHttpClient,
179
179
  internal: { formatter: Boolean },
180
180
  },
181
181
  {
182
- flags: '--silent',
183
- description: 'Output only errors to console',
182
+ flags: "--silent",
183
+ description: "Output only errors to console",
184
184
  default: codeGenBaseConfig.silent,
185
185
  internal: { formatter: Boolean },
186
186
  },
187
187
  {
188
- flags: '--default-response <type>',
189
- description: 'default type for empty response schema',
188
+ flags: "--default-response <type>",
189
+ description: "default type for empty response schema",
190
190
  default: codeGenBaseConfig.defaultResponseType,
191
- internal: { name: 'defaultResponseType' },
191
+ internal: { name: "defaultResponseType" },
192
192
  },
193
193
  {
194
- flags: '--type-prefix <string>',
195
- description: 'data contract name prefix',
194
+ flags: "--type-prefix <string>",
195
+ description: "data contract name prefix",
196
196
  default: codeGenBaseConfig.typePrefix,
197
197
  },
198
198
  {
199
- flags: '--type-suffix <string>',
200
- description: 'data contract name suffix',
199
+ flags: "--type-suffix <string>",
200
+ description: "data contract name suffix",
201
201
  default: codeGenBaseConfig.typeSuffix,
202
202
  },
203
203
  {
204
- flags: '--clean-output',
204
+ flags: "--clean-output",
205
205
  description:
206
- 'clean output folder before generate api. WARNING: May cause data loss',
206
+ "clean output folder before generate api. WARNING: May cause data loss",
207
207
  default: codeGenBaseConfig.cleanOutput,
208
208
  internal: { formatter: Boolean },
209
209
  },
210
210
  {
211
- flags: '--api-class-name <string>',
212
- description: 'name of the api class',
211
+ flags: "--api-class-name <string>",
212
+ description: "name of the api class",
213
213
  default: codeGenBaseConfig.apiClassName,
214
214
  },
215
215
  {
216
- flags: '--patch',
217
- description: 'fix up small errors in the swagger source definition',
216
+ flags: "--patch",
217
+ description: "fix up small errors in the swagger source definition",
218
218
  default: codeGenBaseConfig.patch,
219
219
  internal: { formatter: Boolean },
220
220
  },
221
221
  {
222
- flags: '--debug',
223
- description: 'additional information about processes inside this tool',
222
+ flags: "--debug",
223
+ description: "additional information about processes inside this tool",
224
224
  default: codeGenBaseConfig.debug,
225
225
  },
226
226
  {
227
- flags: '--another-array-type',
228
- description: 'generate array types as Array<Type> (by default Type[])',
227
+ flags: "--another-array-type",
228
+ description: "generate array types as Array<Type> (by default Type[])",
229
229
  default: codeGenBaseConfig.anotherArrayType,
230
230
  },
231
231
  {
232
- flags: '--sort-types',
233
- description: 'sort fields and types',
232
+ flags: "--sort-types",
233
+ description: "sort fields and types",
234
234
  default: codeGenBaseConfig.sortTypes,
235
235
  },
236
236
  {
237
- flags: '--extract-enums',
237
+ flags: "--extract-enums",
238
238
  description:
239
- 'extract all enums from inline interface\\type content to typescript enum construction',
239
+ "extract all enums from inline interface\\type content to typescript enum construction",
240
240
  default: codeGenBaseConfig.extractEnums,
241
241
  },
242
242
  {
243
- flags: '--sort-routes',
244
- description: 'sort routes in alphabetical order',
243
+ flags: "--sort-routes",
244
+ description: "sort routes in alphabetical order",
245
245
  default: codeGenBaseConfig.sortRoutes,
246
246
  },
247
247
  {
248
- flags: '--custom-config <string>',
249
- description: 'custom config: primitiveTypeConstructs, hooks, ... ',
250
- default: '',
248
+ flags: "--custom-config <string>",
249
+ description: "custom config: primitiveTypeConstructs, hooks, ... ",
250
+ default: "",
251
251
  },
252
252
  ],
253
253
  });
254
254
 
255
255
  program.addCommand({
256
- name: 'generate-templates',
256
+ name: "generate-templates",
257
257
  description: `Generate ".ejs" templates needed for generate api`,
258
258
  options: [
259
259
  {
260
- flags: '-o, --output <string>',
261
- description: 'output path of generated templates',
260
+ flags: "-o, --output <string>",
261
+ description: "output path of generated templates",
262
262
  default: templateGenBaseConfig.output,
263
263
  },
264
264
  {
265
- flags: '-m, --modular',
265
+ flags: "-m, --modular",
266
266
  description:
267
- 'generate templates needed to separate files for http client, data contracts, and routes',
267
+ "generate templates needed to separate files for http client, data contracts, and routes",
268
268
  default: templateGenBaseConfig.modular,
269
269
  internal: { formatter: Boolean },
270
270
  },
271
271
  {
272
- flags: '--http-client <string>',
272
+ flags: "--http-client <string>",
273
273
  description: `http client type (possible values: ${Object.values(
274
274
  HTTP_CLIENT,
275
275
  )
276
276
  .map((v) => `"${v}"`)
277
- .join(', ')})`,
277
+ .join(", ")})`,
278
278
  default: templateGenBaseConfig.httpClientType,
279
- internal: { name: 'httpClientType' },
279
+ internal: { name: "httpClientType" },
280
280
  },
281
281
  {
282
- flags: '-c, --clean-output',
282
+ flags: "-c, --clean-output",
283
283
  description:
284
- 'clean output folder before generate template. WARNING: May cause data loss',
284
+ "clean output folder before generate template. WARNING: May cause data loss",
285
285
  default: templateGenBaseConfig.cleanOutput,
286
286
  internal: { formatter: Boolean },
287
287
  },
288
288
  {
289
- flags: '-r, --rewrite',
290
- description: 'rewrite content in existing templates',
289
+ flags: "-r, --rewrite",
290
+ description: "rewrite content in existing templates",
291
291
  default: templateGenBaseConfig.rewrite,
292
292
  internal: { formatter: Boolean },
293
293
  },
294
294
  {
295
- flags: '--silent',
296
- description: 'Output only errors to console',
295
+ flags: "--silent",
296
+ description: "Output only errors to console",
297
297
  default: templateGenBaseConfig.silent,
298
298
  internal: { formatter: Boolean },
299
299
  },
@@ -322,16 +322,16 @@ const main = async () => {
322
322
  ...options,
323
323
  name: options.name,
324
324
  url: options.path,
325
- generateRouteTypes: options.routeTypes,
325
+ generateRouteTypes: options.generateRouteTypes,
326
326
  generateClient: !!(options.axios || options.client),
327
327
  httpClientType: options.axios ? HTTP_CLIENT.AXIOS : HTTP_CLIENT.FETCH,
328
328
  input: resolve(process.cwd(), options.path),
329
- output: resolve(process.cwd(), options.output || '.'),
329
+ output: resolve(process.cwd(), options.output || "."),
330
330
  ...customConfig,
331
331
  });
332
332
  break;
333
333
  }
334
- case 'generate-templates': {
334
+ case "generate-templates": {
335
335
  await generateTemplates(options);
336
336
  break;
337
337
  }
@@ -342,7 +342,6 @@ const main = async () => {
342
342
  } catch (e) {
343
343
  console.error(e);
344
344
  process.exit(1);
345
- return;
346
345
  }
347
346
  process.exit(0);
348
347
  };