From 71b39ffdcf1307eb4ab48fcea5980ea82e11128c Mon Sep 17 00:00:00 2001 From: jdalton Date: Wed, 11 Jun 2025 09:43:37 -0400 Subject: [PATCH] Clear packumentCache after each package --- src/commands/fix/npm-fix.mts | 26 +++++++++++++------------- src/commands/fix/pnpm-fix.mts | 25 +++++++++++++------------ 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/commands/fix/npm-fix.mts b/src/commands/fix/npm-fix.mts index 8f1f89701..61bbd53ff 100644 --- a/src/commands/fix/npm-fix.mts +++ b/src/commands/fix/npm-fix.mts @@ -154,7 +154,9 @@ export async function npmFix( return { ok: true, data: { fixed: false } } } - // baseBranch and branchParser are now from env + // Lazily access constants.packumentCache. + const { packumentCache } = constants + const workspacePkgJsonPaths = await globWorkspace( pkgEnvDetails.agent, rootPath, @@ -168,11 +170,14 @@ export async function npmFix( naturalCompare(a[0], b[0]), ) - const handleInstallFail = (): CResult<{ fixed: boolean }> => { - debugFn(`fail: ${pkgEnvDetails.agent} install\n`) + const cleanupInfoEntriesLoop = () => { logger.dedent() spinner?.dedent() + packumentCache.clear() + } + const handleInstallFail = (): CResult<{ fixed: boolean }> => { + cleanupInfoEntriesLoop() return { ok: false, message: 'Installation failure', @@ -214,8 +219,7 @@ export async function npmFix( const packument = await fetchPackagePackument(name) if (!packument) { logger.warn(`Unexpected condition: No packument found for ${name}.\n`) - logger.dedent() - spinner?.dedent() + cleanupInfoEntriesLoop() continue infoEntriesLoop } @@ -249,8 +253,7 @@ export async function npmFix( if (!oldVersions.length) { debugFn(`skip: ${name} not found\n`) // Skip to next package. - logger.dedent() - spinner?.dedent() + cleanupInfoEntriesLoop() continue infoEntriesLoop } @@ -312,8 +315,7 @@ export async function npmFix( ) { debugFn(`skip: open PR found for ${name}@${newVersion}`) if (++count >= limit) { - logger.dedent() - spinner?.dedent() + cleanupInfoEntriesLoop() break infoEntriesLoop } continue infosLoop @@ -554,8 +556,7 @@ export async function npmFix( logger.fail(`Update failed for ${oldId} in ${workspace}.`, error) } if (++count >= limit) { - logger.dedent() - spinner?.dedent() + cleanupInfoEntriesLoop() break infoEntriesLoop } } @@ -571,8 +572,7 @@ export async function npmFix( if (!isLastInfoEntry) { logger.logNewline() } - logger.dedent() - spinner?.dedent() + cleanupInfoEntriesLoop() } spinner?.stop() diff --git a/src/commands/fix/pnpm-fix.mts b/src/commands/fix/pnpm-fix.mts index 9ec6a7acd..71505613f 100644 --- a/src/commands/fix/pnpm-fix.mts +++ b/src/commands/fix/pnpm-fix.mts @@ -230,7 +230,9 @@ export async function pnpmFix( return { ok: true, data: { fixed: false } } } - // baseBranch and branchParser are now from env + // Lazily access constants.packumentCache. + const { packumentCache } = constants + const workspacePkgJsonPaths = await globWorkspace( pkgEnvDetails.agent, rootPath, @@ -244,10 +246,14 @@ export async function pnpmFix( naturalCompare(a[0], b[0]), ) - const handleInstallFail = (): CResult<{ fixed: boolean }> => { + const cleanupInfoEntriesLoop = () => { logger.dedent() spinner?.dedent() + packumentCache.clear() + } + const handleInstallFail = (): CResult<{ fixed: boolean }> => { + cleanupInfoEntriesLoop() return { ok: false, message: 'Install failed', @@ -289,8 +295,7 @@ export async function pnpmFix( const packument = await fetchPackagePackument(name) if (!packument) { logger.warn(`Unexpected condition: No packument found for ${name}.\n`) - logger.dedent() - spinner?.dedent() + cleanupInfoEntriesLoop() continue infoEntriesLoop } @@ -350,8 +355,7 @@ export async function pnpmFix( if (!oldVersions.length) { debugFn(`skip: ${name} not found\n`) // Skip to next package. - logger.dedent() - spinner?.dedent() + cleanupInfoEntriesLoop() continue infoEntriesLoop } @@ -420,8 +424,7 @@ export async function pnpmFix( ) { debugFn(`skip: open PR found for ${name}@${newVersion}`) if (++count >= limit) { - logger.dedent() - spinner?.dedent() + cleanupInfoEntriesLoop() break infoEntriesLoop } continue infosLoop @@ -753,8 +756,7 @@ export async function pnpmFix( debugFn('name:', name) debugFn('increment: count', count + 1) if (++count >= limit) { - logger.dedent() - spinner?.dedent() + cleanupInfoEntriesLoop() break infoEntriesLoop } } @@ -770,8 +772,7 @@ export async function pnpmFix( if (!isLastInfoEntry) { logger.logNewline() } - logger.dedent() - spinner?.dedent() + cleanupInfoEntriesLoop() } spinner?.stop()