Skip to content

Commit 52837c5

Browse files
committed
Use PackageURL.fromString to properly parse npm targetName
Signed-off-by: jdalton <[email protected]>
1 parent 438db35 commit 52837c5

File tree

1 file changed

+17
-36
lines changed

1 file changed

+17
-36
lines changed

lib/helpers/utils.js

Lines changed: 17 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,13 +1192,12 @@ export async function parsePkgLock(pkgLockFile, options = {}) {
11921192
}`
11931193
: author;
11941194
if (node === rootNode) {
1195-
purlString = new PackageURL(
1196-
"npm",
1197-
options.projectGroup || "",
1198-
"project-name" in options ? options.projectName : node.packageName,
1199-
options.projectVersion || node.version,
1200-
null,
1201-
null,
1195+
const projectGroup = options.projectGroup;
1196+
const projectName =
1197+
"project-name" in options ? options.projectName : node.packageName;
1198+
const projectVersion = options.projectVersion || node.version;
1199+
purlString = PackageURL.fromString(
1200+
`pkg:npm/${projectGroup ? `${encodeURIComponent(projectGroup).replace(/%2F/g, "/")}/` : ""}${encodeURIComponent(projectName).replace(/%2F/g, "/")}@${projectVersion}`,
12021201
)
12031202
.toString()
12041203
.replace(/%2F/g, "/");
@@ -1213,13 +1212,8 @@ export async function parsePkgLock(pkgLockFile, options = {}) {
12131212
"bom-ref": decodeURIComponent(purlString),
12141213
};
12151214
} else {
1216-
purlString = new PackageURL(
1217-
"npm",
1218-
"",
1219-
node.packageName,
1220-
node.version,
1221-
null,
1222-
null,
1215+
purlString = PackageURL.fromString(
1216+
`pkg:npm/${encodeURIComponent(node.packageName).replace(/%2F/g, "/")}@${node.version}`,
12231217
)
12241218
.toString()
12251219
.replace(/%2F/g, "/");
@@ -1558,7 +1552,9 @@ export async function parsePkgLock(pkgLockFile, options = {}) {
15581552
continue;
15591553
}
15601554
const depPurlString = decodeURIComponent(
1561-
new PackageURL("npm", "", targetName, targetVersion, null, null)
1555+
PackageURL.fromString(
1556+
`pkg:npm/${encodeURIComponent(targetName).replace(/%2F/g, "/")}@${targetVersion}`,
1557+
)
15621558
.toString()
15631559
.replace(/%2F/g, "/"),
15641560
);
@@ -1945,13 +1941,8 @@ export async function parseYarnLock(yarnLockFile) {
19451941
// Handle case where the dependency name is really an alias.
19461942
// Eg: legacy-swc-helpers "npm:@swc/helpers@=0.4.14". Here the dgroupname=@swc/helpers
19471943

1948-
const depPurlString = new PackageURL(
1949-
"npm",
1950-
null,
1951-
dgroupnameToUse,
1952-
resolvedVersion,
1953-
null,
1954-
null,
1944+
const depPurlString = PackageURL.fromString(
1945+
`pkg:npm/${encodeURIComponent(dgroupnameToUse).replace(/%2F/g, "/")}@${resolvedVersion}`,
19551946
).toString();
19561947
deplist.add(decodeURIComponent(depPurlString));
19571948
}
@@ -2556,13 +2547,8 @@ export async function parsePnpmLock(
25562547
if (vers?.includes("(")) {
25572548
vers = vers.split("(")[0];
25582549
}
2559-
const opurlString = new PackageURL(
2560-
"npm",
2561-
"",
2562-
opkgName,
2563-
vers,
2564-
null,
2565-
null,
2550+
const opurlString = PackageURL.fromString(
2551+
`pkg:npm${encodeURIComponent(opkgName).replace(/%2F/g, "/")}@${vers}`,
25662552
).toString();
25672553
const obomRef = decodeURIComponent(opurlString);
25682554
if (possibleOptionalDeps[obomRef] === undefined) {
@@ -2700,13 +2686,8 @@ export async function parsePnpmLock(
27002686
.replace(/^\//, "");
27012687
vers = overrideVersion;
27022688
}
2703-
const dpurlString = new PackageURL(
2704-
"npm",
2705-
"",
2706-
dpkgName,
2707-
vers,
2708-
null,
2709-
null,
2689+
const dpurlString = PackageURL.fromString(
2690+
`pkg:npm/${encodeURIComponent(dpkgName).replace(/%2F/g, "/")}@${vers}`,
27102691
).toString();
27112692
const dbomRef = decodeURIComponent(dpurlString);
27122693
deplist.push(dbomRef);

0 commit comments

Comments
 (0)