From 3afe96d50b73a6049f1d49fd085d1ccdbfe96e37 Mon Sep 17 00:00:00 2001 From: Joel Arvidsson Date: Thu, 18 Sep 2025 15:47:54 +0200 Subject: [PATCH 1/4] fix: quarantine candidates without publish time --- packages/plugin-npm/sources/npmConfigUtils.ts | 9 ++++++--- packages/plugin-npm/sources/npmHttpUtils.ts | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/plugin-npm/sources/npmConfigUtils.ts b/packages/plugin-npm/sources/npmConfigUtils.ts index 383a02bb912..e30e6189898 100644 --- a/packages/plugin-npm/sources/npmConfigUtils.ts +++ b/packages/plugin-npm/sources/npmConfigUtils.ts @@ -100,8 +100,11 @@ function shouldBeQuarantined({configuration, version, publishTimes}: IsPackageAp const minimalAgeGate = configuration.get(`npmMinimalAgeGate`); if (minimalAgeGate) { - const versionTime = new Date(publishTimes[version]); - const ageMinutes = (new Date().getTime() - versionTime.getTime()) / 60 / 1000; + const versionTime = publishTimes?.[version] ?? 0; + if (!versionTime) + return true; + + const ageMinutes = (new Date().getTime() - new Date(versionTime).getTime()) / 60 / 1000; if (ageMinutes < minimalAgeGate) { return true; } @@ -135,7 +138,7 @@ export type IsPackageApprovedOptions = { configuration: Configuration; ident: Ident; version: string; - publishTimes: Record; + publishTimes?: Record; }; function isPreapproved({configuration, ident, version}: IsPackageApprovedOptions) { diff --git a/packages/plugin-npm/sources/npmHttpUtils.ts b/packages/plugin-npm/sources/npmHttpUtils.ts index 441b343cb4c..eb11f8e192f 100644 --- a/packages/plugin-npm/sources/npmHttpUtils.ts +++ b/packages/plugin-npm/sources/npmHttpUtils.ts @@ -287,7 +287,7 @@ export type PackageMetadata = { tarball: string; }; }>; - time: Record; + time?: Record; }; function pickPackageMetadata(metadata: PackageMetadata): PackageMetadata { From 59eb7c6353209e213db362ee2356f9d8a2a42d2d Mon Sep 17 00:00:00 2001 From: Joel Arvidsson Date: Thu, 18 Sep 2025 16:07:26 +0200 Subject: [PATCH 2/4] Release strategy for @yarnpkg/plugin-npm --- .yarn/versions/f052fb6b.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .yarn/versions/f052fb6b.yml diff --git a/.yarn/versions/f052fb6b.yml b/.yarn/versions/f052fb6b.yml new file mode 100644 index 00000000000..03c82c60838 --- /dev/null +++ b/.yarn/versions/f052fb6b.yml @@ -0,0 +1,34 @@ +releases: + "@yarnpkg/builder": patch + "@yarnpkg/cli": patch + "@yarnpkg/core": patch + "@yarnpkg/doctor": patch + "@yarnpkg/extensions": patch + "@yarnpkg/nm": patch + "@yarnpkg/plugin-catalog": patch + "@yarnpkg/plugin-compat": patch + "@yarnpkg/plugin-constraints": patch + "@yarnpkg/plugin-dlx": patch + "@yarnpkg/plugin-essentials": patch + "@yarnpkg/plugin-exec": patch + "@yarnpkg/plugin-file": patch + "@yarnpkg/plugin-git": patch + "@yarnpkg/plugin-github": patch + "@yarnpkg/plugin-http": patch + "@yarnpkg/plugin-init": patch + "@yarnpkg/plugin-interactive-tools": patch + "@yarnpkg/plugin-jsr": patch + "@yarnpkg/plugin-link": patch + "@yarnpkg/plugin-nm": patch + "@yarnpkg/plugin-npm": patch + "@yarnpkg/plugin-npm-cli": patch + "@yarnpkg/plugin-pack": patch + "@yarnpkg/plugin-patch": patch + "@yarnpkg/plugin-pnp": patch + "@yarnpkg/plugin-pnpm": patch + "@yarnpkg/plugin-stage": patch + "@yarnpkg/plugin-typescript": patch + "@yarnpkg/plugin-version": patch + "@yarnpkg/plugin-workspace-tools": patch + "@yarnpkg/pnpify": patch + "@yarnpkg/sdks": patch From bb43761e0b57980f69ac0f2f29c4bcac422b9ebe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Thu, 18 Sep 2025 19:08:07 +0200 Subject: [PATCH 3/4] Versions --- .yarn/versions/f052fb6b.yml | 52 +++++++++++++++---------------------- 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/.yarn/versions/f052fb6b.yml b/.yarn/versions/f052fb6b.yml index 03c82c60838..f198b962fb4 100644 --- a/.yarn/versions/f052fb6b.yml +++ b/.yarn/versions/f052fb6b.yml @@ -1,34 +1,24 @@ releases: - "@yarnpkg/builder": patch "@yarnpkg/cli": patch - "@yarnpkg/core": patch - "@yarnpkg/doctor": patch - "@yarnpkg/extensions": patch - "@yarnpkg/nm": patch - "@yarnpkg/plugin-catalog": patch - "@yarnpkg/plugin-compat": patch - "@yarnpkg/plugin-constraints": patch - "@yarnpkg/plugin-dlx": patch - "@yarnpkg/plugin-essentials": patch - "@yarnpkg/plugin-exec": patch - "@yarnpkg/plugin-file": patch - "@yarnpkg/plugin-git": patch - "@yarnpkg/plugin-github": patch - "@yarnpkg/plugin-http": patch - "@yarnpkg/plugin-init": patch - "@yarnpkg/plugin-interactive-tools": patch - "@yarnpkg/plugin-jsr": patch - "@yarnpkg/plugin-link": patch - "@yarnpkg/plugin-nm": patch "@yarnpkg/plugin-npm": patch - "@yarnpkg/plugin-npm-cli": patch - "@yarnpkg/plugin-pack": patch - "@yarnpkg/plugin-patch": patch - "@yarnpkg/plugin-pnp": patch - "@yarnpkg/plugin-pnpm": patch - "@yarnpkg/plugin-stage": patch - "@yarnpkg/plugin-typescript": patch - "@yarnpkg/plugin-version": patch - "@yarnpkg/plugin-workspace-tools": patch - "@yarnpkg/pnpify": patch - "@yarnpkg/sdks": patch + +declined: + - "@yarnpkg/plugin-compat" + - "@yarnpkg/plugin-constraints" + - "@yarnpkg/plugin-dlx" + - "@yarnpkg/plugin-essentials" + - "@yarnpkg/plugin-init" + - "@yarnpkg/plugin-interactive-tools" + - "@yarnpkg/plugin-nm" + - "@yarnpkg/plugin-npm-cli" + - "@yarnpkg/plugin-pack" + - "@yarnpkg/plugin-patch" + - "@yarnpkg/plugin-pnp" + - "@yarnpkg/plugin-pnpm" + - "@yarnpkg/plugin-stage" + - "@yarnpkg/plugin-typescript" + - "@yarnpkg/plugin-version" + - "@yarnpkg/plugin-workspace-tools" + - "@yarnpkg/builder" + - "@yarnpkg/core" + - "@yarnpkg/doctor" From 32c8f5b65a3945e1bd1da32c3cdd01ed9b0afe38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ma=C3=ABl=20Nison?= Date: Thu, 18 Sep 2025 19:12:10 +0200 Subject: [PATCH 4/4] Slight tweak to avoid adding a magic zero --- packages/plugin-npm/sources/npmConfigUtils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/plugin-npm/sources/npmConfigUtils.ts b/packages/plugin-npm/sources/npmConfigUtils.ts index e30e6189898..5fc4ccb50ba 100644 --- a/packages/plugin-npm/sources/npmConfigUtils.ts +++ b/packages/plugin-npm/sources/npmConfigUtils.ts @@ -100,8 +100,8 @@ function shouldBeQuarantined({configuration, version, publishTimes}: IsPackageAp const minimalAgeGate = configuration.get(`npmMinimalAgeGate`); if (minimalAgeGate) { - const versionTime = publishTimes?.[version] ?? 0; - if (!versionTime) + const versionTime = publishTimes?.[version]; + if (typeof versionTime === `undefined`) return true; const ageMinutes = (new Date().getTime() - new Date(versionTime).getTime()) / 60 / 1000;