diff --git a/.yarn/versions/bbd0ef35.yml b/.yarn/versions/bbd0ef35.yml new file mode 100644 index 00000000000..f198b962fb4 --- /dev/null +++ b/.yarn/versions/bbd0ef35.yml @@ -0,0 +1,24 @@ +releases: + "@yarnpkg/cli": patch + "@yarnpkg/plugin-npm": 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" diff --git a/packages/acceptance-tests/pkg-tests-core/sources/utils/tests.ts b/packages/acceptance-tests/pkg-tests-core/sources/utils/tests.ts index 49a68ae769d..b79db152c7d 100644 --- a/packages/acceptance-tests/pkg-tests-core/sources/utils/tests.ts +++ b/packages/acceptance-tests/pkg-tests-core/sources/utils/tests.ts @@ -181,6 +181,7 @@ const RELEASE_DATE_PACKAGES: Record> = { "release-date": { "1.0.0": new Date(new Date().getTime() - /* 10 days */ 1000 * 60 * 60 * 24 * 10).toISOString(), "1.1.0": new Date(new Date().getTime() - /* 5 days */ 1000 * 60 * 60 * 24 * 5).toISOString(), + "1.1.1-beta": new Date(new Date().getTime() - /* 3 days */ 1000 * 60 * 60 * 24 * 3).toISOString(), "1.1.1": new Date().toISOString(), }, "release-date-transitive": { diff --git a/packages/acceptance-tests/pkg-tests-fixtures/packages/release-date-1.1.1-beta/index.js b/packages/acceptance-tests/pkg-tests-fixtures/packages/release-date-1.1.1-beta/index.js new file mode 100644 index 00000000000..bb9c6f68761 --- /dev/null +++ b/packages/acceptance-tests/pkg-tests-fixtures/packages/release-date-1.1.1-beta/index.js @@ -0,0 +1,7 @@ +module.exports = require(`./package.json`); + +for (const key of [`dependencies`, `devDependencies`, `peerDependencies`]) { + for (const dep of Object.keys(module.exports[key] || {})) { + module.exports[key][dep] = require(dep); + } +} diff --git a/packages/acceptance-tests/pkg-tests-fixtures/packages/release-date-1.1.1-beta/package.json b/packages/acceptance-tests/pkg-tests-fixtures/packages/release-date-1.1.1-beta/package.json new file mode 100644 index 00000000000..f72141363cd --- /dev/null +++ b/packages/acceptance-tests/pkg-tests-fixtures/packages/release-date-1.1.1-beta/package.json @@ -0,0 +1,7 @@ +{ + "name": "release-date", + "version": "1.1.1-beta", + "dependencies": { + "release-date-transitive": "^1.0.0" + } +} diff --git a/packages/plugin-npm/sources/NpmTagResolver.ts b/packages/plugin-npm/sources/NpmTagResolver.ts index 45eb84e70ca..13a3ed8135c 100644 --- a/packages/plugin-npm/sources/NpmTagResolver.ts +++ b/packages/plugin-npm/sources/NpmTagResolver.ts @@ -59,8 +59,10 @@ export class NpmTagResolver implements Resolver { let version = distTags[tag]; if (tag === `latest` && !isPackageApproved({configuration: opts.project.configuration, ident: descriptor, version, publishTimes: times})) { + const toleratePrereleases = version.includes(`-`); + const nextVersion = semver.rsort(versions).find(candidateVersion => { - return semver.lt(candidateVersion, version) && isPackageApproved({configuration: opts.project.configuration, ident: descriptor, version: candidateVersion, publishTimes: times}); + return semver.lt(candidateVersion, version) && (toleratePrereleases || !candidateVersion.includes(`-`)) && isPackageApproved({configuration: opts.project.configuration, ident: descriptor, version: candidateVersion, publishTimes: times}); }); if (!nextVersion)