MCPcopy Index your code
hub / github.com/nodejs/node / getReferencedFiles

Function getReferencedFiles

test/fixtures/snapshot/typescript.js:119643–119715  ·  view source on GitHub ↗

* Gets the referenced files for a file from the program with values for the keys as referenced file's path to be true

(program, sourceFile, getCanonicalFileName)

Source from the content-addressed store, hash-verified

119641 * Gets the referenced files for a file from the program with values for the keys as referenced file's path to be true
119642 */
119643 function getReferencedFiles(program, sourceFile, getCanonicalFileName) {
119644 var referencedFiles;
119645 // We need to use a set here since the code can contain the same import twice,
119646 // but that will only be one dependency.
119647 // To avoid invernal conversion, the key of the referencedFiles map must be of type Path
119648 if (sourceFile.imports && sourceFile.imports.length > 0) {
119649 var checker = program.getTypeChecker();
119650 for (var _i = 0, _a = sourceFile.imports; _i < _a.length; _i++) {
119651 var importName = _a[_i];
119652 var declarationSourceFilePaths = getReferencedFilesFromImportLiteral(checker, importName);
119653 declarationSourceFilePaths === null || declarationSourceFilePaths === void 0 ? void 0 : declarationSourceFilePaths.forEach(addReferencedFile);
119654 }
119655 }
119656 var sourceFileDirectory = ts.getDirectoryPath(sourceFile.resolvedPath);
119657 // Handle triple slash references
119658 if (sourceFile.referencedFiles && sourceFile.referencedFiles.length > 0) {
119659 for (var _b = 0, _c = sourceFile.referencedFiles; _b < _c.length; _b++) {
119660 var referencedFile = _c[_b];
119661 var referencedPath = getReferencedFileFromFileName(program, referencedFile.fileName, sourceFileDirectory, getCanonicalFileName);
119662 addReferencedFile(referencedPath);
119663 }
119664 }
119665 // Handle type reference directives
119666 if (sourceFile.resolvedTypeReferenceDirectiveNames) {
119667 sourceFile.resolvedTypeReferenceDirectiveNames.forEach(function (resolvedTypeReferenceDirective) {
119668 if (!resolvedTypeReferenceDirective) {
119669 return;
119670 }
119671 var fileName = resolvedTypeReferenceDirective.resolvedFileName; // TODO: GH#18217
119672 var typeFilePath = getReferencedFileFromFileName(program, fileName, sourceFileDirectory, getCanonicalFileName);
119673 addReferencedFile(typeFilePath);
119674 });
119675 }
119676 // Add module augmentation as references
119677 if (sourceFile.moduleAugmentations.length) {
119678 var checker = program.getTypeChecker();
119679 for (var _d = 0, _e = sourceFile.moduleAugmentations; _d < _e.length; _d++) {
119680 var moduleName = _e[_d];
119681 if (!ts.isStringLiteral(moduleName))
119682 continue;
119683 var symbol = checker.getSymbolAtLocation(moduleName);
119684 if (!symbol)
119685 continue;
119686 // Add any file other than our own as reference
119687 addReferenceFromAmbientModule(symbol);
119688 }
119689 }
119690 // From ambient modules
119691 for (var _f = 0, _g = program.getTypeChecker().getAmbientModules(); _f < _g.length; _f++) {
119692 var ambientModule = _g[_f];
119693 if (ambientModule.declarations && ambientModule.declarations.length > 1) {
119694 addReferenceFromAmbientModule(ambientModule);
119695 }
119696 }
119697 return referencedFiles;
119698 function addReferenceFromAmbientModule(symbol) {
119699 if (!symbol.declarations) {
119700 return;

Callers 1

createFunction · 0.85

Calls 5

addReferencedFileFunction · 0.85
forEachMethod · 0.65

Tested by

no test coverage detected