From e48b937d137a521d0c092a906e2812df7b48529c Mon Sep 17 00:00:00 2001 From: Andrew Lisowski Date: Fri, 14 Nov 2025 12:31:53 -0800 Subject: [PATCH 1/4] add timeout to npm view --- plugins/npm/src/index.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/plugins/npm/src/index.ts b/plugins/npm/src/index.ts index 92740e469..2ffd08cb9 100644 --- a/plugins/npm/src/index.ts +++ b/plugins/npm/src/index.ts @@ -40,12 +40,20 @@ const { isCi } = envCi(); /** Get the last published version for a npm package */ async function getPublishedVersion(name: string) { try { - return await execPromise("npm", [ - "view", - name, - "version", - "--registry", - await getRegistry(), + return await Promise.race([ + new Promise((_, reject) => { + setTimeout(() => { + reject(new Error("Timeout")); + }, 30_000); + }), + // This timeout is very very long (5+ minutes) + execPromise("npm", [ + "view", + name, + "version", + "--registry", + await getRegistry(), + ]), ]); } catch (error) {} } From 0d2bdd84ae346873cd8e3d6d753896ac62a2ad48 Mon Sep 17 00:00:00 2001 From: Andrew Lisowski Date: Fri, 14 Nov 2025 13:10:24 -0800 Subject: [PATCH 2/4] fix build --- plugins/npm/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/npm/src/index.ts b/plugins/npm/src/index.ts index 2ffd08cb9..4752e4190 100644 --- a/plugins/npm/src/index.ts +++ b/plugins/npm/src/index.ts @@ -41,7 +41,7 @@ const { isCi } = envCi(); async function getPublishedVersion(name: string) { try { return await Promise.race([ - new Promise((_, reject) => { + new Promise((_, reject) => { setTimeout(() => { reject(new Error("Timeout")); }, 30_000); From 9a1bb8027ffd43431a68dd7c8102efdace49c40a Mon Sep 17 00:00:00 2001 From: Andrew Lisowski Date: Fri, 14 Nov 2025 13:14:21 -0800 Subject: [PATCH 3/4] add message --- plugins/npm/src/index.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/npm/src/index.ts b/plugins/npm/src/index.ts index 4752e4190..1c38b6fd1 100644 --- a/plugins/npm/src/index.ts +++ b/plugins/npm/src/index.ts @@ -55,7 +55,11 @@ async function getPublishedVersion(name: string) { await getRegistry(), ]), ]); - } catch (error) {} + } catch (error) { + if (error instanceof Error && error.message.includes("Timeout")) { + console.error("Timeout getting published version for", name); + } + } } /** From e135ec962b4b6911e53d4f25a407626ce17a86a6 Mon Sep 17 00:00:00 2001 From: Andrew Lisowski Date: Fri, 14 Nov 2025 13:36:41 -0800 Subject: [PATCH 4/4] dont reject --- plugins/npm/src/index.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/npm/src/index.ts b/plugins/npm/src/index.ts index 1c38b6fd1..a7fbc7479 100644 --- a/plugins/npm/src/index.ts +++ b/plugins/npm/src/index.ts @@ -41,10 +41,8 @@ const { isCi } = envCi(); async function getPublishedVersion(name: string) { try { return await Promise.race([ - new Promise((_, reject) => { - setTimeout(() => { - reject(new Error("Timeout")); - }, 30_000); + new Promise((resolve) => { + setTimeout(resolve, 30_000); }), // This timeout is very very long (5+ minutes) execPromise("npm", [