@@ -9,7 +9,7 @@ import type {
99 Resolution ,
1010 EntrypointInfo ,
1111} from "./types.js" ;
12- import { createMultiCompilerHost , type MultiCompilerHost } from "./multiCompilerHost.js" ;
12+ import { createCompilerHosts , type CompilerHosts , CompilerHostWrapper } from "./multiCompilerHost.js" ;
1313import { getEntrypointResolutionProblems } from "./checks/entrypointResolutionProblems.js" ;
1414import { getResolutionBasedFileProblems } from "./checks/resolutionBasedFileProblems.js" ;
1515import { getFileProblems } from "./checks/fileProblems.js" ;
@@ -42,11 +42,11 @@ async function checkPackageWorker(packageFS: FS): Promise<CheckResult> {
4242 return { packageName, packageVersion, types } ;
4343 }
4444
45- const host = createMultiCompilerHost ( packageFS ) ;
46- const entrypointResolutions = getEntrypointInfo ( packageName , packageFS , host ) ;
47- const entrypointResolutionProblems = getEntrypointResolutionProblems ( entrypointResolutions , host ) ;
48- const resolutionBasedFileProblems = getResolutionBasedFileProblems ( packageName , entrypointResolutions , host ) ;
49- const fileProblems = getFileProblems ( entrypointResolutions , host ) ;
45+ const hosts = createCompilerHosts ( packageFS ) ;
46+ const entrypointResolutions = getEntrypointInfo ( packageName , packageFS , hosts ) ;
47+ const entrypointResolutionProblems = getEntrypointResolutionProblems ( entrypointResolutions , hosts ) ;
48+ const resolutionBasedFileProblems = getResolutionBasedFileProblems ( packageName , entrypointResolutions , hosts ) ;
49+ const fileProblems = getFileProblems ( entrypointResolutions , hosts ) ;
5050
5151 return {
5252 packageName,
@@ -84,7 +84,7 @@ function getProxyDirectories(rootDir: string, fs: FS) {
8484 . filter ( ( f ) => f !== "./" ) ;
8585}
8686
87- function getEntrypointInfo ( packageName : string , fs : FS , host : MultiCompilerHost ) : Record < string , EntrypointInfo > {
87+ function getEntrypointInfo ( packageName : string , fs : FS , hosts : CompilerHosts ) : Record < string , EntrypointInfo > {
8888 const packageJson = JSON . parse ( fs . readFile ( `/node_modules/${ packageName } /package.json` ) ) ;
8989 const subpaths = getSubpaths ( packageJson . exports ) ;
9090 const entrypoints = subpaths . length ? subpaths : [ "." ] ;
@@ -94,10 +94,10 @@ function getEntrypointInfo(packageName: string, fs: FS, host: MultiCompilerHost)
9494 const result : Record < string , EntrypointInfo > = { } ;
9595 for ( const entrypoint of entrypoints ) {
9696 const resolutions : Record < ResolutionKind , EntrypointResolutionAnalysis > = {
97- node10 : getEntrypointResolution ( packageName , "node10" , entrypoint , host ) ,
98- "node16-cjs" : getEntrypointResolution ( packageName , "node16-cjs" , entrypoint , host ) ,
99- "node16-esm" : getEntrypointResolution ( packageName , "node16-esm" , entrypoint , host ) ,
100- bundler : getEntrypointResolution ( packageName , "bundler" , entrypoint , host ) ,
97+ node10 : getEntrypointResolution ( packageName , hosts . node10 , "node10" , entrypoint ) ,
98+ "node16-cjs" : getEntrypointResolution ( packageName , hosts . node16 , "node16-cjs" , entrypoint ) ,
99+ "node16-esm" : getEntrypointResolution ( packageName , hosts . node16 , "node16-esm" , entrypoint ) ,
100+ bundler : getEntrypointResolution ( packageName , hosts . bundler , "bundler" , entrypoint ) ,
101101 } ;
102102 result [ entrypoint ] = {
103103 subpath : entrypoint ,
@@ -111,16 +111,15 @@ function getEntrypointInfo(packageName: string, fs: FS, host: MultiCompilerHost)
111111
112112function getEntrypointResolution (
113113 packageName : string ,
114+ host : CompilerHostWrapper ,
114115 resolutionKind : ResolutionKind ,
115- entrypoint : string ,
116- host : MultiCompilerHost
116+ entrypoint : string
117117) : EntrypointResolutionAnalysis {
118118 if ( entrypoint . includes ( "*" ) ) {
119119 return { name : entrypoint , resolutionKind, isWildcard : true } ;
120120 }
121121 const moduleSpecifier = packageName + entrypoint . substring ( 1 ) ; // remove leading . before slash
122122 const importingFileName = resolutionKind === "node16-esm" ? "/index.mts" : "/index.ts" ;
123- const moduleResolution = resolutionKind === "node10" ? "node10" : resolutionKind === "bundler" ? "bundler" : "node16" ;
124123 const resolutionMode = resolutionKind === "node16-esm" ? ts . ModuleKind . ESNext : ts . ModuleKind . CommonJS ;
125124
126125 const resolution = tryResolve ( ) ;
@@ -129,7 +128,7 @@ function getEntrypointResolution(
129128
130129 const files = resolution
131130 ? host
132- . createProgram ( moduleResolution , [ resolution . fileName ] )
131+ . createProgram ( [ resolution . fileName ] )
133132 . getSourceFiles ( )
134133 . map ( ( f ) => f . fileName )
135134 : undefined ;
@@ -146,7 +145,6 @@ function getEntrypointResolution(
146145 const { resolution, trace } = host . resolveModuleName (
147146 moduleSpecifier ,
148147 importingFileName ,
149- moduleResolution ,
150148 resolutionMode ,
151149 noDtsResolution
152150 ) ;
@@ -157,7 +155,7 @@ function getEntrypointResolution(
157155
158156 return {
159157 fileName,
160- moduleKind : host . getModuleKindForFile ( fileName , moduleResolution ) ,
158+ moduleKind : host . getModuleKindForFile ( fileName ) ,
161159 isJson : resolution . resolvedModule . extension === ts . Extension . Json ,
162160 isTypeScript : ts . hasTSFileExtension ( resolution . resolvedModule . resolvedFileName ) ,
163161 trace,
0 commit comments