@tsoa-next/cli 7.1.0
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 +3 -0
- package/dist/cli.d.ts +44 -0
- package/dist/cli.js +356 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/metadataGeneration/controllerGenerator.d.ts +30 -0
- package/dist/metadataGeneration/controllerGenerator.js +229 -0
- package/dist/metadataGeneration/controllerGenerator.js.map +1 -0
- package/dist/metadataGeneration/exceptions.d.ts +13 -0
- package/dist/metadataGeneration/exceptions.js +53 -0
- package/dist/metadataGeneration/exceptions.js.map +1 -0
- package/dist/metadataGeneration/extension.d.ts +5 -0
- package/dist/metadataGeneration/extension.js +85 -0
- package/dist/metadataGeneration/extension.js.map +1 -0
- package/dist/metadataGeneration/initializer-value.d.ts +6 -0
- package/dist/metadataGeneration/initializer-value.js +154 -0
- package/dist/metadataGeneration/initializer-value.js.map +1 -0
- package/dist/metadataGeneration/metadataGenerator.d.ts +29 -0
- package/dist/metadataGeneration/metadataGenerator.js +220 -0
- package/dist/metadataGeneration/metadataGenerator.js.map +1 -0
- package/dist/metadataGeneration/methodGenerator.d.ts +45 -0
- package/dist/metadataGeneration/methodGenerator.js +367 -0
- package/dist/metadataGeneration/methodGenerator.js.map +1 -0
- package/dist/metadataGeneration/parameterGenerator.d.ts +33 -0
- package/dist/metadataGeneration/parameterGenerator.js +552 -0
- package/dist/metadataGeneration/parameterGenerator.js.map +1 -0
- package/dist/metadataGeneration/transformer/dateTransformer.d.ts +6 -0
- package/dist/metadataGeneration/transformer/dateTransformer.js +28 -0
- package/dist/metadataGeneration/transformer/dateTransformer.js.map +1 -0
- package/dist/metadataGeneration/transformer/enumTransformer.d.ts +12 -0
- package/dist/metadataGeneration/transformer/enumTransformer.js +75 -0
- package/dist/metadataGeneration/transformer/enumTransformer.js.map +1 -0
- package/dist/metadataGeneration/transformer/primitiveTransformer.d.ts +11 -0
- package/dist/metadataGeneration/transformer/primitiveTransformer.js +70 -0
- package/dist/metadataGeneration/transformer/primitiveTransformer.js.map +1 -0
- package/dist/metadataGeneration/transformer/propertyTransformer.d.ts +12 -0
- package/dist/metadataGeneration/transformer/propertyTransformer.js +101 -0
- package/dist/metadataGeneration/transformer/propertyTransformer.js.map +1 -0
- package/dist/metadataGeneration/transformer/referenceTransformer.d.ts +10 -0
- package/dist/metadataGeneration/transformer/referenceTransformer.js +81 -0
- package/dist/metadataGeneration/transformer/referenceTransformer.js.map +1 -0
- package/dist/metadataGeneration/transformer/transformer.d.ts +9 -0
- package/dist/metadataGeneration/transformer/transformer.js +39 -0
- package/dist/metadataGeneration/transformer/transformer.js.map +1 -0
- package/dist/metadataGeneration/typeResolver.d.ts +52 -0
- package/dist/metadataGeneration/typeResolver.js +1202 -0
- package/dist/metadataGeneration/typeResolver.js.map +1 -0
- package/dist/module/generate-routes.d.ts +9 -0
- package/dist/module/generate-routes.js +90 -0
- package/dist/module/generate-routes.js.map +1 -0
- package/dist/module/generate-spec.d.ts +9 -0
- package/dist/module/generate-spec.js +79 -0
- package/dist/module/generate-spec.js.map +1 -0
- package/dist/routeGeneration/defaultRouteGenerator.d.ts +12 -0
- package/dist/routeGeneration/defaultRouteGenerator.js +119 -0
- package/dist/routeGeneration/defaultRouteGenerator.js.map +1 -0
- package/dist/routeGeneration/routeGenerator.d.ts +56 -0
- package/dist/routeGeneration/routeGenerator.js +257 -0
- package/dist/routeGeneration/routeGenerator.js.map +1 -0
- package/dist/routeGeneration/templates/express.hbs +221 -0
- package/dist/routeGeneration/templates/hapi.hbs +267 -0
- package/dist/routeGeneration/templates/koa.hbs +218 -0
- package/dist/swagger/specGenerator.d.ts +33 -0
- package/dist/swagger/specGenerator.js +253 -0
- package/dist/swagger/specGenerator.js.map +1 -0
- package/dist/swagger/specGenerator2.d.ts +27 -0
- package/dist/swagger/specGenerator2.js +476 -0
- package/dist/swagger/specGenerator2.js.map +1 -0
- package/dist/swagger/specGenerator3.d.ts +158 -0
- package/dist/swagger/specGenerator3.js +646 -0
- package/dist/swagger/specGenerator3.js.map +1 -0
- package/dist/swagger/specGenerator31.d.ts +24 -0
- package/dist/swagger/specGenerator31.js +75 -0
- package/dist/swagger/specGenerator31.js.map +1 -0
- package/dist/utils/decoratorUtils.d.ts +9 -0
- package/dist/utils/decoratorUtils.js +118 -0
- package/dist/utils/decoratorUtils.js.map +1 -0
- package/dist/utils/flowUtils.d.ts +1 -0
- package/dist/utils/flowUtils.js +8 -0
- package/dist/utils/flowUtils.js.map +1 -0
- package/dist/utils/fs.d.ts +5 -0
- package/dist/utils/fs.js +55 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/genericTypeGuards.d.ts +1 -0
- package/dist/utils/genericTypeGuards.js +8 -0
- package/dist/utils/genericTypeGuards.js.map +1 -0
- package/dist/utils/headerTypeHelpers.d.ts +5 -0
- package/dist/utils/headerTypeHelpers.js +27 -0
- package/dist/utils/headerTypeHelpers.js.map +1 -0
- package/dist/utils/importClassesFromDirectories.d.ts +4 -0
- package/dist/utils/importClassesFromDirectories.js +20 -0
- package/dist/utils/importClassesFromDirectories.js.map +1 -0
- package/dist/utils/internalTypeGuards.d.ts +5 -0
- package/dist/utils/internalTypeGuards.js +66 -0
- package/dist/utils/internalTypeGuards.js.map +1 -0
- package/dist/utils/isVoidType.d.ts +2 -0
- package/dist/utils/isVoidType.js +16 -0
- package/dist/utils/isVoidType.js.map +1 -0
- package/dist/utils/jsDocUtils.d.ts +8 -0
- package/dist/utils/jsDocUtils.js +122 -0
- package/dist/utils/jsDocUtils.js.map +1 -0
- package/dist/utils/jsonUtils.d.ts +1 -0
- package/dist/utils/jsonUtils.js +12 -0
- package/dist/utils/jsonUtils.js.map +1 -0
- package/dist/utils/pathUtils.d.ts +9 -0
- package/dist/utils/pathUtils.js +37 -0
- package/dist/utils/pathUtils.js.map +1 -0
- package/dist/utils/specMerge.d.ts +2 -0
- package/dist/utils/specMerge.js +36 -0
- package/dist/utils/specMerge.js.map +1 -0
- package/dist/utils/swaggerUtils.d.ts +3 -0
- package/dist/utils/swaggerUtils.js +22 -0
- package/dist/utils/swaggerUtils.js.map +1 -0
- package/dist/utils/unspecifiedObject.d.ts +3 -0
- package/dist/utils/unspecifiedObject.js +3 -0
- package/dist/utils/unspecifiedObject.js.map +1 -0
- package/dist/utils/validatorUtils.d.ts +5 -0
- package/dist/utils/validatorUtils.js +241 -0
- package/dist/utils/validatorUtils.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ControllerGenerator = void 0;
|
|
4
|
+
const decoratorUtils_1 = require("./../utils/decoratorUtils");
|
|
5
|
+
const exceptions_1 = require("./exceptions");
|
|
6
|
+
const methodGenerator_1 = require("./methodGenerator");
|
|
7
|
+
const typeResolver_1 = require("./typeResolver");
|
|
8
|
+
const headerTypeHelpers_1 = require("../utils/headerTypeHelpers");
|
|
9
|
+
const typescript_1 = require("typescript");
|
|
10
|
+
class ControllerGenerator {
|
|
11
|
+
node;
|
|
12
|
+
current;
|
|
13
|
+
parentSecurity;
|
|
14
|
+
path;
|
|
15
|
+
tags;
|
|
16
|
+
security;
|
|
17
|
+
isHidden;
|
|
18
|
+
commonResponses;
|
|
19
|
+
produces;
|
|
20
|
+
constructor(node, current, parentSecurity = []) {
|
|
21
|
+
this.node = node;
|
|
22
|
+
this.current = current;
|
|
23
|
+
this.parentSecurity = parentSecurity;
|
|
24
|
+
this.path = this.getPath();
|
|
25
|
+
this.tags = this.getTags();
|
|
26
|
+
this.security = this.getSecurity();
|
|
27
|
+
this.isHidden = this.getIsHidden();
|
|
28
|
+
this.commonResponses = this.getCommonResponses();
|
|
29
|
+
this.produces = this.getProduces();
|
|
30
|
+
}
|
|
31
|
+
IsValid() {
|
|
32
|
+
return !!this.path || this.path === '';
|
|
33
|
+
}
|
|
34
|
+
Generate() {
|
|
35
|
+
if (!this.node.parent) {
|
|
36
|
+
throw new exceptions_1.GenerateMetadataError("Controller node doesn't have a valid parent source file.");
|
|
37
|
+
}
|
|
38
|
+
if (!this.node.name) {
|
|
39
|
+
throw new exceptions_1.GenerateMetadataError("Controller node doesn't have a valid name.");
|
|
40
|
+
}
|
|
41
|
+
const sourceFile = this.node.parent.getSourceFile();
|
|
42
|
+
return {
|
|
43
|
+
location: sourceFile.fileName,
|
|
44
|
+
methods: this.buildMethods(),
|
|
45
|
+
name: this.node.name.text,
|
|
46
|
+
path: this.path || '',
|
|
47
|
+
produces: this.produces,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
buildMethods() {
|
|
51
|
+
return this.getMethodsWithInheritedMethods()
|
|
52
|
+
.map(m => new methodGenerator_1.MethodGenerator(m, this.current, this.commonResponses, this.path, this.tags, this.security, this.isHidden))
|
|
53
|
+
.filter(generator => generator.IsValid())
|
|
54
|
+
.map(generator => generator.Generate());
|
|
55
|
+
}
|
|
56
|
+
getMethodsWithInheritedMethods() {
|
|
57
|
+
const inheritanceChain = this.getInheritanceChainForRoutes();
|
|
58
|
+
if (inheritanceChain.length === 1) {
|
|
59
|
+
return this.node.members.filter(typescript_1.isMethodDeclaration);
|
|
60
|
+
}
|
|
61
|
+
// Process from base to derived so derived classes can override inherited names.
|
|
62
|
+
const methodsByName = new Map();
|
|
63
|
+
inheritanceChain.reverse().forEach(classDeclaration => {
|
|
64
|
+
classDeclaration.members.filter(typescript_1.isMethodDeclaration).forEach(method => {
|
|
65
|
+
const key = this.getMethodKey(method);
|
|
66
|
+
if (!key) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
methodsByName.set(key, method);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
return [...methodsByName.values()];
|
|
73
|
+
}
|
|
74
|
+
getInheritanceChainForRoutes() {
|
|
75
|
+
const chain = [this.node];
|
|
76
|
+
let hasRuntimeControllerBase = false;
|
|
77
|
+
let currentClass = this.node;
|
|
78
|
+
while (currentClass) {
|
|
79
|
+
const { baseClass, extendsRuntimeController } = this.getDirectBaseClassInfo(currentClass);
|
|
80
|
+
if (extendsRuntimeController) {
|
|
81
|
+
hasRuntimeControllerBase = true;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
if (!baseClass) {
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
chain.push(baseClass);
|
|
88
|
+
currentClass = baseClass;
|
|
89
|
+
}
|
|
90
|
+
return hasRuntimeControllerBase ? chain : [this.node];
|
|
91
|
+
}
|
|
92
|
+
getDirectBaseClassInfo(classDeclaration) {
|
|
93
|
+
const extendsClause = classDeclaration.heritageClauses?.find(clause => clause.token === typescript_1.SyntaxKind.ExtendsKeyword);
|
|
94
|
+
const extendsType = extendsClause?.types[0];
|
|
95
|
+
if (!extendsType) {
|
|
96
|
+
return { extendsRuntimeController: false };
|
|
97
|
+
}
|
|
98
|
+
if (this.extendsRuntimeController(extendsType)) {
|
|
99
|
+
return { extendsRuntimeController: true };
|
|
100
|
+
}
|
|
101
|
+
const expression = extendsType.expression;
|
|
102
|
+
const symbols = [this.current.typeChecker.getSymbolAtLocation(expression), this.current.typeChecker.getTypeAtLocation(expression).getSymbol()].filter((symbol) => !!symbol);
|
|
103
|
+
const symbolsToSearch = new Set(symbols);
|
|
104
|
+
symbols.forEach(symbol => {
|
|
105
|
+
if (symbol.flags & typescript_1.SymbolFlags.Alias) {
|
|
106
|
+
symbolsToSearch.add(this.current.typeChecker.getAliasedSymbol(symbol));
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
for (const symbol of symbolsToSearch) {
|
|
110
|
+
const declarations = symbol.declarations || (symbol.valueDeclaration ? [symbol.valueDeclaration] : []);
|
|
111
|
+
const classDeclarationNode = declarations.find(typescript_1.isClassDeclaration);
|
|
112
|
+
if (classDeclarationNode) {
|
|
113
|
+
return { baseClass: classDeclarationNode, extendsRuntimeController: false };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return { extendsRuntimeController: false };
|
|
117
|
+
}
|
|
118
|
+
extendsRuntimeController(extendsType) {
|
|
119
|
+
const expression = extendsType.expression;
|
|
120
|
+
const symbol = this.current.typeChecker.getSymbolAtLocation(expression) || this.current.typeChecker.getTypeAtLocation(expression).getSymbol();
|
|
121
|
+
if (!symbol) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
if (!(symbol.flags & typescript_1.SymbolFlags.Alias)) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
const aliasDeclarations = symbol.declarations || [];
|
|
128
|
+
return aliasDeclarations.some(declaration => {
|
|
129
|
+
if (!(0, typescript_1.isImportSpecifier)(declaration)) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
const importedName = declaration.propertyName?.text || declaration.name.text;
|
|
133
|
+
if (importedName !== 'Controller') {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
const moduleSpecifier = this.getImportModuleSpecifier(declaration);
|
|
137
|
+
if (!moduleSpecifier) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
return moduleSpecifier.getText().replace(/['"]/g, '') === '@tsoa-next/runtime';
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
getMethodKey(method) {
|
|
144
|
+
if (!method.name) {
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
return (0, typescript_1.isIdentifier)(method.name) ? method.name.text : method.name.getText();
|
|
148
|
+
}
|
|
149
|
+
getImportModuleSpecifier(declaration) {
|
|
150
|
+
// ImportSpecifier -> NamedImports -> ImportClause -> ImportDeclaration
|
|
151
|
+
const importDeclaration = declaration.parent.parent.parent;
|
|
152
|
+
return 'moduleSpecifier' in importDeclaration ? importDeclaration.moduleSpecifier : undefined;
|
|
153
|
+
}
|
|
154
|
+
getPath() {
|
|
155
|
+
const decorators = (0, decoratorUtils_1.getDecorators)(this.node, identifier => identifier.text === 'Route');
|
|
156
|
+
if (!decorators || !decorators.length) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (decorators.length > 1) {
|
|
160
|
+
throw new exceptions_1.GenerateMetadataError(`Only one Route decorator allowed in '${this.node.name.text}' class.`);
|
|
161
|
+
}
|
|
162
|
+
const decorator = decorators[0];
|
|
163
|
+
const expression = decorator.parent;
|
|
164
|
+
const decoratorArgument = expression.arguments[0];
|
|
165
|
+
return decoratorArgument ? `${decoratorArgument.text}` : '';
|
|
166
|
+
}
|
|
167
|
+
getCommonResponses() {
|
|
168
|
+
const decorators = (0, decoratorUtils_1.getDecorators)(this.node, identifier => identifier.text === 'Response');
|
|
169
|
+
if (!decorators || !decorators.length) {
|
|
170
|
+
return [];
|
|
171
|
+
}
|
|
172
|
+
return decorators.map(decorator => {
|
|
173
|
+
const expression = decorator.parent;
|
|
174
|
+
const [name, description, example] = (0, decoratorUtils_1.getDecoratorValues)(decorator, this.current.typeChecker);
|
|
175
|
+
if (!name) {
|
|
176
|
+
throw new exceptions_1.GenerateMetadataError(`Controller's responses should have an explicit name.`);
|
|
177
|
+
}
|
|
178
|
+
return {
|
|
179
|
+
description: description || '',
|
|
180
|
+
examples: example === undefined ? undefined : [example],
|
|
181
|
+
name,
|
|
182
|
+
schema: expression.typeArguments && expression.typeArguments.length > 0 && !this.isHidden ? new typeResolver_1.TypeResolver(expression.typeArguments[0], this.current).resolve() : undefined,
|
|
183
|
+
headers: (0, headerTypeHelpers_1.getHeaderType)(expression.typeArguments, 1, this.current),
|
|
184
|
+
};
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
getTags() {
|
|
188
|
+
const decorators = (0, decoratorUtils_1.getDecorators)(this.node, identifier => identifier.text === 'Tags');
|
|
189
|
+
if (!decorators || !decorators.length) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (decorators.length > 1) {
|
|
193
|
+
throw new exceptions_1.GenerateMetadataError(`Only one Tags decorator allowed in '${this.node.name.text}' class.`);
|
|
194
|
+
}
|
|
195
|
+
const decorator = decorators[0];
|
|
196
|
+
const expression = decorator.parent;
|
|
197
|
+
return expression.arguments.map((a) => a.text);
|
|
198
|
+
}
|
|
199
|
+
getSecurity() {
|
|
200
|
+
const noSecurityDecorators = (0, decoratorUtils_1.getDecorators)(this.node, identifier => identifier.text === 'NoSecurity');
|
|
201
|
+
const securityDecorators = (0, decoratorUtils_1.getDecorators)(this.node, identifier => identifier.text === 'Security');
|
|
202
|
+
if (noSecurityDecorators?.length && securityDecorators?.length) {
|
|
203
|
+
throw new exceptions_1.GenerateMetadataError(`NoSecurity decorator cannot be used in conjunction with Security decorator in '${this.node.name.text}' class.`);
|
|
204
|
+
}
|
|
205
|
+
if (noSecurityDecorators?.length) {
|
|
206
|
+
return [];
|
|
207
|
+
}
|
|
208
|
+
if (!securityDecorators || !securityDecorators.length) {
|
|
209
|
+
return this.parentSecurity;
|
|
210
|
+
}
|
|
211
|
+
return securityDecorators.map(d => (0, decoratorUtils_1.getSecurites)(d, this.current.typeChecker));
|
|
212
|
+
}
|
|
213
|
+
getIsHidden() {
|
|
214
|
+
const hiddenDecorators = (0, decoratorUtils_1.getDecorators)(this.node, identifier => identifier.text === 'Hidden');
|
|
215
|
+
if (!hiddenDecorators || !hiddenDecorators.length) {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
if (hiddenDecorators.length > 1) {
|
|
219
|
+
throw new exceptions_1.GenerateMetadataError(`Only one Hidden decorator allowed in '${this.node.name.text}' class.`);
|
|
220
|
+
}
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
getProduces() {
|
|
224
|
+
const produces = (0, decoratorUtils_1.getProduces)(this.node, this.current.typeChecker);
|
|
225
|
+
return produces.length ? produces : undefined;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
exports.ControllerGenerator = ControllerGenerator;
|
|
229
|
+
//# sourceMappingURL=controllerGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controllerGenerator.js","sourceRoot":"","sources":["../../src/metadataGeneration/controllerGenerator.ts"],"names":[],"mappings":";;;AAAA,8DAAwG;AACxG,6CAAoD;AAEpD,uDAAmD;AACnD,iDAA6C;AAE7C,kEAA0D;AAC1D,2CAYmB;AAEnB,MAAa,mBAAmB;IASX;IACA;IACA;IAVF,IAAI,CAAS;IACb,IAAI,CAAW;IACf,QAAQ,CAAkB;IAC1B,QAAQ,CAAU;IAClB,eAAe,CAAiB;IAChC,QAAQ,CAAW;IAEpC,YACmB,IAAsB,EACtB,OAA0B,EAC1B,iBAAkC,EAAE;QAFpC,SAAI,GAAJ,IAAI,CAAkB;QACtB,YAAO,GAAP,OAAO,CAAmB;QAC1B,mBAAc,GAAd,cAAc,CAAsB;QAErD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAA;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACpC,CAAC;IAEM,OAAO;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAA;IACxC,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,kCAAqB,CAAC,0DAA0D,CAAC,CAAA;QAC7F,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,kCAAqB,CAAC,4CAA4C,CAAC,CAAA;QAC/E,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;QAEnD,OAAO;YACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YAC5B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAA;IACH,CAAC;IAEO,YAAY;QAClB,OAAO,IAAI,CAAC,8BAA8B,EAAE;aACzC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,iCAAe,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxH,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;aACxC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC3C,CAAC;IAEO,8BAA8B;QACpC,MAAM,gBAAgB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAA;QAC5D,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,gCAAmB,CAAC,CAAA;QACtD,CAAC;QAED,gFAAgF;QAChF,MAAM,aAAa,GAAG,IAAI,GAAG,EAA6B,CAAA;QAC1D,gBAAgB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACpD,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,gCAAmB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACpE,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;gBACrC,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,OAAM;gBACR,CAAC;gBACD,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YAChC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;IACpC,CAAC;IAEO,4BAA4B;QAClC,MAAM,KAAK,GAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7C,IAAI,wBAAwB,GAAG,KAAK,CAAA;QACpC,IAAI,YAAY,GAAiC,IAAI,CAAC,IAAI,CAAA;QAE1D,OAAO,YAAY,EAAE,CAAC;YACpB,MAAM,EAAE,SAAS,EAAE,wBAAwB,EAAE,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAA;YACzF,IAAI,wBAAwB,EAAE,CAAC;gBAC7B,wBAAwB,GAAG,IAAI,CAAA;gBAC/B,MAAK;YACP,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAK;YACP,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrB,YAAY,GAAG,SAAS,CAAA;QAC1B,CAAC;QAED,OAAO,wBAAwB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvD,CAAC;IAEO,sBAAsB,CAAC,gBAAkC;QAC/D,MAAM,aAAa,GAAG,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,uBAAU,CAAC,cAAc,CAAC,CAAA;QAClH,MAAM,WAAW,GAAG,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAA;QAC5C,CAAC;QAED,IAAI,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAA;QAC3C,CAAC;QAED,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAA;QACzC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CACnJ,CAAC,MAAM,EAAwC,EAAE,CAAC,CAAC,CAAC,MAAM,CAC3D,CAAA;QAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;QACxC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACvB,IAAI,MAAM,CAAC,KAAK,GAAG,wBAAW,CAAC,KAAK,EAAE,CAAC;gBACrC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;YACxE,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YACtG,MAAM,oBAAoB,GAAG,YAAY,CAAC,IAAI,CAAC,+BAAkB,CAAC,CAAA;YAClE,IAAI,oBAAoB,EAAE,CAAC;gBACzB,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAA;YAC7E,CAAC;QACH,CAAC;QAED,OAAO,EAAE,wBAAwB,EAAE,KAAK,EAAE,CAAA;IAC5C,CAAC;IAEO,wBAAwB,CAAC,WAAwC;QACvE,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAA;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAA;QAC7I,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,wBAAW,CAAC,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAA;QACnD,OAAO,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC1C,IAAI,CAAC,IAAA,8BAAiB,EAAC,WAAW,CAAC,EAAE,CAAC;gBACpC,OAAO,KAAK,CAAA;YACd,CAAC;YAED,MAAM,YAAY,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAA;YAC5E,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;gBAClC,OAAO,KAAK,CAAA;YACd,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAA;YAClE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAA;YACd,CAAC;YACD,OAAO,eAAe,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,oBAAoB,CAAA;QAChF,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,YAAY,CAAC,MAAyB;QAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,IAAA,yBAAY,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;IAC7E,CAAC;IAEO,wBAAwB,CAAC,WAAiD;QAChF,uEAAuE;QACvE,MAAM,iBAAiB,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAA;QAC1D,OAAO,iBAAiB,IAAI,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/F,CAAC;IAEO,OAAO;QACb,MAAM,UAAU,GAAG,IAAA,8BAAa,EAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;QACtF,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,OAAM;QACR,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,kCAAqB,CAAC,wCAAwC,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,IAAI,UAAU,CAAC,CAAA;QACzG,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,MAAwB,CAAA;QACrD,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,CAAkB,CAAA;QAClE,OAAO,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7D,CAAC;IAEO,kBAAkB;QACxB,MAAM,UAAU,GAAG,IAAA,8BAAa,EAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QACzF,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,OAAO,EAAE,CAAA;QACX,CAAC;QAED,OAAO,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAChC,MAAM,UAAU,GAAG,SAAS,CAAC,MAAwB,CAAA;YAErD,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,IAAA,mCAAkB,EAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;YAC5F,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,kCAAqB,CAAC,sDAAsD,CAAC,CAAA;YACzF,CAAC;YAED,OAAO;gBACL,WAAW,EAAE,WAAW,IAAI,EAAE;gBAC9B,QAAQ,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACvD,IAAI;gBACJ,MAAM,EAAE,UAAU,CAAC,aAAa,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,2BAAY,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;gBAC7K,OAAO,EAAE,IAAA,iCAAa,EAAC,UAAU,CAAC,aAAa,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;aACjD,CAAA;QACpB,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,OAAO;QACb,MAAM,UAAU,GAAG,IAAA,8BAAa,EAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;QACrF,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACtC,OAAM;QACR,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,kCAAqB,CAAC,uCAAuC,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,IAAI,UAAU,CAAC,CAAA;QACxG,CAAC;QAED,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;QAC/B,MAAM,UAAU,GAAG,SAAS,CAAC,MAAwB,CAAA;QAErD,OAAO,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAc,CAAC,CAAA;IAC/D,CAAC;IAEO,WAAW;QACjB,MAAM,oBAAoB,GAAG,IAAA,8BAAa,EAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;QACrG,MAAM,kBAAkB,GAAG,IAAA,8BAAa,EAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,CAAA;QAEjG,IAAI,oBAAoB,EAAE,MAAM,IAAI,kBAAkB,EAAE,MAAM,EAAE,CAAC;YAC/D,MAAM,IAAI,kCAAqB,CAAC,kFAAkF,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,IAAI,UAAU,CAAC,CAAA;QACnJ,CAAC;QAED,IAAI,oBAAoB,EAAE,MAAM,EAAE,CAAC;YACjC,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAI,CAAC,kBAAkB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC,cAAc,CAAA;QAC5B,CAAC;QAED,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAA,6BAAY,EAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;IAC/E,CAAC;IAEO,WAAW;QACjB,MAAM,gBAAgB,GAAG,IAAA,8BAAa,EAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;QAC7F,IAAI,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;YAClD,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,kCAAqB,CAAC,yCAAyC,IAAI,CAAC,IAAI,CAAC,IAAK,CAAC,IAAI,UAAU,CAAC,CAAA;QAC1G,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,WAAW;QACjB,MAAM,QAAQ,GAAG,IAAA,4BAAW,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QACjE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IAC/C,CAAC;CACF;AArQD,kDAqQC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Node, TypeNode } from 'typescript';
|
|
2
|
+
export declare class GenerateMetadataError extends Error {
|
|
3
|
+
constructor(message?: string, node?: Node | TypeNode, onlyCurrent?: boolean);
|
|
4
|
+
}
|
|
5
|
+
export declare class GenerateMetaDataWarning {
|
|
6
|
+
private message;
|
|
7
|
+
private node;
|
|
8
|
+
private onlyCurrent;
|
|
9
|
+
constructor(message: string, node: Node | TypeNode, onlyCurrent?: boolean);
|
|
10
|
+
toString(): string;
|
|
11
|
+
}
|
|
12
|
+
export declare function prettyLocationOfNode(node: Node | TypeNode): string;
|
|
13
|
+
export declare function prettyTroubleCause(node: Node | TypeNode, onlyCurrent?: boolean): string;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GenerateMetaDataWarning = exports.GenerateMetadataError = void 0;
|
|
4
|
+
exports.prettyLocationOfNode = prettyLocationOfNode;
|
|
5
|
+
exports.prettyTroubleCause = prettyTroubleCause;
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
class GenerateMetadataError extends Error {
|
|
8
|
+
constructor(message, node, onlyCurrent = false) {
|
|
9
|
+
super(message);
|
|
10
|
+
if (node) {
|
|
11
|
+
this.message = `${message}\n${prettyLocationOfNode(node)}\n${prettyTroubleCause(node, onlyCurrent)}`;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.GenerateMetadataError = GenerateMetadataError;
|
|
16
|
+
class GenerateMetaDataWarning {
|
|
17
|
+
message;
|
|
18
|
+
node;
|
|
19
|
+
onlyCurrent;
|
|
20
|
+
constructor(message, node, onlyCurrent = false) {
|
|
21
|
+
this.message = message;
|
|
22
|
+
this.node = node;
|
|
23
|
+
this.onlyCurrent = onlyCurrent;
|
|
24
|
+
}
|
|
25
|
+
toString() {
|
|
26
|
+
return `Warning: ${this.message}\n${prettyLocationOfNode(this.node)}\n${prettyTroubleCause(this.node, this.onlyCurrent)}`;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.GenerateMetaDataWarning = GenerateMetaDataWarning;
|
|
30
|
+
function prettyLocationOfNode(node) {
|
|
31
|
+
const sourceFile = node.getSourceFile();
|
|
32
|
+
if (sourceFile) {
|
|
33
|
+
const token = node.getFirstToken() || node.parent.getFirstToken();
|
|
34
|
+
const start = token ? `:${sourceFile.getLineAndCharacterOfPosition(token.getStart()).line + 1}` : '';
|
|
35
|
+
const end = token ? `:${sourceFile.getLineAndCharacterOfPosition(token.getEnd()).line + 1}` : '';
|
|
36
|
+
const normalizedPath = (0, path_1.normalize)(`${sourceFile.fileName}${start}${end}`);
|
|
37
|
+
return `At: ${normalizedPath}.`;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
return `At unknown position...`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function prettyTroubleCause(node, onlyCurrent = false) {
|
|
44
|
+
let name;
|
|
45
|
+
if (onlyCurrent || !node.parent) {
|
|
46
|
+
name = node.pos !== -1 && node.parent ? node.getText() : node.name?.text || '<unknown name>';
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
name = node.parent.pos !== -1 ? node.parent.getText() : node.parent.name?.text || '<unknown name>';
|
|
50
|
+
}
|
|
51
|
+
return `This was caused by '${name}'`;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=exceptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../src/metadataGeneration/exceptions.ts"],"names":[],"mappings":";;;AAwBA,oDAWC;AAED,gDAQC;AA7CD,+BAAgC;AAGhC,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAgB,EAAE,IAAsB,EAAE,WAAW,GAAG,KAAK;QACvE,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,GAAG,OAAQ,KAAK,oBAAoB,CAAC,IAAI,CAAC,KAAK,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAA;QACvG,CAAC;IACH,CAAC;CACF;AAPD,sDAOC;AAED,MAAa,uBAAuB;IAExB;IACA;IACA;IAHV,YACU,OAAe,EACf,IAAqB,EACrB,cAAc,KAAK;QAFnB,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAiB;QACrB,gBAAW,GAAX,WAAW,CAAQ;IAC1B,CAAC;IAEJ,QAAQ;QACN,OAAO,YAAY,IAAI,CAAC,OAAO,KAAK,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAA;IAC3H,CAAC;CACF;AAVD,0DAUC;AAED,SAAgB,oBAAoB,CAAC,IAAqB;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;IACvC,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAA;QACjE,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,6BAA6B,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACpG,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,6BAA6B,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAChG,MAAM,cAAc,GAAG,IAAA,gBAAS,EAAC,GAAG,UAAU,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG,EAAE,CAAC,CAAA;QACxE,OAAO,OAAO,cAAc,GAAG,CAAA;IACjC,CAAC;SAAM,CAAC;QACN,OAAO,wBAAwB,CAAA;IACjC,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAqB,EAAE,WAAW,GAAG,KAAK;IAC3E,IAAI,IAAY,CAAA;IAChB,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAE,IAAY,CAAC,IAAI,EAAE,IAAI,IAAI,gBAAgB,CAAA;IACvG,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAE,IAAY,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,gBAAgB,CAAA;IAC7G,CAAC;IACD,OAAO,uBAAuB,IAAI,GAAG,CAAA;AACvC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as ts from 'typescript';
|
|
2
|
+
import { MetadataGenerator } from './metadataGenerator';
|
|
3
|
+
import { Tsoa } from '@tsoa-next/runtime';
|
|
4
|
+
export declare function getExtensions(decorators: ts.Identifier[], metadataGenerator: MetadataGenerator): Tsoa.Extension[];
|
|
5
|
+
export declare function getExtensionsFromJSDocComments(comments: string[]): Tsoa.Extension[];
|
|
@@ -0,0 +1,85 @@
|
|
|
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.getExtensions = getExtensions;
|
|
37
|
+
exports.getExtensionsFromJSDocComments = getExtensionsFromJSDocComments;
|
|
38
|
+
const ts = __importStar(require("typescript"));
|
|
39
|
+
const initializer_value_1 = require("./initializer-value");
|
|
40
|
+
const jsonUtils_1 = require("../utils/jsonUtils");
|
|
41
|
+
function getExtensions(decorators, metadataGenerator) {
|
|
42
|
+
const extensions = decorators.map(extensionDecorator => {
|
|
43
|
+
if (!ts.isCallExpression(extensionDecorator.parent)) {
|
|
44
|
+
throw new Error('The parent of the @Extension is not a CallExpression. Are you using it in the right place?');
|
|
45
|
+
}
|
|
46
|
+
const [decoratorKeyArg, decoratorValueArg] = extensionDecorator.parent.arguments;
|
|
47
|
+
if (!ts.isStringLiteral(decoratorKeyArg) && !ts.isIdentifier(decoratorKeyArg)) {
|
|
48
|
+
throw new Error('The first argument of @Extension must be a string');
|
|
49
|
+
}
|
|
50
|
+
const attributeKey = ts.isIdentifier(decoratorKeyArg) ? (0, initializer_value_1.getInitializerValue)(decoratorKeyArg, metadataGenerator.typeChecker) : decoratorKeyArg.text;
|
|
51
|
+
if (typeof attributeKey !== 'string') {
|
|
52
|
+
throw new Error('The first argument of @Extension must be a string');
|
|
53
|
+
}
|
|
54
|
+
if (!decoratorValueArg) {
|
|
55
|
+
throw new Error(`Extension '${attributeKey}' must contain a value`);
|
|
56
|
+
}
|
|
57
|
+
assertValidExtensionKey(attributeKey);
|
|
58
|
+
const attributeValue = (0, initializer_value_1.getInitializerValue)(decoratorValueArg, metadataGenerator.typeChecker);
|
|
59
|
+
if (!(0, initializer_value_1.isNonUndefinedInitializerValue)(attributeValue)) {
|
|
60
|
+
throw new Error(`Extension '${attributeKey}' cannot have an undefined initializer value`);
|
|
61
|
+
}
|
|
62
|
+
return { key: attributeKey, value: attributeValue };
|
|
63
|
+
});
|
|
64
|
+
return extensions;
|
|
65
|
+
}
|
|
66
|
+
function getExtensionsFromJSDocComments(comments) {
|
|
67
|
+
const extensions = [];
|
|
68
|
+
comments.forEach(comment => {
|
|
69
|
+
const extensionData = (0, jsonUtils_1.safeFromJson)(comment);
|
|
70
|
+
if (extensionData) {
|
|
71
|
+
const keys = Object.keys(extensionData);
|
|
72
|
+
keys.forEach(key => {
|
|
73
|
+
assertValidExtensionKey(key);
|
|
74
|
+
extensions.push({ key: key, value: extensionData[key] });
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return extensions;
|
|
79
|
+
}
|
|
80
|
+
function assertValidExtensionKey(key) {
|
|
81
|
+
if (!key.startsWith('x-')) {
|
|
82
|
+
throw new Error('Extensions must begin with "x-" to be valid. Please see the following link for more information: https://swagger.io/docs/specification/openapi-extensions/');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../../src/metadataGeneration/extension.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,sCAgCC;AAED,wEAcC;AAtDD,+CAAgC;AAChC,2DAAyF;AAGzF,kDAAiD;AAEjD,SAAgB,aAAa,CAAC,UAA2B,EAAE,iBAAoC;IAC7F,MAAM,UAAU,GAAqB,UAAU,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;QACvE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAA;QAC/G,CAAC;QAED,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAA;QAEhF,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACtE,CAAC;QAED,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAA,uCAAmB,EAAC,eAAe,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAA;QAElJ,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QACtE,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,cAAc,YAAY,wBAAwB,CAAC,CAAA;QACrE,CAAC;QAED,uBAAuB,CAAC,YAAY,CAAC,CAAA;QAErC,MAAM,cAAc,GAAG,IAAA,uCAAmB,EAAC,iBAAiB,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAA;QAC5F,IAAI,CAAC,IAAA,kDAA8B,EAAC,cAAc,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,cAAc,YAAY,8CAA8C,CAAC,CAAA;QAC3F,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,CAAA;IACrD,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAgB,8BAA8B,CAAC,QAAkB;IAC/D,MAAM,UAAU,GAAqB,EAAE,CAAA;IACvC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,MAAM,aAAa,GAAG,IAAA,wBAAY,EAAC,OAAO,CAAC,CAAA;QAC3C,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACjB,uBAAuB,CAAC,GAAG,CAAC,CAAA;gBAC5B,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC1D,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAW;IAC1C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,4JAA4J,CAAC,CAAA;IAC/K,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as ts from 'typescript';
|
|
2
|
+
import { Tsoa } from '@tsoa-next/runtime';
|
|
3
|
+
export type InitializerValue = string | number | boolean | undefined | null | InitializerValue[];
|
|
4
|
+
export type DefinedInitializerValue = string | number | boolean | null | DefinedInitializerValue[];
|
|
5
|
+
export declare function isNonUndefinedInitializerValue(value: InitializerValue): value is DefinedInitializerValue;
|
|
6
|
+
export declare function getInitializerValue(initializer?: ts.Expression | ts.ImportSpecifier, typeChecker?: ts.TypeChecker, type?: Tsoa.Type): InitializerValue | DefinedInitializerValue;
|
|
@@ -0,0 +1,154 @@
|
|
|
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.isNonUndefinedInitializerValue = isNonUndefinedInitializerValue;
|
|
37
|
+
exports.getInitializerValue = getInitializerValue;
|
|
38
|
+
const ts = __importStar(require("typescript"));
|
|
39
|
+
const hasInitializer = (node) => Object.prototype.hasOwnProperty.call(node, 'initializer');
|
|
40
|
+
const extractInitializer = (decl) => (decl && hasInitializer(decl) && decl.initializer) || undefined;
|
|
41
|
+
const extractImportSpecifier = (symbol) => (symbol?.declarations && symbol.declarations.length > 0 && ts.isImportSpecifier(symbol.declarations[0]) && symbol.declarations[0]) || undefined;
|
|
42
|
+
const isIterable = (obj) => obj != null && typeof obj[Symbol.iterator] === 'function';
|
|
43
|
+
function isNonUndefinedInitializerValue(value) {
|
|
44
|
+
if (Array.isArray(value)) {
|
|
45
|
+
return value.every(isNonUndefinedInitializerValue);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return value !== undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function getInitializerValue(initializer, typeChecker, type) {
|
|
52
|
+
if (!initializer || !typeChecker) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
switch (initializer.kind) {
|
|
56
|
+
case ts.SyntaxKind.ArrayLiteralExpression: {
|
|
57
|
+
const arrayLiteral = initializer;
|
|
58
|
+
return arrayLiteral.elements.reduce((acc, element) => {
|
|
59
|
+
if (ts.isSpreadElement(element)) {
|
|
60
|
+
const spreadValue = getInitializerValue(element.expression, typeChecker);
|
|
61
|
+
if (spreadValue && isIterable(spreadValue)) {
|
|
62
|
+
return acc.concat(...spreadValue);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
throw new Error(`${typeof spreadValue} is not iterable`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
acc.push(getInitializerValue(element, typeChecker));
|
|
70
|
+
}
|
|
71
|
+
return acc;
|
|
72
|
+
}, []);
|
|
73
|
+
}
|
|
74
|
+
case ts.SyntaxKind.StringLiteral:
|
|
75
|
+
case ts.SyntaxKind.NoSubstitutionTemplateLiteral:
|
|
76
|
+
return initializer.text;
|
|
77
|
+
case ts.SyntaxKind.TrueKeyword:
|
|
78
|
+
return true;
|
|
79
|
+
case ts.SyntaxKind.FalseKeyword:
|
|
80
|
+
return false;
|
|
81
|
+
case ts.SyntaxKind.PrefixUnaryExpression: {
|
|
82
|
+
const prefixUnary = initializer;
|
|
83
|
+
switch (prefixUnary.operator) {
|
|
84
|
+
case ts.SyntaxKind.PlusToken:
|
|
85
|
+
return Number(prefixUnary.operand.text);
|
|
86
|
+
case ts.SyntaxKind.MinusToken:
|
|
87
|
+
return Number(`-${prefixUnary.operand.text}`);
|
|
88
|
+
default:
|
|
89
|
+
throw new Error(`Unsupport prefix operator token: ${prefixUnary.operator}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
case ts.SyntaxKind.NumberKeyword:
|
|
93
|
+
case ts.SyntaxKind.FirstLiteralToken:
|
|
94
|
+
return Number(initializer.text);
|
|
95
|
+
case ts.SyntaxKind.NewExpression: {
|
|
96
|
+
const newExpression = initializer;
|
|
97
|
+
const ident = newExpression.expression;
|
|
98
|
+
if (ident.text === 'Date') {
|
|
99
|
+
let date = new Date();
|
|
100
|
+
if (newExpression.arguments) {
|
|
101
|
+
const newArguments = newExpression.arguments.filter(args => args.kind !== undefined);
|
|
102
|
+
const argsValue = newArguments.map(args => getInitializerValue(args, typeChecker));
|
|
103
|
+
if (argsValue.length > 0) {
|
|
104
|
+
date = new Date(argsValue);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const dateString = date.toISOString();
|
|
108
|
+
if (type && type.dataType === 'date') {
|
|
109
|
+
return dateString.split('T')[0];
|
|
110
|
+
}
|
|
111
|
+
return dateString;
|
|
112
|
+
}
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
case ts.SyntaxKind.NullKeyword:
|
|
116
|
+
return null;
|
|
117
|
+
case ts.SyntaxKind.ObjectLiteralExpression: {
|
|
118
|
+
const objectLiteral = initializer;
|
|
119
|
+
const nestedObject = {};
|
|
120
|
+
objectLiteral.properties.forEach((p) => {
|
|
121
|
+
if (ts.isSpreadAssignment(p)) {
|
|
122
|
+
const spreadValue = getInitializerValue(p.expression, typeChecker);
|
|
123
|
+
if (spreadValue) {
|
|
124
|
+
if (typeof spreadValue === 'object') {
|
|
125
|
+
Object.assign(nestedObject, spreadValue);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
throw new Error(`Spread types may only be created from object types.`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
nestedObject[p.name.text] = getInitializerValue(p.initializer, typeChecker);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
return nestedObject;
|
|
137
|
+
}
|
|
138
|
+
case ts.SyntaxKind.ImportSpecifier: {
|
|
139
|
+
const importSpecifier = initializer;
|
|
140
|
+
const importSymbol = typeChecker.getSymbolAtLocation(importSpecifier.name);
|
|
141
|
+
if (!importSymbol)
|
|
142
|
+
return;
|
|
143
|
+
const aliasedSymbol = typeChecker.getAliasedSymbol(importSymbol);
|
|
144
|
+
const declarations = aliasedSymbol.getDeclarations();
|
|
145
|
+
const declaration = declarations && declarations.length > 0 ? declarations[0] : undefined;
|
|
146
|
+
return getInitializerValue(extractInitializer(declaration), typeChecker);
|
|
147
|
+
}
|
|
148
|
+
default: {
|
|
149
|
+
const symbol = typeChecker.getSymbolAtLocation(initializer);
|
|
150
|
+
return getInitializerValue(extractInitializer(symbol?.valueDeclaration) || extractImportSpecifier(symbol), typeChecker);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=initializer-value.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initializer-value.js","sourceRoot":"","sources":["../../src/metadataGeneration/initializer-value.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Config, Tsoa } from '@tsoa-next/runtime';
|
|
2
|
+
import { type ClassDeclaration, type CompilerOptions, type TypeChecker } from 'typescript';
|
|
3
|
+
export declare class MetadataGenerator {
|
|
4
|
+
private readonly compilerOptions?;
|
|
5
|
+
private readonly ignorePaths?;
|
|
6
|
+
private readonly rootSecurity;
|
|
7
|
+
readonly defaultNumberType: NonNullable<Config['defaultNumberType']>;
|
|
8
|
+
readonly controllerNodes: ClassDeclaration[];
|
|
9
|
+
readonly typeChecker: TypeChecker;
|
|
10
|
+
private readonly program;
|
|
11
|
+
private referenceTypeMap;
|
|
12
|
+
private modelDefinitionPosMap;
|
|
13
|
+
private expressionOrigNameMap;
|
|
14
|
+
constructor(entryFile: string, compilerOptions?: CompilerOptions | undefined, ignorePaths?: string[] | undefined, controllers?: string[], rootSecurity?: Tsoa.Security[], defaultNumberType?: NonNullable<Config['defaultNumberType']>, esm?: boolean);
|
|
15
|
+
Generate(): Tsoa.Metadata;
|
|
16
|
+
private setProgramToDynamicControllersFiles;
|
|
17
|
+
private extractNodeFromProgramSourceFiles;
|
|
18
|
+
private checkForMethodSignatureDuplicates;
|
|
19
|
+
private checkForPathParamSignatureDuplicates;
|
|
20
|
+
TypeChecker(): TypeChecker;
|
|
21
|
+
AddReferenceType(referenceType: Tsoa.ReferenceType): void;
|
|
22
|
+
GetReferenceType(refName: string): Tsoa.ReferenceType;
|
|
23
|
+
CheckModelUnicity(refName: string, positions: Array<{
|
|
24
|
+
fileName: string;
|
|
25
|
+
pos: number;
|
|
26
|
+
}>): void;
|
|
27
|
+
CheckExpressionUnicity(formattedRefName: string, refName: string): void;
|
|
28
|
+
private buildControllers;
|
|
29
|
+
}
|