@cuba-platform/front-generator
Version:
CUBA Platform front-end clients generator
62 lines • 2.75 kB
JavaScript
;
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