@o3r/schematics
Version:
Schematics module of the Otter framework
32 lines • 1.83 kB
JavaScript
;
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