diff --git a/.changeset/ten-colts-melt.md b/.changeset/ten-colts-melt.md new file mode 100644 index 0000000000..7cfe4dcfb4 --- /dev/null +++ b/.changeset/ten-colts-melt.md @@ -0,0 +1,5 @@ +--- +"@pnpm/resolve-dependencies": patch +--- + +Don't fail when publishedBy date cannot be calculated. diff --git a/packages/core/test/install/timeBasedResolutionMode.ts b/packages/core/test/install/timeBasedResolutionMode.ts index a13d598378..ada4a42054 100644 --- a/packages/core/test/install/timeBasedResolutionMode.ts +++ b/packages/core/test/install/timeBasedResolutionMode.ts @@ -42,3 +42,8 @@ test('the lowest version of a direct dependency is installed when resolution mod '@pnpm.e2e/foo': '^100.1.0', }) }) + +test('time-based resolution mode should not fail when publishedBy date cannot be calculated', async () => { + prepareEmpty() + await install({}, await testDefaults({ resolutionMode: 'time-based' })) +}) diff --git a/packages/resolve-dependencies/src/resolveDependencies.ts b/packages/resolve-dependencies/src/resolveDependencies.ts index aca8d9a729..5ce3eb8c7f 100644 --- a/packages/resolve-dependencies/src/resolveDependencies.ts +++ b/packages/resolve-dependencies/src/resolveDependencies.ts @@ -355,8 +355,10 @@ async function resolveDependenciesOfImporters ( let time: Record | undefined if (ctx.resolutionMode === 'time-based') { const result = getPublishedByDate(resolveResults.map(({ pkgAddresses }) => pkgAddresses).flat(), ctx.wantedLockfile.time) - publishedBy = new Date(result.publishedBy.getTime() + 60 * 60 * 1000) // adding 1 hour delta - time = result.newTime + if (result.publishedBy) { + publishedBy = new Date(result.publishedBy.getTime() + 60 * 60 * 1000) // adding 1 hour delta + time = result.newTime + } } const pkgAddressesByImportersWithoutPeers = await Promise.all(zipWith(async (importer, { pkgAddresses, postponedResolutionsQueue }) => { const newPreferredVersions = { ...importer.preferredVersions }