UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

53 lines 2.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.renameTypes = renameTypes; const ng_morph_1 = require("ng-morph"); const add_unique_import_1 = require("../../utils/add-unique-import"); const colored_log_1 = require("../../utils/colored-log"); const get_named_import_references_1 = require("../../utils/get-named-import-references"); const import_manipulations_1 = require("../../utils/import-manipulations"); function renameType({ from, to, moduleSpecifier, preserveGenerics = false, removeImport = false, newImports = [], }) { const references = (0, get_named_import_references_1.getNamedImportReferences)(from, moduleSpecifier); references.forEach((ref) => { if (ref.wasForgotten()) { return; } const parent = ref.getParent(); if (ng_morph_1.Node.isImportSpecifier(parent)) { processImport(parent, from, to, removeImport); } else if (ng_morph_1.Node.isTypeReference(parent)) { const targetType = preserveGenerics && to ? addGeneric(to, parent.getTypeArguments()) : to; parent.replaceWithText(targetType || 'any'); newImports.forEach(({ name, moduleSpecifier }) => { (0, add_unique_import_1.addUniqueImport)(parent.getSourceFile().getFilePath(), name, moduleSpecifier); }); } }); } function processImport(node, from, to, remove) { const filePath = node.getSourceFile().getFilePath(); const targetImportAlreadyExists = Boolean((0, ng_morph_1.getImports)(filePath, { namedImports: to }).length); if (to && !targetImportAlreadyExists && !remove) { (0, import_manipulations_1.renameImport)(node, removeGeneric(to), removeGeneric(from)); } else { (0, import_manipulations_1.removeImport)(node); } } function removeGeneric(type) { return type.replaceAll(/<.*>$/g, ''); } function addGeneric(typeName, generics) { const typeArgs = generics.map((t) => t.getType().getText()); const genericType = typeArgs.length ? `<${typeArgs.join(', ')}>` : ''; return `${typeName}${genericType}`; } function renameTypes(options, types) { !options['skip-logs'] && (0, colored_log_1.infoLog)(`${colored_log_1.SMALL_TAB_SYMBOL}${colored_log_1.REPLACE_SYMBOL} renaming types...`); types.forEach(renameType); !options['skip-logs'] && (0, colored_log_1.successLog)(`${colored_log_1.SMALL_TAB_SYMBOL}${colored_log_1.SUCCESS_SYMBOL} types renamed \n`); } //# sourceMappingURL=rename-types.js.map