@devlearning/swagger-generator 1.0.1 → 1.0.3

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.
package/dist/generator.js CHANGED
@@ -166,6 +166,7 @@ export class Generator {
166
166
  nullable: false,
167
167
  isQuery: false,
168
168
  isEnum: false,
169
+ isNativeType: false,
169
170
  });
170
171
  }
171
172
  else {
@@ -176,6 +177,7 @@ export class Generator {
176
177
  nullable: false,
177
178
  isQuery: false,
178
179
  isEnum: false,
180
+ isNativeType: false,
179
181
  });
180
182
  }
181
183
  else {
@@ -188,6 +190,7 @@ export class Generator {
188
190
  swaggerParameter: parameter,
189
191
  isQuery: true,
190
192
  isEnum: this.isEnum(parameter.schema.$ref),
193
+ isNativeType: false,
191
194
  });
192
195
  }
193
196
  else {
@@ -198,6 +201,7 @@ export class Generator {
198
201
  swaggerParameter: parameter,
199
202
  isQuery: true,
200
203
  isEnum: false,
204
+ isNativeType: true,
201
205
  });
202
206
  }
203
207
  });
@@ -217,6 +221,7 @@ export class Generator {
217
221
  return {
218
222
  typeName: this.getObjectName(swaggerMethod.responses[200]?.content[contentTypeApplicationJson].schema.$ref),
219
223
  nullable: false,
224
+ isNativeType: false,
220
225
  };
221
226
  }
222
227
  catch (error) {
@@ -231,6 +236,7 @@ export class Generator {
231
236
  return {
232
237
  typeName: `${this.getObjectName(schema.items.$ref)}[]`,
233
238
  nullable: false,
239
+ isNativeType: false,
234
240
  };
235
241
  }
236
242
  }
@@ -238,6 +244,7 @@ export class Generator {
238
244
  return {
239
245
  typeName: this.getNativeType(swaggerMethod.responses[200]?.content[contentTypeApplicationJson].schema),
240
246
  nullable: false,
247
+ isNativeType: true,
241
248
  };
242
249
  }
243
250
  // if (swaggerComponentProperty.items.$ref != null)
@@ -247,21 +254,42 @@ export class Generator {
247
254
  return {
248
255
  typeName: this.getNativeType(swaggerMethod.responses[200]?.content[contentTypeApplicationJson].schema),
249
256
  nullable: false,
257
+ isNativeType: true,
250
258
  };
251
259
  }
252
260
  }
253
261
  retrieveType(swaggerComponentProperty) {
254
262
  if (swaggerComponentProperty.$ref != null)
255
- return swaggerComponentProperty.$ref.replace('#/components/schemas/', '');
263
+ return {
264
+ typeName: swaggerComponentProperty.$ref.replace('#/components/schemas/', ''),
265
+ isNativeType: false,
266
+ nullable: false,
267
+ };
256
268
  if (swaggerComponentProperty.type != null && swaggerComponentProperty.type == 'array')
257
269
  if (swaggerComponentProperty.items.$ref != null)
258
- return `${this.getObjectName(swaggerComponentProperty.items.$ref)}[]`;
270
+ return {
271
+ typeName: `${this.getObjectName(swaggerComponentProperty.items.$ref)}[]`,
272
+ isNativeType: false,
273
+ nullable: false,
274
+ };
259
275
  else
260
- return this.getNativeType(swaggerComponentProperty);
276
+ return {
277
+ typeName: this.getNativeType(swaggerComponentProperty),
278
+ isNativeType: false,
279
+ nullable: true,
280
+ };
261
281
  if (swaggerComponentProperty.type != null)
262
- return this.getNativeType(swaggerComponentProperty);
282
+ return {
283
+ typeName: this.getNativeType(swaggerComponentProperty),
284
+ isNativeType: false,
285
+ nullable: true,
286
+ };
263
287
  if (swaggerComponentProperty.type == null)
264
- return '';
288
+ return {
289
+ typeName: 'null',
290
+ isNativeType: false,
291
+ nullable: true,
292
+ };
265
293
  console.error("unmanaged swaggerMethodInfo", swaggerComponentProperty);
266
294
  throw new Error("unmanaged swaggerMethodInfo");
267
295
  }
