@@ -1818,7 +1818,7 @@ function tryFileLookup(fileName: string, onlyRecordFailures: boolean, state: Mod
1818
1818
function loadNodeModuleFromDirectory ( extensions : Extensions , candidate : string , onlyRecordFailures : boolean , state : ModuleResolutionState , considerPackageJson = true ) {
1819
1819
const packageInfo = considerPackageJson ? getPackageJsonInfo ( candidate , onlyRecordFailures , state ) : undefined ;
1820
1820
const packageJsonContent = packageInfo && packageInfo . contents . packageJsonContent ;
1821
- const versionPaths = packageInfo && packageInfo . contents . versionPaths ;
1821
+ const versionPaths = packageInfo && getVersionPathsOfPackageJsonInfo ( packageInfo , state ) ;
1822
1822
return withPackageId ( packageInfo , loadNodeModuleFromDirectoryWorker ( extensions , candidate , onlyRecordFailures , state , packageJsonContent , versionPaths ) ) ;
1823
1823
}
1824
1824
@@ -1848,7 +1848,7 @@ export function getEntrypointsFromPackageJsonInfo(
1848
1848
/*onlyRecordFailures*/ false ,
1849
1849
requireState ,
1850
1850
packageJsonInfo . contents . packageJsonContent ,
1851
- packageJsonInfo . contents . versionPaths ) ;
1851
+ getVersionPathsOfPackageJsonInfo ( packageJsonInfo , requireState ) ) ;
1852
1852
entrypoints = append ( entrypoints , requireResolution ?. path ) ;
1853
1853
1854
1854
if ( features & NodeResolutionFeatures . Exports && packageJsonInfo . contents . packageJsonContent . exports ) {
@@ -1952,7 +1952,8 @@ export interface PackageJsonInfo {
1952
1952
/** @internal */
1953
1953
export interface PackageJsonInfoContents {
1954
1954
packageJsonContent : PackageJsonPathFields ;
1955
- versionPaths : VersionPaths | undefined ;
1955
+ /** false: versionPaths are not present. undefined: not yet resolved */
1956
+ versionPaths : VersionPaths | false | undefined ;
1956
1957
/** false: resolved to nothing. undefined: not yet resolved */
1957
1958
resolvedEntrypoints : string [ ] | false | undefined ;
1958
1959
}
@@ -1975,6 +1976,13 @@ export interface PackageJsonInfoContents {
1975
1976
return undefined ;
1976
1977
}
1977
1978
1979
+ function getVersionPathsOfPackageJsonInfo ( packageJsonInfo : PackageJsonInfo , state : ModuleResolutionState ) : VersionPaths | undefined {
1980
+ if ( packageJsonInfo . contents . versionPaths === undefined ) {
1981
+ packageJsonInfo . contents . versionPaths = readPackageJsonTypesVersionPaths ( packageJsonInfo . contents . packageJsonContent , state ) || false ;
1982
+ }
1983
+ return packageJsonInfo . contents . versionPaths || undefined ;
1984
+ }
1985
+
1978
1986
/** @internal */
1979
1987
export function getPackageJsonInfo ( packageDirectory : string , onlyRecordFailures : boolean , state : ModuleResolutionState ) : PackageJsonInfo | undefined {
1980
1988
const { host, traceEnabled } = state ;
@@ -2005,8 +2013,7 @@ export function getPackageJsonInfo(packageDirectory: string, onlyRecordFailures:
2005
2013
if ( traceEnabled ) {
2006
2014
trace ( host , Diagnostics . Found_package_json_at_0 , packageJsonPath ) ;
2007
2015
}
2008
- const versionPaths = readPackageJsonTypesVersionPaths ( packageJsonContent , state ) ;
2009
- const result : PackageJsonInfo = { packageDirectory, contents : { packageJsonContent, versionPaths, resolvedEntrypoints : undefined } } ;
2016
+ const result : PackageJsonInfo = { packageDirectory, contents : { packageJsonContent, versionPaths : undefined , resolvedEntrypoints : undefined } } ;
2010
2017
state . packageJsonInfoCache ?. setPackageJsonInfo ( packageJsonPath , result ) ;
2011
2018
state . affectingLocations . push ( packageJsonPath ) ;
2012
2019
return result ;
@@ -2587,7 +2594,7 @@ function loadModuleFromSpecificNodeModulesDirectory(extensions: Extensions, modu
2587
2594
! nodeModulesDirectoryExists ,
2588
2595
state ,
2589
2596
packageInfo . contents . packageJsonContent ,
2590
- packageInfo . contents . versionPaths
2597
+ getVersionPathsOfPackageJsonInfo ( packageInfo , state ) ,
2591
2598
) ;
2592
2599
return withPackageId ( packageInfo , fromDirectory ) ;
2593
2600
}
@@ -2602,7 +2609,7 @@ function loadModuleFromSpecificNodeModulesDirectory(extensions: Extensions, modu
2602
2609
onlyRecordFailures ,
2603
2610
state ,
2604
2611
packageInfo && packageInfo . contents . packageJsonContent ,
2605
- packageInfo && packageInfo . contents . versionPaths
2612
+ packageInfo && getVersionPathsOfPackageJsonInfo ( packageInfo , state ) ,
2606
2613
) ;
2607
2614
if (
2608
2615
! pathAndExtension && packageInfo
@@ -2627,12 +2634,13 @@ function loadModuleFromSpecificNodeModulesDirectory(extensions: Extensions, modu
2627
2634
if ( packageInfo && packageInfo . contents . packageJsonContent . exports && state . features & NodeResolutionFeatures . Exports ) {
2628
2635
return loadModuleFromExports ( packageInfo , extensions , combinePaths ( "." , rest ) , state , cache , redirectedReference ) ?. value ;
2629
2636
}
2630
- if ( rest !== "" && packageInfo && packageInfo . contents . versionPaths ) {
2637
+ const versionPaths = rest !== "" && packageInfo ? getVersionPathsOfPackageJsonInfo ( packageInfo , state ) : undefined ;
2638
+ if ( versionPaths ) {
2631
2639
if ( state . traceEnabled ) {
2632
- trace ( state . host , Diagnostics . package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2 , packageInfo . contents . versionPaths . version , version , rest ) ;
2640
+ trace ( state . host , Diagnostics . package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2 , versionPaths . version , version , rest ) ;
2633
2641
}
2634
2642
const packageDirectoryExists = nodeModulesDirectoryExists && directoryProbablyExists ( packageDirectory , state . host ) ;
2635
- const fromPaths = tryLoadModuleUsingPaths ( extensions , rest , packageDirectory , packageInfo . contents . versionPaths . paths , /*pathPatterns*/ undefined , loader , ! packageDirectoryExists , state ) ;
2643
+ const fromPaths = tryLoadModuleUsingPaths ( extensions , rest , packageDirectory , versionPaths . paths , /*pathPatterns*/ undefined , loader , ! packageDirectoryExists , state ) ;
2636
2644
if ( fromPaths ) {
2637
2645
return fromPaths . value ;
2638
2646
}
0 commit comments