MCPcopy Create free account
hub / github.com/nodejs/node / updateImports

Function updateImports

test/fixtures/snapshot/typescript.js:139540–139576  ·  view source on GitHub ↗
(program, changeTracker, oldToNew, newToOld, host, getCanonicalFileName)

Source from the content-addressed store, hash-verified

139538 }
139539 }
139540 function updateImports(program, changeTracker, oldToNew, newToOld, host, getCanonicalFileName) {
139541 var allFiles = program.getSourceFiles();
139542 var _loop_6 = function (sourceFile) {
139543 var newFromOld = oldToNew(sourceFile.fileName);
139544 var newImportFromPath = newFromOld !== null && newFromOld !== void 0 ? newFromOld : sourceFile.fileName;
139545 var newImportFromDirectory = ts.getDirectoryPath(newImportFromPath);
139546 var oldFromNew = newToOld(sourceFile.fileName);
139547 var oldImportFromPath = oldFromNew || sourceFile.fileName;
139548 var oldImportFromDirectory = ts.getDirectoryPath(oldImportFromPath);
139549 var importingSourceFileMoved = newFromOld !== undefined || oldFromNew !== undefined;
139550 updateImportsWorker(sourceFile, changeTracker, function (referenceText) {
139551 if (!ts.pathIsRelative(referenceText))
139552 return undefined;
139553 var oldAbsolute = combinePathsSafe(oldImportFromDirectory, referenceText);
139554 var newAbsolute = oldToNew(oldAbsolute);
139555 return newAbsolute === undefined ? undefined : ts.ensurePathIsNonModuleName(ts.getRelativePathFromDirectory(newImportFromDirectory, newAbsolute, getCanonicalFileName));
139556 }, function (importLiteral) {
139557 var importedModuleSymbol = program.getTypeChecker().getSymbolAtLocation(importLiteral);
139558 // No need to update if it's an ambient module^M
139559 if ((importedModuleSymbol === null || importedModuleSymbol === void 0 ? void 0 : importedModuleSymbol.declarations) && importedModuleSymbol.declarations.some(function (d) { return ts.isAmbientModule(d); }))
139560 return undefined;
139561 var toImport = oldFromNew !== undefined
139562 // If we're at the new location (file was already renamed), need to redo module resolution starting from the old location.
139563 // TODO:GH#18217
139564 ? getSourceFileToImportFromResolved(importLiteral, ts.resolveModuleName(importLiteral.text, oldImportFromPath, program.getCompilerOptions(), host), oldToNew, allFiles)
139565 : getSourceFileToImport(importedModuleSymbol, importLiteral, sourceFile, program, host, oldToNew);
139566 // Need an update if the imported file moved, or the importing file moved and was using a relative path.
139567 return toImport !== undefined && (toImport.updated || (importingSourceFileMoved && ts.pathIsRelative(importLiteral.text)))
139568 ? ts.moduleSpecifiers.updateModuleSpecifier(program.getCompilerOptions(), sourceFile, getCanonicalFileName(newImportFromPath), toImport.newFileName, ts.createModuleSpecifierResolutionHost(program, host), importLiteral.text)
139569 : undefined;
139570 });
139571 };
139572 for (var _i = 0, allFiles_1 = allFiles; _i < allFiles_1.length; _i++) {
139573 var sourceFile = allFiles_1[_i];
139574 _loop_6(sourceFile);
139575 }
139576 }
139577 function combineNormal(pathA, pathB) {
139578 return ts.normalizePath(ts.combinePaths(pathA, pathB));
139579 }

Callers 1

getEditsForFileRenameFunction · 0.85

Calls 1

_loop_6Function · 0.85

Tested by

no test coverage detected