@@ -78,6 +78,7 @@ import {
78
78
OldBuildInfoProgramConstructor ,
79
79
OldBuildInfoProgramHost ,
80
80
outFile ,
81
+ PackageId ,
81
82
PackageJsonInfoCache ,
82
83
PackageJsonInfoContents ,
83
84
PackageJsonScope ,
@@ -953,23 +954,18 @@ export type ProgramBuildInfoEmitSignature = ProgramBuildInfoFileId | [fileId: Pr
953
954
*/
954
955
export type ProgramMultiFileEmitBuildInfoFileInfo = string | ProgramMultiFileEmitBuildInfoBuilderStateFileInfo ;
955
956
/** @internal */
956
- export interface ProgramBuildInfoResolutionBase {
957
+ export interface ProgramBuildInfoResolved {
957
958
readonly resolvedFileName : ProgramBuildInfoAbsoluteFileId ;
958
959
readonly originalPath : ProgramBuildInfoAbsoluteFileId | undefined ;
959
- readonly primary : true | undefined ;
960
- extension : undefined ;
961
- isExternalLibraryImport : undefined ;
960
+ readonly packageId : PackageId | undefined ;
962
961
}
963
962
/** @internal */
964
- export type ProgramBuildInfoResolvedModuleFull = Omit < ResolvedModuleFull , "resolvedFileName" | "isExternalLibraryImport" | "originalPath" | "extension" > & ProgramBuildInfoResolutionBase ;
965
- /** @internal */
966
- export type ProgramBuildInfoResolvedTypeReferenceDirective = Omit < ResolvedTypeReferenceDirective , "resolvedFileName" | "isExternalLibraryImport" | "originalPath" | "primary" > & ProgramBuildInfoResolutionBase ;
967
- /** @internal */
968
963
export interface ProgramBuildInfoResolution {
969
- readonly resolvedModule : ProgramBuildInfoResolvedModuleFull | undefined ;
970
- readonly resolvedTypeReferenceDirective : ProgramBuildInfoResolvedTypeReferenceDirective | undefined ;
964
+ readonly resolvedModule : ProgramBuildInfoAbsoluteFileId | ProgramBuildInfoResolved | undefined ;
965
+ readonly resolvedTypeReferenceDirective : ProgramBuildInfoAbsoluteFileId | ProgramBuildInfoResolved | undefined ;
971
966
readonly affectingLocations : readonly ProgramBuildInfoAbsoluteFileId [ ] | undefined ;
972
967
readonly resolutionDiagnostics : readonly ReusableDiagnostic [ ] | undefined ;
968
+ notPrimary : true | undefined ;
973
969
}
974
970
/** @internal */
975
971
export type ProgramBuildInfoHash = ProgramBuildInfoAbsoluteFileId | [ fileId : ProgramBuildInfoAbsoluteFileId , hash : string ] ;
@@ -1426,11 +1422,13 @@ function getBuildInfo(state: BuilderProgramState, host: BuilderProgramHost, bund
1426
1422
}
1427
1423
1428
1424
function toProgramBuildInfoResolution ( resolution : ResolvedModuleWithFailedLookupLocations | ResolvedTypeReferenceDirectiveWithFailedLookupLocations ) : ProgramBuildInfoResolution {
1425
+ const resolvedTypeReferenceDirective = ( resolution as ResolvedTypeReferenceDirectiveWithFailedLookupLocations ) . resolvedTypeReferenceDirective ;
1429
1426
return {
1430
1427
resolvedModule : toProgramBuildInfoResolved ( ( resolution as ResolvedModuleWithFailedLookupLocations ) . resolvedModule ) ,
1431
- resolvedTypeReferenceDirective : toProgramBuildInfoResolved ( ( resolution as ResolvedTypeReferenceDirectiveWithFailedLookupLocations ) . resolvedTypeReferenceDirective ) ,
1428
+ resolvedTypeReferenceDirective : toProgramBuildInfoResolved ( resolvedTypeReferenceDirective ) ,
1432
1429
affectingLocations : toReadonlyArrayOrUndefined ( resolution . affectingLocations , toAffectedFileId ) ,
1433
1430
resolutionDiagnostics : toReadonlyArrayOrUndefined ( resolution . resolutionDiagnostics , toReusableDiagnostic ) ,
1431
+ notPrimary : resolvedTypeReferenceDirective && ! resolvedTypeReferenceDirective . primary ? true : undefined ,
1434
1432
} ;
1435
1433
}
1436
1434
@@ -1455,17 +1453,12 @@ function getBuildInfo(state: BuilderProgramState, host: BuilderProgramHost, bund
1455
1453
return fileId ;
1456
1454
}
1457
1455
1458
- function toProgramBuildInfoResolved ( resolved : ResolvedModuleFull | undefined ) : ProgramBuildInfoResolvedModuleFull | undefined ;
1459
- function toProgramBuildInfoResolved ( resolved : ResolvedTypeReferenceDirective | undefined ) : ProgramBuildInfoResolvedTypeReferenceDirective | undefined ;
1460
- function toProgramBuildInfoResolved ( resolved : ResolvedModuleFull | ResolvedTypeReferenceDirective | undefined ) : ProgramBuildInfoResolvedModuleFull | ProgramBuildInfoResolvedTypeReferenceDirective | undefined {
1461
- return resolved ? {
1462
- ...resolved ,
1463
- resolvedFileName : toAbsoluteFileId ( resolved . resolvedFileName ! ) ,
1464
- isExternalLibraryImport : undefined ,
1465
- originalPath : resolved . originalPath ? toAbsoluteFileId ( resolved . originalPath ) : undefined ,
1466
- primary : ( resolved as ResolvedTypeReferenceDirective ) . primary || undefined ,
1467
- extension : undefined ,
1468
- } : undefined ;
1456
+ function toProgramBuildInfoResolved ( resolved : ResolvedModuleFull | ResolvedTypeReferenceDirective | undefined ) : ProgramBuildInfoAbsoluteFileId | ProgramBuildInfoResolved | undefined {
1457
+ if ( ! resolved ) return undefined ;
1458
+ const resolvedFileName = toAbsoluteFileId ( resolved . resolvedFileName ! ) ;
1459
+ const originalPath = resolved . originalPath ? toAbsoluteFileId ( resolved . originalPath ) : undefined ;
1460
+ if ( ! originalPath && ! resolved . packageId ) return resolvedFileName ;
1461
+ return { resolvedFileName, originalPath, packageId : resolved . packageId } ;
1469
1462
}
1470
1463
}
1471
1464
@@ -2389,19 +2382,25 @@ export function createOldBuildInfoProgram(
2389
2382
return resuableCacheResolutions ! . cache . names [ nameId - 1 ] ;
2390
2383
}
2391
2384
2385
+ function toResolvedFileName ( resolved : ProgramBuildInfoAbsoluteFileId | ProgramBuildInfoResolved ) {
2386
+ return isNumber ( resolved ) ? resolved : resolved . resolvedFileName ;
2387
+ }
2388
+
2389
+ function toOriginalOrResolvedFileName ( resolved : ProgramBuildInfoAbsoluteFileId | ProgramBuildInfoResolved ) {
2390
+ return isNumber ( resolved ) ? resolved : resolved . originalPath || resolved . resolvedFileName ;
2391
+ }
2392
+
2392
2393
function toOriginalOrResolvedModuleFileName ( resolutionId : ProgramBuildInfoResolutionId ) : string {
2393
2394
return originalPathOrResolvedFileNames ?. [ resolutionId - 1 ] ??
2394
2395
( ( originalPathOrResolvedFileNames ??= new Array ( resuableCacheResolutions ! . cache . resolutions . length ) ) [ resolutionId - 1 ] = resuableCacheResolutions ! . getProgramBuildInfoFilePathDecoder ( ) . toFileAbsolutePath (
2395
- resuableCacheResolutions ! . cache . resolutions [ resolutionId - 1 ] . resolvedModule ! . originalPath ||
2396
- resuableCacheResolutions ! . cache . resolutions [ resolutionId - 1 ] . resolvedModule ! . resolvedFileName
2396
+ toOriginalOrResolvedFileName ( resuableCacheResolutions ! . cache . resolutions [ resolutionId - 1 ] . resolvedModule ! )
2397
2397
) ) ;
2398
2398
}
2399
2399
2400
2400
function toOriginalOrResolvedTypeReferenceFileName ( resolutionId : ProgramBuildInfoResolutionId ) : string {
2401
2401
return originalPathOrResolvedFileNames ?. [ resolutionId - 1 ] ??
2402
2402
( ( originalPathOrResolvedFileNames ??= new Array ( resuableCacheResolutions ! . cache . resolutions . length ) ) [ resolutionId - 1 ] = resuableCacheResolutions ! . getProgramBuildInfoFilePathDecoder ( ) . toFileAbsolutePath (
2403
- resuableCacheResolutions ! . cache . resolutions [ resolutionId - 1 ] . resolvedTypeReferenceDirective ! . originalPath ||
2404
- resuableCacheResolutions ! . cache . resolutions [ resolutionId - 1 ] . resolvedTypeReferenceDirective ! . resolvedFileName
2403
+ toOriginalOrResolvedFileName ( resuableCacheResolutions ! . cache . resolutions [ resolutionId - 1 ] . resolvedTypeReferenceDirective ! )
2405
2404
) ) ;
2406
2405
}
2407
2406
@@ -2420,7 +2419,7 @@ export function createOldBuildInfoProgram(
2420
2419
resolutions ??= new Array ( resuableCacheResolutions ! . cache . resolutions . length ) ;
2421
2420
const resolution = resuableCacheResolutions ! . cache . resolutions [ resolutionId - 1 ] ;
2422
2421
const resolvedFileName = resuableCacheResolutions ! . getProgramBuildInfoFilePathDecoder ( ) . toFileAbsolutePath (
2423
- resolution . resolvedModule ?. resolvedFileName || resolution . resolvedTypeReferenceDirective ! . resolvedFileName
2422
+ toResolvedFileName ( resolution . resolvedModule || resolution . resolvedTypeReferenceDirective ! )
2424
2423
) ;
2425
2424
let affectingLocations : string [ ] | undefined ;
2426
2425
if ( fileExists ( resolvedFileName ) && every ( resolution . affectingLocations , fileId => {
@@ -2431,8 +2430,8 @@ export function createOldBuildInfoProgram(
2431
2430
// Type Ref doesnt need extension
2432
2431
const extenstion = resolution . resolvedModule ? extensionFromPath ( resolvedFileName ) : undefined ! ;
2433
2432
return resolutions [ resolutionId - 1 ] = {
2434
- resolvedModule : toResolved ( resolution . resolvedModule , resolvedFileName , extenstion ) ,
2435
- resolvedTypeReferenceDirective : toResolved ( resolution . resolvedTypeReferenceDirective , resolvedFileName , extenstion ) ,
2433
+ resolvedModule : toResolved ( resolution . resolvedModule , resolvedFileName , extenstion , /*primary*/ undefined ) ,
2434
+ resolvedTypeReferenceDirective : toResolved ( resolution . resolvedTypeReferenceDirective , resolvedFileName , extenstion , ! resolution . notPrimary ) ,
2436
2435
affectingLocations,
2437
2436
resolutionDiagnostics : resolution . resolutionDiagnostics ?. length ? convertToDiagnostics ( resolution . resolutionDiagnostics , /*newProgram*/ undefined ! ) as Diagnostic [ ] : undefined
2438
2437
} ;
@@ -2442,18 +2441,23 @@ export function createOldBuildInfoProgram(
2442
2441
}
2443
2442
2444
2443
function toResolved (
2445
- resolved : ProgramBuildInfoResolvedModuleFull & ProgramBuildInfoResolvedTypeReferenceDirective | undefined ,
2444
+ resolved : ProgramBuildInfoAbsoluteFileId | ProgramBuildInfoResolved | undefined ,
2446
2445
resolvedFileName : string ,
2447
2446
extension : Extension ,
2447
+ primary : boolean | undefined ,
2448
2448
) : ( ResolvedModuleFull & ResolvedTypeReferenceDirective ) | undefined {
2449
2449
if ( ! resolved ) return undefined ;
2450
- const originalPath = resolved . originalPath ? resuableCacheResolutions ! . getProgramBuildInfoFilePathDecoder ( ) . toFileAbsolutePath ( resolved . originalPath ) : undefined ;
2450
+ const originalPath = isNumber ( resolved ) || ! resolved . originalPath ?
2451
+ undefined :
2452
+ resuableCacheResolutions ! . getProgramBuildInfoFilePathDecoder ( ) . toFileAbsolutePath ( resolved . originalPath ) ;
2453
+ const packageId = isNumber ( resolved ) ? undefined : resolved . packageId ;
2451
2454
return {
2452
- ...resolved ,
2453
2455
resolvedFileName,
2454
2456
originalPath,
2457
+ packageId,
2455
2458
isExternalLibraryImport : pathContainsNodeModules ( originalPath || resolvedFileName ) ,
2456
2459
extension,
2460
+ primary,
2457
2461
} ;
2458
2462
}
2459
2463
}
0 commit comments