nestia 3.0.7 → 3.0.8-dev.20220708
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/lib/NestiaApplication.js +102 -288
- package/lib/NestiaApplication.js.map +1 -1
- package/lib/analyses/ControllerAnalyzer.js +43 -126
- package/lib/analyses/ControllerAnalyzer.js.map +1 -1
- package/lib/analyses/GenericAnalyzer.js +21 -57
- package/lib/analyses/GenericAnalyzer.js.map +1 -1
- package/lib/analyses/ImportAnalyzer.js +16 -20
- package/lib/analyses/ImportAnalyzer.js.map +1 -1
- package/lib/analyses/ReflectAnalyzer.js +59 -184
- package/lib/analyses/ReflectAnalyzer.js.map +1 -1
- package/lib/analyses/SourceFinder.js +30 -197
- package/lib/analyses/SourceFinder.js.map +1 -1
- package/lib/executable/internal/CompilerOptions.js +18 -82
- package/lib/executable/internal/CompilerOptions.js.map +1 -1
- package/lib/executable/internal/NestiaCommand.js +58 -179
- package/lib/executable/internal/NestiaCommand.js.map +1 -1
- package/lib/executable/internal/NestiaConfig.js +450 -487
- package/lib/executable/internal/NestiaConfig.js.map +1 -1
- package/lib/executable/internal/nestia.config.getter.js +6 -42
- package/lib/executable/internal/nestia.config.getter.js.map +1 -1
- package/lib/executable/nestia.js +18 -84
- package/lib/executable/nestia.js.map +1 -1
- package/lib/generates/FileGenerator.js +80 -255
- package/lib/generates/FileGenerator.js.map +1 -1
- package/lib/generates/FunctionGenerator.js +65 -118
- package/lib/generates/FunctionGenerator.js.map +1 -1
- package/lib/generates/SdkGenerator.js +22 -103
- package/lib/generates/SdkGenerator.js.map +1 -1
- package/lib/generates/SwaggerGenerator.js +122 -261
- package/lib/generates/SwaggerGenerator.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/structures/TypeEntry.js +8 -9
- package/lib/structures/TypeEntry.js.map +1 -1
- package/lib/utils/ArrayUtil.js +13 -118
- package/lib/utils/ArrayUtil.js.map +1 -1
- package/lib/utils/DirectoryUtil.js +27 -132
- package/lib/utils/DirectoryUtil.js.map +1 -1
- package/lib/utils/ImportDictionary.js +24 -47
- package/lib/utils/ImportDictionary.js.map +1 -1
- package/lib/utils/MapUtil.js +2 -2
- package/lib/utils/MapUtil.js.map +1 -1
- package/lib/utils/StringUtil.js +2 -2
- package/lib/utils/StringUtil.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,72 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
14
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
15
|
-
if (!m) return o;
|
|
16
|
-
var i = m.call(o), r, ar = [], e;
|
|
17
|
-
try {
|
|
18
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
19
|
-
}
|
|
20
|
-
catch (error) { e = { error: error }; }
|
|
21
|
-
finally {
|
|
22
|
-
try {
|
|
23
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
24
|
-
}
|
|
25
|
-
finally { if (e) throw e.error; }
|
|
26
|
-
}
|
|
27
|
-
return ar;
|
|
28
|
-
};
|
|
29
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
30
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
31
|
-
if (ar || !(i in from)) {
|
|
32
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
33
|
-
ar[i] = from[i];
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
37
|
-
};
|
|
38
|
-
var __values = (this && this.__values) || function(o) {
|
|
39
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
40
|
-
if (m) return m.call(o);
|
|
41
|
-
if (o && typeof o.length === "number") return {
|
|
42
|
-
next: function () {
|
|
43
|
-
if (o && i >= o.length) o = void 0;
|
|
44
|
-
return { value: o && o[i++], done: !o };
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
48
|
-
};
|
|
49
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
50
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
51
4
|
};
|
|
52
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
6
|
exports.ControllerAnalyzer = void 0;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
9
|
+
const HashMap_1 = require("tstl/container/HashMap");
|
|
10
|
+
const GenericAnalyzer_1 = require("./GenericAnalyzer");
|
|
11
|
+
const ImportAnalyzer_1 = require("./ImportAnalyzer");
|
|
59
12
|
var ControllerAnalyzer;
|
|
60
13
|
(function (ControllerAnalyzer) {
|
|
61
14
|
function analyze(checker, sourceFile, controller) {
|
|
62
15
|
// FIND CONTROLLER CLASS
|
|
63
|
-
|
|
64
|
-
typescript_1.default.forEachChild(sourceFile,
|
|
16
|
+
const ret = [];
|
|
17
|
+
typescript_1.default.forEachChild(sourceFile, (node) => {
|
|
65
18
|
var _a;
|
|
66
19
|
if (typescript_1.default.isClassDeclaration(node) &&
|
|
67
20
|
((_a = node.name) === null || _a === void 0 ? void 0 : _a.escapedText) === controller.name) {
|
|
68
21
|
// ANALYZE THE CONTROLLER
|
|
69
|
-
ret.push
|
|
22
|
+
ret.push(..._Analyze_controller(checker, controller, node));
|
|
70
23
|
return;
|
|
71
24
|
}
|
|
72
25
|
});
|
|
@@ -77,38 +30,24 @@ var ControllerAnalyzer;
|
|
|
77
30
|
CLASS
|
|
78
31
|
--------------------------------------------------------- */
|
|
79
32
|
function _Analyze_controller(checker, controller, classNode) {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
var _loop_1 = function (property) {
|
|
33
|
+
const classType = checker.getTypeAtLocation(classNode);
|
|
34
|
+
const genericDict = GenericAnalyzer_1.GenericAnalyzer.analyze(checker, classNode);
|
|
35
|
+
const ret = [];
|
|
36
|
+
for (const property of classType.getProperties()) {
|
|
85
37
|
// GET METHOD DECLARATION
|
|
86
|
-
|
|
38
|
+
const declaration = (property.declarations || [])[0];
|
|
87
39
|
if (!declaration || !typescript_1.default.isMethodDeclaration(declaration))
|
|
88
|
-
|
|
40
|
+
continue;
|
|
89
41
|
// IDENTIFIER MUST BE
|
|
90
|
-
|
|
42
|
+
const identifier = declaration.name;
|
|
91
43
|
if (!typescript_1.default.isIdentifier(identifier))
|
|
92
|
-
|
|
44
|
+
continue;
|
|
93
45
|
// ANALYZED WITH THE REFLECTED-FUNCTION
|
|
94
|
-
|
|
46
|
+
const runtime = controller.functions.find((f) => f.name === identifier.escapedText);
|
|
95
47
|
if (runtime === undefined)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
ret.push
|
|
99
|
-
};
|
|
100
|
-
try {
|
|
101
|
-
for (var _b = __values(classType.getProperties()), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
102
|
-
var property = _c.value;
|
|
103
|
-
_loop_1(property);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
107
|
-
finally {
|
|
108
|
-
try {
|
|
109
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
110
|
-
}
|
|
111
|
-
finally { if (e_1) throw e_1.error; }
|
|
48
|
+
continue;
|
|
49
|
+
const routes = _Analyze_function(checker, controller, genericDict, runtime, property);
|
|
50
|
+
ret.push(...routes);
|
|
112
51
|
}
|
|
113
52
|
return ret;
|
|
114
53
|
}
|
|
@@ -116,55 +55,33 @@ var ControllerAnalyzer;
|
|
|
116
55
|
FUNCTION
|
|
117
56
|
--------------------------------------------------------- */
|
|
118
57
|
function _Analyze_function(checker, controller, genericDict, func, symbol) {
|
|
119
|
-
var e_2, _a, e_3, _b;
|
|
120
58
|
// PREPARE ASSETS
|
|
121
|
-
|
|
122
|
-
|
|
59
|
+
const type = checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration);
|
|
60
|
+
const signature = checker.getSignaturesOfType(type, typescript_1.default.SignatureKind.Call)[0];
|
|
123
61
|
if (signature === undefined)
|
|
124
|
-
throw new Error(
|
|
125
|
-
|
|
62
|
+
throw new Error(`Error on ControllerAnalyzer._Analyze_function(): unable to get the signature from the ${controller.name}.${func.name}().`);
|
|
63
|
+
const importDict = new HashMap_1.HashMap();
|
|
126
64
|
// EXPLORE CHILDREN TYPES
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
var output = ImportAnalyzer_1.ImportAnalyzer.analyze(checker, genericDict, importDict, signature.getReturnType());
|
|
131
|
-
var imports = importDict
|
|
65
|
+
const parameters = func.parameters.map((param) => _Analyze_parameter(checker, genericDict, importDict, controller, func.name, param, signature.getParameters()[param.index]));
|
|
66
|
+
const output = ImportAnalyzer_1.ImportAnalyzer.analyze(checker, genericDict, importDict, signature.getReturnType());
|
|
67
|
+
const imports = importDict
|
|
132
68
|
.toJSON()
|
|
133
|
-
.map(
|
|
69
|
+
.map((pair) => [pair.first, pair.second.toJSON()]);
|
|
134
70
|
// CONSTRUCT COMMON DATA
|
|
135
|
-
|
|
71
|
+
const common = Object.assign(Object.assign({}, func), { parameters,
|
|
72
|
+
output,
|
|
73
|
+
imports, symbol: `${controller.name}.${func.name}()`, comments: signature.getDocumentationComment(undefined), tags: signature.getJsDocTags() });
|
|
136
74
|
// CONFIGURE PATHS
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
for (
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
var path = path_1.default.join(controllerPath, filePath)
|
|
145
|
-
.split("\\")
|
|
146
|
-
.join("/");
|
|
147
|
-
pathList.push(_Normalize_path(path));
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
151
|
-
finally {
|
|
152
|
-
try {
|
|
153
|
-
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
|
|
154
|
-
}
|
|
155
|
-
finally { if (e_3) throw e_3.error; }
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
160
|
-
finally {
|
|
161
|
-
try {
|
|
162
|
-
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
75
|
+
const pathList = [];
|
|
76
|
+
for (const controllerPath of controller.paths)
|
|
77
|
+
for (const filePath of func.paths) {
|
|
78
|
+
const path = path_1.default.join(controllerPath, filePath)
|
|
79
|
+
.split("\\")
|
|
80
|
+
.join("/");
|
|
81
|
+
pathList.push(_Normalize_path(path));
|
|
163
82
|
}
|
|
164
|
-
finally { if (e_2) throw e_2.error; }
|
|
165
|
-
}
|
|
166
83
|
// RETURNS
|
|
167
|
-
return pathList.map(
|
|
84
|
+
return pathList.map((path) => (Object.assign(Object.assign({}, common), { path })));
|
|
168
85
|
}
|
|
169
86
|
function _Normalize_path(path) {
|
|
170
87
|
if (path[0] !== "/")
|
|
@@ -177,14 +94,14 @@ var ControllerAnalyzer;
|
|
|
177
94
|
PARAMETER
|
|
178
95
|
--------------------------------------------------------- */
|
|
179
96
|
function _Analyze_parameter(checker, genericDict, importDict, controller, funcName, param, symbol) {
|
|
180
|
-
|
|
181
|
-
|
|
97
|
+
const type = checker.getTypeOfSymbolAtLocation(symbol, symbol.valueDeclaration);
|
|
98
|
+
const name = symbol.getEscapedName().toString();
|
|
182
99
|
// VALIDATE PARAMETERS
|
|
183
100
|
if ((param.category === "query" || param.category === "body") &&
|
|
184
101
|
param.field !== undefined)
|
|
185
|
-
throw new Error(
|
|
102
|
+
throw new Error(`Error on ${controller.name}.${funcName}(): parameter ${name} is specifying a field ${param.field} of the request ${param.category} message, however, Nestia does not support the field specialization for the request ${param.category} message. Erase the ${controller.name}.${funcName}()#${name} parameter and re-define a new decorator accepting full structured message.`);
|
|
186
103
|
return {
|
|
187
|
-
name
|
|
104
|
+
name,
|
|
188
105
|
category: param.category,
|
|
189
106
|
field: param.field,
|
|
190
107
|
encrypted: param.encrypted,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ControllerAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ControllerAnalyzer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ControllerAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ControllerAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,77 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __values = (this && this.__values) || function(o) {
|
|
3
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
4
|
-
if (m) return m.call(o);
|
|
5
|
-
if (o && typeof o.length === "number") return {
|
|
6
|
-
next: function () {
|
|
7
|
-
if (o && i >= o.length) o = void 0;
|
|
8
|
-
return { value: o && o[i++], done: !o };
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
12
|
-
};
|
|
13
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
4
|
};
|
|
16
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
6
|
exports.GenericAnalyzer = void 0;
|
|
18
|
-
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
19
8
|
var GenericAnalyzer;
|
|
20
9
|
(function (GenericAnalyzer) {
|
|
21
10
|
function analyze(checker, classNode) {
|
|
22
|
-
|
|
11
|
+
const dict = new WeakMap();
|
|
23
12
|
explore(checker, dict, classNode);
|
|
24
13
|
return dict;
|
|
25
14
|
}
|
|
26
15
|
GenericAnalyzer.analyze = analyze;
|
|
27
16
|
function explore(checker, dict, classNode) {
|
|
28
|
-
var e_1, _a, e_2, _b;
|
|
29
17
|
if (classNode.heritageClauses === undefined)
|
|
30
18
|
return;
|
|
31
|
-
|
|
32
|
-
for (
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
// RECUSRIVE EXPLORATION
|
|
51
|
-
explore(checker, dict, superNode);
|
|
52
|
-
};
|
|
53
|
-
try {
|
|
54
|
-
for (var _e = (e_2 = void 0, __values(heritage.types)), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
55
|
-
var hType = _f.value;
|
|
56
|
-
_loop_1(hType);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
60
|
-
finally {
|
|
61
|
-
try {
|
|
62
|
-
if (_f && !_f.done && (_b = _e.return)) _b.call(_e);
|
|
63
|
-
}
|
|
64
|
-
finally { if (e_2) throw e_2.error; }
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
69
|
-
finally {
|
|
70
|
-
try {
|
|
71
|
-
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
19
|
+
for (const heritage of classNode.heritageClauses)
|
|
20
|
+
for (const hType of heritage.types) {
|
|
21
|
+
// MUST BE CLASS
|
|
22
|
+
const expression = checker.getTypeAtLocation(hType.expression);
|
|
23
|
+
const superNode = expression.symbol.getDeclarations()[0];
|
|
24
|
+
if (!typescript_1.default.isClassDeclaration(superNode))
|
|
25
|
+
continue;
|
|
26
|
+
// SPECIFY GENERICS
|
|
27
|
+
const usages = hType.typeArguments || [];
|
|
28
|
+
const parameters = superNode.typeParameters || [];
|
|
29
|
+
parameters.forEach((param, index) => {
|
|
30
|
+
const paramType = checker.getTypeAtLocation(param);
|
|
31
|
+
const usageType = usages[index] !== undefined
|
|
32
|
+
? checker.getTypeAtLocation(usages[index])
|
|
33
|
+
: checker.getTypeAtLocation(param.default);
|
|
34
|
+
dict.set(paramType, usageType);
|
|
35
|
+
});
|
|
36
|
+
// RECUSRIVE EXPLORATION
|
|
37
|
+
explore(checker, dict, superNode);
|
|
72
38
|
}
|
|
73
|
-
finally { if (e_1) throw e_1.error; }
|
|
74
|
-
}
|
|
75
39
|
}
|
|
76
40
|
})(GenericAnalyzer = exports.GenericAnalyzer || (exports.GenericAnalyzer = {}));
|
|
77
41
|
//# sourceMappingURL=GenericAnalyzer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/GenericAnalyzer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GenericAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/GenericAnalyzer.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA4B;AAE5B,IAAiB,eAAe,CAkD/B;AAlDD,WAAiB,eAAe;IAG5B,SAAgB,OAAO,CACnB,OAAuB,EACvB,SAA8B;QAE9B,MAAM,IAAI,GAAe,IAAI,OAAO,EAAE,CAAC;QACvC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAPe,uBAAO,UAOtB,CAAA;IAED,SAAS,OAAO,CACZ,OAAuB,EACvB,IAAgB,EAChB,SAA8B;QAE9B,IAAI,SAAS,CAAC,eAAe,KAAK,SAAS;YAAE,OAAO;QAEpD,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,eAAe;YAC5C,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE;gBAChC,gBAAgB;gBAChB,MAAM,UAAU,GAAY,OAAO,CAAC,iBAAiB,CACjD,KAAK,CAAC,UAAU,CACnB,CAAC;gBACF,MAAM,SAAS,GACX,UAAU,CAAC,MAAM,CAAC,eAAe,EAAG,CAAC,CAAC,CAAC,CAAC;gBAE5C,IAAI,CAAC,oBAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC;oBAAE,SAAS;gBAEhD,mBAAmB;gBACnB,MAAM,MAAM,GACR,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;gBAC9B,MAAM,UAAU,GACZ,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC;gBAEnC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAChC,MAAM,SAAS,GAAY,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBAC5D,MAAM,SAAS,GACX,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS;wBACvB,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC1C,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,OAAQ,CAAC,CAAC;oBAEpD,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACnC,CAAC,CAAC,CAAC;gBAEH,wBAAwB;gBACxB,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;aACrC;IACT,CAAC;AACL,CAAC,EAlDgB,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAkD/B"}
|
|
@@ -4,14 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ImportAnalyzer = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
const typescript_1 = __importDefault(require("typescript"));
|
|
8
|
+
const HashSet_1 = require("tstl/container/HashSet");
|
|
9
9
|
var ImportAnalyzer;
|
|
10
10
|
(function (ImportAnalyzer) {
|
|
11
11
|
function analyze(checker, genericDict, importDict, type) {
|
|
12
12
|
type = get_type(checker, type);
|
|
13
13
|
return {
|
|
14
|
-
type
|
|
14
|
+
type,
|
|
15
15
|
name: explore_escaped_name(checker, genericDict, importDict, type),
|
|
16
16
|
};
|
|
17
17
|
}
|
|
@@ -20,13 +20,13 @@ var ImportAnalyzer;
|
|
|
20
20
|
TYPE
|
|
21
21
|
--------------------------------------------------------- */
|
|
22
22
|
function get_type(checker, type) {
|
|
23
|
-
|
|
23
|
+
const symbol = type.getSymbol() || type.aliasSymbol;
|
|
24
24
|
return symbol && get_name(symbol) === "Promise"
|
|
25
25
|
? escape_promise(checker, type)
|
|
26
26
|
: type;
|
|
27
27
|
}
|
|
28
28
|
function escape_promise(checker, type) {
|
|
29
|
-
|
|
29
|
+
const generic = checker.getTypeArguments(type);
|
|
30
30
|
if (generic.length !== 1)
|
|
31
31
|
throw new Error("Error on ImportAnalyzer.analyze(): invalid promise type.");
|
|
32
32
|
return generic[0];
|
|
@@ -45,43 +45,39 @@ var ImportAnalyzer;
|
|
|
45
45
|
while (genericDict.has(type) === true)
|
|
46
46
|
type = genericDict.get(type);
|
|
47
47
|
// PRIMITIVE
|
|
48
|
-
|
|
48
|
+
const symbol = type.getSymbol() || type.aliasSymbol;
|
|
49
49
|
if (symbol === undefined)
|
|
50
50
|
return checker.typeToString(type, undefined, undefined);
|
|
51
51
|
// UNION OR INTERSECT
|
|
52
52
|
else if (type.aliasSymbol === undefined &&
|
|
53
53
|
type.isUnionOrIntersection()) {
|
|
54
|
-
|
|
54
|
+
const joiner = type.isIntersection() ? " & " : " | ";
|
|
55
55
|
return type.types
|
|
56
|
-
.map(
|
|
57
|
-
return explore_escaped_name(checker, genericDict, importDict, child);
|
|
58
|
-
})
|
|
56
|
+
.map((child) => explore_escaped_name(checker, genericDict, importDict, child))
|
|
59
57
|
.join(joiner);
|
|
60
58
|
}
|
|
61
59
|
//----
|
|
62
60
|
// SPECIALIZATION
|
|
63
61
|
//----
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
const name = get_name(symbol);
|
|
63
|
+
const sourceFile = symbol.declarations[0].getSourceFile();
|
|
66
64
|
if (sourceFile.fileName.indexOf("typescript/lib") === -1) {
|
|
67
|
-
|
|
65
|
+
const set = importDict.take(sourceFile.fileName, () => new HashSet_1.HashSet());
|
|
68
66
|
set.insert(name.split(".")[0]);
|
|
69
67
|
}
|
|
70
68
|
// CHECK GENERIC
|
|
71
|
-
|
|
69
|
+
const generic = checker.getTypeArguments(type);
|
|
72
70
|
return generic.length
|
|
73
71
|
? name === "Promise"
|
|
74
72
|
? explore_escaped_name(checker, genericDict, importDict, generic[0])
|
|
75
|
-
:
|
|
76
|
-
.map(
|
|
77
|
-
|
|
78
|
-
})
|
|
79
|
-
.join(", "), ">")
|
|
73
|
+
: `${name}<${generic
|
|
74
|
+
.map((child) => explore_escaped_name(checker, genericDict, importDict, child))
|
|
75
|
+
.join(", ")}>`
|
|
80
76
|
: name;
|
|
81
77
|
}
|
|
82
78
|
function explore_name(name, decl) {
|
|
83
79
|
return typescript_1.default.isModuleBlock(decl)
|
|
84
|
-
? explore_name(
|
|
80
|
+
? explore_name(`${decl.parent.name.getText()}.${name}`, decl.parent.parent)
|
|
85
81
|
: name;
|
|
86
82
|
}
|
|
87
83
|
})(ImportAnalyzer = exports.ImportAnalyzer || (exports.ImportAnalyzer = {}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImportAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ImportAnalyzer.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"ImportAnalyzer.js","sourceRoot":"","sources":["../../src/analyses/ImportAnalyzer.ts"],"names":[],"mappings":"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"}
|