From dd73bc8c35e3472a4bb8eb436767b3681f052a41 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Wed, 30 Jan 2019 10:37:22 +0100 Subject: [PATCH] refactor: purl return subset --- lib/util/purl.js | 25 +++++++++++------------ test/util/__snapshots__/purl.spec.js.snap | 12 ----------- 2 files changed, 12 insertions(+), 25 deletions(-) diff --git a/lib/util/purl.js b/lib/util/purl.js index f3f3805f90..08b4d57d0e 100644 --- a/lib/util/purl.js +++ b/lib/util/purl.js @@ -25,14 +25,14 @@ function parse(input) { [remaining, purl.version] = parts; } parts = remaining.split('/'); - [purl.datasource, ...remaining] = parts; + [purl.type, ...remaining] = parts; if (remaining.length === 1) { [purl.name] = remaining; - purl.lookupName = purl.name; + purl.fullname = purl.name; } else { purl.name = remaining.pop(); purl.namespace = remaining.join('/').replace('%40', '@'); - purl.lookupName = purl.namespace + '/' + purl.name; + purl.fullname = purl.namespace + '/' + purl.name; } if (purl.qualifiers) { const allQualifiers = purl.qualifiers.split('&'); @@ -41,19 +41,18 @@ function parse(input) { const [key, val] = qualifier.split('='); purl.qualifiers[key] = val; }); - if (purl.qualifiers.repository_url) { - purl.registryUrls = purl.qualifiers.repository_url.split(','); - delete purl.qualifiers.repository_url; - } } else { 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) { - purl.lookupType = purl.subpath; - delete purl.subpath; + res.lookupType = purl.subpath; } - delete purl.namespace; - delete purl.name; - delete purl.version; // we don't use it - return purl; + return res; } diff --git a/test/util/__snapshots__/purl.spec.js.snap b/test/util/__snapshots__/purl.spec.js.snap index fed348fa3a..4bfeba0066 100644 --- a/test/util/__snapshots__/purl.spec.js.snap +++ b/test/util/__snapshots__/purl.spec.js.snap @@ -5,7 +5,6 @@ Object { "datasource": "github", "lookupName": "abc/def", "lookupType": "releases", - "qualifiers": Object {}, } `; @@ -13,7 +12,6 @@ exports[`util/purl parse() parses namespaced npm 1`] = ` Object { "datasource": "npm", "lookupName": "@foo/bar", - "qualifiers": Object {}, } `; @@ -21,7 +19,6 @@ exports[`util/purl parse() parses namespaced npm with version 1`] = ` Object { "datasource": "npm", "lookupName": "@foo/bar", - "qualifiers": Object {}, } `; @@ -29,9 +26,6 @@ exports[`util/purl parse() parses npm with version and 1 qualifier 1`] = ` Object { "datasource": "npm", "lookupName": "foo", - "qualifiers": Object { - "a": "b", - }, } `; @@ -39,10 +33,6 @@ exports[`util/purl parse() parses npm with version and 2 qualifiers 1`] = ` Object { "datasource": "npm", "lookupName": "foo", - "qualifiers": Object { - "a": "b", - "c": "d", - }, } `; @@ -50,7 +40,6 @@ exports[`util/purl parse() parses repository_url qualifier 1`] = ` Object { "datasource": "maven", "lookupName": "org.apache.xmlgraphics/batik-anim", - "qualifiers": Object {}, "registryUrls": Array [ "repo.spring.io/release", ], @@ -61,6 +50,5 @@ exports[`util/purl parse() parses simple npm 1`] = ` Object { "datasource": "npm", "lookupName": "foo", - "qualifiers": Object {}, } `; -- GitLab