Skip to content

Commit

Permalink
feat: support pnpm.overrides (#28199)
Browse files Browse the repository at this point in the history
Co-authored-by: Rhys Arkins <rhys@arkins.net>
  • Loading branch information
DerTimonius and rarkins committed Apr 9, 2024
1 parent 867471a commit 6f785fd
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 0 deletions.
23 changes: 23 additions & 0 deletions lib/modules/manager/npm/extract/common/package-file.ts
Expand Up @@ -47,6 +47,7 @@ export function extractPackageJson(
resolutions: 'resolutions',
packageManager: 'packageManager',
overrides: 'overrides',
pnpm: 'pnpm',
};

for (const depType of Object.keys(depTypes) as (keyof typeof depTypes)[]) {
Expand Down Expand Up @@ -82,6 +83,28 @@ export function extractPackageJson(
val as unknown as NpmManagerData,
),
);
} else if (depType === 'pnpm' && depName === 'overrides') {
for (const [overridesKey, overridesVal] of Object.entries(
val as unknown as NpmPackageDependency,
)) {
if (is.string(overridesVal)) {
dep = {
depName: overridesKey,
depType: 'overrides',
...extractDependency(depName, overridesKey, overridesVal),
};
setNodeCommitTopic(dep);
dep.prettyDepType = depTypes[depName];
deps.push(dep);
} else if (is.object(overridesVal)) {
deps.push(
...extractOverrideDepsRec(
[overridesKey],
overridesVal as unknown as NpmManagerData,
),
);
}
}
} else {
// TODO: fix type #22198
dep = { ...dep, ...extractDependency(depType, depName, val!) };
Expand Down
81 changes: 81 additions & 0 deletions lib/modules/manager/npm/extract/index.spec.ts
Expand Up @@ -894,6 +894,87 @@ describe('modules/manager/npm/extract/index', () => {
],
});
});

it('extracts dependencies from pnpm.overrides', async () => {
const content = `{
"devDependencies": {
"@types/react": "18.0.5"
},
"pnpm": {
"overrides": {
"node": "8.9.2",
"@types/react": "18.0.5",
"baz": {
"node": "8.9.2",
"bar": {
"foo": "1.0.0"
}
},
"foo2": {
".": "1.0.0",
"bar2": "1.0.0"
},
"emptyObject":{}
}
}
}`;
const res = await npmExtract.extractPackageFile(
content,
'package.json',
defaultExtractConfig,
);
expect(res).toMatchObject({
deps: [
{
depType: 'devDependencies',
depName: '@types/react',
currentValue: '18.0.5',
datasource: 'npm',
prettyDepType: 'devDependency',
},
{
depType: 'overrides',
depName: 'node',
currentValue: '8.9.2',
datasource: 'npm',
commitMessageTopic: 'Node.js',
prettyDepType: 'overrides',
},
{
depType: 'overrides',
depName: '@types/react',
currentValue: '18.0.5',
datasource: 'npm',
prettyDepType: 'overrides',
},
{
depName: 'node',
managerData: { parents: ['baz'] },
commitMessageTopic: 'Node.js',
currentValue: '8.9.2',
datasource: 'npm',
},
{
depName: 'foo',
managerData: { parents: ['baz', 'bar'] },
currentValue: '1.0.0',
datasource: 'npm',
},
{
depName: 'foo2',
managerData: { parents: ['foo2'] },
currentValue: '1.0.0',
datasource: 'npm',
},
{
depName: 'bar2',
managerData: { parents: ['foo2'] },
currentValue: '1.0.0',
datasource: 'npm',
},
],
});
});
});

describe('.extractAllPackageFiles()', () => {
Expand Down

0 comments on commit 6f785fd

Please sign in to comment.