Skip to content

Commit

Permalink
feat(manager/npm): extract currentValue from Yarn 'npm:' prefixed ali…
Browse files Browse the repository at this point in the history
…as (#24568)

Co-authored-by: Rhys Arkins <rhys@arkins.net>
  • Loading branch information
emilbader and rarkins committed Sep 26, 2023
1 parent c3baf42 commit a62e656
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 5 deletions.
38 changes: 37 additions & 1 deletion lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap
Expand Up @@ -352,10 +352,46 @@ exports[`modules/manager/npm/extract/index .extractPackageFile() extracts npm pa
"prettyDepType": "dependency",
},
{
"currentValue": "npm:foo",
"currentValue": "^1.2.3",
"datasource": "npm",
"depName": "c",
"depType": "dependencies",
"npmPackageAlias": true,
"packageName": "c",
"prettyDepType": "dependency",
},
{
"currentValue": "1.2.3",
"datasource": "npm",
"depName": "d",
"depType": "dependencies",
"npmPackageAlias": true,
"packageName": "d",
"prettyDepType": "dependency",
},
{
"currentValue": "1.x.x",
"datasource": "npm",
"depName": "e",
"depType": "dependencies",
"npmPackageAlias": true,
"packageName": "e",
"prettyDepType": "dependency",
},
{
"currentValue": "foo",
"depName": "f",
"depType": "dependencies",
"npmPackageAlias": true,
"packageName": "f",
"prettyDepType": "dependency",
"skipReason": "unspecified-version",
},
{
"currentValue": "npm:@foo/@bar/@1.2.3",
"depName": "g",
"depType": "dependencies",
"npmPackageAlias": true,
"prettyDepType": "dependency",
"skipReason": "unspecified-version",
},
Expand Down
9 changes: 7 additions & 2 deletions lib/modules/manager/npm/extract/common/dependency.ts
Expand Up @@ -98,14 +98,19 @@ export function extractDependency(
if (dep.currentValue.startsWith('npm:')) {
dep.npmPackageAlias = true;
const valSplit = dep.currentValue.replace('npm:', '').split('@');
if (valSplit.length === 2) {
if (valSplit.length === 1) {
dep.packageName = depName;
dep.currentValue = valSplit[0];
} else if (valSplit.length === 2) {
dep.packageName = valSplit[0];
dep.currentValue = valSplit[1];
} else if (valSplit.length === 3) {
dep.packageName = valSplit[0] + '@' + valSplit[1];
dep.currentValue = valSplit[2];
} else {
logger.debug('Invalid npm package alias: ' + dep.currentValue);
logger.debug(
`Invalid npm package alias for dependency: "${depName}":"${dep.currentValue}"`
);
}
}
if (dep.currentValue.startsWith('file:')) {
Expand Down
25 changes: 23 additions & 2 deletions lib/modules/manager/npm/extract/index.spec.ts
Expand Up @@ -761,7 +761,11 @@ describe('modules/manager/npm/extract/index', () => {
dependencies: {
a: 'npm:foo@1',
b: 'npm:@foo/bar@1.2.3',
c: 'npm:foo',
c: 'npm:^1.2.3',
d: 'npm:1.2.3',
e: 'npm:1.x.x',
f: 'npm:foo',
g: 'npm:@foo/@bar/@1.2.3',
},
};
const pJsonStr = JSON.stringify(pJson);
Expand All @@ -770,11 +774,28 @@ describe('modules/manager/npm/extract/index', () => {
'package.json',
defaultExtractConfig
);
expect(logger.debug).toHaveBeenCalledWith(
'Invalid npm package alias for dependency: "g":"npm:@foo/@bar/@1.2.3"'
);
expect(res).toMatchSnapshot({
deps: [
{ packageName: 'foo' },
{ packageName: '@foo/bar' },
{ depName: 'c' },
{ packageName: 'c', currentValue: '^1.2.3' },
{ packageName: 'd', currentValue: '1.2.3' },
{ packageName: 'e', currentValue: '1.x.x' },
{
packageName: 'f',
currentValue: 'foo',
npmPackageAlias: true,
skipReason: 'unspecified-version',
},
{
depName: 'g',
currentValue: 'npm:@foo/@bar/@1.2.3',
npmPackageAlias: true,
skipReason: 'unspecified-version',
},
],
});
});
Expand Down

0 comments on commit a62e656

Please sign in to comment.