@tsoa-next/cli 7.1.0 → 7.3.1
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/README.MD +8 -2
- package/dist/cli.d.ts +4 -1
- package/dist/cli.js +91 -21
- package/dist/cli.js.map +1 -1
- package/dist/metadataGeneration/controllerGenerator.js +7 -7
- package/dist/metadataGeneration/controllerGenerator.js.map +1 -1
- package/dist/metadataGeneration/exceptions.js +8 -2
- package/dist/metadataGeneration/exceptions.js.map +1 -1
- package/dist/metadataGeneration/extension.js +25 -1
- package/dist/metadataGeneration/extension.js.map +1 -1
- package/dist/metadataGeneration/initializer-value.d.ts +8 -2
- package/dist/metadataGeneration/initializer-value.js +18 -9
- package/dist/metadataGeneration/initializer-value.js.map +1 -1
- package/dist/metadataGeneration/metadataGenerator.js +3 -1
- package/dist/metadataGeneration/metadataGenerator.js.map +1 -1
- package/dist/metadataGeneration/methodGenerator.d.ts +2 -0
- package/dist/metadataGeneration/methodGenerator.js +60 -21
- package/dist/metadataGeneration/methodGenerator.js.map +1 -1
- package/dist/metadataGeneration/parameterGenerator.d.ts +3 -0
- package/dist/metadataGeneration/parameterGenerator.js +93 -26
- package/dist/metadataGeneration/parameterGenerator.js.map +1 -1
- package/dist/metadataGeneration/transformer/propertyTransformer.js +2 -1
- package/dist/metadataGeneration/transformer/propertyTransformer.js.map +1 -1
- package/dist/metadataGeneration/transformer/referenceTransformer.js +4 -2
- package/dist/metadataGeneration/transformer/referenceTransformer.js.map +1 -1
- package/dist/metadataGeneration/typeResolver.d.ts +10 -2
- package/dist/metadataGeneration/typeResolver.js +165 -37
- package/dist/metadataGeneration/typeResolver.js.map +1 -1
- package/dist/module/generate-routes.js +1 -1
- package/dist/module/generate-routes.js.map +1 -1
- package/dist/routeGeneration/defaultRouteGenerator.js.map +1 -1
- package/dist/routeGeneration/routeGenerator.js +3 -0
- package/dist/routeGeneration/routeGenerator.js.map +1 -1
- package/dist/routeGeneration/templates/express.hbs +17 -32
- package/dist/routeGeneration/templates/hapi.hbs +25 -22
- package/dist/routeGeneration/templates/koa.hbs +21 -21
- package/dist/swagger/specGenerator.d.ts +7 -0
- package/dist/swagger/specGenerator.js +81 -3
- package/dist/swagger/specGenerator.js.map +1 -1
- package/dist/swagger/specGenerator2.d.ts +5 -1
- package/dist/swagger/specGenerator2.js +112 -65
- package/dist/swagger/specGenerator2.js.map +1 -1
- package/dist/swagger/specGenerator3.d.ts +8 -7
- package/dist/swagger/specGenerator3.js +82 -50
- package/dist/swagger/specGenerator3.js.map +1 -1
- package/dist/swagger/specGenerator31.d.ts +1 -0
- package/dist/swagger/specGenerator31.js +3 -0
- package/dist/swagger/specGenerator31.js.map +1 -1
- package/dist/utils/decoratorUtils.d.ts +9 -6
- package/dist/utils/decoratorUtils.js +163 -21
- package/dist/utils/decoratorUtils.js.map +1 -1
- package/dist/utils/jsDocUtils.js +6 -3
- package/dist/utils/jsDocUtils.js.map +1 -1
- package/dist/utils/jsonUtils.d.ts +1 -1
- package/dist/utils/pathUtils.js +32 -5
- package/dist/utils/pathUtils.js.map +1 -1
- package/dist/utils/validateDecoratorUtils.d.ts +9 -0
- package/dist/utils/validateDecoratorUtils.js +225 -0
- package/dist/utils/validateDecoratorUtils.js.map +1 -0
- package/dist/utils/validatorUtils.js +15 -8
- package/dist/utils/validatorUtils.js.map +1 -1
- package/package.json +9 -8
|
@@ -41,35 +41,73 @@ exports.getSecurites = getSecurites;
|
|
|
41
41
|
exports.isDecorator = isDecorator;
|
|
42
42
|
exports.getPath = getPath;
|
|
43
43
|
exports.getProduces = getProduces;
|
|
44
|
+
exports.getCanonicalDecoratorName = getCanonicalDecoratorName;
|
|
44
45
|
const ts = __importStar(require("typescript"));
|
|
45
46
|
const initializer_value_1 = require("../metadataGeneration/initializer-value");
|
|
47
|
+
const TSOA_DECORATOR_MODULES = ['@tsoa-next/runtime', 'tsoa-next'];
|
|
48
|
+
const TSOA_DECORATOR_NAMES = new Set([
|
|
49
|
+
'Body',
|
|
50
|
+
'BodyProp',
|
|
51
|
+
'Consumes',
|
|
52
|
+
'Delete',
|
|
53
|
+
'Deprecated',
|
|
54
|
+
'Example',
|
|
55
|
+
'Extension',
|
|
56
|
+
'FormField',
|
|
57
|
+
'Get',
|
|
58
|
+
'Head',
|
|
59
|
+
'Header',
|
|
60
|
+
'Hidden',
|
|
61
|
+
'Inject',
|
|
62
|
+
'Middlewares',
|
|
63
|
+
'NoSecurity',
|
|
64
|
+
'OperationId',
|
|
65
|
+
'Options',
|
|
66
|
+
'Patch',
|
|
67
|
+
'Path',
|
|
68
|
+
'Post',
|
|
69
|
+
'Produces',
|
|
70
|
+
'Put',
|
|
71
|
+
'Queries',
|
|
72
|
+
'Query',
|
|
73
|
+
'Request',
|
|
74
|
+
'RequestProp',
|
|
75
|
+
'Res',
|
|
76
|
+
'Response',
|
|
77
|
+
'Route',
|
|
78
|
+
'Security',
|
|
79
|
+
'SuccessResponse',
|
|
80
|
+
'Tags',
|
|
81
|
+
'UploadedFile',
|
|
82
|
+
'UploadedFiles',
|
|
83
|
+
'Validate',
|
|
84
|
+
]);
|
|
46
85
|
function tsHasDecorators(tsNamespace) {
|
|
47
86
|
return typeof tsNamespace.canHaveDecorators === 'function';
|
|
48
87
|
}
|
|
49
|
-
function getDecorators(node, isMatching) {
|
|
88
|
+
function getDecorators(node, isMatching, typeChecker) {
|
|
50
89
|
// beginning in ts4.8 node.decorator is undefined, use getDecorators instead.
|
|
51
90
|
const decorators = tsHasDecorators(ts) && ts.canHaveDecorators(node) ? ts.getDecorators(node) : [];
|
|
52
91
|
if (!decorators || !decorators.length) {
|
|
53
92
|
return [];
|
|
54
93
|
}
|
|
55
94
|
return decorators
|
|
56
|
-
.map(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return
|
|
61
|
-
})
|
|
62
|
-
.filter(isMatching);
|
|
95
|
+
.map(decorator => getDecoratorIdentifier(decorator))
|
|
96
|
+
.filter((identifier) => !!identifier)
|
|
97
|
+
.filter(identifier => {
|
|
98
|
+
const canonicalName = typeChecker ? getCanonicalDecoratorName(identifier, typeChecker) : undefined;
|
|
99
|
+
return isMatching(identifier, canonicalName);
|
|
100
|
+
});
|
|
63
101
|
}
|
|
64
|
-
function getNodeFirstDecoratorName(node, isMatching) {
|
|
65
|
-
const decorators = getDecorators(node, isMatching);
|
|
102
|
+
function getNodeFirstDecoratorName(node, isMatching, typeChecker) {
|
|
103
|
+
const decorators = getDecorators(node, isMatching, typeChecker);
|
|
66
104
|
if (!decorators || !decorators.length) {
|
|
67
105
|
return;
|
|
68
106
|
}
|
|
69
|
-
return decorators[0].text;
|
|
107
|
+
return typeChecker ? getCanonicalDecoratorName(decorators[0], typeChecker) : decorators[0].text;
|
|
70
108
|
}
|
|
71
109
|
function getNodeFirstDecoratorValue(node, typeChecker, isMatching) {
|
|
72
|
-
const decorators = getDecorators(node, isMatching);
|
|
110
|
+
const decorators = getDecorators(node, isMatching, typeChecker);
|
|
73
111
|
if (!decorators || !decorators.length) {
|
|
74
112
|
return;
|
|
75
113
|
}
|
|
@@ -77,8 +115,10 @@ function getNodeFirstDecoratorValue(node, typeChecker, isMatching) {
|
|
|
77
115
|
return values && values[0];
|
|
78
116
|
}
|
|
79
117
|
function getDecoratorValues(decorator, typeChecker) {
|
|
80
|
-
|
|
81
|
-
|
|
118
|
+
if (!ts.isCallExpression(decorator.parent)) {
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
const expArguments = decorator.parent.arguments;
|
|
82
122
|
if (!expArguments || !expArguments.length) {
|
|
83
123
|
return [];
|
|
84
124
|
}
|
|
@@ -87,12 +127,14 @@ function getDecoratorValues(decorator, typeChecker) {
|
|
|
87
127
|
function getSecurites(decorator, typeChecker) {
|
|
88
128
|
const [first, second] = getDecoratorValues(decorator, typeChecker);
|
|
89
129
|
if (isObject(first)) {
|
|
90
|
-
return first;
|
|
130
|
+
return toSecurity(first);
|
|
91
131
|
}
|
|
92
|
-
|
|
132
|
+
const securityName = typeof first === 'string' ? first : '';
|
|
133
|
+
const scopes = Array.isArray(second) ? second.filter((scope) => typeof scope === 'string') : [];
|
|
134
|
+
return { [securityName]: scopes };
|
|
93
135
|
}
|
|
94
|
-
function isDecorator(node, isMatching) {
|
|
95
|
-
const decorators = getDecorators(node, isMatching);
|
|
136
|
+
function isDecorator(node, isMatching, typeChecker) {
|
|
137
|
+
const decorators = getDecorators(node, isMatching, typeChecker);
|
|
96
138
|
if (!decorators || !decorators.length) {
|
|
97
139
|
return false;
|
|
98
140
|
}
|
|
@@ -103,16 +145,116 @@ function isObject(v) {
|
|
|
103
145
|
}
|
|
104
146
|
function getPath(decorator, typeChecker) {
|
|
105
147
|
const [path] = getDecoratorValues(decorator, typeChecker);
|
|
106
|
-
if (path
|
|
148
|
+
if (typeof path !== 'string') {
|
|
107
149
|
return '';
|
|
108
150
|
}
|
|
109
151
|
return path;
|
|
110
152
|
}
|
|
111
153
|
function getProduces(node, typeChecker) {
|
|
112
|
-
const producesDecorators = getDecorators(node,
|
|
154
|
+
const producesDecorators = getDecorators(node, (_identifier, canonicalName) => canonicalName === 'Produces', typeChecker);
|
|
113
155
|
if (!producesDecorators || !producesDecorators.length) {
|
|
114
156
|
return [];
|
|
115
157
|
}
|
|
116
|
-
return producesDecorators
|
|
158
|
+
return producesDecorators
|
|
159
|
+
.map(decorator => getDecoratorValues(decorator, typeChecker)[0])
|
|
160
|
+
.filter((value) => typeof value === 'string');
|
|
161
|
+
}
|
|
162
|
+
function toSecurity(value) {
|
|
163
|
+
return Object.fromEntries(Object.entries(value).map(([key, scopes]) => [key, Array.isArray(scopes) ? scopes.filter((scope) => typeof scope === 'string') : []]));
|
|
164
|
+
}
|
|
165
|
+
function getDecoratorIdentifier(decorator) {
|
|
166
|
+
let expression = decorator.expression;
|
|
167
|
+
while (ts.isCallExpression(expression) || ts.isPropertyAccessExpression(expression) || ts.isElementAccessExpression(expression) || ts.isParenthesizedExpression(expression)) {
|
|
168
|
+
expression = expression.expression;
|
|
169
|
+
}
|
|
170
|
+
return ts.isIdentifier(expression) ? expression : undefined;
|
|
171
|
+
}
|
|
172
|
+
function getCanonicalDecoratorName(identifier, typeChecker) {
|
|
173
|
+
const symbol = typeChecker.getSymbolAtLocation(identifier);
|
|
174
|
+
if (!symbol) {
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
const resolvedSymbol = resolveAliasedSymbol(symbol, typeChecker);
|
|
178
|
+
const symbolIsRuntimeDecorator = isRuntimeDecoratorSymbol(symbol) || isRuntimeDecoratorSymbol(resolvedSymbol);
|
|
179
|
+
if (!symbolIsRuntimeDecorator) {
|
|
180
|
+
return getImportedDecoratorName(symbol);
|
|
181
|
+
}
|
|
182
|
+
const candidateName = resolvedSymbol.getName();
|
|
183
|
+
if (TSOA_DECORATOR_NAMES.has(candidateName)) {
|
|
184
|
+
return candidateName;
|
|
185
|
+
}
|
|
186
|
+
return getImportedDecoratorName(symbol);
|
|
187
|
+
}
|
|
188
|
+
function resolveAliasedSymbol(symbol, typeChecker) {
|
|
189
|
+
const visited = new Set();
|
|
190
|
+
let current = symbol;
|
|
191
|
+
while ((current.flags & ts.SymbolFlags.Alias) !== 0 && !visited.has(current)) {
|
|
192
|
+
visited.add(current);
|
|
193
|
+
const aliased = typeChecker.getAliasedSymbol(current);
|
|
194
|
+
if (!aliased || aliased === current) {
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
current = aliased;
|
|
198
|
+
}
|
|
199
|
+
return current;
|
|
200
|
+
}
|
|
201
|
+
function isRuntimeDecoratorSymbol(symbol) {
|
|
202
|
+
const declarations = symbol.declarations || (symbol.valueDeclaration ? [symbol.valueDeclaration] : []);
|
|
203
|
+
return declarations.some(declaration => {
|
|
204
|
+
const moduleSpecifier = getModuleSpecifierText(declaration);
|
|
205
|
+
if (moduleSpecifier && isTsoaDecoratorModuleSpecifier(moduleSpecifier)) {
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
const sourceFileName = declaration.getSourceFile().fileName.replace(/\\/g, '/').toLowerCase();
|
|
209
|
+
return (sourceFileName.includes('/packages/runtime/src/decorators/') ||
|
|
210
|
+
sourceFileName.includes('/packages/runtime/dist/decorators/') ||
|
|
211
|
+
sourceFileName.includes('/packages/tsoa/src/') ||
|
|
212
|
+
sourceFileName.includes('/node_modules/@tsoa-next/runtime/') ||
|
|
213
|
+
sourceFileName.includes('/node_modules/tsoa-next/'));
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
function isTsoaDecoratorModuleSpecifier(moduleSpecifier) {
|
|
217
|
+
return TSOA_DECORATOR_MODULES.some(prefix => moduleSpecifier === prefix || moduleSpecifier.startsWith(`${prefix}/`));
|
|
218
|
+
}
|
|
219
|
+
function getModuleSpecifierText(declaration) {
|
|
220
|
+
if (ts.isImportSpecifier(declaration)) {
|
|
221
|
+
const importDeclaration = declaration.parent.parent.parent;
|
|
222
|
+
if (ts.isImportDeclaration(importDeclaration) && ts.isStringLiteral(importDeclaration.moduleSpecifier)) {
|
|
223
|
+
return importDeclaration.moduleSpecifier.text;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (ts.isExportSpecifier(declaration)) {
|
|
227
|
+
const exportDeclaration = declaration.parent.parent;
|
|
228
|
+
if (ts.isExportDeclaration(exportDeclaration) && exportDeclaration.moduleSpecifier && ts.isStringLiteral(exportDeclaration.moduleSpecifier)) {
|
|
229
|
+
return exportDeclaration.moduleSpecifier.text;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
function getImportedDecoratorName(symbol) {
|
|
235
|
+
const declarations = symbol.declarations || (symbol.valueDeclaration ? [symbol.valueDeclaration] : []);
|
|
236
|
+
for (const declaration of declarations) {
|
|
237
|
+
if (ts.isImportSpecifier(declaration)) {
|
|
238
|
+
const moduleSpecifier = getModuleSpecifierText(declaration);
|
|
239
|
+
if (!moduleSpecifier || !isTsoaDecoratorModuleSpecifier(moduleSpecifier)) {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
const importedName = declaration.propertyName?.text ?? declaration.name.text;
|
|
243
|
+
if (TSOA_DECORATOR_NAMES.has(importedName)) {
|
|
244
|
+
return importedName;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
if (ts.isExportSpecifier(declaration)) {
|
|
248
|
+
const moduleSpecifier = getModuleSpecifierText(declaration);
|
|
249
|
+
if (!moduleSpecifier || !isTsoaDecoratorModuleSpecifier(moduleSpecifier)) {
|
|
250
|
+
continue;
|
|
251
|
+
}
|
|
252
|
+
const exportedName = declaration.propertyName?.text ?? declaration.name.text;
|
|
253
|
+
if (TSOA_DECORATOR_NAMES.has(exportedName)) {
|
|
254
|
+
return exportedName;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return undefined;
|
|
117
259
|
}
|
|
118
260
|
//# sourceMappingURL=decoratorUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoratorUtils.js","sourceRoot":"","sources":["../../src/utils/decoratorUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"decoratorUtils.js","sourceRoot":"","sources":["../../src/utils/decoratorUtils.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/jsDocUtils.js
CHANGED
|
@@ -42,8 +42,11 @@ exports.isExistJSDocTag = isExistJSDocTag;
|
|
|
42
42
|
exports.commentToString = commentToString;
|
|
43
43
|
const ts = __importStar(require("typescript"));
|
|
44
44
|
const exceptions_1 = require("../metadataGeneration/exceptions");
|
|
45
|
+
function getJsDocs(node) {
|
|
46
|
+
return node.jsDoc ?? [];
|
|
47
|
+
}
|
|
45
48
|
function getJSDocDescription(node) {
|
|
46
|
-
const jsDocs = node
|
|
49
|
+
const jsDocs = getJsDocs(node);
|
|
47
50
|
if (!jsDocs || !jsDocs.length) {
|
|
48
51
|
return undefined;
|
|
49
52
|
}
|
|
@@ -71,7 +74,7 @@ function getJSDocComments(node, tagName) {
|
|
|
71
74
|
}
|
|
72
75
|
function getJSDocTagNames(node, requireTagName = false) {
|
|
73
76
|
let tags;
|
|
74
|
-
if (node
|
|
77
|
+
if (ts.isParameter(node) && ts.isIdentifier(node.name)) {
|
|
75
78
|
const parameterName = node.name.text;
|
|
76
79
|
tags = getJSDocTags(node.parent, tag => {
|
|
77
80
|
if (ts.isJSDocParameterTag(tag)) {
|
|
@@ -93,7 +96,7 @@ function getJSDocTagNames(node, requireTagName = false) {
|
|
|
93
96
|
});
|
|
94
97
|
}
|
|
95
98
|
function getJSDocTags(node, isMatching) {
|
|
96
|
-
const jsDocs = node
|
|
99
|
+
const jsDocs = getJsDocs(node);
|
|
97
100
|
if (!jsDocs || jsDocs.length === 0) {
|
|
98
101
|
return [];
|
|
99
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsDocUtils.js","sourceRoot":"","sources":["../../src/utils/jsDocUtils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"jsDocUtils.js","sourceRoot":"","sources":["../../src/utils/jsDocUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function safeFromJson(json: string):
|
|
1
|
+
export declare function safeFromJson(json: string): unknown;
|
package/dist/utils/pathUtils.js
CHANGED
|
@@ -16,13 +16,10 @@ function normalisePath(path, withPrefix, withSuffix, skipPrefixAndSuffixIfEmpty
|
|
|
16
16
|
if (!path || typeof path !== 'string') {
|
|
17
17
|
path = '' + path;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
let normalised = path.replace(/^[/\\\s]+|[/\\\s]+$/g, '');
|
|
19
|
+
let normalised = trimPathDelimiters(path);
|
|
21
20
|
normalised = withPrefix ? withPrefix + normalised : normalised;
|
|
22
21
|
normalised = withSuffix ? normalised + withSuffix : normalised;
|
|
23
|
-
|
|
24
|
-
normalised = normalised.replace(/[/\\\s]+/g, '/');
|
|
25
|
-
return normalised;
|
|
22
|
+
return collapsePathDelimiters(normalised);
|
|
26
23
|
}
|
|
27
24
|
function convertColonPathParams(path) {
|
|
28
25
|
if (!path || typeof path !== 'string') {
|
|
@@ -34,4 +31,34 @@ function convertColonPathParams(path) {
|
|
|
34
31
|
function convertBracesPathParams(path) {
|
|
35
32
|
return path.replace(/{(\w*)}/g, ':$1');
|
|
36
33
|
}
|
|
34
|
+
function trimPathDelimiters(path) {
|
|
35
|
+
let start = 0;
|
|
36
|
+
let end = path.length;
|
|
37
|
+
while (start < end && isPathDelimiter(path[start])) {
|
|
38
|
+
start++;
|
|
39
|
+
}
|
|
40
|
+
while (end > start && isPathDelimiter(path[end - 1])) {
|
|
41
|
+
end--;
|
|
42
|
+
}
|
|
43
|
+
return path.slice(start, end);
|
|
44
|
+
}
|
|
45
|
+
function collapsePathDelimiters(path) {
|
|
46
|
+
const normalisedChars = [];
|
|
47
|
+
let previousWasDelimiter = false;
|
|
48
|
+
for (const character of path) {
|
|
49
|
+
if (isPathDelimiter(character)) {
|
|
50
|
+
if (!previousWasDelimiter) {
|
|
51
|
+
normalisedChars.push('/');
|
|
52
|
+
previousWasDelimiter = true;
|
|
53
|
+
}
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
normalisedChars.push(character);
|
|
57
|
+
previousWasDelimiter = false;
|
|
58
|
+
}
|
|
59
|
+
return normalisedChars.join('');
|
|
60
|
+
}
|
|
61
|
+
function isPathDelimiter(character) {
|
|
62
|
+
return character === '/' || character === '\\' || character.trim() === '';
|
|
63
|
+
}
|
|
37
64
|
//# sourceMappingURL=pathUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathUtils.js","sourceRoot":"","sources":["../../src/utils/pathUtils.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"pathUtils.js","sourceRoot":"","sources":["../../src/utils/pathUtils.ts"],"names":[],"mappings":";;AAMA,sCAaC;AAED,wDAOC;AAED,0DAEC;AAhCD;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,UAAmB,EAAE,UAAmB,EAAE,0BAA0B,GAAG,IAAI;IACrH,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,0BAA0B,EAAE,CAAC;QAC1D,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,IAAI,GAAG,EAAE,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,IAAI,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACzC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;IAC9D,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAA;IAE9D,OAAO,sBAAsB,CAAC,UAAU,CAAC,CAAA;AAC3C,CAAC;AAED,SAAgB,sBAAsB,CAAC,IAAY;IACjD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IACpD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAgB,uBAAuB,CAAC,IAAY;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;IAErB,OAAO,KAAK,GAAG,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACnD,KAAK,EAAE,CAAA;IACT,CAAC;IAED,OAAO,GAAG,GAAG,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,EAAE,CAAA;IACP,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAC/B,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,MAAM,eAAe,GAAa,EAAE,CAAA;IACpC,IAAI,oBAAoB,GAAG,KAAK,CAAA;IAEhC,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC1B,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACzB,oBAAoB,GAAG,IAAI,CAAA;YAC7B,CAAC;YACD,SAAQ;QACV,CAAC;QAED,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/B,oBAAoB,GAAG,KAAK,CAAA;IAC9B,CAAC;IAED,OAAO,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACjC,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,OAAO,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAA;AAC3E,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as ts from 'typescript';
|
|
2
|
+
import { Tsoa } from '@tsoa-next/runtime';
|
|
3
|
+
type ValidateDecoratorParseResult = {
|
|
4
|
+
validationStrategy: Tsoa.ValidationStrategy;
|
|
5
|
+
externalValidator: Tsoa.ExternalValidatorDescriptor;
|
|
6
|
+
};
|
|
7
|
+
export declare function getParameterExternalValidator(parameter: ts.ParameterDeclaration, parameterIn: Tsoa.Parameter['in'], typeChecker: ts.TypeChecker): ValidateDecoratorParseResult | undefined;
|
|
8
|
+
export declare function assertValidateDecoratorTargets(program: ts.Program, typeChecker: ts.TypeChecker): void;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getParameterExternalValidator = getParameterExternalValidator;
|
|
37
|
+
exports.assertValidateDecoratorTargets = assertValidateDecoratorTargets;
|
|
38
|
+
const ts = __importStar(require("typescript"));
|
|
39
|
+
const decoratorUtils_1 = require("./decoratorUtils");
|
|
40
|
+
const exceptions_1 = require("../metadataGeneration/exceptions");
|
|
41
|
+
const SUPPORTED_VALIDATE_TARGETS = new Set(['body', 'body-prop', 'query', 'queries', 'path', 'header', 'formData']);
|
|
42
|
+
const VALIDATOR_MODULE_KIND_MAP = {
|
|
43
|
+
'io-ts': 'io-ts',
|
|
44
|
+
'io-ts-types': 'io-ts',
|
|
45
|
+
joi: 'joi',
|
|
46
|
+
superstruct: 'superstruct',
|
|
47
|
+
yup: 'yup',
|
|
48
|
+
zod: 'zod',
|
|
49
|
+
};
|
|
50
|
+
function isExternalValidatorKind(value) {
|
|
51
|
+
return value === 'zod' || value === 'joi' || value === 'yup' || value === 'superstruct' || value === 'io-ts';
|
|
52
|
+
}
|
|
53
|
+
function getValidateDecorator(parameter, typeChecker) {
|
|
54
|
+
const decorators = (0, decoratorUtils_1.getDecorators)(parameter, (_identifier, canonicalName) => canonicalName === 'Validate', typeChecker);
|
|
55
|
+
if (decorators.length > 1) {
|
|
56
|
+
throw new exceptions_1.GenerateMetadataError('Only one @Validate decorator is allowed per parameter.', parameter);
|
|
57
|
+
}
|
|
58
|
+
const decoratorIdentifier = decorators[0];
|
|
59
|
+
if (!decoratorIdentifier) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
let current = decoratorIdentifier;
|
|
63
|
+
while (current && !ts.isDecorator(current)) {
|
|
64
|
+
current = current.parent;
|
|
65
|
+
}
|
|
66
|
+
return current;
|
|
67
|
+
}
|
|
68
|
+
function getModuleKindFromImportDeclaration(declaration) {
|
|
69
|
+
let current = declaration.parent;
|
|
70
|
+
while (current && !ts.isImportDeclaration(current)) {
|
|
71
|
+
current = current.parent;
|
|
72
|
+
}
|
|
73
|
+
if (current && ts.isImportDeclaration(current) && ts.isStringLiteral(current.moduleSpecifier)) {
|
|
74
|
+
return VALIDATOR_MODULE_KIND_MAP[current.moduleSpecifier.text];
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
function getSymbolDeclarations(symbol) {
|
|
79
|
+
return symbol.declarations || (symbol.valueDeclaration ? [symbol.valueDeclaration] : []);
|
|
80
|
+
}
|
|
81
|
+
function inferValidatorKindFromDeclaration(declaration, typeChecker, visited) {
|
|
82
|
+
const fromImport = getModuleKindFromImportDeclaration(declaration);
|
|
83
|
+
if (fromImport) {
|
|
84
|
+
return fromImport;
|
|
85
|
+
}
|
|
86
|
+
if (ts.isVariableDeclaration(declaration) || ts.isPropertyAssignment(declaration) || ts.isBindingElement(declaration) || ts.isParameter(declaration)) {
|
|
87
|
+
if (declaration.initializer) {
|
|
88
|
+
return inferValidatorKindFromExpression(declaration.initializer, typeChecker, visited);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
function inferValidatorKindFromDeclarations(declarations, typeChecker, visited) {
|
|
94
|
+
for (const declaration of declarations) {
|
|
95
|
+
const inferredKind = inferValidatorKindFromDeclaration(declaration, typeChecker, visited);
|
|
96
|
+
if (inferredKind) {
|
|
97
|
+
return inferredKind;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
function inferValidatorKindFromSymbol(symbol, typeChecker, visited) {
|
|
103
|
+
if (!symbol || visited.has(symbol)) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
visited.add(symbol);
|
|
107
|
+
const directKind = inferValidatorKindFromDeclarations(getSymbolDeclarations(symbol), typeChecker, visited);
|
|
108
|
+
if (directKind) {
|
|
109
|
+
return directKind;
|
|
110
|
+
}
|
|
111
|
+
const isAliasSymbol = Boolean(symbol.flags & ts.SymbolFlags.Alias);
|
|
112
|
+
const resolvedSymbol = isAliasSymbol ? typeChecker.getAliasedSymbol(symbol) : symbol;
|
|
113
|
+
if (resolvedSymbol !== symbol) {
|
|
114
|
+
const aliasedKind = inferValidatorKindFromSymbol(resolvedSymbol, typeChecker, visited);
|
|
115
|
+
if (aliasedKind) {
|
|
116
|
+
return aliasedKind;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return inferValidatorKindFromDeclarations(getSymbolDeclarations(resolvedSymbol), typeChecker, visited);
|
|
120
|
+
}
|
|
121
|
+
function inferValidatorKindFromExpression(expression, typeChecker, visited = new Set()) {
|
|
122
|
+
if (ts.isParenthesizedExpression(expression) || ts.isAsExpression(expression) || ts.isTypeAssertionExpression(expression) || ts.isNonNullExpression(expression)) {
|
|
123
|
+
return inferValidatorKindFromExpression(expression.expression, typeChecker, visited);
|
|
124
|
+
}
|
|
125
|
+
if (ts.isPropertyAccessExpression(expression)) {
|
|
126
|
+
const propertySymbol = typeChecker.getSymbolAtLocation(expression.name);
|
|
127
|
+
const fromProperty = inferValidatorKindFromSymbol(propertySymbol, typeChecker, visited);
|
|
128
|
+
if (fromProperty) {
|
|
129
|
+
return fromProperty;
|
|
130
|
+
}
|
|
131
|
+
return inferValidatorKindFromExpression(expression.expression, typeChecker, visited);
|
|
132
|
+
}
|
|
133
|
+
if (ts.isElementAccessExpression(expression)) {
|
|
134
|
+
return inferValidatorKindFromExpression(expression.expression, typeChecker, visited);
|
|
135
|
+
}
|
|
136
|
+
if (ts.isCallExpression(expression) || ts.isNewExpression(expression)) {
|
|
137
|
+
return inferValidatorKindFromExpression(expression.expression, typeChecker, visited);
|
|
138
|
+
}
|
|
139
|
+
if (ts.isIdentifier(expression)) {
|
|
140
|
+
return inferValidatorKindFromSymbol(typeChecker.getSymbolAtLocation(expression), typeChecker, visited);
|
|
141
|
+
}
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
function parseValidateKindAndSchemaArgument(expression, parameter, typeChecker) {
|
|
145
|
+
const args = [...expression.arguments];
|
|
146
|
+
if (args.length === 0) {
|
|
147
|
+
throw new exceptions_1.GenerateMetadataError('@Validate requires a schema argument.', parameter);
|
|
148
|
+
}
|
|
149
|
+
if (args.length === 1) {
|
|
150
|
+
const [arg] = args;
|
|
151
|
+
if (ts.isObjectLiteralExpression(arg)) {
|
|
152
|
+
const kindProperty = getValidateKindProperty(arg);
|
|
153
|
+
const schemaProperty = getValidateSchemaProperty(arg);
|
|
154
|
+
if (!kindProperty || !schemaProperty || !ts.isStringLiteral(kindProperty.initializer) || !isExternalValidatorKind(kindProperty.initializer.text)) {
|
|
155
|
+
throw new exceptions_1.GenerateMetadataError('@Validate({ kind, schema }) requires a supported string kind and a schema property.', arg);
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
kind: kindProperty.initializer.text,
|
|
159
|
+
strategy: 'external',
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
if (ts.isStringLiteral(arg) && isExternalValidatorKind(arg.text)) {
|
|
163
|
+
throw new exceptions_1.GenerateMetadataError(`@Validate('${arg.text}', schema) requires a schema argument.`, arg);
|
|
164
|
+
}
|
|
165
|
+
const inferredKind = inferValidatorKindFromExpression(arg, typeChecker);
|
|
166
|
+
if (!inferredKind) {
|
|
167
|
+
throw new exceptions_1.GenerateMetadataError('@Validate(schema) could not infer the validator kind. Use @Validate(kind, schema) instead.', arg);
|
|
168
|
+
}
|
|
169
|
+
return {
|
|
170
|
+
kind: inferredKind,
|
|
171
|
+
strategy: 'external',
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
if (args.length === 2) {
|
|
175
|
+
const [kindArg, schemaArg] = args;
|
|
176
|
+
if (!ts.isStringLiteral(kindArg) || !isExternalValidatorKind(kindArg.text) || !schemaArg) {
|
|
177
|
+
throw new exceptions_1.GenerateMetadataError('@Validate(kind, schema) requires a supported string kind and schema argument.', expression);
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
kind: kindArg.text,
|
|
181
|
+
strategy: 'external',
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
throw new exceptions_1.GenerateMetadataError('@Validate accepts only (schema), (kind, schema), or ({ kind, schema }).', expression);
|
|
185
|
+
}
|
|
186
|
+
function getValidateKindProperty(objectLiteral) {
|
|
187
|
+
return objectLiteral.properties.find((property) => ts.isPropertyAssignment(property) && ts.isIdentifier(property.name) && property.name.text === 'kind');
|
|
188
|
+
}
|
|
189
|
+
function getValidateSchemaProperty(objectLiteral) {
|
|
190
|
+
return objectLiteral.properties.find((property) => (ts.isPropertyAssignment(property) || ts.isShorthandPropertyAssignment(property)) &&
|
|
191
|
+
ts.isIdentifier(property.name) &&
|
|
192
|
+
property.name.text === 'schema');
|
|
193
|
+
}
|
|
194
|
+
function getParameterExternalValidator(parameter, parameterIn, typeChecker) {
|
|
195
|
+
const decorator = getValidateDecorator(parameter, typeChecker);
|
|
196
|
+
if (!decorator) {
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
199
|
+
if (!SUPPORTED_VALIDATE_TARGETS.has(parameterIn)) {
|
|
200
|
+
throw new exceptions_1.GenerateMetadataError(`@Validate is not supported on '${parameterIn}' parameters in this release.`, parameter);
|
|
201
|
+
}
|
|
202
|
+
if (!ts.isCallExpression(decorator.expression)) {
|
|
203
|
+
throw new exceptions_1.GenerateMetadataError('@Validate must be called as a decorator function.', decorator);
|
|
204
|
+
}
|
|
205
|
+
return {
|
|
206
|
+
validationStrategy: 'external',
|
|
207
|
+
externalValidator: parseValidateKindAndSchemaArgument(decorator.expression, parameter, typeChecker),
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
function assertValidateDecoratorTargets(program, typeChecker) {
|
|
211
|
+
const visit = (node) => {
|
|
212
|
+
const validateDecorators = (0, decoratorUtils_1.getDecorators)(node, (_identifier, canonicalName) => canonicalName === 'Validate', typeChecker);
|
|
213
|
+
if (validateDecorators.length > 0) {
|
|
214
|
+
if (!ts.isParameter(node)) {
|
|
215
|
+
throw new exceptions_1.GenerateMetadataError('@Validate is currently supported only on controller method parameters.', node);
|
|
216
|
+
}
|
|
217
|
+
if (!ts.isMethodDeclaration(node.parent)) {
|
|
218
|
+
throw new exceptions_1.GenerateMetadataError('@Validate is currently supported only on method parameters.', node);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
ts.forEachChild(node, visit);
|
|
222
|
+
};
|
|
223
|
+
program.getSourceFiles().forEach(sourceFile => visit(sourceFile));
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=validateDecoratorUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateDecoratorUtils.js","sourceRoot":"","sources":["../../src/utils/validateDecoratorUtils.ts"],"names":[],"mappings":"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"}
|