@@ -444,6 +444,12 @@ namespace ts {
444
444
export interface ModuleResolutionCache extends NonRelativeModuleNameResolutionCache {
445
445
getOrCreateCacheForDirectory ( directoryName : string , redirectedReference ?: ResolvedProjectReference ) : Map < ResolvedModuleWithFailedLookupLocations > ;
446
446
/*@internal */ directoryToModuleNameMap : CacheWithRedirects < ESMap < string , ResolvedModuleWithFailedLookupLocations > > ;
447
+ clear ( ) : void ;
448
+ /**
449
+ * Updates with the current compilerOptions the cache will operate with.
450
+ * This updates the redirects map as well if needed so module resolutions are cached if they can across the projects
451
+ */
452
+ update ( options : CompilerOptions ) : void ;
447
453
}
448
454
449
455
/**
@@ -528,7 +534,31 @@ namespace ts {
528
534
currentDirectory : string ,
529
535
getCanonicalFileName : GetCanonicalFileName ) : ModuleResolutionCache {
530
536
531
- return { getOrCreateCacheForDirectory, getOrCreateCacheForModuleName, directoryToModuleNameMap, moduleNameToDirectoryMap } ;
537
+ return {
538
+ getOrCreateCacheForDirectory,
539
+ getOrCreateCacheForModuleName,
540
+ directoryToModuleNameMap,
541
+ moduleNameToDirectoryMap,
542
+ clear,
543
+ update,
544
+ } ;
545
+
546
+ function clear ( ) {
547
+ directoryToModuleNameMap . clear ( ) ;
548
+ moduleNameToDirectoryMap . clear ( ) ;
549
+ }
550
+
551
+ function update ( options : CompilerOptions ) {
552
+ if ( ! options . configFile ) return ;
553
+ const ref : ResolvedProjectReference = {
554
+ sourceFile : options . configFile ,
555
+ commandLine : { options } as ParsedCommandLine
556
+ } ;
557
+ directoryToModuleNameMap . setOwnMap ( directoryToModuleNameMap . getOrCreateMapOfCacheRedirects ( ref ) ) ;
558
+ moduleNameToDirectoryMap . setOwnMap ( moduleNameToDirectoryMap . getOrCreateMapOfCacheRedirects ( ref ) ) ;
559
+ directoryToModuleNameMap . setOwnOptions ( options ) ;
560
+ moduleNameToDirectoryMap . setOwnOptions ( options ) ;
561
+ }
532
562
533
563
function getOrCreateCacheForDirectory ( directoryName : string , redirectedReference ?: ResolvedProjectReference ) {
534
564
const path = toPath ( directoryName , currentDirectory , getCanonicalFileName ) ;
0 commit comments