From 59e7d5d5cb2396a087ddb440a1028fff89cbabea Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 5 Sep 2025 14:11:55 -0700 Subject: [PATCH] Memoize buildInfo directory --- src/compiler/tsbuildPublic.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/tsbuildPublic.ts b/src/compiler/tsbuildPublic.ts index 1c218ed485d..dcaf895f2e1 100644 --- a/src/compiler/tsbuildPublic.ts +++ b/src/compiler/tsbuildPublic.ts @@ -83,6 +83,7 @@ import { isSolutionConfig, loadWithModeAwareCache, maybeBind, + memoize, missingFileModifiedTime, ModuleResolutionCache, mutateMap, @@ -1758,12 +1759,13 @@ function getUpToDateStatusWorker(state: SolutionBuilde if (extendedConfigStatus) return extendedConfigStatus; // Check package file time + const getBuildInfoDirectory = memoize(() => getDirectoryPath(getNormalizedAbsolutePath(buildInfoPath, host.getCurrentDirectory()))); const packageJsonStatus = forEach( (buildInfo as IncrementalBuildInfo | NonIncrementalBuildInfo).packageJsons, packageJson => checkConfigFileUpToDateStatus( state, - getNormalizedAbsolutePath(packageJson, getDirectoryPath(getNormalizedAbsolutePath(buildInfoPath, host.getCurrentDirectory()))), + getNormalizedAbsolutePath(packageJson, getBuildInfoDirectory()), oldestOutputFileTime, oldestOutputFileName, ), @@ -2195,12 +2197,13 @@ function watchPackageJsonFiles(state: SolutionBuilderS if (!state.watch) return; const buildInfoPath = getTsBuildInfoEmitOutputFilePath(parsed.options)!; const buildInfoCacheEntry = getBuildInfoCacheEntry(state, buildInfoPath, resolvedPath); + const getBuildInfoDirectory = memoize(() => getDirectoryPath(getNormalizedAbsolutePath(buildInfoPath, state.host.getCurrentDirectory()))); mutateMap( getOrCreateValueMapFromConfigFileMap(state.allWatchedPackageJsonFiles, resolvedPath), new Set( buildInfoCacheEntry?.buildInfo ? (buildInfoCacheEntry.buildInfo as IncrementalBuildInfo | NonIncrementalBuildInfo).packageJsons?.map( - f => getNormalizedAbsolutePath(f, getDirectoryPath(getNormalizedAbsolutePath(buildInfoPath, state.host.getCurrentDirectory()))), + f => getNormalizedAbsolutePath(f, getBuildInfoDirectory()), ) : undefined, ),