@devlearning/swagger-generator 1.1.1 → 1.1.2

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 (83) hide show
  1. package/.vscode/launch.json +28 -28
  2. package/README.md +209 -209
  3. package/dist/api.constants.d.ts +2 -0
  4. package/dist/api.constants.js +22 -22
  5. package/dist/generator-old.d.ts +0 -0
  6. package/dist/generator-old.js +1 -1
  7. package/dist/generator.d.ts +40 -0
  8. package/dist/generator.js +2 -0
  9. package/dist/generators-writers/angular/api-angular-writer.d.ts +15 -0
  10. package/dist/generators-writers/angular/api-angular-writer.js +15 -15
  11. package/dist/generators-writers/angular/constants.d.ts +4 -0
  12. package/dist/generators-writers/angular/constants.js +24 -24
  13. package/dist/generators-writers/angular/model-angular-writer.d.ts +10 -0
  14. package/dist/generators-writers/angular/model-angular-writer.js +6 -6
  15. package/dist/generators-writers/dart/api-dart-writer.d.ts +11 -0
  16. package/dist/generators-writers/dart/api-dart-writer.js +1 -1
  17. package/dist/generators-writers/dart/model-dart-writer.d.ts +9 -0
  18. package/dist/generators-writers/dart/model-dart-writer.js +2 -2
  19. package/dist/generators-writers/dart/models/import-definition-dart.d.ts +5 -0
  20. package/dist/generators-writers/dart/normalizator.d.ts +10 -0
  21. package/dist/generators-writers/dart/templates/api.mustache +49 -49
  22. package/dist/generators-writers/dart/templates/enum.mustache +14 -14
  23. package/dist/generators-writers/dart/templates/model.mustache +17 -17
  24. package/dist/generators-writers/nextjs/api-nextjs-writer.d.ts +15 -0
  25. package/dist/generators-writers/nextjs/api-nextjs-writer.js +12 -12
  26. package/dist/generators-writers/nextjs/constants.d.ts +1 -0
  27. package/dist/generators-writers/nextjs/constants.js +4 -4
  28. package/dist/generators-writers/nextjs/model-nextjs-writer.d.ts +10 -0
  29. package/dist/generators-writers/nextjs/model-nextjs-writer.js +6 -6
  30. package/dist/generators-writers/utils.d.ts +12 -0
  31. package/dist/index.d.ts +17 -0
  32. package/dist/model.constants.d.ts +0 -0
  33. package/dist/model.constants.js +1 -1
  34. package/dist/models/api-dto.d.ts +18 -0
  35. package/dist/models/enum-value-dto.d.ts +4 -0
  36. package/dist/models/model-dto.d.ts +9 -0
  37. package/dist/models/parameter-dto.d.ts +7 -0
  38. package/dist/models/property-dto.d.ts +4 -0
  39. package/dist/models/swagger/swagger-component-property.d.ts +1 -0
  40. package/dist/models/swagger/swagger-component.d.ts +10 -0
  41. package/dist/models/swagger/swagger-content.d.ts +4 -0
  42. package/dist/models/swagger/swagger-info.d.ts +4 -0
  43. package/dist/models/swagger/swagger-method.d.ts +9 -0
  44. package/dist/models/swagger/swagger-schema.d.ts +12 -0
  45. package/dist/models/swagger/swagger.d.ts +47 -0
  46. package/dist/models/type-dto.d.ts +8 -0
  47. package/dist/swagger-downloader.d.ts +5 -0
  48. package/dist/templates/api.mustache +29 -0
  49. package/dist/templates/model.mustache +18 -0
  50. package/package.json +45 -45
  51. package/src/api.constants.ts +26 -26
  52. package/src/generator-old.ts +449 -449
  53. package/src/generator.ts +583 -582
  54. package/src/generators-writers/angular/api-angular-writer.ts +141 -141
  55. package/src/generators-writers/angular/constants.ts +36 -36
  56. package/src/generators-writers/angular/model-angular-writer.ts +62 -62
  57. package/src/generators-writers/dart/api-dart-writer.ts +198 -198
  58. package/src/generators-writers/dart/model-dart-writer.ts +162 -162
  59. package/src/generators-writers/dart/models/import-definition-dart.ts +5 -5
  60. package/src/generators-writers/dart/normalizator.ts +72 -72
  61. package/src/generators-writers/dart/templates/api.mustache +49 -49
  62. package/src/generators-writers/dart/templates/enum.mustache +14 -14
  63. package/src/generators-writers/dart/templates/model.mustache +17 -17
  64. package/src/generators-writers/nextjs/api-nextjs-writer.ts +156 -156
  65. package/src/generators-writers/nextjs/constants.ts +5 -5
  66. package/src/generators-writers/nextjs/model-nextjs-writer.ts +61 -61
  67. package/src/generators-writers/utils.ts +78 -78
  68. package/src/index.ts +96 -96
  69. package/src/models/api-dto.ts +17 -17
  70. package/src/models/enum-value-dto.ts +3 -3
  71. package/src/models/model-dto.ts +9 -9
  72. package/src/models/parameter-dto.ts +7 -7
  73. package/src/models/property-dto.ts +4 -4
  74. package/src/models/swagger/swagger-component-property.ts +11 -11
  75. package/src/models/swagger/swagger-component.ts +17 -17
  76. package/src/models/swagger/swagger-content.ts +4 -4
  77. package/src/models/swagger/swagger-info.ts +3 -3
  78. package/src/models/swagger/swagger-method.ts +7 -7
  79. package/src/models/swagger/swagger-schema.ts +20 -20
  80. package/src/models/swagger/swagger.ts +38 -38
  81. package/src/models/type-dto.ts +7 -7
  82. package/src/swagger-downloader.ts +12 -12
  83. package/tsconfig.json +33 -28
