UNPKG

grunt-generate-view-model

Version:
57 lines 2.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeCorrectImports = void 0; const mapper_1 = require("./mapper"); const simple_1 = require("./simple"); const deleteRepeatableImports = (imports) => { const filteredImports = []; imports.forEach(i => { const alreadyInFilterImport = filteredImports.find(filteredImport => filteredImport.clauses.toString() === i.clauses.toString()); if (alreadyInFilterImport) { return; } filteredImports.push(i); }); return filteredImports; }; const makeCorrectImports = (fileMetadata, possibleImports) => { const imports = deleteRepeatableImports(possibleImports); const mapperImports = mapper_1.getMapperImports(fileMetadata, imports); const interfaceImports = simple_1.getInterfaceImports(fileMetadata, imports); let decoratorImports = []; if (fileMetadata.classMetadata.type === 'class') { decoratorImports = simple_1.getDecoratorImports(fileMetadata, imports); } const result = [...mapperImports, ...interfaceImports, ...decoratorImports] .filter(imp => !fileMetadata.imports.find(i => i.type === imp.type)) .reduce((prev, cur) => { const pathExistInPrev = !!prev.find(item => cur.path === item.path); if (!pathExistInPrev) { return [...prev, cur]; } const newArray = prev.map(item => { if (item.path !== cur.path || item.type.includes(cur.type)) { return item; } item.type = `${item.type}, ${cur.type}`; return item; }); return newArray; }, []); result.sort((a, b) => { const isAIsNodeModule = !a.path.startsWith('.'); const isBIsNodeModule = !b.path.startsWith('.'); if (isAIsNodeModule && !isBIsNodeModule) { return -1; } if (isBIsNodeModule && !isAIsNodeModule) { return 1; } const aImport = `import { ${a.type} } from '${a.path}'`; const bImport = `import { ${b.type} } from '${b.path}'`; return aImport.length - bImport.length; }); return result; }; exports.makeCorrectImports = makeCorrectImports; //# sourceMappingURL=index.js.map