From 9b6b59dee967b1e1119366f40e5435deac07ad71 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Tue, 8 Feb 2022 21:23:00 +0100
Subject: [PATCH] feat(npm): efficient update-lockfile reuse for
 lockfileVersion>=2 (#14097)

---
 .../update/locked-dependency/package-lock/index.ts    | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/lib/manager/npm/update/locked-dependency/package-lock/index.ts b/lib/manager/npm/update/locked-dependency/package-lock/index.ts
index d54dae1023..d04035db36 100644
--- a/lib/manager/npm/update/locked-dependency/package-lock/index.ts
+++ b/lib/manager/npm/update/locked-dependency/package-lock/index.ts
@@ -39,10 +39,6 @@ export async function updateLockedDependency(
       logger.warn({ err }, 'Failed to parse files');
       return { status: 'update-failed' };
     }
-    if (packageLockJson.lockfileVersion === 2) {
-      logger.debug('Only lockfileVersion 1 is supported');
-      return { status: 'update-failed' };
-    }
     const lockedDeps = getLockedDependencies(
       packageLockJson,
       depName,
@@ -67,7 +63,12 @@ export async function updateLockedDependency(
         );
         status = 'already-updated';
       } else {
-        if (allowHigherOrRemoved) {
+        if (packageLockJson.lockfileVersion !== 1) {
+          logger.debug(
+            `Found lockfileVersion ${packageLockJson.lockfileVersion}`
+          );
+          status = 'update-failed';
+        } else if (allowHigherOrRemoved) {
           // it's acceptable if the package is no longer present
           const anyVersionLocked = getLockedDependencies(
             packageLockJson,
-- 
GitLab