a2r
Version:
A2R Framework
45 lines (44 loc) • 1.75 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const typescript_1 = __importDefault(require("typescript"));
const getModelImports = (fileNodes, usedTypes, sourceFile) => {
const res = [];
for (let i = 0, l = fileNodes.length; i < l; i++) {
const node = fileNodes[i];
const children = node.getChildren(sourceFile);
if (typescript_1.default.isImportDeclaration(node)) {
let clause = null;
let path = '';
for (let j = 0, k = children.length; j < k && (!clause || !path); j++) {
const child = children[j];
if (typescript_1.default.isImportClause(child)) {
clause = child;
}
if (typescript_1.default.isStringLiteral(child)) {
path = child.getFullText(sourceFile).trim();
}
}
if (clause) {
const clauseText = clause.getFullText(sourceFile).trim();
const imports = clauseText
.replace('{', '')
.replace('}', '')
.trim()
.split(',')
.map((s) => s.trim())
.filter((s) => s);
if (usedTypes.some((t) => imports.indexOf(t) !== -1)) {
res.push({ clause, path, sourceFile });
}
}
}
else if (children.length) {
res.push(...getModelImports(children, usedTypes, sourceFile));
}
}
return res;
};
exports.default = getModelImports;