From 33959ef7cb11fe4d6a7faeb29f36e8817a1e925e Mon Sep 17 00:00:00 2001 From: Rhys Arkins Date: Mon, 11 Mar 2024 09:44:14 +0100 Subject: [PATCH] fix(yarn): support v4 lock file detection and add forwards compatibility (#27835) --- lib/modules/manager/npm/extract/yarn.spec.ts | 6 ++++++ lib/modules/manager/npm/extract/yarn.ts | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/lib/modules/manager/npm/extract/yarn.spec.ts b/lib/modules/manager/npm/extract/yarn.spec.ts index 548efc97d07a36..824059547445ed 100644 --- a/lib/modules/manager/npm/extract/yarn.spec.ts +++ b/lib/modules/manager/npm/extract/yarn.spec.ts @@ -58,6 +58,12 @@ describe('modules/manager/npm/extract/yarn', () => { it('getYarnVersionFromLock', () => { expect(getYarnVersionFromLock({ isYarn1: true })).toBe('^1.22.18'); + expect( + getYarnVersionFromLock({ isYarn1: false, lockfileVersion: 12 }), + ).toBe('>=4.0.0'); + expect( + getYarnVersionFromLock({ isYarn1: false, lockfileVersion: 10 }), + ).toBe('^4.0.0'); expect(getYarnVersionFromLock({ isYarn1: false, lockfileVersion: 8 })).toBe( '^3.0.0', ); diff --git a/lib/modules/manager/npm/extract/yarn.ts b/lib/modules/manager/npm/extract/yarn.ts index cee4f157762780..77a7cf9afb964d 100644 --- a/lib/modules/manager/npm/extract/yarn.ts +++ b/lib/modules/manager/npm/extract/yarn.ts @@ -104,6 +104,13 @@ export function getYarnVersionFromLock(lockfile: LockFile): string { if (isYarn1) { return '^1.22.18'; } + if (lockfileVersion && lockfileVersion >= 12) { + // This will probably be v5 + return '>=4.0.0'; + } + if (lockfileVersion && lockfileVersion >= 10) { + return '^4.0.0'; + } if (lockfileVersion && lockfileVersion >= 8) { // https://github.com/yarnpkg/berry/commit/9bcd27ae34aee77a567dd104947407532fa179b3 return '^3.0.0';