UNPKG

@cuba-platform/front-generator

Version:
62 lines 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isImportEquals = exports.enumImportInfo = exports.entityImportInfo = exports.importDeclaration = exports.createIncludes = void 0; const ts = require("typescript"); const constants_1 = require("../../common/constants"); const utils_1 = require("../../common/utils"); const path = require("path"); function createIncludes(importInfos, current) { //todo do not add space between each include line //filter unique and exclude current entity, group by importPath const importByPathMap = new Map(); importInfos .filter(imp => !isImportEquals(imp, current)) .forEach(imp => { const importByPath = importByPathMap.get(imp.importPath); if (importByPath) { if (!importByPath.some(i => isImportEquals(i, imp))) { importByPath.push(imp); } } else { importByPathMap.set(imp.importPath, [imp]); } }); return [...importByPathMap.entries()] .map(([importPath, importInfos]) => { return importDeclaration(importInfos.map(ii => ii.className), importPath); }); } exports.createIncludes = createIncludes; function importDeclaration(identifiers, moduleSpec) { const elements = identifiers.map(idn => ts.createImportSpecifier(undefined, ts.createIdentifier(idn))); return ts.createImportDeclaration(undefined, undefined, ts.createImportClause(undefined, ts.createNamedImports(elements)), ts.createLiteral(moduleSpec)); } exports.importDeclaration = importDeclaration; function entityImportInfo(importedEntity, prefix = '') { const basePrefix = importedEntity.isBaseProjectEntity ? '' + constants_1.BASE_ENTITIES_DIR : ''; return { importPath: normalizeImportPath((0, utils_1.getEntityModulePath)(importedEntity.entity, path.posix.join(prefix, basePrefix))), className: importedEntity.entity.className }; } exports.entityImportInfo = entityImportInfo; function enumImportInfo(ed, pathPrefix) { return { className: ed.name.text, importPath: normalizeImportPath(path.posix.join(pathPrefix ? pathPrefix : '', `${constants_1.ENUMS_DIR}/${constants_1.ENUMS_FILE}`)) }; } exports.enumImportInfo = enumImportInfo; function normalizeImportPath(impPath) { return !impPath.startsWith('./') && !impPath.startsWith('..') ? './' + impPath : impPath; } function isImportEquals(ii1, ii2) { if (ii1 == undefined && ii2 == undefined) return true; if (ii1 == undefined || ii2 == undefined) return false; return ii1.importPath == ii2.importPath && ii1.className == ii2.className; } exports.isImportEquals = isImportEquals; //# sourceMappingURL=import-utils.js.map