UNPKG

@o3r/schematics

Version:

Schematics module of the Otter framework

32 lines 1.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.updateImports = updateImports; const tslib_1 = require("tslib"); const ts = tslib_1.__importStar(require("typescript")); const index_1 = require("../../utility/index"); const escapeRegExp = (str) => str.replace(/[$()*+./?[\\\]^{|}-]/g, '\\$&'); /** * Update imports based on mapping * @param mapImports Map of the import to replace * @param renamedPackages Map of the import package to replace * @param fromRoot Perform on all files in project */ function updateImports(mapImports = {}, renamedPackages = {}, fromRoot = false) { return (tree, context) => { const files = fromRoot ? (0, index_1.getFilesWithExtensionFromTree)(tree, 'ts') : (0, index_1.getSourceFilesFromWorkspaceProjects)(tree); // exact match on import path const importsRegexp = new RegExp(`^(${Object.keys(mapImports).map((str) => escapeRegExp(str)).join('|')})$`); // match the import path starting with the package to be renamed const renamePackagesRegexp = new RegExp(`^(${Object.keys(renamedPackages).map((str) => escapeRegExp(str)).join('|')})`); let nbOfUnResolvedImports = 0; files.forEach((file) => { const sourceFile = ts.createSourceFile(file, tree.readText(file), ts.ScriptTarget.ES2015, true); nbOfUnResolvedImports += (0, index_1.updateImportsInFile)(context.logger, tree, sourceFile, importsRegexp, renamePackagesRegexp, mapImports, renamedPackages); }); if (nbOfUnResolvedImports > 0) { context.logger.warn(`The migration rule could not resolve a total of ${nbOfUnResolvedImports} imports that you may have to migrate manually (see the details above).`); } return tree; }; } //# sourceMappingURL=update-ts-imports.js.map