diff options
author | Ruben Rodriguez <ruben@gnu.org> | 2018-11-07 23:45:25 -0500 |
---|---|---|
committer | Ruben Rodriguez <ruben@gnu.org> | 2018-11-07 23:45:25 -0500 |
commit | 9fe427ff45778f53214ce110bf94fe43459491d1 (patch) | |
tree | 6e5cb35267234e58677d55141f05e2b8bcb3a43e /data/extensions/jid1-KtlZuoiikVfFew@jetpack/content/externalLicenseChecker.js | |
parent | 21250de51aae2f76cb33d4083d7c91d378c0055d (diff) |
Updated extensions through running updated data/update-extensions.sh
Diffstat (limited to 'data/extensions/jid1-KtlZuoiikVfFew@jetpack/content/externalLicenseChecker.js')
-rw-r--r-- | data/extensions/jid1-KtlZuoiikVfFew@jetpack/content/externalLicenseChecker.js | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/content/externalLicenseChecker.js b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/content/externalLicenseChecker.js index be09ef1..516057e 100644 --- a/data/extensions/jid1-KtlZuoiikVfFew@jetpack/content/externalLicenseChecker.js +++ b/data/extensions/jid1-KtlZuoiikVfFew@jetpack/content/externalLicenseChecker.js @@ -21,7 +21,7 @@ "use strict"; { let licensedScripts = null; - + let fetchWebLabels = async args => { // see https://www.gnu.org/software/librejs/free-your-javascript.html#step3 let {map, cache} = args; @@ -40,26 +40,31 @@ } else { doc.head.appendChild(doc.createElement("base")).href = baseURL; } - let firstURL = parent => parent.querySelector("a").href; - let allURLs = parent => Array.map(parent.querySelectorAll("a"), a => a.href); - for (let row of doc.querySelectorAll("table#jslicense-labels1 tr")) { - let cols = row.querySelectorAll("td"); - let scriptURL = firstURL(cols[0]); - let licenseURLs = allURLs(cols[1]); - let sourceURLs = cols[2] ? allURLs(cols[2]) : []; - map.set(scriptURL, {scriptURL, licenseURLs, sourceURLs}); + let link = a => ({ url: a.href, label: a.textContent }); + let firstLink = parent => link(parent.querySelector("a")); + let allLinks = parent => Array.map(parent.querySelectorAll("a"), link); + for (let row of doc.querySelectorAll("table#jslicense-labels1 > tbody > tr")) { + try { + let cols = row.querySelectorAll("td"); + let script = firstLink(cols[0]); + let licenseLinks = allLinks(cols[1]); + let sources = cols[2] ? allLinks(cols[2]) : []; + map.set(script.url, {script, licenseLinks, sources}); + } catch (e) { + console.error("LibreJS: error parsing Web Labels at %s, row %s", baseURL, row.innerHTML, e); + } } } catch (e) { console.error("Error fetching Web Labels at %o", link, e); } return map; } - + let fetchLicenseInfo = async cache => { let map = new Map(); let args = {map, cache}; // in the fetchXxx methods we add to a map whatever license(s) - // URLs and source code references we can find in various formats + // URLs and source code references we can find in various formats // (WebLabels is currently the only implementation), keyed by script URLs. await Promise.all([ fetchWebLabels(args), @@ -69,12 +74,12 @@ ]); return map; } - + let handlers = { async checkLicensedScript(m) { let {url, cache} = m; if (!licensedScripts) licensedScripts = await fetchLicenseInfo(cache); - return licensedScripts.get(url); + return licensedScripts.get(url) || licensedScripts.get(url.replace(/\?.*/, '')); } } |