@devlearning/swagger-generator 0.0.15 → 0.0.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.
- package/autogeneration/output/api.autogenerated.ts +340 -72
- package/autogeneration/output/model.autogenerated.ts +482 -104
- package/dist/generator.js +23 -6
- package/package.json +23 -23
- package/src/generator.ts +268 -249
package/dist/generator.js
CHANGED
|
@@ -18,6 +18,9 @@ export class Generator {
|
|
|
18
18
|
const method = Object.getOwnPropertyNames(swaggerMethod)[0];
|
|
19
19
|
const swaggerMethodInfo = swaggerMethod[method];
|
|
20
20
|
console.debug(`\tAPI - ${apiName} - ${method}`);
|
|
21
|
+
if (apiName == '/api/v{version}/TransportOrder/ListByServiceRequest') {
|
|
22
|
+
console.debug('');
|
|
23
|
+
}
|
|
21
24
|
let parametersString = this.retrieveParameters(swaggerMethodInfo);
|
|
22
25
|
let queryParameters = this.retrieveQueryParameters(swaggerMethodInfo);
|
|
23
26
|
let returnTypeString = this.retrieveReturnType(swaggerMethodInfo);
|
|
@@ -107,7 +110,9 @@ ${MODEL_POST}`, { flag: 'w' });
|
|
|
107
110
|
parameters += `${this.toFirstLetterLowercase(parameter.name)}: Models.${parameter.schema.$ref.replace('#/components/schemas/', '')}, `;
|
|
108
111
|
}
|
|
109
112
|
else {
|
|
110
|
-
|
|
113
|
+
const nativeType = this.getNativeType(parameter.schema);
|
|
114
|
+
const nullable = !parameter.required ? '?' : '';
|
|
115
|
+
parameters += `${this.toFirstLetterLowercase(parameter.name)}${nullable}: ${nativeType}, `;
|
|
111
116
|
}
|
|
112
117
|
});
|
|
113
118
|
if (parameters.length > 2)
|
|
@@ -123,8 +128,13 @@ ${MODEL_POST}`, { flag: 'w' });
|
|
|
123
128
|
let parameters = `?`;
|
|
124
129
|
filteredParameters.forEach(parameter => {
|
|
125
130
|
if (parameter.schema.$ref != null) {
|
|
126
|
-
this.
|
|
127
|
-
|
|
131
|
+
if (this.isEnum(parameter.schema.$ref) != null) {
|
|
132
|
+
parameters += `${this.toFirstLetterLowercase(parameter.name)}=\${` + this.toFirstLetterLowercase(parameter.name) + `}&`;
|
|
133
|
+
;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
throw new Error("retrieveQueryParameters unmanaged parameter.schema.$ref");
|
|
137
|
+
}
|
|
128
138
|
}
|
|
129
139
|
else {
|
|
130
140
|
parameters += `${this.toFirstLetterLowercase(parameter.name)}=\${` + this.toFirstLetterLowercase(parameter.name) + `}&`;
|
|
@@ -138,7 +148,7 @@ ${MODEL_POST}`, { flag: 'w' });
|
|
|
138
148
|
if (swaggerMethodInfo.responses[200] == null)
|
|
139
149
|
return 'void';
|
|
140
150
|
if (swaggerMethodInfo.responses[200].content[contentType].schema.$ref != null)
|
|
141
|
-
return `Models.${swaggerMethodInfo.responses[200]?.content[contentType].schema.$ref
|
|
151
|
+
return `Models.${this.getObjectName(swaggerMethodInfo.responses[200]?.content[contentType].schema.$ref)}`;
|
|
142
152
|
if (swaggerMethodInfo.responses[200]?.content[contentType].schema.type != null)
|
|
143
153
|
return this.getNativeType(swaggerMethodInfo.responses[200]?.content[contentType].schema);
|
|
144
154
|
console.error("unmanaged swaggerMethodInfo", swaggerMethodInfo);
|
|
@@ -149,7 +159,7 @@ ${MODEL_POST}`, { flag: 'w' });
|
|
|
149
159
|
return swaggerComponentProperty.$ref.replace('#/components/schemas/', '');
|
|
150
160
|
if (swaggerComponentProperty.type != null && swaggerComponentProperty.type == 'array')
|
|
151
161
|
if (swaggerComponentProperty.items.$ref != null)
|
|
152
|
-
return `${swaggerComponentProperty.items.$ref
|
|
162
|
+
return `${this.getObjectName(swaggerComponentProperty.items.$ref)}[]`;
|
|
153
163
|
else
|
|
154
164
|
return this.getNativeType(swaggerComponentProperty);
|
|
155
165
|
if (swaggerComponentProperty.type != null)
|
|
@@ -160,12 +170,19 @@ ${MODEL_POST}`, { flag: 'w' });
|
|
|
160
170
|
throw new Error("unmanaged swaggerMethodInfo");
|
|
161
171
|
}
|
|
162
172
|
parametrizeObject(objectName) {
|
|
163
|
-
let component = this._swagger.components.schemas[
|
|
173
|
+
let component = this._swagger.components.schemas[this.getObjectName(objectName)];
|
|
164
174
|
if (component == null || component.properties == null)
|
|
165
175
|
return ``;
|
|
166
176
|
console.debug(component.properties);
|
|
167
177
|
return ``;
|
|
168
178
|
}
|
|
179
|
+
isEnum(objectName) {
|
|
180
|
+
let component = this._swagger.components.schemas[this.getObjectName(objectName)];
|
|
181
|
+
return component.enum != null;
|
|
182
|
+
}
|
|
183
|
+
getObjectName(ref) {
|
|
184
|
+
return ref.replace('#/components/schemas/', '');
|
|
185
|
+
}
|
|
169
186
|
retrieveObjectContent(name, swaggerComponent) {
|
|
170
187
|
if (swaggerComponent.type == 'object')
|
|
171
188
|
return this.retrieveObjectProperties(swaggerComponent);
|
package/package.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@devlearning/swagger-generator",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"description": "",
|
|
5
|
-
"main": "index.js",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"dev": "ts-node --esm ./src/index.ts http://localhost:5208/swagger/v1/swagger.json autogeneration/output",
|
|
9
|
-
"deploy": "npx tsc && npm publish"
|
|
10
|
-
},
|
|
11
|
-
"bin": {
|
|
12
|
-
"swgen": "./dist/index.js"
|
|
13
|
-
},
|
|
14
|
-
"keywords": [],
|
|
15
|
-
"author": "",
|
|
16
|
-
"license": "ISC",
|
|
17
|
-
"devDependencies": {
|
|
18
|
-
"@types/node": "^18.15.0",
|
|
19
|
-
"node-fetch": "^3.3.2",
|
|
20
|
-
"ts-node": "^10.9.1",
|
|
21
|
-
"tsconfig-paths": "^4.2.0",
|
|
22
|
-
"typescript": "^5.1.6"
|
|
23
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@devlearning/swagger-generator",
|
|
3
|
+
"version": "0.0.17",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"dev": "ts-node --esm ./src/index.ts http://localhost:5208/swagger/v1/swagger.json autogeneration/output",
|
|
9
|
+
"deploy": "npx tsc && npm publish"
|
|
10
|
+
},
|
|
11
|
+
"bin": {
|
|
12
|
+
"swgen": "./dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [],
|
|
15
|
+
"author": "",
|
|
16
|
+
"license": "ISC",
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/node": "^18.15.0",
|
|
19
|
+
"node-fetch": "^3.3.2",
|
|
20
|
+
"ts-node": "^10.9.1",
|
|
21
|
+
"tsconfig-paths": "^4.2.0",
|
|
22
|
+
"typescript": "^5.1.6"
|
|
23
|
+
}
|
|
24
24
|
}
|