mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-30 22:32:33 -05:00
Fix incorrect usage of package.json types/main in package subdirectories (#60696)
This commit is contained in:
@@ -2208,9 +2208,7 @@ function tryFileLookup(fileName: string, onlyRecordFailures: boolean, state: Mod
|
||||
|
||||
function loadNodeModuleFromDirectory(extensions: Extensions, candidate: string, onlyRecordFailures: boolean, state: ModuleResolutionState, considerPackageJson = true) {
|
||||
const packageInfo = considerPackageJson ? getPackageJsonInfo(candidate, onlyRecordFailures, state) : undefined;
|
||||
const packageJsonContent = packageInfo && packageInfo.contents.packageJsonContent;
|
||||
const versionPaths = packageInfo && getVersionPathsOfPackageJsonInfo(packageInfo, state);
|
||||
return withPackageId(packageInfo, loadNodeModuleFromDirectoryWorker(extensions, candidate, onlyRecordFailures, state, packageJsonContent, versionPaths), state);
|
||||
return withPackageId(packageInfo, loadNodeModuleFromDirectoryWorker(extensions, candidate, onlyRecordFailures, state, packageInfo), state);
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
@@ -2243,8 +2241,7 @@ export function getEntrypointsFromPackageJsonInfo(
|
||||
packageJsonInfo.packageDirectory,
|
||||
/*onlyRecordFailures*/ false,
|
||||
loadPackageJsonMainState,
|
||||
packageJsonInfo.contents.packageJsonContent,
|
||||
getVersionPathsOfPackageJsonInfo(packageJsonInfo, loadPackageJsonMainState),
|
||||
packageJsonInfo,
|
||||
);
|
||||
entrypoints = append(entrypoints, mainResolution?.path);
|
||||
|
||||
@@ -2481,15 +2478,16 @@ function getPackageJsonInfo(packageDirectory: string, onlyRecordFailures: boolea
|
||||
}
|
||||
}
|
||||
|
||||
function loadNodeModuleFromDirectoryWorker(extensions: Extensions, candidate: string, onlyRecordFailures: boolean, state: ModuleResolutionState, jsonContent: PackageJsonPathFields | undefined, versionPaths: VersionPaths | undefined): PathAndExtension | undefined {
|
||||
function loadNodeModuleFromDirectoryWorker(extensions: Extensions, candidate: string, onlyRecordFailures: boolean, state: ModuleResolutionState, packageJson: PackageJsonInfo | undefined): PathAndExtension | undefined {
|
||||
const versionPaths = packageJson && getVersionPathsOfPackageJsonInfo(packageJson, state);
|
||||
let packageFile: string | undefined;
|
||||
if (jsonContent) {
|
||||
if (packageJson && arePathsEqual(packageJson?.packageDirectory, candidate, state.host)) {
|
||||
if (state.isConfigLookup) {
|
||||
packageFile = readPackageJsonTSConfigField(jsonContent, candidate, state);
|
||||
packageFile = readPackageJsonTSConfigField(packageJson.contents.packageJsonContent, packageJson.packageDirectory, state);
|
||||
}
|
||||
else {
|
||||
packageFile = extensions & Extensions.Declaration && readPackageJsonTypesFields(jsonContent, candidate, state) ||
|
||||
extensions & (Extensions.ImplementationFiles | Extensions.Declaration) && readPackageJsonMainField(jsonContent, candidate, state) ||
|
||||
packageFile = extensions & Extensions.Declaration && readPackageJsonTypesFields(packageJson.contents.packageJsonContent, packageJson.packageDirectory, state) ||
|
||||
extensions & (Extensions.ImplementationFiles | Extensions.Declaration) && readPackageJsonMainField(packageJson.contents.packageJsonContent, packageJson.packageDirectory, state) ||
|
||||
undefined;
|
||||
}
|
||||
}
|
||||
@@ -2510,7 +2508,7 @@ function loadNodeModuleFromDirectoryWorker(extensions: Extensions, candidate: st
|
||||
const features = state.features;
|
||||
const candidateIsFromPackageJsonField = state.candidateIsFromPackageJsonField;
|
||||
state.candidateIsFromPackageJsonField = true;
|
||||
if (jsonContent?.type !== "module") {
|
||||
if (packageJson?.contents.packageJsonContent.type !== "module") {
|
||||
state.features &= ~NodeResolutionFeatures.EsmMode;
|
||||
}
|
||||
const result = nodeLoadModuleByRelativeName(expandedExtensions, candidate, onlyRecordFailures, state, /*considerPackageJson*/ false);
|
||||
@@ -3100,8 +3098,7 @@ function loadModuleFromSpecificNodeModulesDirectory(extensions: Extensions, modu
|
||||
candidate,
|
||||
!nodeModulesDirectoryExists,
|
||||
state,
|
||||
packageInfo.contents.packageJsonContent,
|
||||
getVersionPathsOfPackageJsonInfo(packageInfo, state),
|
||||
packageInfo,
|
||||
);
|
||||
return withPackageId(packageInfo, fromDirectory, state);
|
||||
}
|
||||
@@ -3113,8 +3110,7 @@ function loadModuleFromSpecificNodeModulesDirectory(extensions: Extensions, modu
|
||||
candidate,
|
||||
onlyRecordFailures,
|
||||
state,
|
||||
packageInfo && packageInfo.contents.packageJsonContent,
|
||||
packageInfo && getVersionPathsOfPackageJsonInfo(packageInfo, state),
|
||||
packageInfo,
|
||||
);
|
||||
if (
|
||||
!pathAndExtension && packageInfo
|
||||
|
||||
Reference in New Issue
Block a user