Skip to content
Snippets Groups Projects
Commit dd73bc8c authored by Rhys Arkins's avatar Rhys Arkins
Browse files

refactor: purl return subset

parent 48ac359e
No related branches found
No related tags found
No related merge requests found
...@@ -25,14 +25,14 @@ function parse(input) { ...@@ -25,14 +25,14 @@ function parse(input) {
[remaining, purl.version] = parts; [remaining, purl.version] = parts;
} }
parts = remaining.split('/'); parts = remaining.split('/');
[purl.datasource, ...remaining] = parts; [purl.type, ...remaining] = parts;
if (remaining.length === 1) { if (remaining.length === 1) {
[purl.name] = remaining; [purl.name] = remaining;
purl.lookupName = purl.name; purl.fullname = purl.name;
} else { } else {
purl.name = remaining.pop(); purl.name = remaining.pop();
purl.namespace = remaining.join('/').replace('%40', '@'); purl.namespace = remaining.join('/').replace('%40', '@');
purl.lookupName = purl.namespace + '/' + purl.name; purl.fullname = purl.namespace + '/' + purl.name;
} }
if (purl.qualifiers) { if (purl.qualifiers) {
const allQualifiers = purl.qualifiers.split('&'); const allQualifiers = purl.qualifiers.split('&');
...@@ -41,19 +41,18 @@ function parse(input) { ...@@ -41,19 +41,18 @@ function parse(input) {
const [key, val] = qualifier.split('='); const [key, val] = qualifier.split('=');
purl.qualifiers[key] = val; purl.qualifiers[key] = val;
}); });
if (purl.qualifiers.repository_url) {
purl.registryUrls = purl.qualifiers.repository_url.split(',');
delete purl.qualifiers.repository_url;
}
} else { } else {
purl.qualifiers = {}; purl.qualifiers = {};
} }
const res = {
datasource: purl.type,
lookupName: purl.fullname,
};
if (purl.qualifiers.repository_url) {
res.registryUrls = purl.qualifiers.repository_url.split(',');
}
if (purl.subpath) { if (purl.subpath) {
purl.lookupType = purl.subpath; res.lookupType = purl.subpath;
delete purl.subpath;
} }
delete purl.namespace; return res;
delete purl.name;
delete purl.version; // we don't use it
return purl;
} }
...@@ -5,7 +5,6 @@ Object { ...@@ -5,7 +5,6 @@ Object {
"datasource": "github", "datasource": "github",
"lookupName": "abc/def", "lookupName": "abc/def",
"lookupType": "releases", "lookupType": "releases",
"qualifiers": Object {},
} }
`; `;
...@@ -13,7 +12,6 @@ exports[`util/purl parse() parses namespaced npm 1`] = ` ...@@ -13,7 +12,6 @@ exports[`util/purl parse() parses namespaced npm 1`] = `
Object { Object {
"datasource": "npm", "datasource": "npm",
"lookupName": "@foo/bar", "lookupName": "@foo/bar",
"qualifiers": Object {},
} }
`; `;
...@@ -21,7 +19,6 @@ exports[`util/purl parse() parses namespaced npm with version 1`] = ` ...@@ -21,7 +19,6 @@ exports[`util/purl parse() parses namespaced npm with version 1`] = `
Object { Object {
"datasource": "npm", "datasource": "npm",
"lookupName": "@foo/bar", "lookupName": "@foo/bar",
"qualifiers": Object {},
} }
`; `;
...@@ -29,9 +26,6 @@ exports[`util/purl parse() parses npm with version and 1 qualifier 1`] = ` ...@@ -29,9 +26,6 @@ exports[`util/purl parse() parses npm with version and 1 qualifier 1`] = `
Object { Object {
"datasource": "npm", "datasource": "npm",
"lookupName": "foo", "lookupName": "foo",
"qualifiers": Object {
"a": "b",
},
} }
`; `;
...@@ -39,10 +33,6 @@ exports[`util/purl parse() parses npm with version and 2 qualifiers 1`] = ` ...@@ -39,10 +33,6 @@ exports[`util/purl parse() parses npm with version and 2 qualifiers 1`] = `
Object { Object {
"datasource": "npm", "datasource": "npm",
"lookupName": "foo", "lookupName": "foo",
"qualifiers": Object {
"a": "b",
"c": "d",
},
} }
`; `;
...@@ -50,7 +40,6 @@ exports[`util/purl parse() parses repository_url qualifier 1`] = ` ...@@ -50,7 +40,6 @@ exports[`util/purl parse() parses repository_url qualifier 1`] = `
Object { Object {
"datasource": "maven", "datasource": "maven",
"lookupName": "org.apache.xmlgraphics/batik-anim", "lookupName": "org.apache.xmlgraphics/batik-anim",
"qualifiers": Object {},
"registryUrls": Array [ "registryUrls": Array [
"repo.spring.io/release", "repo.spring.io/release",
], ],
...@@ -61,6 +50,5 @@ exports[`util/purl parse() parses simple npm 1`] = ` ...@@ -61,6 +50,5 @@ exports[`util/purl parse() parses simple npm 1`] = `
Object { Object {
"datasource": "npm", "datasource": "npm",
"lookupName": "foo", "lookupName": "foo",
"qualifiers": Object {},
} }
`; `;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment