@nestia/sdk 2.0.0-dev.20230831-5 → 2.0.0-dev.20230901-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.
- package/assets/bundle/api/utils/NestiaSimulator.ts +1 -22
- package/lib/NestiaSdkApplication.js +1 -1
- package/lib/NestiaSdkApplication.js.map +1 -1
- package/lib/analyses/ControllerAnalyzer.js +11 -5
- package/lib/analyses/ControllerAnalyzer.js.map +1 -1
- package/lib/analyses/ExceptionAnalyzer.js +7 -2
- package/lib/analyses/ExceptionAnalyzer.js.map +1 -1
- package/lib/analyses/ImportAnalyzer.js +1 -1
- package/lib/analyses/ImportAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectAnalyzer.js +0 -10
- package/lib/analyses/ReflectAnalyzer.js.map +1 -1
- package/lib/executable/internal/NestiaSdkConfig.js +37 -46
- package/lib/executable/internal/NestiaSdkConfig.js.map +1 -1
- package/lib/generates/SwaggerGenerator.d.ts +10 -0
- package/lib/generates/SwaggerGenerator.js +37 -497
- package/lib/generates/SwaggerGenerator.js.map +1 -1
- package/lib/generates/internal/E2eFileProgrammer.js +5 -44
- package/lib/generates/internal/E2eFileProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkFunctionProgrammer.js +13 -11
- package/lib/generates/internal/SdkFunctionProgrammer.js.map +1 -1
- package/lib/generates/internal/SdkSimulationProgrammer.js +4 -4
- package/lib/generates/internal/SdkSimulationProgrammer.js.map +1 -1
- package/lib/generates/internal/SwaggerSchemaGenerator.d.ts +19 -0
- package/lib/generates/internal/SwaggerSchemaGenerator.js +301 -0
- package/lib/generates/internal/SwaggerSchemaGenerator.js.map +1 -0
- package/lib/generates/internal/SwaggerSchemaValidator.d.ts +7 -0
- package/lib/generates/internal/SwaggerSchemaValidator.js +196 -0
- package/lib/generates/internal/SwaggerSchemaValidator.js.map +1 -0
- package/lib/structures/IController.d.ts +0 -4
- package/lib/structures/IRoute.d.ts +6 -3
- package/lib/structures/ISwaggerError.d.ts +6 -0
- package/lib/structures/ISwaggerError.js +3 -0
- package/lib/structures/ISwaggerError.js.map +1 -0
- package/lib/structures/ISwaggerRoute.d.ts +2 -1
- package/lib/structures/ISwaggerSchemaTuple.d.ts +6 -0
- package/lib/structures/ISwaggerSchemaTuple.js +3 -0
- package/lib/structures/ISwaggerSchemaTuple.js.map +1 -0
- package/lib/structures/ITypeTuple.d.ts +1 -1
- package/lib/utils/ImportDictionary.d.ts +1 -2
- package/lib/utils/ImportDictionary.js +28 -24
- package/lib/utils/ImportDictionary.js.map +1 -1
- package/package.json +5 -5
- package/src/NestiaSdkApplication.ts +1 -1
- package/src/analyses/ControllerAnalyzer.ts +13 -4
- package/src/analyses/ExceptionAnalyzer.ts +3 -2
- package/src/analyses/ImportAnalyzer.ts +1 -1
- package/src/analyses/ReflectAnalyzer.ts +0 -10
- package/src/generates/SwaggerGenerator.ts +102 -478
- package/src/generates/internal/E2eFileProgrammer.ts +7 -49
- package/src/generates/internal/SdkFunctionProgrammer.ts +14 -12
- package/src/generates/internal/SdkSimulationProgrammer.ts +5 -5
- package/src/generates/internal/SwaggerSchemaGenerator.ts +433 -0
- package/src/generates/internal/SwaggerSchemaValidator.ts +216 -0
- package/src/structures/IController.ts +0 -4
- package/src/structures/IRoute.ts +6 -3
- package/src/structures/ISwaggerError.ts +8 -0
- package/src/structures/ISwaggerRoute.ts +2 -1
- package/src/structures/ISwaggerSchemaTuple.ts +7 -0
- package/src/structures/ITypeTuple.ts +1 -1
- package/src/utils/ImportDictionary.ts +29 -26
|
@@ -10,16 +10,15 @@ const HashSet_1 = require("tstl/container/HashSet");
|
|
|
10
10
|
const Pair_1 = require("tstl/utility/Pair");
|
|
11
11
|
class ImportDictionary {
|
|
12
12
|
constructor() {
|
|
13
|
-
this.
|
|
14
|
-
this.internals_ = new HashMap_1.HashMap();
|
|
13
|
+
this.components_ = new HashMap_1.HashMap();
|
|
15
14
|
}
|
|
16
15
|
empty() {
|
|
17
|
-
return this.
|
|
16
|
+
return this.components_.empty();
|
|
18
17
|
}
|
|
19
18
|
external(props) {
|
|
20
19
|
var _a;
|
|
21
|
-
const composition = this.
|
|
22
|
-
location: props.library
|
|
20
|
+
const composition = this.components_.take(new Pair_1.Pair(props.library, props.type), () => ({
|
|
21
|
+
location: `node_modules/${props.library}`,
|
|
23
22
|
elements: new HashSet_1.HashSet(),
|
|
24
23
|
default: false,
|
|
25
24
|
type: props.type,
|
|
@@ -39,7 +38,7 @@ class ImportDictionary {
|
|
|
39
38
|
return props.file.substring(0, props.file.length - 3);
|
|
40
39
|
return props.file;
|
|
41
40
|
})();
|
|
42
|
-
const composition = this.
|
|
41
|
+
const composition = this.components_.take(new Pair_1.Pair(file, props.type), () => ({
|
|
43
42
|
location: file,
|
|
44
43
|
elements: new HashSet_1.HashSet(),
|
|
45
44
|
default: false,
|
|
@@ -55,11 +54,25 @@ class ImportDictionary {
|
|
|
55
54
|
return (_a = props.instance) !== null && _a !== void 0 ? _a : file;
|
|
56
55
|
}
|
|
57
56
|
toScript(outDir) {
|
|
58
|
-
const
|
|
59
|
-
const
|
|
57
|
+
const external = [];
|
|
58
|
+
const internal = [];
|
|
59
|
+
const locator = (str) => {
|
|
60
|
+
const location = path_1.default
|
|
61
|
+
.relative(outDir, str)
|
|
62
|
+
.split("\\")
|
|
63
|
+
.join("/");
|
|
64
|
+
const index = location.lastIndexOf(NODE_MODULES);
|
|
65
|
+
return index === -1
|
|
66
|
+
? location.startsWith("..")
|
|
67
|
+
? location
|
|
68
|
+
: `./${location}`
|
|
69
|
+
: location.substring(index + NODE_MODULES.length);
|
|
70
|
+
};
|
|
71
|
+
const enroll = (filter) => (container) => {
|
|
60
72
|
var _a;
|
|
61
|
-
const compositions =
|
|
73
|
+
const compositions = this.components_
|
|
62
74
|
.toJSON()
|
|
75
|
+
.filter((c) => filter(c.second.location))
|
|
63
76
|
.map((e) => (Object.assign(Object.assign({}, e.second), { location: locator(e.second.location) })))
|
|
64
77
|
.sort((a, b) => a.location.localeCompare(b.location));
|
|
65
78
|
for (const c of compositions) {
|
|
@@ -71,23 +84,14 @@ class ImportDictionary {
|
|
|
71
84
|
.toJSON()
|
|
72
85
|
.sort((a, b) => a.localeCompare(b))
|
|
73
86
|
.join(", ")} }`);
|
|
74
|
-
|
|
87
|
+
container.push(`import ${c.type ? "type " : ""}${brackets.join(", ")} from "${c.location}";`);
|
|
75
88
|
}
|
|
76
89
|
};
|
|
77
|
-
enroll((str) => str)(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
.relative(outDir, str)
|
|
83
|
-
.split("\\")
|
|
84
|
-
.join("/");
|
|
85
|
-
const index = location.lastIndexOf(NODE_MODULES);
|
|
86
|
-
return index === -1
|
|
87
|
-
? `./${location}`
|
|
88
|
-
: location.substring(index + NODE_MODULES.length);
|
|
89
|
-
})(this.internals_);
|
|
90
|
-
return statements.join("\n");
|
|
90
|
+
enroll((str) => str.indexOf(NODE_MODULES) !== -1)(external);
|
|
91
|
+
enroll((str) => str.indexOf(NODE_MODULES) === -1)(internal);
|
|
92
|
+
if (external.length && internal.length)
|
|
93
|
+
external.push("");
|
|
94
|
+
return [...external, ...internal].join("\n");
|
|
91
95
|
}
|
|
92
96
|
}
|
|
93
97
|
exports.ImportDictionary = ImportDictionary;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportDictionary.js","sourceRoot":"","sources":["../../src/utils/ImportDictionary.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAAiD;AACjD,oDAAiD;AACjD,4CAAyC;AAEzC,MAAa,gBAAgB;IAA7B;QACqB,
|
|
1
|
+
{"version":3,"file":"ImportDictionary.js","sourceRoot":"","sources":["../../src/utils/ImportDictionary.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nestia/sdk",
|
|
3
|
-
"version": "2.0.0-dev.
|
|
3
|
+
"version": "2.0.0-dev.20230901-2",
|
|
4
4
|
"description": "Nestia SDK and Swagger generator",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"typings": "lib/index.d.ts",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
},
|
|
36
36
|
"homepage": "https://nestia.io",
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@nestia/fetcher": "^2.0.0-dev.
|
|
38
|
+
"@nestia/fetcher": "^2.0.0-dev.20230901-2",
|
|
39
39
|
"cli": "^1.0.1",
|
|
40
40
|
"glob": "^7.2.0",
|
|
41
41
|
"path-to-regexp": "^6.2.1",
|
|
@@ -44,16 +44,16 @@
|
|
|
44
44
|
"tsconfck": "^2.0.1",
|
|
45
45
|
"tsconfig-paths": "^4.1.1",
|
|
46
46
|
"tstl": "^2.5.13",
|
|
47
|
-
"typia": "^
|
|
47
|
+
"typia": "^5.0.1"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"@nestia/fetcher": ">=2.0.0-dev.
|
|
50
|
+
"@nestia/fetcher": ">=2.0.0-dev.20230901-2",
|
|
51
51
|
"@nestjs/common": ">=7.0.1",
|
|
52
52
|
"@nestjs/core": ">=7.0.1",
|
|
53
53
|
"reflect-metadata": ">=0.1.12",
|
|
54
54
|
"ts-node": ">=10.6.0",
|
|
55
55
|
"typescript": ">=4.8.0",
|
|
56
|
-
"typia": ">=
|
|
56
|
+
"typia": ">=5.0.1 <6.0.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@nestjs/common": ">= 7.0.1",
|
|
@@ -287,7 +287,7 @@ const title = (str: string): void => {
|
|
|
287
287
|
};
|
|
288
288
|
|
|
289
289
|
const is_implicit_return_typed = (route: IRoute): boolean => {
|
|
290
|
-
const name: string = route.output.
|
|
290
|
+
const name: string = route.output.typeName;
|
|
291
291
|
if (name === "void") return false;
|
|
292
292
|
else if (name.indexOf("readonly [") !== -1) return true;
|
|
293
293
|
|
|
@@ -133,8 +133,8 @@ export namespace ControllerAnalyzer {
|
|
|
133
133
|
);
|
|
134
134
|
else if (
|
|
135
135
|
func.method === "HEAD" &&
|
|
136
|
-
outputType.
|
|
137
|
-
outputType.
|
|
136
|
+
outputType.typeName !== "void" &&
|
|
137
|
+
outputType.typeName !== "undefined"
|
|
138
138
|
)
|
|
139
139
|
throw new Error(
|
|
140
140
|
`Error on ControllerAnalyzer.analyze(): HEAD method must return void type - ${controller.name}.${func.name}().`,
|
|
@@ -170,7 +170,11 @@ export namespace ControllerAnalyzer {
|
|
|
170
170
|
const common: Omit<IRoute, "path" | "accessors"> = {
|
|
171
171
|
...func,
|
|
172
172
|
parameters,
|
|
173
|
-
output: {
|
|
173
|
+
output: {
|
|
174
|
+
type: outputType.type,
|
|
175
|
+
typeName: outputType.typeName,
|
|
176
|
+
contentType: func.contentType,
|
|
177
|
+
},
|
|
174
178
|
imports,
|
|
175
179
|
status: func.status,
|
|
176
180
|
|
|
@@ -185,6 +189,10 @@ export namespace ControllerAnalyzer {
|
|
|
185
189
|
}:${character + 1}`;
|
|
186
190
|
})(),
|
|
187
191
|
description: CommentFactory.description(symbol),
|
|
192
|
+
operationId: tags
|
|
193
|
+
.find(({ name }) => name === "operation")
|
|
194
|
+
?.text!?.[0].text.split(" ")[0]
|
|
195
|
+
.trim(),
|
|
188
196
|
tags,
|
|
189
197
|
setHeaders: tags
|
|
190
198
|
.filter(
|
|
@@ -297,7 +305,8 @@ export namespace ControllerAnalyzer {
|
|
|
297
305
|
...param,
|
|
298
306
|
name,
|
|
299
307
|
optional,
|
|
300
|
-
type: tuple,
|
|
308
|
+
type: tuple.type,
|
|
309
|
+
typeName: tuple.typeName,
|
|
301
310
|
};
|
|
302
311
|
}
|
|
303
312
|
}
|
|
@@ -80,11 +80,12 @@ export namespace ExceptionAnalyzer {
|
|
|
80
80
|
const matched: IController.IException[] = Object.entries(
|
|
81
81
|
func.exceptions,
|
|
82
82
|
)
|
|
83
|
-
.filter(([_key, value]) => value.type === tuple.
|
|
83
|
+
.filter(([_key, value]) => value.type === tuple.typeName)
|
|
84
84
|
.map(([_key, value]) => value);
|
|
85
85
|
for (const m of matched)
|
|
86
86
|
output[m.status] = {
|
|
87
|
-
|
|
87
|
+
type: tuple.type,
|
|
88
|
+
typeName: tuple.typeName,
|
|
88
89
|
contentType: "application/json",
|
|
89
90
|
description: m.description,
|
|
90
91
|
};
|
|
@@ -328,16 +328,6 @@ export namespace ReflectAnalyzer {
|
|
|
328
328
|
name: param.name,
|
|
329
329
|
index: param.index,
|
|
330
330
|
field: param.data,
|
|
331
|
-
meta: (() => {
|
|
332
|
-
const type = (param.factory as any).type;
|
|
333
|
-
const nullable = (param.factory as any).nullable;
|
|
334
|
-
if (type !== undefined && nullable !== undefined)
|
|
335
|
-
return {
|
|
336
|
-
type,
|
|
337
|
-
nullable,
|
|
338
|
-
};
|
|
339
|
-
return undefined;
|
|
340
|
-
})(),
|
|
341
331
|
};
|
|
342
332
|
else if (param.factory.name === "TypedQuery")
|
|
343
333
|
return {
|