diff --git a/lib/modules/manager/npm/__fixtures__/inputs/02.json b/lib/modules/manager/npm/__fixtures__/inputs/02.json index d17132e5db5831ba0a338d9db0e4c7c538017a48..024a963584e16c19a32efa1ffd678c20af9416c8 100644 --- a/lib/modules/manager/npm/__fixtures__/inputs/02.json +++ b/lib/modules/manager/npm/__fixtures__/inputs/02.json @@ -13,6 +13,11 @@ "@babel/core": "7.0.0", "config": "1.21.0" }, + "pnpm": { + "overrides": { + "express>cookie": "0.7.0" + } + }, "homepage": "https://keylocation.sg", "keywords": [ "Key Location", diff --git a/lib/modules/manager/npm/extract/common/package-file.ts b/lib/modules/manager/npm/extract/common/package-file.ts index 03882c1b172bdb2ef5a6c7b952c191fbd6f1a4f0..b81fbf137fbdecd0356d067aa65b06be8f73c005 100644 --- a/lib/modules/manager/npm/extract/common/package-file.ts +++ b/lib/modules/manager/npm/extract/common/package-file.ts @@ -84,19 +84,26 @@ export function extractPackageJson( ), ); } else if (depType === 'pnpm' && depName === 'overrides') { + // pnpm overrides + // https://pnpm.io/package_json#pnpmoverrides for (const [overridesKey, overridesVal] of Object.entries( val as unknown as NpmPackageDependency, )) { if (is.string(overridesVal)) { + // Newer flat syntax: `parent>parent>child` + const packageName = overridesKey.split('>').pop()!; dep = { depName: overridesKey, + packageName, depType: 'pnpm.overrides', - ...extractDependency(depName, overridesKey, overridesVal), + ...extractDependency(depName, packageName, overridesVal), }; setNodeCommitTopic(dep); + // TODO: Is this expected? It's always 'overrides'. dep.prettyDepType = depTypes[depName]; deps.push(dep); } else if (is.object(overridesVal)) { + // Older nested object syntax: `parent: { parent: { child: version } }` deps.push( ...extractOverrideDepsRec( [overridesKey], diff --git a/lib/modules/manager/npm/extract/index.spec.ts b/lib/modules/manager/npm/extract/index.spec.ts index cd9de9df4432518acb02d267087d719dde60f8a0..715692c11896e8448d8e70aba6a1d1426cc09aea 100644 --- a/lib/modules/manager/npm/extract/index.spec.ts +++ b/lib/modules/manager/npm/extract/index.spec.ts @@ -1052,6 +1052,14 @@ describe('modules/manager/npm/extract/index', () => { depType: 'dependencies', prettyDepType: 'dependency', }, + { + currentValue: '0.7.0', + datasource: 'npm', + depName: 'express>cookie', + packageName: 'cookie', + depType: 'pnpm.overrides', + prettyDepType: 'overrides', + }, ], extractedConstraints: {}, managerData: {