@devlearning/swagger-generator 1.1.16 → 1.1.18

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/.vscode/launch.json +28 -28
  2. package/README-OLD.md +209 -209
  3. package/README.md +277 -277
  4. package/dist/api.constants.js +22 -22
  5. package/dist/generator.d.ts +4 -0
  6. package/dist/generator.js +118 -4
  7. package/dist/generators-writers/angular/api-angular-writer.js +38 -38
  8. package/dist/generators-writers/angular/constants.js +24 -24
  9. package/dist/generators-writers/angular/model-angular-writer.js +6 -6
  10. package/dist/generators-writers/dart/model-dart-writer.d.ts +1 -0
  11. package/dist/generators-writers/dart/model-dart-writer.js +15 -14
  12. package/dist/generators-writers/dart/templates/api.mustache +143 -143
  13. package/dist/generators-writers/dart/templates/enum.mustache +14 -14
  14. package/dist/generators-writers/dart/templates/model.mustache +20 -23
  15. package/dist/generators-writers/nextjs/api-nextjs-writer.js +12 -12
  16. package/dist/generators-writers/nextjs/constants.js +4 -4
  17. package/dist/generators-writers/nextjs/model-nextjs-writer.js +6 -6
  18. package/dist/models/swagger/swagger-component.d.ts +2 -2
  19. package/dist/models/swagger/swagger-schema.d.ts +1 -0
  20. package/package.json +49 -49
  21. package/src/api.constants.ts +26 -26
  22. package/src/generator-old.ts +449 -449
  23. package/src/generator.ts +752 -625
  24. package/src/generators-writers/angular/api-angular-writer.ts +187 -187
  25. package/src/generators-writers/angular/constants.ts +36 -36
  26. package/src/generators-writers/angular/model-angular-writer.ts +65 -65
  27. package/src/generators-writers/angular/normalizator.ts +41 -41
  28. package/src/generators-writers/dart/api-dart-writer.ts +303 -303
  29. package/src/generators-writers/dart/model-dart-writer.ts +212 -209
  30. package/src/generators-writers/dart/models/import-definition-dart.ts +5 -5
  31. package/src/generators-writers/dart/normalizator.ts +72 -72
  32. package/src/generators-writers/dart/templates/api.mustache +143 -143
  33. package/src/generators-writers/dart/templates/enum.mustache +14 -14
  34. package/src/generators-writers/dart/templates/model.mustache +20 -23
  35. package/src/generators-writers/nextjs/api-nextjs-writer.ts +157 -157
  36. package/src/generators-writers/nextjs/constants.ts +5 -5
  37. package/src/generators-writers/nextjs/model-nextjs-writer.ts +61 -61
  38. package/src/generators-writers/utils.ts +93 -93
  39. package/src/index.ts +103 -103
  40. package/src/models/api-dto.ts +17 -17
  41. package/src/models/enum-value-dto.ts +3 -3
  42. package/src/models/model-dto.ts +9 -9
  43. package/src/models/parameter-dto.ts +7 -7
  44. package/src/models/property-dto.ts +4 -4
  45. package/src/models/swagger/swagger-component-property.ts +11 -11
  46. package/src/models/swagger/swagger-component.ts +17 -17
  47. package/src/models/swagger/swagger-content.ts +4 -4
  48. package/src/models/swagger/swagger-info.ts +3 -3
  49. package/src/models/swagger/swagger-method.ts +7 -7
  50. package/src/models/swagger/swagger-schema.ts +21 -20
  51. package/src/models/swagger/swagger.ts +38 -38
  52. package/src/models/type-dto.ts +7 -7
  53. package/src/swagger-downloader.ts +46 -46
  54. package/src/utils/logger.ts +73 -73
  55. package/src/utils/swagger-validator.ts +89 -89
  56. package/tsconfig.json +33 -33
  57. package/dist/templates/api.mustache +0 -29
  58. package/dist/templates/model.mustache +0 -18
