@devlearning/swagger-generator 1.1.16 → 1.1.17

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,188 +1,188 @@
1
- import fs from 'fs';
2
- import { API_POST, API_PRE } from './constants.js';
3
- import { ApiDto } from '../../models/api-dto.js';
4
- import { Utils } from '../utils.js';
5
- import { ParameterDto } from '../../models/parameter-dto.js';
6
- import { Normalizator } from './normalizator.js';
7
- import { CommandLineArgs } from '@src/index.js';
8
-
9
- export class ApiAngularWriter {
10
- private _commandLineArgs: CommandLineArgs;
11
-
12
- constructor(commandLineArgs: CommandLineArgs) {
13
- this._commandLineArgs = commandLineArgs;
14
- }
15
-
16
- write(apis: ApiDto[]) {
17
- let apiString = '';
18
-
19
- apis.forEach(api => {
20
- apiString += this._apiString(api);
21
- });
22
-
23
-
24
- this._writeFile(apiString);
25
- }
26
-
27
- private _apiString(api: ApiDto) {
28
-
29
- let apiNameNormalized = Utils.getNormalizedApiPathAngular(api.name);
30
-
31
- let parametersString = this._parameters(api);
32
- let queryParametersPreparation = this._queryParametersPreparation(api);
33
- let requestPreparation = this._requestPreparation(api);
34
- let queryParameters = this._queryParameters(api);
35
- let returnTypeString = this._returnType(api);
36
- let haveRequest = api.haveRequest;
37
- let method = api.method.toLowerCase();
38
- let httpOptions = api.isMultiPart ? 'httpOptionsMultipart' : 'httpOptions';
39
-
40
- if (apiNameNormalized.includes('TicketFile')) {
41
- debugger
42
- }
43
-
44
- let apiString = `
45
- public ${apiNameNormalized}(${parametersString}): Observable<${returnTypeString}> {
46
- ${queryParametersPreparation}${requestPreparation}return this._http.${method}<${returnTypeString}>(\`\${this._baseUrl}${api.url}${queryParameters}\`${haveRequest ? ', wrappedRequest' : ''}, ${httpOptions})
47
- .pipe(
48
- map(x => this._handleResponse(x)),
49
- catchError((err, obs) => this._handleError(err, obs, skipErrorHandling))
50
- );
51
- }
52
- `;
53
-
54
- return apiString;
55
- }
56
-
57
- private _parameters(api: ApiDto) {
58
- let parametersString = '';
59
-
60
- api.parameters.forEach(parameter => {
61
- const libraryDate = 'moment.Moment';
62
- const prefixType = parameter.isEnum || !parameter.isNativeType ? 'Models.' : '';
63
- const typeName = parameter.typeName === 'dateTime' ? libraryDate : `${prefixType}${Normalizator.mapTsTypeToAngular(parameter.typeName)}`;
64
-
65
- parametersString += `${parameter.name}${parameter.nullable ? '?' : ''}: ${typeName}, `;
66
- });
67
-
68
- parametersString += 'skipErrorHandling: boolean = false, ';
69
-
70
- if (api.parameters.length > 0)
71
- parametersString = parametersString.substring(0, parametersString.length - 2);
72
-
73
- return parametersString;
74
- }
75
-
76
- private _returnType(api: ApiDto) {
77
- const prefixType = !api.returnType?.isNativeType ? 'Models.' : '';
78
- const isArray = api.returnType?.isArray ? '[]' : '';
79
- return api.returnType ? `${prefixType}${Normalizator.mapTsTypeToAngular(api.returnType.typeName)}${isArray}` : 'any';
80
- }
81
-
82
- private _queryParametersPreparation(api: ApiDto) {
83
- let queryParametersPreparation = '';
84
-
85
- api.parameters.forEach(parameter => {
86
- if (parameter.isQuery) {
87
- queryParametersPreparation += this._queryParametersPreparationStatement(parameter);
88
- }
89
- });
90
-
91
- return queryParametersPreparation
92
- }
93
-
94
- private _queryParametersPreparationStatement(parameter: ParameterDto) {
95
- if (parameter.nullable) {
96
- if (Utils.isDate(parameter.swaggerParameter?.schema)) {
97
- return `let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined && ${parameter.name}.isValid() ? encodeURIComponent(this._momentToString(${parameter.name})) : '';
98
- `;
99
- } else {
100
- return `let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined ? encodeURIComponent('' + ${parameter.name}) : '';
101
- `;
102
- }
103
- } else {
104
- if (Utils.isDate(parameter.swaggerParameter?.schema)) {
105
- return `let ${parameter.name}Param: string = encodeURIComponent(this._momentToString(${parameter.name}));
106
- `;
107
- } else {
108
- return `let ${parameter.name}Param: string = encodeURIComponent('' + ${parameter.name});
109
- `;
110
- }
111
- }
112
- }
113
-
114
- private _queryParameters(api: ApiDto) {
115
- let queryParameters = '';
116
-
117
- api.parameters.forEach(parameter => {
118
- if (parameter.isQuery) {
119
- queryParameters += this._queryParametersStatement(parameter);
120
- }
121
- });
122
-
123
- if (queryParameters.length > 0) {
124
- queryParameters = '?' + queryParameters.substring(0, queryParameters.length - 1);
125
- }
126
-
127
- return queryParameters;
128
- }
129
-
130
- private _queryParametersStatement(parameter: ParameterDto) {
131
- if (parameter.swaggerParameter == null) return '';
132
-
133
- if (!parameter.isQuery) return '';
134
-
135
- return `${parameter.name}=\${${parameter.name}Param}&`;
136
- }
137
-
138
- private _requestPreparation(api: ApiDto) {
139
- if (!api.haveRequest) {
140
- return '';
141
- }
142
-
143
- if (api.isMultiPart) {
144
- return `let wrappedRequest = this._handleMultipart(request);
145
- `;
146
- } else {
147
- return `let wrappedRequest = this._handleRequest(request);
148
- `;
149
- }
150
- }
151
-
152
- private _writeFile(apis: string) {
153
- const className = this._commandLineArgs.apiClientName || 'ApiAutogeneratedService';
154
- const apiPre = this._getApiPre(className);
155
-
156
- fs.writeFileSync(this._commandLineArgs.outputDirectory + "/api.autogenerated.ts",
157
- `${apiPre}
158
- ${apis}
159
- ${API_POST}`,
160
- { flag: 'w' });
161
- }
162
-
163
- private _getApiPre(className: string): string {
164
- return `import { HttpClient } from '@angular/common/http';
165
- import { Observable, catchError, map } from 'rxjs';
166
- import * as Models from './model.autogenerated';
167
- import { HttpHeaders } from "@angular/common/http";
168
-
169
- export const httpOptions = {
170
- headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
171
- };
172
-
173
- export const httpOptionsMultipart = {};
174
-
175
- export abstract class ${className} {
176
- constructor(
177
- public _http: HttpClient,
178
- public _baseUrl: string,
179
- ) { }
180
-
181
- protected abstract _momentToString(moment: moment.Moment): string;
182
- protected abstract _handleRequest<T>(request: T): T;
183
- protected abstract _handleMultipart<T>(request: T): FormData;
184
- protected abstract _handleResponse<T>(response: T): T;
185
- protected abstract _handleError(error: any, obs: any): Observable<never>;
186
- `;
187
- }
1
+ import fs from 'fs';
2
+ import { API_POST, API_PRE } from './constants.js';
3
+ import { ApiDto } from '../../models/api-dto.js';
4
+ import { Utils } from '../utils.js';
5
+ import { ParameterDto } from '../../models/parameter-dto.js';
6
+ import { Normalizator } from './normalizator.js';
7
+ import { CommandLineArgs } from '@src/index.js';
8
+
9
+ export class ApiAngularWriter {
10
+ private _commandLineArgs: CommandLineArgs;
11
+
12
+ constructor(commandLineArgs: CommandLineArgs) {
13
+ this._commandLineArgs = commandLineArgs;
14
+ }
15
+
16
+ write(apis: ApiDto[]) {
17
+ let apiString = '';
18
+
19
+ apis.forEach(api => {
20
+ apiString += this._apiString(api);
21
+ });
22
+
23
+
24
+ this._writeFile(apiString);
25
+ }
26
+
27
+ private _apiString(api: ApiDto) {
28
+
29
+ let apiNameNormalized = Utils.getNormalizedApiPathAngular(api.name);
30
+
31
+ let parametersString = this._parameters(api);
32
+ let queryParametersPreparation = this._queryParametersPreparation(api);
33
+ let requestPreparation = this._requestPreparation(api);
34
+ let queryParameters = this._queryParameters(api);
35
+ let returnTypeString = this._returnType(api);
36
+ let haveRequest = api.haveRequest;
37
+ let method = api.method.toLowerCase();
38
+ let httpOptions = api.isMultiPart ? 'httpOptionsMultipart' : 'httpOptions';
39
+
40
+ if (apiNameNormalized.includes('TicketFile')) {
41
+ debugger
42
+ }
43
+
44
+ let apiString = `
45
+ public ${apiNameNormalized}(${parametersString}): Observable<${returnTypeString}> {
46
+ ${queryParametersPreparation}${requestPreparation}return this._http.${method}<${returnTypeString}>(\`\${this._baseUrl}${api.url}${queryParameters}\`${haveRequest ? ', wrappedRequest' : ''}, ${httpOptions})
47
+ .pipe(
48
+ map(x => this._handleResponse(x)),
49
+ catchError((err, obs) => this._handleError(err, obs, skipErrorHandling))
50
+ );
51
+ }
52
+ `;
53
+
54
+ return apiString;
55
+ }
56
+
57
+ private _parameters(api: ApiDto) {
58
+ let parametersString = '';
59
+
60
+ api.parameters.forEach(parameter => {
61
+ const libraryDate = 'moment.Moment';
62
+ const prefixType = parameter.isEnum || !parameter.isNativeType ? 'Models.' : '';
63
+ const typeName = parameter.typeName === 'dateTime' ? libraryDate : `${prefixType}${Normalizator.mapTsTypeToAngular(parameter.typeName)}`;
64
+
65
+ parametersString += `${parameter.name}${parameter.nullable ? '?' : ''}: ${typeName}, `;
66
+ });
67
+
68
+ parametersString += 'skipErrorHandling: boolean = false, ';
69
+
70
+ if (api.parameters.length > 0)
71
+ parametersString = parametersString.substring(0, parametersString.length - 2);
72
+
73
+ return parametersString;
74
+ }
75
+
76
+ private _returnType(api: ApiDto) {
77
+ const prefixType = !api.returnType?.isNativeType ? 'Models.' : '';
78
+ const isArray = api.returnType?.isArray ? '[]' : '';
79
+ return api.returnType ? `${prefixType}${Normalizator.mapTsTypeToAngular(api.returnType.typeName)}${isArray}` : 'any';
80
+ }
81
+
82
+ private _queryParametersPreparation(api: ApiDto) {
83
+ let queryParametersPreparation = '';
84
+
85
+ api.parameters.forEach(parameter => {
86
+ if (parameter.isQuery) {
87
+ queryParametersPreparation += this._queryParametersPreparationStatement(parameter);
88
+ }
89
+ });
90
+
91
+ return queryParametersPreparation
92
+ }
93
+
94
+ private _queryParametersPreparationStatement(parameter: ParameterDto) {
95
+ if (parameter.nullable) {
96
+ if (Utils.isDate(parameter.swaggerParameter?.schema)) {
97
+ return `let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined && ${parameter.name}.isValid() ? encodeURIComponent(this._momentToString(${parameter.name})) : '';
98
+ `;
99
+ } else {
100
+ return `let ${parameter.name}Param: string = ${parameter.name} != null && ${parameter.name} != undefined ? encodeURIComponent('' + ${parameter.name}) : '';
101
+ `;
102
+ }
103
+ } else {
104
+ if (Utils.isDate(parameter.swaggerParameter?.schema)) {
105
+ return `let ${parameter.name}Param: string = encodeURIComponent(this._momentToString(${parameter.name}));
106
+ `;
107
+ } else {
108
+ return `let ${parameter.name}Param: string = encodeURIComponent('' + ${parameter.name});
109
+ `;
110
+ }
111
+ }
112
+ }
113
+
114
+ private _queryParameters(api: ApiDto) {
115
+ let queryParameters = '';
116
+
117
+ api.parameters.forEach(parameter => {
118
+ if (parameter.isQuery) {
119
+ queryParameters += this._queryParametersStatement(parameter);
120
+ }
121
+ });
122
+
123
+ if (queryParameters.length > 0) {
124
+ queryParameters = '?' + queryParameters.substring(0, queryParameters.length - 1);
125
+ }
126
+
127
+ return queryParameters;
128
+ }
129
+
130
+ private _queryParametersStatement(parameter: ParameterDto) {
131
+ if (parameter.swaggerParameter == null) return '';
132
+
133
+ if (!parameter.isQuery) return '';
134
+
135
+ return `${parameter.name}=\${${parameter.name}Param}&`;
136
+ }
137
+
138
+ private _requestPreparation(api: ApiDto) {
139
+ if (!api.haveRequest) {
140
+ return '';
141
+ }
142
+
143
+ if (api.isMultiPart) {
144
+ return `let wrappedRequest = this._handleMultipart(request);
145
+ `;
146
+ } else {
147
+ return `let wrappedRequest = this._handleRequest(request);
148
+ `;
149
+ }
150
+ }
151
+
152
+ private _writeFile(apis: string) {
153
+ const className = this._commandLineArgs.apiClientName || 'ApiAutogeneratedService';
154
+ const apiPre = this._getApiPre(className);
155
+
156
+ fs.writeFileSync(this._commandLineArgs.outputDirectory + "/api.autogenerated.ts",
157
+ `${apiPre}
158
+ ${apis}
159
+ ${API_POST}`,
160
+ { flag: 'w' });
161
+ }
162
+
163
+ private _getApiPre(className: string): string {
164
+ return `import { HttpClient } from '@angular/common/http';
165
+ import { Observable, catchError, map } from 'rxjs';
166
+ import * as Models from './model.autogenerated';
167
+ import { HttpHeaders } from "@angular/common/http";
168
+
169
+ export const httpOptions = {
170
+ headers: new HttpHeaders({ 'Content-Type': 'application/json' }),
171
+ };
172
+
173
+ export const httpOptionsMultipart = {};
174
+
175
+ export abstract class ${className} {
176
+ constructor(
177
+ public _http: HttpClient,
178
+ public _baseUrl: string,
179
+ ) { }
180
+
181
+ protected abstract _momentToString(moment: moment.Moment): string;
182
+ protected abstract _handleRequest<T>(request: T): T;
183
+ protected abstract _handleMultipart<T>(request: T): FormData;
184
+ protected abstract _handleResponse<T>(response: T): T;
185
+ protected abstract _handleError(error: any, obs: any): Observable<never>;
186
+ `;
187
+ }
188
188
  }
@@ -1,36 +1,36 @@
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<T>(error: any, obs: Observable<T>, skipErrorHandling: boolean): Observable<never>;
24
- `;
25
-
26
- export const API_POST =
27
- `}`;
28
-
29
-
30
- export const MODEL_PRE =
31
- `import * as moment from 'moment';
32
- `;
33
-
34
- export const MODEL_POST =
35
- `
36
- `;
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<T>(error: any, obs: Observable<T>, skipErrorHandling: boolean): Observable<never>;
24
+ `;
25
+
26
+ export const API_POST =
27
+ `}`;
28
+
29
+
30
+ export const MODEL_PRE =
31
+ `import * as moment from 'moment';
32
+ `;
33
+
34
+ export const MODEL_POST =
35
+ `
36
+ `;
@@ -1,66 +1,66 @@
1
- import fs from 'fs';
2
- import { MODEL_POST, MODEL_PRE } from './constants.js';
3
- import { ModelDto } from '../../models/model-dto.js';
4
- import { Normalizator } from './normalizator.js';
5
- import { Utils } from '../utils.js';
6
-
7
- export class ModelAngularWriter {
8
- private _outputDirectory: string;
9
-
10
- constructor(_outputDirectory: string) {
11
- this._outputDirectory = _outputDirectory;
12
- }
13
-
14
- write(models: ModelDto[]) {
15
- let modelString = '';
16
-
17
- models.forEach(model => {
18
- modelString += this._modelString(model);
19
- });
20
-
21
-
22
- this._writeFile(modelString);
23
- }
24
-
25
- private _modelString(model: ModelDto) {
26
- let modelString = `
27
- export ${model.modelType} ${Utils.toPascalCase(model.name)} {
28
- ${this._properties(model)}${this._enumValues(model)}
29
- }
30
- `;
31
-
32
- return modelString;
33
- }
34
-
35
- private _properties(model: ModelDto) {
36
- let propertiesString = '';
37
-
38
- model.properties.forEach(property => {
39
- //const libraryDate = this._commandLineArgs.dateTimeLibrary == DateTimeLibrary.Moment ? 'moment.Moment' : 'Date'
40
- const libraryDate = 'moment.Moment';
41
- const isArray = property.isArray ? '[]' : '';
42
- const typeName = property.typeName === 'dateTime' ? libraryDate : Normalizator.mapTsTypeToAngular(property.typeName);
43
- propertiesString += ` ${Utils.toFirstLetterLowercase(property.name)}${property.nullable ? '?' : ''}: ${typeName}${isArray};\n`;
44
- });
45
-
46
- return propertiesString.trimEnd();
47
- }
48
-
49
- private _enumValues(model: ModelDto) {
50
- let enumValuesString = '';
51
-
52
- model.enumValues.forEach(enumValue => {
53
- enumValuesString += ` ${enumValue.name} = ${enumValue.value},\n`;
54
- });
55
-
56
- return enumValuesString.trimEnd();
57
- }
58
-
59
- private _writeFile(models: string) {
60
- fs.writeFileSync(this._outputDirectory + "/model.autogenerated.ts",
61
- `${MODEL_PRE}
62
- ${models}
63
- ${MODEL_POST}`,
64
- { flag: 'w' });
65
- }
1
+ import fs from 'fs';
2
+ import { MODEL_POST, MODEL_PRE } from './constants.js';
3
+ import { ModelDto } from '../../models/model-dto.js';
4
+ import { Normalizator } from './normalizator.js';
5
+ import { Utils } from '../utils.js';
6
+
7
+ export class ModelAngularWriter {
8
+ private _outputDirectory: string;
9
+
10
+ constructor(_outputDirectory: string) {
11
+ this._outputDirectory = _outputDirectory;
12
+ }
13
+
14
+ write(models: ModelDto[]) {
15
+ let modelString = '';
16
+
17
+ models.forEach(model => {
18
+ modelString += this._modelString(model);
19
+ });
20
+
21
+
22
+ this._writeFile(modelString);
23
+ }
24
+
25
+ private _modelString(model: ModelDto) {
26
+ let modelString = `
27
+ export ${model.modelType} ${Utils.toPascalCase(model.name)} {
28
+ ${this._properties(model)}${this._enumValues(model)}
29
+ }
30
+ `;
31
+
32
+ return modelString;
33
+ }
34
+
35
+ private _properties(model: ModelDto) {
36
+ let propertiesString = '';
37
+
38
+ model.properties.forEach(property => {
39
+ //const libraryDate = this._commandLineArgs.dateTimeLibrary == DateTimeLibrary.Moment ? 'moment.Moment' : 'Date'
40
+ const libraryDate = 'moment.Moment';
41
+ const isArray = property.isArray ? '[]' : '';
42
+ const typeName = property.typeName === 'dateTime' ? libraryDate : Normalizator.mapTsTypeToAngular(property.typeName);
43
+ propertiesString += ` ${Utils.toFirstLetterLowercase(property.name)}${property.nullable ? '?' : ''}: ${typeName}${isArray};\n`;
44
+ });
45
+
46
+ return propertiesString.trimEnd();
47
+ }
48
+
49
+ private _enumValues(model: ModelDto) {
50
+ let enumValuesString = '';
51
+
52
+ model.enumValues.forEach(enumValue => {
53
+ enumValuesString += ` ${enumValue.name} = ${enumValue.value},\n`;
54
+ });
55
+
56
+ return enumValuesString.trimEnd();
57
+ }
58
+
59
+ private _writeFile(models: string) {
60
+ fs.writeFileSync(this._outputDirectory + "/model.autogenerated.ts",
61
+ `${MODEL_PRE}
62
+ ${models}
63
+ ${MODEL_POST}`,
64
+ { flag: 'w' });
65
+ }
66
66
  }
@@ -1,42 +1,42 @@
1
- import { Utils } from "../utils.js";
2
-
3
- export class Normalizator {
4
-
5
- public static mapTsTypeToAngular(type: string): string {
6
- const normalized: string = type.trim().toLowerCase();
7
-
8
- if (normalized.endsWith("[]")) {
9
- const inner: string = normalized.slice(0, -2).trim();
10
- return `${Normalizator.mapTsTypeToAngular(inner)}[]`;
11
- }
12
-
13
- switch (normalized) {
14
- case "string":
15
- case "uuid":
16
- return "string";
17
- case "date":
18
- case "datetime":
19
- return "datetime";
20
- case "number":
21
- case "float":
22
- case "double":
23
- case "integer":
24
- case "int":
25
- case "long":
26
- return "number";
27
- case "boolean":
28
- case "bool":
29
- return "boolean";
30
- case "any":
31
- case "object":
32
- return "any";
33
- case "null":
34
- return "null";
35
- case "undefined":
36
- return "undefined";
37
- default:
38
- return Utils.toPascalCase(type);
39
- }
40
- }
41
-
1
+ import { Utils } from "../utils.js";
2
+
3
+ export class Normalizator {
4
+
5
+ public static mapTsTypeToAngular(type: string): string {
6
+ const normalized: string = type.trim().toLowerCase();
7
+
8
+ if (normalized.endsWith("[]")) {
9
+ const inner: string = normalized.slice(0, -2).trim();
10
+ return `${Normalizator.mapTsTypeToAngular(inner)}[]`;
11
+ }
12
+
13
+ switch (normalized) {
14
+ case "string":
15
+ case "uuid":
16
+ return "string";
17
+ case "date":
18
+ case "datetime":
19
+ return "datetime";
20
+ case "number":
21
+ case "float":
22
+ case "double":
23
+ case "integer":
24
+ case "int":
25
+ case "long":
26
+ return "number";
27
+ case "boolean":
28
+ case "bool":
29
+ return "boolean";
30
+ case "any":
31
+ case "object":
32
+ return "any";
33
+ case "null":
34
+ return "null";
35
+ case "undefined":
36
+ return "undefined";
37
+ default:
38
+ return Utils.toPascalCase(type);
39
+ }
40
+ }
41
+
42
42
  }