@@ -3,7 +3,7 @@ import { getEntrypointResolutionProblems } from "./checks/entrypointResolutionPr
33import { getFileProblems } from "./checks/fileProblems.js" ;
44import { getResolutionBasedFileProblems } from "./checks/resolutionBasedFileProblems.js" ;
55import type { Package } from "./createPackage.js" ;
6- import { createMultiCompilerHost , type MultiCompilerHost } from "./multiCompilerHost.js" ;
6+ import { createCompilerHosts , type CompilerHosts , CompilerHostWrapper } from "./multiCompilerHost.js" ;
77import type { CheckResult , EntrypointInfo , EntrypointResolutionAnalysis , Resolution , ResolutionKind } from "./types.js" ;
88
99export async function checkPackage ( pkg : Package ) : Promise < CheckResult > {
@@ -20,11 +20,11 @@ export async function checkPackage(pkg: Package): Promise<CheckResult> {
2020 return { packageName, packageVersion, types } ;
2121 }
2222
23- const host = createMultiCompilerHost ( pkg ) ;
24- const entrypointResolutions = getEntrypointInfo ( packageName , pkg , host ) ;
25- const entrypointResolutionProblems = getEntrypointResolutionProblems ( entrypointResolutions , host ) ;
26- const resolutionBasedFileProblems = getResolutionBasedFileProblems ( packageName , entrypointResolutions , host ) ;
27- const fileProblems = getFileProblems ( entrypointResolutions , host ) ;
23+ const hosts = createCompilerHosts ( pkg ) ;
24+ const entrypointResolutions = getEntrypointInfo ( packageName , pkg , hosts ) ;
25+ const entrypointResolutionProblems = getEntrypointResolutionProblems ( entrypointResolutions , hosts ) ;
26+ const resolutionBasedFileProblems = getResolutionBasedFileProblems ( packageName , entrypointResolutions , hosts ) ;
27+ const fileProblems = getFileProblems ( entrypointResolutions , hosts ) ;
2828
2929 return {
3030 packageName,
@@ -62,7 +62,7 @@ function getProxyDirectories(rootDir: string, fs: Package) {
6262 . filter ( ( f ) => f !== "./" ) ;
6363}
6464
65- function getEntrypointInfo ( packageName : string , fs : Package , host : MultiCompilerHost ) : Record < string , EntrypointInfo > {
65+ function getEntrypointInfo ( packageName : string , fs : Package , hosts : CompilerHosts ) : Record < string , EntrypointInfo > {
6666 const packageJson = JSON . parse ( fs . readFile ( `/node_modules/${ packageName } /package.json` ) ) ;
6767 const subpaths = getSubpaths ( packageJson . exports ) ;
6868 const entrypoints = subpaths . length ? subpaths : [ "." ] ;
@@ -72,10 +72,10 @@ function getEntrypointInfo(packageName: string, fs: Package, host: MultiCompiler
7272 const result : Record < string , EntrypointInfo > = { } ;
7373 for ( const entrypoint of entrypoints ) {
7474 const resolutions : Record < ResolutionKind , EntrypointResolutionAnalysis > = {
75- node10 : getEntrypointResolution ( packageName , "node10" , entrypoint , host ) ,
76- "node16-cjs" : getEntrypointResolution ( packageName , "node16-cjs" , entrypoint , host ) ,
77- "node16-esm" : getEntrypointResolution ( packageName , "node16-esm" , entrypoint , host ) ,
78- bundler : getEntrypointResolution ( packageName , "bundler" , entrypoint , host ) ,
75+ node10 : getEntrypointResolution ( packageName , hosts . node10 , "node10" , entrypoint ) ,
76+ "node16-cjs" : getEntrypointResolution ( packageName , hosts . node16 , "node16-cjs" , entrypoint ) ,
77+ "node16-esm" : getEntrypointResolution ( packageName , hosts . node16 , "node16-esm" , entrypoint ) ,
78+ bundler : getEntrypointResolution ( packageName , hosts . bundler , "bundler" , entrypoint ) ,
7979 } ;
8080 result [ entrypoint ] = {
8181 subpath : entrypoint ,
@@ -89,16 +89,15 @@ function getEntrypointInfo(packageName: string, fs: Package, host: MultiCompiler
8989
9090function getEntrypointResolution (
9191 packageName : string ,
92+ host : CompilerHostWrapper ,
9293 resolutionKind : ResolutionKind ,
93- entrypoint : string ,
94- host : MultiCompilerHost
94+ entrypoint : string
9595) : EntrypointResolutionAnalysis {
9696 if ( entrypoint . includes ( "*" ) ) {
9797 return { name : entrypoint , resolutionKind, isWildcard : true } ;
9898 }
9999 const moduleSpecifier = packageName + entrypoint . substring ( 1 ) ; // remove leading . before slash
100100 const importingFileName = resolutionKind === "node16-esm" ? "/index.mts" : "/index.ts" ;
101- const moduleResolution = resolutionKind === "node10" ? "node10" : resolutionKind === "bundler" ? "bundler" : "node16" ;
102101 const resolutionMode = resolutionKind === "node16-esm" ? ts . ModuleKind . ESNext : ts . ModuleKind . CommonJS ;
103102
104103 const resolution = tryResolve ( ) ;
@@ -107,7 +106,7 @@ function getEntrypointResolution(
107106
108107 const files = resolution
109108 ? host
110- . createProgram ( moduleResolution , [ resolution . fileName ] )
109+ . createProgram ( [ resolution . fileName ] )
111110 . getSourceFiles ( )
112111 . map ( ( f ) => f . fileName )
113112 : undefined ;
@@ -124,7 +123,6 @@ function getEntrypointResolution(
124123 const { resolution, trace } = host . resolveModuleName (
125124 moduleSpecifier ,
126125 importingFileName ,
127- moduleResolution ,
128126 resolutionMode ,
129127 noDtsResolution
130128 ) ;
@@ -135,7 +133,7 @@ function getEntrypointResolution(
135133
136134 return {
137135 fileName,
138- moduleKind : host . getModuleKindForFile ( fileName , moduleResolution ) ,
136+ moduleKind : host . getModuleKindForFile ( fileName ) ,
139137 isJson : resolution . resolvedModule . extension === ts . Extension . Json ,
140138 isTypeScript : ts . hasTSFileExtension ( resolution . resolvedModule . resolvedFileName ) ,
141139 trace,
0 commit comments