@@ -288,9 +316,10 @@ export class Generator {
288
316
  let properties = [];
289
317
  for (let index = 0; index < Object.getOwnPropertyNames(swaggerCopmponent.properties).length; index++) {
290
318
  const propertyName = Object.getOwnPropertyNames(swaggerCopmponent.properties)[index];
319
+ const type = this.retrieveType(swaggerCopmponent.properties[propertyName]);
291
320
  properties.push({
321
+ ...type,
292
322
  name: propertyName,
293
- typeName: this.retrieveType(swaggerCopmponent.properties[propertyName]),
294
323
  nullable: true,
295
324
  });
296
325
  }
@@ -28,7 +28,7 @@ export class ApiNextJsWriter {
28
28
  preparation = preparation.length > 0 ? ` ${preparation}\n ` : '';
29
29
  //\`\${API_BASE_URL}
30
30
  let apiString = `
31
- export const ${apiNameNormalized} = async (${parametersString}): Promise<${returnTypeString}> {
31
+ export const ${apiNameNormalized} = async (${parametersString}): Promise<${returnTypeString}> => {
32
32
  ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${api.url}${queryParameters}\`${haveRequest ? ', wrappedRequest' : ''});
33
33
  return response.data;
34
34
  }
@@ -38,14 +38,14 @@ ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${ap
38
38
  _parameters(api) {
39
39
  let parametersString = '';
40
40
  api.parameters.forEach(parameter => {
41
- parametersString += `${parameter.name}${parameter.nullable ? '?' : ''}: ${parameter.typeName}, `;
41
+ parametersString += `${parameter.name}${parameter.nullable ? '?' : ''}: ${!parameter.isNativeType ? 'Models.' : ''}${parameter.typeName}, `;
42
42
  });
43
43
  if (api.parameters.length > 0)
44
44
  parametersString = parametersString.substring(0, parametersString.length - 2);
45
45
  return parametersString;
46
46
  }
47
47
  _returnType(api) {
48
- return api.returnType ? `Models.${api.returnType.typeName}` : 'any';
48
+ return api.returnType ? `${!api.returnType.isNativeType ? 'Models.' : ''}${api.returnType.typeName}` : 'any';
49
49
  }
50
50
  _queryParametersPreparation(api) {
51
51
  let queryParametersPreparation = '';
@@ -59,21 +59,21 @@ ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${ap
59
59
  _queryParametersPreparationStatement(parameter) {
60
60
  if (parameter.nullable) {
61
61
  if (Utils.isDate(parameter.swaggerParameter?.schema)) {
62
- return ` let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined && ${parameter.name}.isValid() ? encodeURIComponent(this._momentToString(${parameter.name})) : '';
62
+ return ` const ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined && isValid(${parameter.name}) ? encodeURIComponent(dateToZulu(${parameter.name})) : '';
63
63
  `;
64
64
  }
65
65
  else {
66
- return ` let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined ? encodeURIComponent('' + ${parameter.name}) : '';
66
+ return ` const ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined ? encodeURIComponent('' + ${parameter.name}) : '';
67
67
  `;
68
68
  }
69
69
  }
70
70
  else {
71
71
  if (Utils.isDate(parameter.swaggerParameter?.schema)) {
72
- return ` let ${parameter.name}Param: string = encodeURIComponent(this._momentToString(${parameter.name}));
72
+ return ` const ${parameter.name}Param: string = encodeURIComponent(dateToZulu(${parameter.name}));
73
73
  `;
74
74
  }
75
75
  else {
76
- return ` let ${parameter.name}Param: string = encodeURIComponent('' + ${parameter.name});
76
+ return ` const ${parameter.name}Param: string = encodeURIComponent('' + ${parameter.name});
77
77
  `;
78
78
  }
79
79
  }
@@ -117,7 +117,7 @@ ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${ap
117
117
  if (!api.haveRequest) {
118
118
  return ``;
119
119
  }
120
- return ` let wrappedRequest = this._handleRequest(request);
120
+ return ` const wrappedRequest = handleRequest(request);
121
121
  `;
122
122
  }
123
123
  _writeFile(apis) {
@@ -1,4 +1,5 @@
1
1
  export const API_PRE = `import axios from 'axios';
2
2
  import * as Models from './model.autogenerated';
3
-
4
- const API_BASE_URL = process.env.API_BASE_URL;`;
3
+ import { handleRequest, dateToZulu } from './utils/axios'
4
+ import { isValid } from 'date-fns';
5
+ `;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devlearning/swagger-generator",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "type": "module",
package/src/generator.ts CHANGED
@@ -216,6 +216,7 @@ export class Generator {
216
216
  nullable: false,
217
217
  isQuery: false,
218
218
  isEnum: false,
219
+ isNativeType: false,
219
220
  });
220
221
  } else {
221
222
  if (swaggerMethod.requestBody != null) {
@@ -225,6 +226,7 @@ export class Generator {
225
226
  nullable: false,
226
227
  isQuery: false,
227
228
  isEnum: false,
229
+ isNativeType: false,
228
230
  });
229
231
  } else {
230
232
  swaggerMethod.parameters?.filter(x => x.in == 'query').forEach(parameter => {
@@ -236,6 +238,7 @@ export class Generator {
236
238
  swaggerParameter: parameter,
237
239
  isQuery: true,
238
240
  isEnum: this.isEnum(parameter.schema.$ref),
241
+ isNativeType: false,
239
242
  });
240
243
  } else {
241
244
  parameters.push({
@@ -245,6 +248,7 @@ export class Generator {
245
248
  swaggerParameter: parameter,
246
249
  isQuery: true,
247
250
  isEnum: false,
251
+ isNativeType: true,
248
252
  });
249
253
  }
250
254
  });
@@ -266,6 +270,7 @@ export class Generator {
266
270
  return <TypeDto>{
267
271
  typeName: this.getObjectName(swaggerMethod.responses[200]?.content[contentTypeApplicationJson].schema.$ref),
268
272
  nullable: false,
273
+ isNativeType: false,
269
274
  };
270
275
  } catch (error) {
271
276
  const errorMessage = "\t\tAttenzione forse hai dimenticato IActionResult e non hai tipizzato il tipo restituito dal servizio";
@@ -280,12 +285,14 @@ export class Generator {
280
285
  return <TypeDto>{
281
286
  typeName: `${this.getObjectName(schema.items.$ref)}[]`,
282
287
  nullable: false,
288
+ isNativeType: false,
283
289
  };
284
290
  }
285
291
  } else {
286
292
  return <TypeDto>{
287
293
  typeName: this.getNativeType(swaggerMethod.responses[200]?.content[contentTypeApplicationJson].schema),
288
294
  nullable: false,
295
+ isNativeType: true,
289
296
  };
290
297
  }
291
298
  // if (swaggerComponentProperty.items.$ref != null)
@@ -296,25 +303,46 @@ export class Generator {
296
303
  return <TypeDto>{
297
304
  typeName: this.getNativeType(swaggerMethod.responses[200]?.content[contentTypeApplicationJson].schema),
298
305
  nullable: false,
306
+ isNativeType: true,
299
307
  };
300
308
  }
301
309
  }
302
310
 
303
- retrieveType(swaggerComponentProperty: SwaggerComponentProperty) {
311
+ retrieveType(swaggerComponentProperty: SwaggerComponentProperty): TypeDto {
304
312
  if (swaggerComponentProperty.$ref != null)
305
- return swaggerComponentProperty.$ref.replace('#/components/schemas/', '');
313
+ return {
314
+ typeName: swaggerComponentProperty.$ref.replace('#/components/schemas/', ''),
315
+ isNativeType: false,
316
+ nullable: false,
317
+ };
306
318
 
307
319
  if (swaggerComponentProperty.type != null && swaggerComponentProperty.type == 'array')
308
320
  if (swaggerComponentProperty.items.$ref != null)
309
- return `${this.getObjectName(swaggerComponentProperty.items.$ref)}[]`;
321
+ return {
322
+ typeName: `${this.getObjectName(swaggerComponentProperty.items.$ref)}[]`,
323
+ isNativeType: false,
324
+ nullable: false,
325
+ };
310
326
  else
311
- return this.getNativeType(swaggerComponentProperty);
327
+ return {
328
+ typeName: this.getNativeType(swaggerComponentProperty),
329
+ isNativeType: false,
330
+ nullable: true,
331
+ };
312
332
 
313
333
  if (swaggerComponentProperty.type != null)
314
- return this.getNativeType(swaggerComponentProperty);
334
+ return {
335
+ typeName: this.getNativeType(swaggerComponentProperty),
336
+ isNativeType: false,
337
+ nullable: true,
338
+ };
315
339
 
316
340
  if (swaggerComponentProperty.type == null)
317
- return '';
341
+ return {
342
+ typeName: 'null',
343
+ isNativeType: false,
344
+ nullable: true,
345
+ };
318
346
 
319
347
  console.error("unmanaged swaggerMethodInfo", swaggerComponentProperty);
320
348
  throw new Error("unmanaged swaggerMethodInfo");
@@ -349,9 +377,10 @@ export class Generator {
349
377
  let properties: PropertyDto[] = [];
350
378
  for (let index = 0; index < Object.getOwnPropertyNames(swaggerCopmponent.properties).length; index++) {
351
379
  const propertyName = Object.getOwnPropertyNames(swaggerCopmponent.properties)[index];
380
+ const type = this.retrieveType(swaggerCopmponent.properties[propertyName]);
352
381
  properties.push({
382
+ ...type,
353
383
  name: propertyName,
354
- typeName: this.retrieveType(swaggerCopmponent.properties[propertyName]),
355
384
  nullable: true,
356
385
  });
357
386
  }
@@ -39,7 +39,7 @@ export class ApiNextJsWriter {
39
39
 
40
40
  //\`\${API_BASE_URL}
41
41
  let apiString = `
42
- export const ${apiNameNormalized} = async (${parametersString}): Promise<${returnTypeString}> {
42
+ export const ${apiNameNormalized} = async (${parametersString}): Promise<${returnTypeString}> => {
43
43
  ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${api.url}${queryParameters}\`${haveRequest ? ', wrappedRequest' : ''});
44
44
  return response.data;
45
45
  }
@@ -52,7 +52,7 @@ ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${ap
52
52
  let parametersString = '';
53
53
 
54
54
  api.parameters.forEach(parameter => {
55
- parametersString += `${parameter.name}${parameter.nullable ? '?' : ''}: ${parameter.typeName}, `;
55
+ parametersString += `${parameter.name}${parameter.nullable ? '?' : ''}: ${!parameter.isNativeType ? 'Models.' : ''}${parameter.typeName}, `;
56
56
  });
57
57
 
58
58
  if (api.parameters.length > 0)
@@ -62,7 +62,7 @@ ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${ap
62
62
  }
63
63
 
64
64
  private _returnType(api: ApiDto) {
65
- return api.returnType ? `Models.${api.returnType.typeName}` : 'any';
65
+ return api.returnType ? `${!api.returnType.isNativeType ? 'Models.' : ''}${api.returnType.typeName}` : 'any';
66
66
  }
67
67
 
68
68
  private _queryParametersPreparation(api: ApiDto) {
@@ -80,18 +80,18 @@ ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${ap
80
80
  private _queryParametersPreparationStatement(parameter: ParameterDto) {
81
81
  if (parameter.nullable) {
82
82
  if (Utils.isDate(parameter.swaggerParameter?.schema)) {
83
- return ` let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined && ${parameter.name}.isValid() ? encodeURIComponent(this._momentToString(${parameter.name})) : '';
83
+ return ` const ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined && isValid(${parameter.name}) ? encodeURIComponent(dateToZulu(${parameter.name})) : '';
84
84
  `;
85
85
  } else {
86
- return ` let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined ? encodeURIComponent('' + ${parameter.name}) : '';
86
+ return ` const ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined ? encodeURIComponent('' + ${parameter.name}) : '';
87
87
  `;
88
88
  }
89
89
  } else {
90
90
  if (Utils.isDate(parameter.swaggerParameter?.schema)) {
91
- return ` let ${parameter.name}Param: string = encodeURIComponent(this._momentToString(${parameter.name}));
91
+ return ` const ${parameter.name}Param: string = encodeURIComponent(dateToZulu(${parameter.name}));
92
92
  `;
93
93
  } else {
94
- return ` let ${parameter.name}Param: string = encodeURIComponent('' + ${parameter.name});
94
+ return ` const ${parameter.name}Param: string = encodeURIComponent('' + ${parameter.name});
95
95
  `;
96
96
  }
97
97
  }
@@ -142,7 +142,7 @@ ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${ap
142
142
  return ``;
143
143
  }
144
144
 
145
- return ` let wrappedRequest = this._handleRequest(request);
145
+ return ` const wrappedRequest = handleRequest(request);
146
146
  `;
147
147
  }
148
148
 
@@ -1,5 +1,6 @@
1
1
  export const API_PRE =
2
2
  `import axios from 'axios';
3
3
  import * as Models from './model.autogenerated';
4
-
5
- const API_BASE_URL = process.env.API_BASE_URL;`;
4
+ import { handleRequest, dateToZulu } from './utils/axios'
5
+ import { isValid } from 'date-fns';
6
+ `;
@@ -1,4 +1,5 @@
1
1
  export interface TypeDto{
2
2
  typeName: string;
3
3
  nullable: boolean;
4
+ isNativeType: boolean;
4
5
  }