From f85ee2680c0b51c9d468edcc61fee91e8dfbc468 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Wed, 11 Jan 2023 18:25:48 +0100
Subject: [PATCH] fix(yarn): try/catch .yarnrc.yml parsing (#19787)

---
 lib/modules/manager/npm/extract/yarn.ts | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/lib/modules/manager/npm/extract/yarn.ts b/lib/modules/manager/npm/extract/yarn.ts
index a01d6f857c..0465a9ce52 100644
--- a/lib/modules/manager/npm/extract/yarn.ts
+++ b/lib/modules/manager/npm/extract/yarn.ts
@@ -51,14 +51,22 @@ export async function getYarnLock(filePath: string): Promise<LockFile> {
 }
 
 export function getZeroInstallPaths(yarnrcYml: string): string[] {
-  const conf = parseSyml(yarnrcYml);
+  let conf: any;
+  try {
+    conf = parseSyml(yarnrcYml);
+  } catch (err) /* istanbul ignore next */ {
+    logger.warn({ err }, 'Error parsing .yarnrc.yml');
+  }
   const paths = [
-    conf.cacheFolder || './.yarn/cache',
+    conf?.cacheFolder || './.yarn/cache',
     '.pnp.cjs',
     '.pnp.js',
     '.pnp.loader.mjs',
   ];
-  if (miscUtils.tryParseOptionalBoolean(conf.pnpEnableInlining) === false) {
+  if (
+    conf &&
+    miscUtils.tryParseOptionalBoolean(conf.pnpEnableInlining) === false
+  ) {
     paths.push(conf.pnpDataPath || './.pnp.data.json');
   }
   return paths;
-- 
GitLab