(extensions, candidate, onlyRecordFailures, state, jsonContent, versionPaths)
| 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) { |
no test coverage detected
searching dependent graphs…