@@ -1,143 +1,143 @@
1
- import 'package:{{package}}/core/di/injector.dart';
2
- import 'package:dio/dio.dart';
3
- {{#imports}}
4
- {{{.}}}
5
- {{/imports}}
6
-
7
- class {{apiClassName}} {
8
- final Dio _dio;
9
-
10
- {{apiClassName}}() : _dio = getIt<Dio>();
11
-
12
- {{#endpoints}}
13
- Future<{{responseType}}> {{methodName}}(
14
- {{#haveRequest}}{{requestType}} request,{{/haveRequest}}
15
- {{#pathParams}}
16
- {{type}}{{#nullable}}?{{/nullable}} {{name}},
17
- {{/pathParams}}
18
- {{#queryParams}}
19
- {{type}}{{#nullable}}?{{/nullable}} {{name}},
20
- {{/queryParams}}
21
- ) async {
22
- {{#isMultiPart}}
23
- final formData = FormData();
24
- {{#multipartFields}}
25
- {{#isFile}}
26
- {{#isArray}}
27
- {{^nullable}}
28
- for (final file in request.{{name}}) {
29
- formData.files.add(MapEntry('{{name}}', await MultipartFile.fromFile(file.path)));
30
- }
31
- {{/nullable}}
32
- {{#nullable}}
33
- if (request.{{name}} != null) {
34
- for (final file in request.{{name}}!) {
35
- formData.files.add(MapEntry('{{name}}', await MultipartFile.fromFile(file.path)));
36
- }
37
- }
38
- {{/nullable}}
39
- {{/isArray}}
40
- {{^isArray}}
41
- {{^nullable}}
42
- formData.files.add(MapEntry('{{name}}', await MultipartFile.fromFile(request.{{name}}.path)));
43
- {{/nullable}}
44
- {{#nullable}}
45
- if (request.{{name}} != null) {
46
- formData.files.add(MapEntry('{{name}}', await MultipartFile.fromFile(request.{{name}}!.path)));
47
- }
48
- {{/nullable}}
49
- {{/isArray}}
50
- {{/isFile}}
51
- {{^isFile}}
52
- {{#isArray}}
53
- {{^nullable}}
54
- for (final value in request.{{name}}) {
55
- formData.fields.add(MapEntry('{{name}}', value.toString()));
56
- }
57
- {{/nullable}}
58
- {{#nullable}}
59
- if (request.{{name}} != null) {
60
- for (final value in request.{{name}}!) {
61
- formData.fields.add(MapEntry('{{name}}', value.toString()));
62
- }
63
- }
64
- {{/nullable}}
65
- {{/isArray}}
66
- {{^isArray}}
67
- {{^nullable}}
68
- formData.fields.add(MapEntry('{{name}}', request.{{name}}.toString()));
69
- {{/nullable}}
70
- {{#nullable}}
71
- if (request.{{name}} != null) {
72
- formData.fields.add(MapEntry('{{name}}', request.{{name}}!.toString()));
73
- }
74
- {{/nullable}}
75
- {{/isArray}}
76
- {{/isFile}}
77
- {{/multipartFields}}
78
- {{/isMultiPart}}
79
- final response = await _dio.{{httpMethod}}(
80
- '{{{path}}}',
81
- {{#haveRequest}}
82
- {{#isMultiPart}}
83
- data: formData,
84
- {{/isMultiPart}}
85
- {{^isMultiPart}}
86
- data: request.toJson(),
87
- {{/isMultiPart}}
88
- {{/haveRequest}}
89
- {{^haveRequest}}
90
- queryParameters: {
91
- {{#queryParams}}
92
- {{#nullable}}if ({{name}} != null) {{/nullable}}'{{name}}': {{name}},
93
- {{/queryParams}}
94
- },
95
- {{/haveRequest}}
96
- );
97
- {{#isResponseNativeType}}
98
- return _parseNative<{{responseType}}>(response.data);
99
- {{/isResponseNativeType}}
100
- {{^isResponseNativeType}}
101
- return {{responseType}}.fromJson(response.data);
102
- {{/isResponseNativeType}}
103
- }
104
-
105
- {{/endpoints}}
106
-
107
- T _parseNative<T>(dynamic data) {
108
- if (data == null) {
109
- throw Exception('Cannot parse null data as $T');
110
- }
111
-
112
- if (T == String) {
113
- return data.toString() as T;
114
- }
115
- if (T == int) {
116
- if (data is int) return data as T;
117
- if (data is double) return data.toInt() as T;
118
- return int.parse(data.toString()) as T;
119
- }
120
- if (T == double) {
121
- if (data is double) return data as T;
122
- if (data is int) return data.toDouble() as T;
123
- return double.parse(data.toString()) as T;
124
- }
125
- if (T == bool) {
126
- if (data is bool) return data as T;
127
- if (data is String) {
128
- final lower = data.toLowerCase();
129
- if (lower == 'true' || lower == '1') return true as T;
130
- if (lower == 'false' || lower == '0') return false as T;
131
- }
132
- if (data is int) return (data != 0) as T;
133
- throw Exception('Cannot convert $data to bool');
134
- }
135
-
136
- // Se il tipo è dynamic o Object, ritorna direttamente
137
- if (T == dynamic || T == Object) {
138
- return data as T;
139
- }
140
-
141
- throw UnsupportedError('Unsupported native type $T');
142
- }
143
- }
1
+ import 'package:{{package}}/core/di/injector.dart';
2
+ import 'package:dio/dio.dart';
3
+ {{#imports}}
4
+ {{{.}}}
5
+ {{/imports}}
6
+
7
+ class {{apiClassName}} {
8
+ final Dio _dio;
9
+
10
+ {{apiClassName}}() : _dio = getIt<Dio>();
11
+
12
+ {{#endpoints}}
13
+ Future<{{responseType}}> {{methodName}}(
14
+ {{#haveRequest}}{{requestType}} request,{{/haveRequest}}
15
+ {{#pathParams}}
16
+ {{type}}{{#nullable}}?{{/nullable}} {{name}},
17
+ {{/pathParams}}
18
+ {{#queryParams}}
19
+ {{type}}{{#nullable}}?{{/nullable}} {{name}},
20
+ {{/queryParams}}
21
+ ) async {
22
+ {{#isMultiPart}}
23
+ final formData = FormData();
24
+ {{#multipartFields}}
25
+ {{#isFile}}
26
+ {{#isArray}}
27
+ {{^nullable}}
28
+ for (final file in request.{{name}}) {
29
+ formData.files.add(MapEntry('{{name}}', await MultipartFile.fromFile(file.path)));
30
+ }
31
+ {{/nullable}}
32
+ {{#nullable}}
33
+ if (request.{{name}} != null) {
34
+ for (final file in request.{{name}}!) {
35
+ formData.files.add(MapEntry('{{name}}', await MultipartFile.fromFile(file.path)));
36
+ }
37
+ }
38
+ {{/nullable}}
39
+ {{/isArray}}
40
+ {{^isArray}}
41
+ {{^nullable}}
42
+ formData.files.add(MapEntry('{{name}}', await MultipartFile.fromFile(request.{{name}}.path)));
43
+ {{/nullable}}
44
+ {{#nullable}}
45
+ if (request.{{name}} != null) {
46
+ formData.files.add(MapEntry('{{name}}', await MultipartFile.fromFile(request.{{name}}!.path)));
47
+ }
48
+ {{/nullable}}
49
+ {{/isArray}}
50
+ {{/isFile}}
51
+ {{^isFile}}
52
+ {{#isArray}}
53
+ {{^nullable}}
54
+ for (final value in request.{{name}}) {
55
+ formData.fields.add(MapEntry('{{name}}', value.toString()));
56
+ }
57
+ {{/nullable}}
58
+ {{#nullable}}
59
+ if (request.{{name}} != null) {
60
+ for (final value in request.{{name}}!) {
61
+ formData.fields.add(MapEntry('{{name}}', value.toString()));
62
+ }
63
+ }
64
+ {{/nullable}}
65
+ {{/isArray}}
66
+ {{^isArray}}
67
+ {{^nullable}}
68
+ formData.fields.add(MapEntry('{{name}}', request.{{name}}.toString()));
69
+ {{/nullable}}
70
+ {{#nullable}}
71
+ if (request.{{name}} != null) {
72
+ formData.fields.add(MapEntry('{{name}}', request.{{name}}!.toString()));
73
+ }
74
+ {{/nullable}}
75
+ {{/isArray}}
76
+ {{/isFile}}
77
+ {{/multipartFields}}
78
+ {{/isMultiPart}}
79
+ final response = await _dio.{{httpMethod}}(
80
+ '{{{path}}}',
81
+ {{#haveRequest}}
82
+ {{#isMultiPart}}
83
+ data: formData,
84
+ {{/isMultiPart}}
85
+ {{^isMultiPart}}
86
+ data: request.toJson(),
87
+ {{/isMultiPart}}
88
+ {{/haveRequest}}
89
+ {{^haveRequest}}
90
+ queryParameters: {
91
+ {{#queryParams}}
92
+ {{#nullable}}if ({{name}} != null) {{/nullable}}'{{name}}': {{name}},
93
+ {{/queryParams}}
94
+ },
95
+ {{/haveRequest}}
96
+ );
97
+ {{#isResponseNativeType}}
98
+ return _parseNative<{{responseType}}>(response.data);
99
+ {{/isResponseNativeType}}
100
+ {{^isResponseNativeType}}
101
+ return {{responseType}}.fromJson(response.data);
102
+ {{/isResponseNativeType}}
103
+ }
104
+
105
+ {{/endpoints}}
106
+
107
+ T _parseNative<T>(dynamic data) {
108
+ if (data == null) {
109
+ throw Exception('Cannot parse null data as $T');
110
+ }
111
+
112
+ if (T == String) {
113
+ return data.toString() as T;
114
+ }
115
+ if (T == int) {
116
+ if (data is int) return data as T;
117
+ if (data is double) return data.toInt() as T;
118
+ return int.parse(data.toString()) as T;
119
+ }
120
+ if (T == double) {
121
+ if (data is double) return data as T;
122
+ if (data is int) return data.toDouble() as T;
123
+ return double.parse(data.toString()) as T;
124
+ }
125
+ if (T == bool) {
126
+ if (data is bool) return data as T;
127
+ if (data is String) {
128
+ final lower = data.toLowerCase();
129
+ if (lower == 'true' || lower == '1') return true as T;
130
+ if (lower == 'false' || lower == '0') return false as T;
131
+ }
132
+ if (data is int) return (data != 0) as T;
133
+ throw Exception('Cannot convert $data to bool');
134
+ }
135
+
136
+ // Se il tipo è dynamic o Object, ritorna direttamente
137
+ if (T == dynamic || T == Object) {
138
+ return data as T;
139
+ }
140
+
141
+ throw UnsupportedError('Unsupported native type $T');
142
+ }
143
+ }
@@ -1,15 +1,15 @@
1
- import 'package:freezed_annotation/freezed_annotation.dart';
2
- {{#imports}}
3
- {{{.}}}
4
- {{/imports}}
5
-
6
- @JsonEnum(fieldRename: FieldRename.pascal)
7
- enum {{enumName}} {
8
- {{#fields}}
9
- @JsonValue({{value}})
10
- {{name}}({{value}}){{#isLast}};{{/isLast}}{{^isLast}},{{/isLast}}
11
- {{/fields}}
12
-
13
- final int value;
14
- const {{enumName}}(this.value);
1
+ import 'package:freezed_annotation/freezed_annotation.dart';
2
+ {{#imports}}
3
+ {{{.}}}
4
+ {{/imports}}
5
+
6
+ @JsonEnum(fieldRename: FieldRename.pascal)
7
+ enum {{enumName}} {
8
+ {{#fields}}
9
+ @JsonValue({{{value}}})
10
+ {{name}}({{{value}}}){{#isLast}};{{/isLast}}{{^isLast}},{{/isLast}}
11
+ {{/fields}}
12
+
13
+ final {{valueType}} value;
14
+ const {{enumName}}(this.value);
15
15
  }
@@ -1,24 +1,21 @@
1
- import 'package:freezed_annotation/freezed_annotation.dart';
2
- {{#imports}}
3
- {{{.}}}
4
- {{/imports}}
5
-
6
- part '{{filename}}.freezed.dart';
7
- part '{{filename}}.g.dart';
8
-
9
- @freezed
10
- abstract class {{className}} with _${{className}} {
11
- const factory {{className}}({
12
- {{#fields}}
13
- {{#jsonKeyAnnotation}}
14
- {{{jsonKeyAnnotation}}}
15
- {{/jsonKeyAnnotation}}
16
- {{#defaultAnnotation}}
17
- {{{defaultAnnotation}}}
18
- {{/defaultAnnotation}}
19
- {{required}}{{{type}}}{{nullable}} {{name}},
20
- {{/fields}}
21
- }) = _{{className}};
22
-
23
- factory {{className}}.fromJson(Map<String, dynamic> json) => _${{className}}FromJson(json);
1
+ import 'package:freezed_annotation/freezed_annotation.dart';
2
+ {{#imports}}
3
+ {{{.}}}
4
+ {{/imports}}
5
+
6
+ part '{{filename}}.freezed.dart';
7
+ part '{{filename}}.g.dart';
8
+
9
+ @freezed
10
+ abstract class {{className}} with _${{className}} {
11
+ const factory {{className}}({
12
+ {{#fields}}
13
+ {{#jsonKeyAnnotation}}
14
+ {{{jsonKeyAnnotation}}}
15
+ {{/jsonKeyAnnotation}}
16
+ {{required}}{{{type}}}{{nullable}} {{name}},
17
+ {{/fields}}
18
+ }) = _{{className}};
19
+
20
+ factory {{className}}.fromJson(Map<String, dynamic> json) => _${{className}}FromJson(json);
24
21
  }
@@ -23,15 +23,15 @@ export class ApiNextJsWriter {
23
23
  let haveRequest = api.haveRequest;
24
24
  let method = api.method.toLowerCase();
25
25
  let httpOptions = api.isMultiPart ? 'httpOptionsMultiPart' : 'httpOptions';
26
- let preparation = `${queryParametersPreparation}
26
+ let preparation = `${queryParametersPreparation}
27
27
  ${requestPreparation}`.trim();
28
28
  preparation = preparation.length > 0 ? ` ${preparation}\n ` : '';
29
29
  //\`\${API_BASE_URL}
30
- let apiString = `
31
- export const ${apiNameNormalized} = async (${parametersString}): Promise<${returnTypeString}> => {
32
- ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${api.url}${queryParameters}\`${haveRequest ? ', wrappedRequest' : ''});
33
- return response.data;
34
- }
30
+ let apiString = `
31
+ export const ${apiNameNormalized} = async (${parametersString}): Promise<${returnTypeString}> => {
32
+ ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${api.url}${queryParameters}\`${haveRequest ? ', wrappedRequest' : ''});
33
+ return response.data;
34
+ }
35
35
  `;
36
36
  return apiString;
37
37
  }
@@ -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 ` const ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} !== undefined && isValid(${parameter.name}) ? encodeURIComponent(dateToZulu(${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 ` const ${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 ` const ${parameter.name}Param: string = encodeURIComponent(dateToZulu(${parameter.name}));
72
+ return ` const ${parameter.name}Param: string = encodeURIComponent(dateToZulu(${parameter.name}));
73
73
  `;
74
74
  }
75
75
  else {
76
- return ` const ${parameter.name}Param: string = encodeURIComponent('' + ${parameter.name});
76
+ return ` const ${parameter.name}Param: string = encodeURIComponent('' + ${parameter.name});
77
77
  `;
78
78
  }
79
79
  }
@@ -117,11 +117,11 @@ ${preparation}const response = await axios.${method}<${returnTypeString}>(\`${ap
117
117
  if (!api.haveRequest) {
118
118
  return ``;
119
119
  }
120
- return ` const wrappedRequest = handleRequest(request);
120
+ return ` const wrappedRequest = handleRequest(request);
121
121
  `;
122
122
  }
123
123
  _writeFile(apis) {
124
- fs.writeFileSync(this._commandLineArgs.outputDirectory + "/api.autogenerated.ts", `${API_PRE}
124
+ fs.writeFileSync(this._commandLineArgs.outputDirectory + "/api.autogenerated.ts", `${API_PRE}
125
125
  ${apis}`, { flag: 'w' });
126
126
  }
127
127
  }
@@ -1,5 +1,5 @@
1
- export const API_PRE = `import axios from 'axios';
2
- import * as Models from './model.autogenerated';
3
- import { handleRequest, dateToZulu } from './utils/axios'
4
- import { isValid } from 'date-fns';
1
+ export const API_PRE = `import axios from 'axios';
2
+ import * as Models from './model.autogenerated';
3
+ import { handleRequest, dateToZulu } from './utils/axios'
4
+ import { isValid } from 'date-fns';
5
5
  `;
@@ -12,10 +12,10 @@ export class ModelNextJsWriter {
12
12
  this._writeFile(modelString);
13
13
  }
14
14
  _modelString(model) {
15
- let modelString = `
16
- export ${model.modelType} ${model.name} {
17
- ${this._properties(model)}${this._enumValues(model)}
18
- }
15
+ let modelString = `
16
+ export ${model.modelType} ${model.name} {
17
+ ${this._properties(model)}${this._enumValues(model)}
18
+ }
19
19
  `;
20
20
  return modelString;
21
21
  }
@@ -37,8 +37,8 @@ ${this._properties(model)}${this._enumValues(model)}
37
37
  return enumValuesString.trimEnd();
38
38
  }
39
39
  _writeFile(models) {
40
- fs.writeFileSync(this._outputDirectory + "/model.autogenerated.ts", `
41
- ${models}
40
+ fs.writeFileSync(this._outputDirectory + "/model.autogenerated.ts", `
41
+ ${models}
42
42
  `, { flag: 'w' });
43
43
  }
44
44
  }
@@ -5,6 +5,6 @@ export interface SwaggerComponent {
5
5
  [key: string]: SwaggerSchema;
6
6
  };
7
7
  additionalProperties: boolean;
8
- enum: string[];
9
- required: string[];
8
+ enum?: Array<string | number>;
9
+ required?: string[];
10
10
  }
@@ -7,6 +7,7 @@ export interface SwaggerSchema {
7
7
  properties?: {
8
8
  [key: string]: SwaggerSchema;
9
9
  };
10
+ enum?: Array<string | number>;
10
11
  nullable?: boolean;
11
12
  minLength?: number;
12
13
  }
package/package.json CHANGED
@@ -1,49 +1,49 @@
1
- {
2
- "name": "@devlearning/swagger-generator",
3
- "version": "1.1.16",
4
- "description": "Swagger generator apis and models for Angular and NextJS",
5
- "main": "index.js",
6
- "type": "module",
7
- "scripts": {
8
- "build": "npx tsc && npm run copy-templates",
9
- "debug-angular": "npx tsx src/index.ts --url http://localhost:5208/swagger/v1/swagger.json --output autogen --target angular --dateTimeLibrary moment",
10
- "debug-angular-unified": "npx tsx src/index.ts --url http://localhost:5208/swagger/v1/swagger.json --output autogen --target angular --dateTimeLibrary moment --api-client-name ApiClient",
11
- "debug-nextjs": "npx tsx src/index.ts --url http://localhost:7550/swagger/ApiGateway/swagger.json --output autogen --target next --dateTimeLibrary date-fns",
12
- "debug-flutter": "npx tsx src/index.ts --url http://localhost:7550/swagger/v1/swagger.json --output autogen --target flutter --package app",
13
- "debug-flutter-unified": "npx tsx src/index.ts --url http://localhost:7550/swagger/v1/swagger.json --output autogen --target flutter --package app --api-client-name ApiClient",
14
- "copy-templates": "copyfiles -u 3 \"src/generators-writers/dart/templates/**/*\" dist/generators-writers/dart",
15
- "prepublishOnly": "npm run build",
16
- "deploy": "npm publish"
17
- },
18
- "bin": {
19
- "swgen": "./dist/index.js"
20
- },
21
- "keywords": [
22
- "swagger",
23
- "angular",
24
- "nextjs",
25
- "dart",
26
- "flutter",
27
- "api",
28
- "generator"
29
- ],
30
- "author": "",
31
- "license": "ISC",
32
- "dependencies": {
33
- "cli-progress": "^3.12.0",
34
- "mustache": "^4.2.0",
35
- "node-fetch": "^3.3.2",
36
- "yargs": "^18.0.0"
37
- },
38
- "node-fetch": "^3.3.2",
39
- "devDependencies": {
40
- "@types/cli-progress": "^3.11.6",
41
- "@types/mustache": "^4.2.6",
42
- "@types/node": "^24.7.0",
43
- "@types/yargs": "^17.0.33",
44
- "copyfiles": "^2.4.1",
45
- "ts-node": "^10.9.1",
46
- "tsconfig-paths": "^4.2.0",
47
- "typescript": "^5.1.6"
48
- }
49
- }
1
+ {
2
+ "name": "@devlearning/swagger-generator",
3
+ "version": "1.1.18",
4
+ "description": "Swagger generator apis and models for Angular and NextJS",
5
+ "main": "index.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "build": "npx tsc && npm run copy-templates",
9
+ "debug-angular": "npx tsx src/index.ts --url http://localhost:5208/swagger/v1/swagger.json --output autogen --target angular --dateTimeLibrary moment",
10
+ "debug-angular-unified": "npx tsx src/index.ts --url http://localhost:5208/swagger/v1/swagger.json --output autogen --target angular --dateTimeLibrary moment --api-client-name ApiClient",
11
+ "debug-nextjs": "npx tsx src/index.ts --url http://localhost:7550/swagger/ApiGateway/swagger.json --output autogen --target next --dateTimeLibrary date-fns",
12
+ "debug-flutter": "npx tsx src/index.ts --url http://localhost:7550/swagger/v1/swagger.json --output autogen --target flutter --package app",
13
+ "debug-flutter-unified": "npx tsx src/index.ts --url http://localhost:7550/swagger/v1/swagger.json --output autogen --target flutter --package app --api-client-name ApiClient",
14
+ "copy-templates": "copyfiles -u 3 \"src/generators-writers/dart/templates/**/*\" dist/generators-writers/dart",
15
+ "prepublishOnly": "npm run build",
16
+ "deploy": "npm publish"
17
+ },
18
+ "bin": {
19
+ "swgen": "./dist/index.js"
20
+ },
21
+ "keywords": [
22
+ "swagger",
23
+ "angular",
24
+ "nextjs",
25
+ "dart",
26
+ "flutter",
27
+ "api",
28
+ "generator"
29
+ ],
30
+ "author": "",
31
+ "license": "ISC",
32
+ "dependencies": {
33
+ "cli-progress": "^3.12.0",
34
+ "mustache": "^4.2.0",
35
+ "node-fetch": "^3.3.2",
36
+ "yargs": "^18.0.0"
37
+ },
38
+ "node-fetch": "^3.3.2",
39
+ "devDependencies": {
40
+ "@types/cli-progress": "^3.11.6",
41
+ "@types/mustache": "^4.2.6",
42
+ "@types/node": "^24.7.0",
43
+ "@types/yargs": "^17.0.33",
44
+ "copyfiles": "^2.4.1",
45
+ "ts-node": "^10.9.1",
46
+ "tsconfig-paths": "^4.2.0",
47
+ "typescript": "^5.1.6"
48
+ }
49
+ }
@@ -1,27 +1,27 @@
1
- export const API_PRE =
2
- `import { HttpClient } from '@angular/common/http';
3
- import { Observable, catchError, map } from 'rxjs';
4
- import * as Models from './model.autogenerated';
5
- import { HttpHeaders } from "@angular/common/http";
6
-
7
- export const httpOptions = {
8
- headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
9
- };
10
-
11
- export const httpOptionsMultipart = {};
12
-
13
- export abstract class ApiAutogeneratedService {
14
- constructor(
15
- public _http: HttpClient,
16
- public _baseUrl: string,
17
- ) { }
18
-
19
- protected abstract _momentToString(moment: moment.Moment): string;
20
- protected abstract _handleRequest<T>(request: T): T;
21
- protected abstract _handleMultipart<T>(request: T): FormData;
22
- protected abstract _handleResponse<T>(response: T): T;
23
- protected abstract _handleError(error: any, obs: any): Observable<never>;
24
- `;
25
-
26
- export const API_POST =
1
+ export const API_PRE =
2
+ `import { HttpClient } from '@angular/common/http';
3
+ import { Observable, catchError, map } from 'rxjs';
4
+ import * as Models from './model.autogenerated';
5
+ import { HttpHeaders } from "@angular/common/http";
6
+
7
+ export const httpOptions = {
8
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
9
+ };
10
+
11
+ export const httpOptionsMultipart = {};
12
+
13
+ export abstract class ApiAutogeneratedService {
14
+ constructor(
15
+ public _http: HttpClient,
16
+ public _baseUrl: string,
17
+ ) { }
18
+
19
+ protected abstract _momentToString(moment: moment.Moment): string;
20
+ protected abstract _handleRequest<T>(request: T): T;
21
+ protected abstract _handleMultipart<T>(request: T): FormData;
22
+ protected abstract _handleResponse<T>(response: T): T;
23
+ protected abstract _handleError(error: any, obs: any): Observable<never>;
24
+ `;
25
+
26
+ export const API_POST =
27
27
  `}`;