@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/autogeneration/output/api.autogenerated.ts +524 -523
- package/dist/generator.js +35 -6
- package/dist/generators-writers/nextjs/api-nextjs-writer.js +8 -8
- package/dist/generators-writers/nextjs/constants.js +3 -2
- package/package.json +1 -1
- package/src/generator.ts +36 -7
- package/src/generators-writers/nextjs/api-nextjs-writer.ts +8 -8
- package/src/generators-writers/nextjs/constants.ts +3 -2
- package/src/models/type-dto.ts +1 -0
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
|
|
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
|
|
270
|
+
return {
|
|
271
|
+
typeName: `${this.getObjectName(swaggerComponentProperty.items.$ref)}[]`,
|
|
272
|
+
isNativeType: false,
|
|
273
|
+
nullable: false,
|
|
274
|
+
};
|
|
259
275
|
else
|
|
260
|
-
return
|
|
276
|
+
return {
|
|
277
|
+
typeName: this.getNativeType(swaggerComponentProperty),
|
|
278
|
+
isNativeType: false,
|
|
279
|
+
nullable: true,
|
|
280
|
+
};
|
|
261
281
|
if (swaggerComponentProperty.type != null)
|
|
262
|
-
return
|
|
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 ?
|
|
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 `
|
|
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 `
|
|
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 `
|
|
72
|
+
return ` const ${parameter.name}Param: string = encodeURIComponent(dateToZulu(${parameter.name}));
|
|
73
73
|
`;
|
|
74
74
|
}
|
|
75
75
|
else {
|
|
76
|
-
return `
|
|
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 `
|
|
120
|
+
return ` const wrappedRequest = handleRequest(request);
|
|
121
121
|
`;
|
|
122
122
|
}
|
|
123
123
|
_writeFile(apis) {
|
package/package.json
CHANGED
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
|
|
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
|
|
321
|
+
return {
|
|
322
|
+
typeName: `${this.getObjectName(swaggerComponentProperty.items.$ref)}[]`,
|
|
323
|
+
isNativeType: false,
|
|
324
|
+
nullable: false,
|
|
325
|
+
};
|
|
310
326
|
else
|
|
311
|
-
return
|
|
327
|
+
return {
|
|
328
|
+
typeName: this.getNativeType(swaggerComponentProperty),
|
|
329
|
+
isNativeType: false,
|
|
330
|
+
nullable: true,
|
|
331
|
+
};
|
|
312
332
|
|
|
313
333
|
if (swaggerComponentProperty.type != null)
|
|
314
|
-
return
|
|
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 ?
|
|
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 `
|
|
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 `
|
|
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 `
|
|
91
|
+
return ` const ${parameter.name}Param: string = encodeURIComponent(dateToZulu(${parameter.name}));
|
|
92
92
|
`;
|
|
93
93
|
} else {
|
|
94
|
-
return `
|
|
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 `
|
|
145
|
+
return ` const wrappedRequest = handleRequest(request);
|
|
146
146
|
`;
|
|
147
147
|
}
|
|
148
148
|
|