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

Function loadNodeModuleFromDirectoryWorker

test/fixtures/snapshot/typescript.js:43818–43887  ·  view source on GitHub ↗
(extensions, candidate, onlyRecordFailures, state, jsonContent, versionPaths)

Source from the content-addressed store, hash-verified

43816 }
43817 ts.getPackageJsonInfo = getPackageJsonInfo;
43818 function loadNodeModuleFromDirectoryWorker(extensions, candidate, onlyRecordFailures, state, jsonContent, versionPaths) {
43819 var packageFile;
43820 if (jsonContent) {
43821 switch (extensions) {
43822 case Extensions.JavaScript:
43823 case Extensions.Json:
43824 case Extensions.TsOnly:
43825 packageFile = readPackageJsonMainField(jsonContent, candidate, state);
43826 break;
43827 case Extensions.TypeScript:
43828 // When resolving typescript modules, try resolving using main field as well
43829 packageFile = readPackageJsonTypesFields(jsonContent, candidate, state) || readPackageJsonMainField(jsonContent, candidate, state);
43830 break;
43831 case Extensions.DtsOnly:
43832 packageFile = readPackageJsonTypesFields(jsonContent, candidate, state);
43833 break;
43834 case Extensions.TSConfig:
43835 packageFile = readPackageJsonTSConfigField(jsonContent, candidate, state);
43836 break;
43837 default:
43838 return ts.Debug.assertNever(extensions);
43839 }
43840 }
43841 var loader = function (extensions, candidate, onlyRecordFailures, state) {
43842 var fromFile = tryFile(candidate, onlyRecordFailures, state);
43843 if (fromFile) {
43844 var resolved = resolvedIfExtensionMatches(extensions, fromFile);
43845 if (resolved) {
43846 return noPackageId(resolved);
43847 }
43848 if (state.traceEnabled) {
43849 trace(state.host, ts.Diagnostics.File_0_has_an_unsupported_extension_so_skipping_it, fromFile);
43850 }
43851 }
43852 // Even if extensions is DtsOnly, we can still look up a .ts file as a result of package.json "types"
43853 var nextExtensions = extensions === Extensions.DtsOnly ? Extensions.TypeScript : extensions;
43854 // Don't do package.json lookup recursively, because Node.js' package lookup doesn't.
43855 // Disable `EsmMode` for the resolution of the package path for cjs-mode packages (so the `main` field can omit extensions)
43856 // (technically it only emits a deprecation warning in esm packages right now, but that's probably
43857 // enough to mean we don't need to support it)
43858 var features = state.features;
43859 if ((jsonContent === null || jsonContent === void 0 ? void 0 : jsonContent.type) !== "module") {
43860 state.features &= ~NodeResolutionFeatures.EsmMode;
43861 }
43862 var result = nodeLoadModuleByRelativeName(nextExtensions, candidate, onlyRecordFailures, state, /*considerPackageJson*/ false);
43863 state.features = features;
43864 return result;
43865 };
43866 var onlyRecordFailuresForPackageFile = packageFile ? !ts.directoryProbablyExists(ts.getDirectoryPath(packageFile), state.host) : undefined;
43867 var onlyRecordFailuresForIndex = onlyRecordFailures || !ts.directoryProbablyExists(candidate, state.host);
43868 var indexPath = ts.combinePaths(candidate, extensions === Extensions.TSConfig ? "tsconfig" : "index");
43869 if (versionPaths && (!packageFile || ts.containsPath(candidate, packageFile))) {
43870 var moduleName = ts.getRelativePathFromDirectory(candidate, packageFile || indexPath, /*ignoreCase*/ false);
43871 if (state.traceEnabled) {
43872 trace(state.host, ts.Diagnostics.package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2, versionPaths.version, ts.version, moduleName);
43873 }
43874 var result = tryLoadModuleUsingPaths(extensions, moduleName, candidate, versionPaths.paths, /*pathPatterns*/ undefined, loader, onlyRecordFailuresForPackageFile || onlyRecordFailuresForIndex, state);
43875 if (result) {

Callers 4

loaderFunction · 0.85

Calls 8

readPackageJsonMainFieldFunction · 0.85
traceFunction · 0.85
tryLoadModuleUsingPathsFunction · 0.85
removeIgnoredPackageIdFunction · 0.85
loadModuleFromFileFunction · 0.85
loaderFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…