@@ -23,14 +23,14 @@ export class ApiAngularWriter {
23
23
  let haveRequest = api.haveRequest;
24
24
  let method = api.method.toLowerCase();
25
25
  let httpOptions = api.isMultiPart ? 'httpOptionsMultiPart' : 'httpOptions';
26
- let apiString = `
27
- public ${apiNameNormalized}(${parametersString}): Observable<${returnTypeString}> {
28
- ${queryParametersPreparation}${requestPreparation}return this._http.${method}<${returnTypeString}>(\`\${this._baseUrl}${api.url}${queryParameters}\`${haveRequest ? ', wrappedRequest' : ''}, ${httpOptions})
29
- .pipe(
30
- map(x => this._handleResponse(x)),
31
- catchError((err, obs) => this._handleError(err, <Observable<any>>obs))
32
- );
33
- }
26
+ let apiString = `
27
+ public ${apiNameNormalized}(${parametersString}): Observable<${returnTypeString}> {
28
+ ${queryParametersPreparation}${requestPreparation}return this._http.${method}<${returnTypeString}>(\`\${this._baseUrl}${api.url}${queryParameters}\`${haveRequest ? ', wrappedRequest' : ''}, ${httpOptions})
29
+ .pipe(
30
+ map(x => this._handleResponse(x)),
31
+ catchError((err, obs) => this._handleError(err, <Observable<any>>obs))
32
+ );
33
+ }
34
34
  `;
35
35
  return apiString;
36
36
  }
@@ -61,21 +61,21 @@ export class ApiAngularWriter {
61
61
  _queryParametersPreparationStatement(parameter) {
62
62
  if (parameter.nullable) {
63
63
  if (Utils.isDate(parameter.swaggerParameter?.schema)) {
64
- return `let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined && ${parameter.name}.isValid() ? encodeURIComponent(this._momentToString(${parameter.name})) : '';
64
+ return `let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined && ${parameter.name}.isValid() ? encodeURIComponent(this._momentToString(${parameter.name})) : '';
65
65
  `;
66
66
  }
67
67
  else {
68
- return `let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined ? encodeURIComponent('' + ${parameter.name}) : '';
68
+ return `let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined ? encodeURIComponent('' + ${parameter.name}) : '';
69
69
  `;
70
70
  }
71
71
  }
72
72
  else {
73
73
  if (Utils.isDate(parameter.swaggerParameter?.schema)) {
74
- return `let ${parameter.name}Param: string = encodeURIComponent(this._momentToString(${parameter.name}));
74
+ return `let ${parameter.name}Param: string = encodeURIComponent(this._momentToString(${parameter.name}));
75
75
  `;
76
76
  }
77
77
  else {
78
- return `let ${parameter.name}Param: string = encodeURIComponent('' + ${parameter.name});
78
+ return `let ${parameter.name}Param: string = encodeURIComponent('' + ${parameter.name});
79
79
  `;
80
80
  }
81
81
  }
@@ -103,12 +103,12 @@ export class ApiAngularWriter {
103
103
  if (!api.haveRequest) {
104
104
  return '';
105
105
  }
106
- return `let wrappedRequest = this._handleRequest(request);
106
+ return `let wrappedRequest = this._handleRequest(request);
107
107
  `;
108
108
  }
109
109
  _writeFile(apis) {
110
- fs.writeFileSync(this._outputDirectory + "/api.autogenerated.ts", `${API_PRE}
111
- ${apis}
110
+ fs.writeFileSync(this._outputDirectory + "/api.autogenerated.ts", `${API_PRE}
111
+ ${apis}
112
112
  ${API_POST}`, { flag: 'w' });
113
113
  }
114
114
  }
@@ -0,0 +1,4 @@
1
+ export declare const API_PRE = "import { HttpClient } from '@angular/common/http';\nimport { Observable, catchError, map } from 'rxjs';\nimport * as Models from './model.autogenerated';\nimport { HttpHeaders } from \"@angular/common/http\";\n\nexport const httpOptions = {\n headers: new HttpHeaders({ 'Content-Type': 'application/json' }),\n};\n\nexport const httpOptionsMultipart = {};\n\nexport abstract class ApiAutogeneratedService {\n constructor(\n public _http: HttpClient,\n public _baseUrl: string,\n ) { }\n\n protected abstract _momentToString(moment: moment.Moment): string;\n protected abstract _handleRequest<T>(request: T): T;\n protected abstract _handleMultipart<T>(request: T): FormData;\n protected abstract _handleResponse<T>(response: T): T;\n protected abstract _handleError(error: any, obs: any): Observable<never>;\n";
2
+ export declare const API_POST = "}";
3
+ export declare const MODEL_PRE = "import * as moment from 'moment';\n ";
4
+ export declare const MODEL_POST = "\n";
@@ -1,28 +1,28 @@
1
- export const API_PRE = `import { HttpClient } from '@angular/common/http';
2
- import { Observable, catchError, map } from 'rxjs';
3
- import * as Models from './model.autogenerated';
4
- import { HttpHeaders } from "@angular/common/http";
5
-
6
- export const httpOptions = {
7
- headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
8
- };
9
-
10
- export const httpOptionsMultipart = {};
11
-
12
- export abstract class ApiAutogeneratedService {
13
- constructor(
14
- public _http: HttpClient,
15
- public _baseUrl: string,
16
- ) { }
17
-
18
- protected abstract _momentToString(moment: moment.Moment): string;
19
- protected abstract _handleRequest<T>(request: T): T;
20
- protected abstract _handleMultipart<T>(request: T): FormData;
21
- protected abstract _handleResponse<T>(response: T): T;
22
- protected abstract _handleError(error: any, obs: any): Observable<never>;
1
+ export const API_PRE = `import { HttpClient } from '@angular/common/http';
2
+ import { Observable, catchError, map } from 'rxjs';
3
+ import * as Models from './model.autogenerated';
4
+ import { HttpHeaders } from "@angular/common/http";
5
+
6
+ export const httpOptions = {
7
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
8
+ };
9
+
10
+ export const httpOptionsMultipart = {};
11
+
12
+ export abstract class ApiAutogeneratedService {
13
+ constructor(
14
+ public _http: HttpClient,
15
+ public _baseUrl: string,
16
+ ) { }
17
+
18
+ protected abstract _momentToString(moment: moment.Moment): string;
19
+ protected abstract _handleRequest<T>(request: T): T;
20
+ protected abstract _handleMultipart<T>(request: T): FormData;
21
+ protected abstract _handleResponse<T>(response: T): T;
22
+ protected abstract _handleError(error: any, obs: any): Observable<never>;
23
23
  `;
24
24
  export const API_POST = `}`;
25
- export const MODEL_PRE = `import * as moment from 'moment';
25
+ export const MODEL_PRE = `import * as moment from 'moment';
26
26
  `;
27
- export const MODEL_POST = `
27
+ export const MODEL_POST = `
28
28
  `;
@@ -0,0 +1,10 @@
1
+ import { ModelDto } from '@src/models/model-dto.js';
2
+ export declare class ModelAngularWriter {
3
+ private _outputDirectory;
4
+ constructor(_outputDirectory: string);
5
+ write(models: ModelDto[]): void;
6
+ private _modelString;
7
+ private _properties;
8
+ private _enumValues;
9
+ private _writeFile;
10
+ }
@@ -13,10 +13,10 @@ export class ModelAngularWriter {
13
13
  this._writeFile(modelString);
14
14
  }
15
15
  _modelString(model) {
16
- let modelString = `
17
- export ${model.modelType} ${model.name} {
18
- ${this._properties(model)}${this._enumValues(model)}
19
- }
16
+ let modelString = `
17
+ export ${model.modelType} ${model.name} {
18
+ ${this._properties(model)}${this._enumValues(model)}
19
+ }
20
20
  `;
21
21
  return modelString;
22
22
  }
@@ -38,8 +38,8 @@ ${this._properties(model)}${this._enumValues(model)}
38
38
  return enumValuesString.trimEnd();
39
39
  }
40
40
  _writeFile(models) {
41
- fs.writeFileSync(this._outputDirectory + "/model.autogenerated.ts", `${MODEL_PRE}
42
- ${models}
41
+ fs.writeFileSync(this._outputDirectory + "/model.autogenerated.ts", `${MODEL_PRE}
42
+ ${models}
43
43
  ${MODEL_POST}`, { flag: 'w' });
44
44
  }
45
45
  }
@@ -0,0 +1,11 @@
1
+ import { ApiDto } from '@src/models/api-dto.js';
2
+ import { CommandLineArgs } from '@src/index.js';
3
+ import { ModelDto } from '@src/models/model-dto.js';
4
+ export declare class ApiDartWriter {
5
+ private _commandLineArgs;
6
+ constructor(commandLineArgs: CommandLineArgs);
7
+ write(apis: ApiDto[], models: ModelDto[]): void;
8
+ private _toPascalCase;
9
+ private _normalizeApiClassName;
10
+ private _groupByTag;
11
+ }
@@ -107,7 +107,7 @@ export class ApiDartWriter {
107
107
  apiDefinition.imports = imports.map(i => i.import);
108
108
  let destinationPath = `${this._commandLineArgs.outputDirectory}/${subPath}/api`;
109
109
  Utils.ensureDirectorySync(`${destinationPath}`);
110
- var result = Mustache.default.render(template, apiDefinition);
110
+ var result = Mustache.render(template, apiDefinition);
111
111
  writeFileSync(`${destinationPath}/${apiDefinition.filename}.dart`, result, 'utf-8');
112
112
  }
113
113
  }
@@ -0,0 +1,9 @@
1
+ import { ModelDto } from '@src/models/model-dto.js';
2
+ import { CommandLineArgs } from '@src/index.js';
3
+ export declare class ModelDartWriter {
4
+ private _commandLineArgs;
5
+ constructor(commandLineArgs: CommandLineArgs);
6
+ write(models: ModelDto[]): void;
7
+ writeClasses(models: ModelDto[]): void;
8
+ writeEnums(models: ModelDto[]): void;
9
+ }
@@ -60,7 +60,7 @@ export class ModelDartWriter {
60
60
  dartModel.imports = imports.map(i => i.import);
61
61
  let destinationPath = `${this._commandLineArgs.outputDirectory}/${normalizedInfo.subPath}`;
62
62
  Utils.ensureDirectorySync(`${destinationPath}`);
63
- let result = Mustache.default.render(template, dartModel);
63
+ let result = Mustache.render(template, dartModel);
64
64
  writeFileSync(`${destinationPath}/${normalizedInfo.filename}.dart`, result, 'utf-8');
65
65
  }
66
66
  });
@@ -92,7 +92,7 @@ export class ModelDartWriter {
92
92
  dartModel.fields[lastIndex].isLast = true;
93
93
  let destinationPath = `${this._commandLineArgs.outputDirectory}/${normalizedInfo.subPath}`;
94
94
  Utils.ensureDirectorySync(`${destinationPath}`);
95
- let result = Mustache.default.render(template, dartModel);
95
+ let result = Mustache.render(template, dartModel);
96
96
  writeFileSync(`${destinationPath}/${normalizedInfo.filename}.dart`, result, 'utf-8');
97
97
  });
98
98
  }
@@ -0,0 +1,5 @@
1
+ import { TypeDto } from "@src/models/type-dto.js";
2
+ export interface ImportDefinitionDart {
3
+ type: TypeDto;
4
+ import: string;
5
+ }
@@ -0,0 +1,10 @@
1
+ import { ModelDto } from "@src/models/model-dto.js";
2
+ export declare class Normalizator {
3
+ static getNormalizedInfo(model: ModelDto): {
4
+ filename: string;
5
+ subPath: string;
6
+ modelName: string;
7
+ };
8
+ static getNormalizedTypeName(typeName: string): string;
9
+ static mapTsTypeToDart(type: string): string;
10
+ }
@@ -1,49 +1,49 @@
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
- {{#queryParams}}
16
- {{type}}{{#nullable}}?{{/nullable}} {{name}},
17
- {{/queryParams}}
18
- ) async {
19
- final response = await _dio.{{httpMethod}}(
20
- '{{{path}}}',
21
- {{#haveRequest}}
22
- data: request.toJson(),
23
- {{/haveRequest}}
24
- {{^haveRequest}}
25
- queryParameters: {
26
- {{#queryParams}}
27
- {{#nullable}}if ({{name}} != null) {{/nullable}}'{{name}}': {{name}},
28
- {{/queryParams}}
29
- },
30
- {{/haveRequest}}
31
- );
32
- {{#isResponseNativeType}}
33
- return parseNative<{{responseType}}>(response.data);
34
- {{/isResponseNativeType}}
35
- {{^isResponseNativeType}}
36
- return {{responseType}}.fromJson(response.data);
37
- {{/isResponseNativeType}}
38
- }
39
-
40
- {{/endpoints}}
41
-
42
- T parseNative<T>(dynamic data) {
43
- if (T == int) return int.parse(data.toString()) as T;
44
- if (T == double) return double.parse(data.toString()) as T;
45
- if (T == String) return data as T;
46
- if (T == bool) return data as T;
47
- throw UnsupportedError('Unsupported native type $T');
48
- }
49
- }
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
+ {{#queryParams}}
16
+ {{type}}{{#nullable}}?{{/nullable}} {{name}},
17
+ {{/queryParams}}
18
+ ) async {
19
+ final response = await _dio.{{httpMethod}}(
20
+ '{{{path}}}',
21
+ {{#haveRequest}}
22
+ data: request.toJson(),
23
+ {{/haveRequest}}
24
+ {{^haveRequest}}
25
+ queryParameters: {
26
+ {{#queryParams}}
27
+ {{#nullable}}if ({{name}} != null) {{/nullable}}'{{name}}': {{name}},
28
+ {{/queryParams}}
29
+ },
30
+ {{/haveRequest}}
31
+ );
32
+ {{#isResponseNativeType}}
33
+ return parseNative<{{responseType}}>(response.data);
34
+ {{/isResponseNativeType}}
35
+ {{^isResponseNativeType}}
36
+ return {{responseType}}.fromJson(response.data);
37
+ {{/isResponseNativeType}}
38
+ }
39
+
40
+ {{/endpoints}}
41
+
42
+ T parseNative<T>(dynamic data) {
43
+ if (T == int) return int.parse(data.toString()) as T;
44
+ if (T == double) return double.parse(data.toString()) as T;
45
+ if (T == String) return data as T;
46
+ if (T == bool) return data as T;
47
+ throw UnsupportedError('Unsupported native type $T');
48
+ }
49
+ }
@@ -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 int value;
14
+ const {{enumName}}(this.value);
15
15
  }
@@ -1,18 +1,18 @@
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
- {{required}}{{{type}}}{{nullable}} {{name}},
14
- {{/fields}}
15
- }) = _{{className}};
16
-
17
- 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
+ {{required}}{{{type}}}{{nullable}} {{name}},
14
+ {{/fields}}
15
+ }) = _{{className}};
16
+
17
+ factory {{className}}.fromJson(Map<String, dynamic> json) => _${{className}}FromJson(json);
18
18
  }
@@ -0,0 +1,15 @@
1
+ import { ApiDto } from '@src/models/api-dto.js';
2
+ export declare class ApiNextJsWriter {
3
+ private _outputDirectory;
4
+ constructor(_outputDirectory: string);
5
+ write(apis: ApiDto[]): void;
6
+ private _apiString;
7
+ private _parameters;
8
+ private _returnType;
9
+ private _queryParametersPreparation;
10
+ private _queryParametersPreparationStatement;
11
+ private _queryParameters;
12
+ private _queryParametersStatement;
13
+ private _requestPreparation;
14
+ private _writeFile;
15
+ }
@@ -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._outputDirectory + "/api.autogenerated.ts", `${API_PRE}
124
+ fs.writeFileSync(this._outputDirectory + "/api.autogenerated.ts", `${API_PRE}
125
125
  ${apis}`, { flag: 'w' });
126
126
  }
127
127
  }
@@ -0,0 +1 @@
1
+ export declare const API_PRE = "import axios from 'axios';\nimport * as Models from './model.autogenerated';\nimport { handleRequest, dateToZulu } from './utils/axios'\nimport { isValid } from 'date-fns';\n";
@@ -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
  `;
@@ -0,0 +1,10 @@
1
+ import { ModelDto } from '@src/models/model-dto.js';
2
+ export declare class ModelNextJsWriter {
3
+ private _outputDirectory;
4
+ constructor(_outputDirectory: string);
5
+ write(models: ModelDto[]): void;
6
+ private _modelString;
7
+ private _properties;
8
+ private _enumValues;
9
+ private _writeFile;
10
+ }
@@ -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
  }
@@ -0,0 +1,12 @@
1
+ import { SwaggerSchema } from "@src/models/swagger/swagger-schema.js";
2
+ export declare class Utils {
3
+ static getNormalizedApiPath(apiName: string): string;
4
+ static toFirstLetterLowercase(value: string): string;
5
+ static toCamelCase(input: string): string;
6
+ static toPascalCase(input: string): string;
7
+ static isDate(schema?: SwaggerSchema): boolean;
8
+ static toDartFileName(name: string): string;
9
+ static toDartClassName(name: string): string | undefined;
10
+ static ensureDirectorySync(dirPath: string): Promise<void>;
11
+ static clearDirectory(dirPath: string): Promise<void>;
12
+ }
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ export declare enum DateTimeLibrary {
3
+ Moment = "moment",
4
+ DateFns = "date-fn"
5
+ }
6
+ export declare enum TargetGeneration {
7
+ Angular = "angular",
8
+ Next = "next",
9
+ Flutter = "flutter"
10
+ }
11
+ export interface CommandLineArgs {
12
+ swaggerJsonUrl: string;
13
+ outputDirectory: string;
14
+ target: TargetGeneration;
15
+ dateTimeLibrary?: DateTimeLibrary;
16
+ package?: string;
17
+ }
File without changes
@@ -1 +1 @@
1
- export {};
1
+ "use strict";
@@ -0,0 +1,18 @@
1
+ import { ParameterDto } from "./parameter-dto.js";
2
+ import { SwaggerMethod } from "./swagger/swagger-method.js";
3
+ import { TypeDto } from "./type-dto.js";
4
+ export interface ApiDto {
5
+ name: string;
6
+ method: string;
7
+ url: string;
8
+ description?: string;
9
+ parameters: ParameterDto[];
10
+ returnType: TypeDto | undefined;
11
+ haveRequest: boolean;
12
+ isMultiPart: boolean;
13
+ tag: string;
14
+ swaggerMethodKey: {
15
+ [key: string]: SwaggerMethod;
16
+ };
17
+ swaggerMethod: SwaggerMethod;
18
+ }
@@ -0,0 +1,4 @@
1
+ export interface EnumValueDto {
2
+ name: string;
3
+ value: string;
4
+ }
@@ -0,0 +1,9 @@
1
+ import { EnumValueDto } from "./enum-value-dto.js";
2
+ import { PropertyDto } from "./property-dto.js";
3
+ export interface ModelDto {
4
+ typeName: string;
5
+ modelType: 'enum' | 'interface' | 'class';
6
+ name: string;
7
+ properties: PropertyDto[];
8
+ enumValues: EnumValueDto[];
9
+ }
@@ -0,0 +1,7 @@
1
+ import { PropertyDto } from "./property-dto.js";
2
+ import { SwaggerParameter } from "./swagger/swagger.js";
3
+ export interface ParameterDto extends PropertyDto {
4
+ isQuery: boolean;
5
+ isEnum: boolean;
6
+ swaggerParameter?: SwaggerParameter;
7
+ }
@@ -0,0 +1,4 @@
1
+ import { TypeDto } from "./type-dto.js";
2
+ export interface PropertyDto extends TypeDto {
3
+ name: string;
4
+ }
@@ -0,0 +1,10 @@
1
+ import { SwaggerSchema } from "./swagger-schema.js";
2
+ export interface SwaggerComponent {
3
+ type: string;
4
+ properties: {
5
+ [key: string]: SwaggerSchema;
6
+ };
7
+ additionalProperties: boolean;
8
+ enum: string[];
9
+ required: string[];
10
+ }
@@ -0,0 +1,4 @@
1
+ import { SwaggerSchema } from "./swagger-schema.js";
2
+ export interface SwaggerContent {
3
+ schema: SwaggerSchema;
4
+ }