@nestia/sdk 2.3.0-dev.20231019 → 2.3.0-dev.20231020
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/config/nestia.config.ts +3 -3
- package/lib/INestiaConfig.d.ts +1 -1
- package/lib/NestiaSdkApplication.js +41 -4
- package/lib/NestiaSdkApplication.js.map +1 -1
- package/lib/analyses/ControllerAnalyzer.d.ts +2 -2
- package/lib/analyses/ControllerAnalyzer.js +107 -65
- package/lib/analyses/ControllerAnalyzer.js.map +1 -1
- package/lib/analyses/ExceptionAnalyzer.d.ts +2 -1
- package/lib/analyses/ExceptionAnalyzer.js +23 -9
- package/lib/analyses/ExceptionAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectAnalyzer.d.ts +2 -1
- package/lib/analyses/ReflectAnalyzer.js +51 -37
- package/lib/analyses/ReflectAnalyzer.js.map +1 -1
- package/lib/executable/sdk.js +1 -0
- package/lib/executable/sdk.js.map +1 -1
- package/lib/structures/IErrorReport.d.ts +6 -0
- package/lib/structures/IErrorReport.js +3 -0
- package/lib/structures/IErrorReport.js.map +1 -0
- package/lib/structures/INestiaProject.d.ts +10 -0
- package/lib/structures/INestiaProject.js +3 -0
- package/lib/structures/INestiaProject.js.map +1 -0
- package/package.json +5 -5
- package/src/INestiaConfig.ts +1 -1
- package/src/NestiaSdkApplication.ts +45 -9
- package/src/analyses/ControllerAnalyzer.ts +336 -307
- package/src/analyses/ExceptionAnalyzer.ts +31 -15
- package/src/analyses/ReflectAnalyzer.ts +235 -211
- package/src/executable/sdk.ts +1 -0
- package/src/structures/IErrorReport.ts +6 -0
- package/src/structures/INestiaProject.ts +12 -0
|
@@ -6,11 +6,13 @@ export const NESTIA_CONFIG: INestiaConfig = {
|
|
|
6
6
|
/**
|
|
7
7
|
* Accessor of controller classes.
|
|
8
8
|
*
|
|
9
|
-
* You can specify it within two ways
|
|
9
|
+
* You can specify it within two ways.
|
|
10
10
|
*
|
|
11
11
|
* - Asynchronous function returning `INestApplication` instance
|
|
12
12
|
* - Specify the path or directory of controller class files
|
|
13
13
|
*/
|
|
14
|
+
// input: "src/controllers",
|
|
15
|
+
// input: "src/**/*.controller.ts",
|
|
14
16
|
input: async () => {
|
|
15
17
|
// change this to your own module
|
|
16
18
|
@Module({
|
|
@@ -25,8 +27,6 @@ export const NESTIA_CONFIG: INestiaConfig = {
|
|
|
25
27
|
// })
|
|
26
28
|
return app;
|
|
27
29
|
},
|
|
28
|
-
// input: "src/controllers",
|
|
29
|
-
// input: "src/**/*.controller.ts",
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Building `swagger.json` is also possible.
|
package/lib/INestiaConfig.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export interface INestiaConfig {
|
|
|
11
11
|
/**
|
|
12
12
|
* Accessor of controller classes.
|
|
13
13
|
*
|
|
14
|
-
* You can specify target controller classes within two ways
|
|
14
|
+
* You can specify target controller classes within two ways.
|
|
15
15
|
*
|
|
16
16
|
* - Asynchronous function returning `INestApplication` instance
|
|
17
17
|
* - Specify the path or directory of controller class files
|
|
@@ -23,6 +23,7 @@ const ReflectAnalyzer_1 = require("./analyses/ReflectAnalyzer");
|
|
|
23
23
|
const E2eGenerator_1 = require("./generates/E2eGenerator");
|
|
24
24
|
const SdkGenerator_1 = require("./generates/SdkGenerator");
|
|
25
25
|
const SwaggerGenerator_1 = require("./generates/SwaggerGenerator");
|
|
26
|
+
const MapUtil_1 = require("./utils/MapUtil");
|
|
26
27
|
class NestiaSdkApplication {
|
|
27
28
|
constructor(config, compilerOptions) {
|
|
28
29
|
this.config = config;
|
|
@@ -82,9 +83,15 @@ class NestiaSdkApplication {
|
|
|
82
83
|
// ANALYZE REFLECTS
|
|
83
84
|
const unique = new WeakSet();
|
|
84
85
|
const controllers = [];
|
|
86
|
+
const project = {
|
|
87
|
+
config: this.config,
|
|
88
|
+
input: yield ConfigAnalyzer_1.ConfigAnalyzer.input(this.config),
|
|
89
|
+
checker: null,
|
|
90
|
+
errors: [],
|
|
91
|
+
};
|
|
85
92
|
console.log("Analyzing reflections");
|
|
86
93
|
for (const include of (yield ConfigAnalyzer_1.ConfigAnalyzer.input(this.config)).include)
|
|
87
|
-
controllers.push(...(yield ReflectAnalyzer_1.ReflectAnalyzer.analyze(unique, include.file, include.paths, include.controller)));
|
|
94
|
+
controllers.push(...(yield ReflectAnalyzer_1.ReflectAnalyzer.analyze(project)(unique, include.file, include.paths, include.controller)));
|
|
88
95
|
const agg = (() => {
|
|
89
96
|
const set = new Set();
|
|
90
97
|
for (const c of controllers)
|
|
@@ -105,13 +112,18 @@ class NestiaSdkApplication {
|
|
|
105
112
|
// ANALYZE TYPESCRIPT CODE
|
|
106
113
|
console.log("Analyzing source codes");
|
|
107
114
|
const program = typescript_1.default.createProgram(controllers.map((c) => c.file), this.compilerOptions);
|
|
108
|
-
|
|
115
|
+
project.checker = program.getTypeChecker();
|
|
109
116
|
const routeList = [];
|
|
110
117
|
for (const c of controllers) {
|
|
111
118
|
const file = program.getSourceFile(c.file);
|
|
112
119
|
if (file === undefined)
|
|
113
120
|
continue;
|
|
114
|
-
routeList.push(...(yield ControllerAnalyzer_1.ControllerAnalyzer.analyze(
|
|
121
|
+
routeList.push(...(yield ControllerAnalyzer_1.ControllerAnalyzer.analyze(project)(file, c)));
|
|
122
|
+
}
|
|
123
|
+
// REPORT ERRORS
|
|
124
|
+
if (project.errors.length) {
|
|
125
|
+
report_errors(project.errors);
|
|
126
|
+
process.exit(-1);
|
|
115
127
|
}
|
|
116
128
|
// FIND IMPLICIT TYPES
|
|
117
129
|
const implicit = routeList.filter(is_implicit_return_typed);
|
|
@@ -124,7 +136,7 @@ class NestiaSdkApplication {
|
|
|
124
136
|
.join("\n"));
|
|
125
137
|
// DO GENERATE
|
|
126
138
|
AccessorAnalyzer_1.AccessorAnalyzer.analyze(routeList);
|
|
127
|
-
yield archiver(checker)(config(this.config))(routeList);
|
|
139
|
+
yield archiver(project.checker)(config(this.config))(routeList);
|
|
128
140
|
});
|
|
129
141
|
}
|
|
130
142
|
}
|
|
@@ -152,5 +164,30 @@ const is_implicit_return_typed = (route) => {
|
|
|
152
164
|
return false;
|
|
153
165
|
return true;
|
|
154
166
|
};
|
|
167
|
+
const report_errors = (errors) => {
|
|
168
|
+
// key: file
|
|
169
|
+
// key: controller
|
|
170
|
+
// key: function
|
|
171
|
+
// value: message
|
|
172
|
+
const map = new Map();
|
|
173
|
+
for (const e of errors) {
|
|
174
|
+
const file = MapUtil_1.MapUtil.take(map, e.file, () => new Map());
|
|
175
|
+
const controller = MapUtil_1.MapUtil.take(file, e.controller, () => new Map());
|
|
176
|
+
const func = MapUtil_1.MapUtil.take(controller, e.function, () => new Set());
|
|
177
|
+
func.add(e.message);
|
|
178
|
+
}
|
|
179
|
+
console.log("");
|
|
180
|
+
title("Nestia Error Report");
|
|
181
|
+
for (const [file, cMap] of map) {
|
|
182
|
+
for (const [controller, fMap] of cMap)
|
|
183
|
+
for (const [func, messages] of fMap) {
|
|
184
|
+
const location = path_1.default.relative(process.cwd(), file);
|
|
185
|
+
console.log(`${location} - error on ${controller}.${func}()`);
|
|
186
|
+
for (const msg of messages)
|
|
187
|
+
console.log(` - ${msg}`);
|
|
188
|
+
console.log("");
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
};
|
|
155
192
|
const VARIABLE = /[a-zA-Z_$0-9]/;
|
|
156
193
|
//# sourceMappingURL=NestiaSdkApplication.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NestiaSdkApplication.js","sourceRoot":"","sources":["../src/NestiaSdkApplication.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AACxB,4DAA4B;AAG5B,kEAA+D;AAC/D,8DAA2D;AAC3D,sEAAmE;AACnE,gEAA6D;AAC7D,2DAAwD;AACxD,2DAAwD;AACxD,mEAAgE;
|
|
1
|
+
{"version":3,"file":"NestiaSdkApplication.js","sourceRoot":"","sources":["../src/NestiaSdkApplication.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
|
-
import { INestiaConfig } from "../INestiaConfig";
|
|
3
2
|
import { IController } from "../structures/IController";
|
|
3
|
+
import { INestiaProject } from "../structures/INestiaProject";
|
|
4
4
|
import { IRoute } from "../structures/IRoute";
|
|
5
5
|
export declare namespace ControllerAnalyzer {
|
|
6
|
-
|
|
6
|
+
const analyze: (project: INestiaProject) => (sourceFile: ts.SourceFile, controller: IController) => Promise<IRoute[]>;
|
|
7
7
|
}
|
|
@@ -18,7 +18,6 @@ const HashMap_1 = require("tstl/container/HashMap");
|
|
|
18
18
|
const typescript_1 = __importDefault(require("typescript"));
|
|
19
19
|
const CommentFactory_1 = require("typia/lib/factories/CommentFactory");
|
|
20
20
|
const PathUtil_1 = require("../utils/PathUtil");
|
|
21
|
-
const ConfigAnalyzer_1 = require("./ConfigAnalyzer");
|
|
22
21
|
const ExceptionAnalyzer_1 = require("./ExceptionAnalyzer");
|
|
23
22
|
const GenericAnalyzer_1 = require("./GenericAnalyzer");
|
|
24
23
|
const ImportAnalyzer_1 = require("./ImportAnalyzer");
|
|
@@ -26,30 +25,26 @@ const PathAnalyzer_1 = require("./PathAnalyzer");
|
|
|
26
25
|
const SecurityAnalyzer_1 = require("./SecurityAnalyzer");
|
|
27
26
|
var ControllerAnalyzer;
|
|
28
27
|
(function (ControllerAnalyzer) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
typescript_1.default.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
return ret;
|
|
28
|
+
ControllerAnalyzer.analyze = (project) => (sourceFile, controller) => __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
// FIND CONTROLLER CLASS
|
|
30
|
+
const ret = [];
|
|
31
|
+
typescript_1.default.forEachChild(sourceFile, (node) => {
|
|
32
|
+
var _a;
|
|
33
|
+
if (typescript_1.default.isClassDeclaration(node) &&
|
|
34
|
+
((_a = node.name) === null || _a === void 0 ? void 0 : _a.escapedText) === controller.name) {
|
|
35
|
+
// ANALYZE THE CONTROLLER
|
|
36
|
+
ret.push(..._Analyze_controller(project)(controller, node));
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
44
39
|
});
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
return ret;
|
|
41
|
+
});
|
|
47
42
|
/* ---------------------------------------------------------
|
|
48
43
|
CLASS
|
|
49
44
|
--------------------------------------------------------- */
|
|
50
|
-
|
|
51
|
-
const classType = checker.getTypeAtLocation(classNode);
|
|
52
|
-
const genericDict = GenericAnalyzer_1.GenericAnalyzer.analyze(checker, classNode);
|
|
45
|
+
const _Analyze_controller = (project) => (controller, classNode) => {
|
|
46
|
+
const classType = project.checker.getTypeAtLocation(classNode);
|
|
47
|
+
const genericDict = GenericAnalyzer_1.GenericAnalyzer.analyze(project.checker, classNode);
|
|
53
48
|
const ret = [];
|
|
54
49
|
for (const property of classType.getProperties()) {
|
|
55
50
|
// GET METHOD DECLARATION
|
|
@@ -64,32 +59,53 @@ var ControllerAnalyzer;
|
|
|
64
59
|
const runtime = controller.functions.find((f) => f.name === identifier.escapedText);
|
|
65
60
|
if (runtime === undefined)
|
|
66
61
|
continue;
|
|
67
|
-
const routes = _Analyze_function(
|
|
62
|
+
const routes = _Analyze_function(project)(controller, genericDict, runtime, declaration, property);
|
|
68
63
|
ret.push(...routes);
|
|
69
64
|
}
|
|
70
65
|
return ret;
|
|
71
|
-
}
|
|
66
|
+
};
|
|
72
67
|
/* ---------------------------------------------------------
|
|
73
68
|
FUNCTION
|
|
74
69
|
--------------------------------------------------------- */
|
|
75
|
-
|
|
70
|
+
const _Analyze_function = (project) => (controller, genericDict, func, declaration, symbol) => {
|
|
76
71
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
77
72
|
// PREPARE ASSETS
|
|
78
|
-
const type = checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration);
|
|
79
|
-
const signature = checker.getSignaturesOfType(type, typescript_1.default.SignatureKind.Call)[0];
|
|
80
|
-
if (signature === undefined)
|
|
81
|
-
|
|
73
|
+
const type = project.checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration);
|
|
74
|
+
const signature = project.checker.getSignaturesOfType(type, typescript_1.default.SignatureKind.Call)[0];
|
|
75
|
+
if (signature === undefined) {
|
|
76
|
+
project.errors.push({
|
|
77
|
+
file: controller.file,
|
|
78
|
+
controller: controller.name,
|
|
79
|
+
function: func.name,
|
|
80
|
+
message: "unable to get the type signature.",
|
|
81
|
+
});
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
82
84
|
// EXPLORE CHILDREN TYPES
|
|
83
85
|
const importDict = new HashMap_1.HashMap();
|
|
84
|
-
const parameters = func.parameters.map((param) => _Analyze_parameter(
|
|
85
|
-
const outputType = ImportAnalyzer_1.ImportAnalyzer.analyze(checker, genericDict, importDict, signature.getReturnType());
|
|
86
|
-
if (outputType === null)
|
|
87
|
-
|
|
86
|
+
const parameters = func.parameters.map((param) => _Analyze_parameter(project)(genericDict, importDict, controller, func.name, param, signature.getParameters()[param.index]));
|
|
87
|
+
const outputType = ImportAnalyzer_1.ImportAnalyzer.analyze(project.checker, genericDict, importDict, signature.getReturnType());
|
|
88
|
+
if (outputType === null || outputType.typeName === "__type") {
|
|
89
|
+
project.errors.push({
|
|
90
|
+
file: controller.file,
|
|
91
|
+
controller: controller.name,
|
|
92
|
+
function: func.name,
|
|
93
|
+
message: "implicit (unnamed) return type.",
|
|
94
|
+
});
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
88
97
|
else if (func.method === "HEAD" &&
|
|
89
98
|
outputType.typeName !== "void" &&
|
|
90
|
-
outputType.typeName !== "undefined")
|
|
91
|
-
|
|
92
|
-
|
|
99
|
+
outputType.typeName !== "undefined") {
|
|
100
|
+
project.errors.push({
|
|
101
|
+
file: controller.file,
|
|
102
|
+
controller: controller.name,
|
|
103
|
+
function: func.name,
|
|
104
|
+
message: `HEAD method must return void type.`,
|
|
105
|
+
});
|
|
106
|
+
return [];
|
|
107
|
+
}
|
|
108
|
+
const exceptions = ExceptionAnalyzer_1.ExceptionAnalyzer.analyze(project)(genericDict, project.config.propagate === true ? importDict : new HashMap_1.HashMap())(controller, func)(declaration);
|
|
93
109
|
const imports = importDict
|
|
94
110
|
.toJSON()
|
|
95
111
|
.map((pair) => [pair.first, pair.second.toJSON()]);
|
|
@@ -113,7 +129,7 @@ var ControllerAnalyzer;
|
|
|
113
129
|
})
|
|
114
130
|
.flat());
|
|
115
131
|
// CONSTRUCT COMMON DATA
|
|
116
|
-
const common = Object.assign(Object.assign({}, func), { parameters, output: {
|
|
132
|
+
const common = Object.assign(Object.assign({}, func), { parameters: parameters.filter((p) => p !== null), output: {
|
|
117
133
|
type: outputType.type,
|
|
118
134
|
typeName: outputType.typeName,
|
|
119
135
|
contentType: func.contentType,
|
|
@@ -130,7 +146,8 @@ var ControllerAnalyzer;
|
|
|
130
146
|
var _a;
|
|
131
147
|
return ((_a = t.text) === null || _a === void 0 ? void 0 : _a.length) &&
|
|
132
148
|
t.text[0].text &&
|
|
133
|
-
(t.name === "setHeader" ||
|
|
149
|
+
(t.name === "setHeader" ||
|
|
150
|
+
t.name === "assignHeaders");
|
|
134
151
|
})
|
|
135
152
|
.map((t) => {
|
|
136
153
|
var _a;
|
|
@@ -148,24 +165,25 @@ var ControllerAnalyzer;
|
|
|
148
165
|
exceptions });
|
|
149
166
|
// CONFIGURE PATHS
|
|
150
167
|
const pathList = new Set();
|
|
151
|
-
const versions = _Analyze_versions(input.versioning === undefined
|
|
168
|
+
const versions = _Analyze_versions(project.input.versioning === undefined
|
|
152
169
|
? undefined
|
|
153
|
-
: (_j = (_d = (_c = func.versions) !== null && _c !== void 0 ? _c : controller.versions) !== null && _d !== void 0 ? _d : (((_e = input.versioning) === null || _e === void 0 ? void 0 : _e.defaultVersion) !==
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
170
|
+
: (_j = (_d = (_c = func.versions) !== null && _c !== void 0 ? _c : controller.versions) !== null && _d !== void 0 ? _d : (((_e = project.input.versioning) === null || _e === void 0 ? void 0 : _e.defaultVersion) !==
|
|
171
|
+
undefined
|
|
172
|
+
? Array.isArray((_f = project.input.versioning) === null || _f === void 0 ? void 0 : _f.defaultVersion)
|
|
173
|
+
? (_g = project.input.versioning) === null || _g === void 0 ? void 0 : _g.defaultVersion
|
|
174
|
+
: [(_h = project.input.versioning) === null || _h === void 0 ? void 0 : _h.defaultVersion]
|
|
157
175
|
: undefined)) !== null && _j !== void 0 ? _j : undefined);
|
|
158
176
|
for (const prefix of controller.prefixes)
|
|
159
177
|
for (const cPath of controller.paths)
|
|
160
178
|
for (const filePath of func.paths)
|
|
161
179
|
pathList.add(PathAnalyzer_1.PathAnalyzer.join(prefix, cPath, filePath));
|
|
162
180
|
return [...pathList]
|
|
163
|
-
.map((individual) => PathAnalyzer_1.PathAnalyzer.combinate(input.globalPrefix)([...versions].map((v) => {
|
|
181
|
+
.map((individual) => PathAnalyzer_1.PathAnalyzer.combinate(project.input.globalPrefix)([...versions].map((v) => {
|
|
164
182
|
var _a, _b;
|
|
165
183
|
return v === null
|
|
166
184
|
? null
|
|
167
|
-
: ((_b = (_a = input.versioning) === null || _a === void 0 ? void 0 : _a.prefix) === null || _b === void 0 ? void 0 : _b.length)
|
|
168
|
-
? `${input.versioning.prefix}${v}`
|
|
185
|
+
: ((_b = (_a = project.input.versioning) === null || _a === void 0 ? void 0 : _a.prefix) === null || _b === void 0 ? void 0 : _b.length)
|
|
186
|
+
? `${project.input.versioning.prefix}${v}`
|
|
169
187
|
: v;
|
|
170
188
|
}))({
|
|
171
189
|
method: func.method,
|
|
@@ -173,35 +191,59 @@ var ControllerAnalyzer;
|
|
|
173
191
|
}))
|
|
174
192
|
.flat()
|
|
175
193
|
.map((path) => (Object.assign(Object.assign({}, common), { path: PathAnalyzer_1.PathAnalyzer.escape(path, () => "ControllerAnalyzer.analyze()"), accessors: [...PathUtil_1.PathUtil.accessors(path), func.name] })));
|
|
176
|
-
}
|
|
177
|
-
|
|
194
|
+
};
|
|
195
|
+
const _Analyze_parameter = (project) => (genericDict, importDict, controller, funcName, param, symbol) => {
|
|
178
196
|
var _a;
|
|
179
|
-
const type = checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration);
|
|
197
|
+
const type = project.checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration);
|
|
180
198
|
const name = symbol.getEscapedName().toString();
|
|
181
|
-
const
|
|
182
|
-
const
|
|
199
|
+
const optional = !!((_a = project.checker.symbolToParameterDeclaration(symbol, undefined, undefined)) === null || _a === void 0 ? void 0 : _a.questionToken);
|
|
200
|
+
const errors = [];
|
|
183
201
|
// DO NOT SUPPORT BODY PARAMETER
|
|
184
202
|
if (param.category === "body" && param.field !== undefined)
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
203
|
+
errors.push({
|
|
204
|
+
file: controller.file,
|
|
205
|
+
controller: controller.name,
|
|
206
|
+
function: funcName,
|
|
207
|
+
message: `nestia does not support body field specification. ` +
|
|
208
|
+
`Therefore, erase the "${name}" parameter and ` +
|
|
209
|
+
`re-define a new body decorator accepting full structured message.`,
|
|
210
|
+
});
|
|
211
|
+
if (optional === true && param.category !== "query")
|
|
212
|
+
errors.push({
|
|
213
|
+
file: controller.file,
|
|
214
|
+
controller: controller.name,
|
|
215
|
+
function: funcName,
|
|
216
|
+
message: `nestia does not support optional parameter except query parameter. ` +
|
|
217
|
+
`Therefore, erase question mark on the "${name}" parameter, ` +
|
|
218
|
+
`or re-define a new method without the "${name}" parameter.`,
|
|
219
|
+
});
|
|
220
|
+
if (optional === true &&
|
|
193
221
|
param.category === "query" &&
|
|
194
222
|
param.field === undefined)
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
223
|
+
errors.push({
|
|
224
|
+
file: controller.file,
|
|
225
|
+
controller: controller.name,
|
|
226
|
+
function: funcName,
|
|
227
|
+
message: `nestia does not support optional query parameter without field specification. ` +
|
|
228
|
+
`Therefore, erase question mark on the "${name}" parameter, ` +
|
|
229
|
+
`or re-define re-define parameters for each query parameters.`,
|
|
230
|
+
});
|
|
198
231
|
// GET TYPE NAME
|
|
199
|
-
const tuple = ImportAnalyzer_1.ImportAnalyzer.analyze(checker, genericDict, importDict, type);
|
|
200
|
-
if (tuple === null)
|
|
201
|
-
|
|
232
|
+
const tuple = ImportAnalyzer_1.ImportAnalyzer.analyze(project.checker, genericDict, importDict, type);
|
|
233
|
+
if (tuple === null || tuple.typeName === "__type")
|
|
234
|
+
errors.push({
|
|
235
|
+
file: controller.file,
|
|
236
|
+
controller: controller.name,
|
|
237
|
+
function: funcName,
|
|
238
|
+
message: `implicit (unnamed) parameter type from "${name}".`,
|
|
239
|
+
});
|
|
240
|
+
if (errors.length) {
|
|
241
|
+
project.errors.push(...errors);
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
202
244
|
return Object.assign(Object.assign({}, param), { name,
|
|
203
245
|
optional, type: tuple.type, typeName: tuple.typeName });
|
|
204
|
-
}
|
|
246
|
+
};
|
|
205
247
|
function _Analyze_versions(value) {
|
|
206
248
|
if (value === undefined)
|
|
207
249
|
return [null];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControllerAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ControllerAnalyzer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,gDAAwB;AACxB,oDAAiD;AACjD,4DAA4B;AAE5B,uEAAoE;AAOpE,gDAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"ControllerAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ControllerAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import ts from "typescript";
|
|
2
2
|
import { IController } from "../structures/IController";
|
|
3
|
+
import { INestiaProject } from "../structures/INestiaProject";
|
|
3
4
|
import { IRoute } from "../structures/IRoute";
|
|
4
5
|
import { GenericAnalyzer } from "./GenericAnalyzer";
|
|
5
6
|
import { ImportAnalyzer } from "./ImportAnalyzer";
|
|
6
7
|
export declare namespace ExceptionAnalyzer {
|
|
7
|
-
const analyze: (
|
|
8
|
+
const analyze: (project: INestiaProject) => (genericDict: GenericAnalyzer.Dictionary, importDict: ImportAnalyzer.Dictionary) => (controller: IController, func: IController.IFunction) => (declaration: ts.MethodDeclaration) => Record<number | "2XX" | "3XX" | "4XX" | "5XX", IRoute.IOutput>;
|
|
8
9
|
}
|
|
@@ -9,15 +9,15 @@ const typescript_1 = __importDefault(require("typescript"));
|
|
|
9
9
|
const ImportAnalyzer_1 = require("./ImportAnalyzer");
|
|
10
10
|
var ExceptionAnalyzer;
|
|
11
11
|
(function (ExceptionAnalyzer) {
|
|
12
|
-
ExceptionAnalyzer.analyze = (
|
|
12
|
+
ExceptionAnalyzer.analyze = (project) => (genericDict, importDict) => (controller, func) => (declaration) => {
|
|
13
13
|
var _a;
|
|
14
14
|
const output = {};
|
|
15
15
|
for (const decorator of (_a = declaration.modifiers) !== null && _a !== void 0 ? _a : [])
|
|
16
16
|
if (typescript_1.default.isDecorator(decorator))
|
|
17
|
-
analyzeTyped(
|
|
17
|
+
analyzeTyped(project)(genericDict, importDict)(controller, func)(output)(decorator);
|
|
18
18
|
return output;
|
|
19
19
|
};
|
|
20
|
-
const analyzeTyped = (
|
|
20
|
+
const analyzeTyped = (project) => (genericDict, importDict) => (controller, func) => (output) => (decorator) => {
|
|
21
21
|
var _a;
|
|
22
22
|
// CHECK DECORATOR
|
|
23
23
|
if (!typescript_1.default.isCallExpression(decorator.expression))
|
|
@@ -25,7 +25,7 @@ var ExceptionAnalyzer;
|
|
|
25
25
|
else if (((_a = decorator.expression.typeArguments) !== null && _a !== void 0 ? _a : []).length !== 1)
|
|
26
26
|
return false;
|
|
27
27
|
// CHECK SIGNATURE
|
|
28
|
-
const signature = checker.getResolvedSignature(decorator.expression);
|
|
28
|
+
const signature = project.checker.getResolvedSignature(decorator.expression);
|
|
29
29
|
if (!signature || !signature.declaration)
|
|
30
30
|
return false;
|
|
31
31
|
else if (path_1.default
|
|
@@ -34,12 +34,26 @@ var ExceptionAnalyzer;
|
|
|
34
34
|
return false;
|
|
35
35
|
// GET TYPE INFO
|
|
36
36
|
const node = decorator.expression.typeArguments[0];
|
|
37
|
-
const type = checker.getTypeFromTypeNode(node);
|
|
38
|
-
if (type.isTypeParameter())
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
const type = project.checker.getTypeFromTypeNode(node);
|
|
38
|
+
if (type.isTypeParameter()) {
|
|
39
|
+
project.errors.push({
|
|
40
|
+
file: controller.file,
|
|
41
|
+
controller: controller.name,
|
|
42
|
+
function: func.name,
|
|
43
|
+
message: "TypedException() without generic argument specification.",
|
|
44
|
+
});
|
|
42
45
|
return false;
|
|
46
|
+
}
|
|
47
|
+
const tuple = ImportAnalyzer_1.ImportAnalyzer.analyze(project.checker, genericDict, importDict, type);
|
|
48
|
+
if (tuple === null || tuple.typeName === "__type") {
|
|
49
|
+
project.errors.push({
|
|
50
|
+
file: controller.file,
|
|
51
|
+
controller: controller.name,
|
|
52
|
+
function: func.name,
|
|
53
|
+
message: "TypeException() with implicit (unnamed) type.",
|
|
54
|
+
});
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
43
57
|
// DO ASSIGN
|
|
44
58
|
const matched = Object.entries(func.exceptions)
|
|
45
59
|
.filter(([_key, value]) => value.type === tuple.typeName)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExceptionAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ExceptionAnalyzer.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,4DAA4B;
|
|
1
|
+
{"version":3,"file":"ExceptionAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ExceptionAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import { IController } from "../structures/IController";
|
|
3
|
+
import { INestiaProject } from "../structures/INestiaProject";
|
|
3
4
|
export declare namespace ReflectAnalyzer {
|
|
4
|
-
|
|
5
|
+
const analyze: (project: INestiaProject) => (unique: WeakSet<any>, file: string, prefixes: string[], target?: Function) => Promise<IController[]>;
|
|
5
6
|
}
|