Build v6.3.0

main
Elbert Alias 4 years ago
parent 44563ed178
commit f7f1ba5d7e

@ -16,7 +16,7 @@
}, },
"scripts": { "scripts": {
"link": "node ./bin/link.js", "link": "node ./bin/link.js",
"lint": "eslint src/**/*.js", "lint": "eslint --fix src/**/*.js",
"validate": "yarn run lint && jsonlint -qV ./schema.json ./src/apps.json && node ./bin/validate.js", "validate": "yarn run lint && jsonlint -qV ./schema.json ./src/apps.json && node ./bin/validate.js",
"convert": "cd ./src/drivers/webextension/images/icons ; cp *.svg converted ; cd converted ; convert-svg-to-png *.svg --width 32 --height 32 ; rm *.svg", "convert": "cd ./src/drivers/webextension/images/icons ; cp *.svg converted ; cd converted ; convert-svg-to-png *.svg --width 32 --height 32 ; rm *.svg",
"prettify": "jsonlint -si --trim-trailing-commas --enforce-double-quotes ./src/apps.json", "prettify": "jsonlint -si --trim-trailing-commas --enforce-double-quotes ./src/apps.json",

@ -322,21 +322,21 @@
10, 10,
61 61
], ],
"icon": "Adobe Analytics.svg",
"js": { "js": {
"s_c_il.0._c": "s_c", "s_c_il.0._c": "s_c",
"s_c_il.1._c": "s_c",
"s_c_il.2._c": "s_c",
"s_c_il.3._c": "s_c",
"s_c_il.4._c": "s_c",
"s_c_il.5._c": "s_c",
"s_c_il.0.constructor.name": "AppMeasurement", "s_c_il.0.constructor.name": "AppMeasurement",
"s_c_il.1._c": "s_c",
"s_c_il.1.constructor.name": "AppMeasurement", "s_c_il.1.constructor.name": "AppMeasurement",
"s_c_il.2._c": "s_c",
"s_c_il.2.constructor.name": "AppMeasurement", "s_c_il.2.constructor.name": "AppMeasurement",
"s_c_il.3._c": "s_c",
"s_c_il.3.constructor.name": "AppMeasurement", "s_c_il.3.constructor.name": "AppMeasurement",
"s_c_il.4._c": "s_c",
"s_c_il.4.constructor.name": "AppMeasurement", "s_c_il.4.constructor.name": "AppMeasurement",
"s_c_il.5._c": "s_c",
"s_c_il.5.constructor.name": "AppMeasurement" "s_c_il.5.constructor.name": "AppMeasurement"
}, },
"icon": "Adobe Analytics.svg",
"website": "https://www.adobe.com/analytics/adobe-analytics.html" "website": "https://www.adobe.com/analytics/adobe-analytics.html"
}, },
"Adobe ColdFusion": { "Adobe ColdFusion": {
@ -377,20 +377,20 @@
"<div[^>]+data-component-path=\"[^\"+]jcr:", "<div[^>]+data-component-path=\"[^\"+]jcr:",
"<div class=\"[^\"]*aem-Grid" "<div class=\"[^\"]*aem-Grid"
], ],
"icon": "Adobe Experience Manager.svg", "icon": "Adobe.svg",
"implies": "Java", "implies": "Java",
"script": [ "script": [
"/etc/designs/", "/etc/designs/",
"/etc/clientlibs/", "/etc/clientlibs/",
"/etc\\.clientlibs/" "/etc\\.clientlibs/"
], ],
"icon": "Adobe.svg",
"website": "https://www.adobe.com/marketing/experience-manager.html" "website": "https://www.adobe.com/marketing/experience-manager.html"
}, },
"Adobe Experience Platform Identity Service": { "Adobe Experience Platform Identity Service": {
"cats": [ "cats": [
61 61
], ],
"icon": "Adobe.svg",
"js": { "js": {
"s_c_il.0._c": "Visitor", "s_c_il.0._c": "Visitor",
"s_c_il.1._c": "Visitor", "s_c_il.1._c": "Visitor",
@ -399,7 +399,6 @@
"s_c_il.4._c": "Visitor", "s_c_il.4._c": "Visitor",
"s_c_il.5._c": "Visitor" "s_c_il.5._c": "Visitor"
}, },
"icon": "Adobe.svg",
"website": "https://docs.adobe.com/content/help/en/id-service/using/home.html" "website": "https://docs.adobe.com/content/help/en/id-service/using/home.html"
}, },
"Adobe GoLive": { "Adobe GoLive": {
@ -437,11 +436,11 @@
32, 32,
61 61
], ],
"icon": "Adobe.svg",
"js": { "js": {
"adobe.target": "", "adobe.target": "",
"adobe.target.VERSION": "^(.+)$\\;version:\\1" "adobe.target.VERSION": "^(.+)$\\;version:\\1"
}, },
"icon": "Adobe.svg",
"website": "https://www.adobe.com/marketing/target.html" "website": "https://www.adobe.com/marketing/target.html"
}, },
"AdonisJS": { "AdonisJS": {
@ -1650,7 +1649,7 @@
"meta": { "meta": {
"generator": "^Blogger$" "generator": "^Blogger$"
}, },
"url": "^https?://[^/]+\\.(blogspot|blogger)\\.com", "url": "^https?://[^/]+\\.(?:blogspot|blogger)\\.com",
"website": "http://www.blogger.com" "website": "http://www.blogger.com"
}, },
"Bloomreach": { "Bloomreach": {
@ -3373,19 +3372,6 @@
"script": "googletagservices\\.com/tag/js/gpt(?:_mobile)?\\.js", "script": "googletagservices\\.com/tag/js/gpt(?:_mobile)?\\.js",
"website": "http://www.google.com/dfp" "website": "http://www.google.com/dfp"
}, },
"Duopana": {
"cats": [
1,
11,
51,
53,
61
],
"html": "(?:<!-- \/*BeraCode script)",
"icon": "Duopana.svg",
"script": "\\*berajs.beracode.com\\*",
"website": "https://duopana.com/"
},
"DovetailWRP": { "DovetailWRP": {
"cats": [ "cats": [
1 1
@ -3466,6 +3452,19 @@
}, },
"website": "https://www.duda.co/website-builder" "website": "https://www.duda.co/website-builder"
}, },
"Duopana": {
"cats": [
1,
11,
51,
53,
61
],
"html": "(?:<!-- /*BeraCode script)",
"icon": "Duopana.svg",
"script": "\\*berajs.beracode.com\\*",
"website": "https://duopana.com/"
},
"Dynamicweb": { "Dynamicweb": {
"cats": [ "cats": [
1, 1,
@ -3486,13 +3485,13 @@
"cats": [ "cats": [
10 10
], ],
"cookies": {
"dtCookie1": ""
},
"icon": "Dynatrace.png", "icon": "Dynatrace.png",
"js": { "js": {
"dtrum": "" "dtrum": ""
}, },
"cookies": {
"dtCookie1": ""
},
"website": "https://www.dynatrace.com" "website": "https://www.dynatrace.com"
}, },
"EC-CUBE": { "EC-CUBE": {
@ -3944,16 +3943,6 @@
"script": "//connect\\.facebook\\.net/[^/]*/[a-z]*\\.js", "script": "//connect\\.facebook\\.net/[^/]*/[a-z]*\\.js",
"website": "http://facebook.com" "website": "http://facebook.com"
}, },
"Login with Amazon": {
"cats": [
69
],
"icon": "Amazon.svg",
"js": {
"onAmazonLoginReady": ""
},
"website": "https://developer.amazon.com/apps-and-games/login-with-amazon"
},
"Facebook Sign-in": { "Facebook Sign-in": {
"cats": [ "cats": [
69 69
@ -6894,6 +6883,16 @@
"script": "lodash.*\\.js", "script": "lodash.*\\.js",
"website": "http://www.lodash.com" "website": "http://www.lodash.com"
}, },
"Login with Amazon": {
"cats": [
69
],
"icon": "Amazon.svg",
"js": {
"onAmazonLoginReady": ""
},
"website": "https://developer.amazon.com/apps-and-games/login-with-amazon"
},
"Logitech Media Server": { "Logitech Media Server": {
"cats": [ "cats": [
22, 22,
@ -10451,11 +10450,11 @@
"cats": [ "cats": [
19 19
], ],
"icon": "Scaleway.png",
"website": "https://www.scaleway.com/",
"html": [ "html": [
"scw.cloud" "scw.cloud"
] ],
"icon": "Scaleway.png",
"website": "https://www.scaleway.com/"
}, },
"Scenari": { "Scenari": {
"cats": [ "cats": [
@ -11057,6 +11056,22 @@
}, },
"website": "http://www.seneca.nl/pub/Smartsite/Smartsite-Smartsite-iXperion" "website": "http://www.seneca.nl/pub/Smartsite/Smartsite-Smartsite-iXperion"
}, },
"Smartstore": {
"cats": [
1,
6
],
"cookies": {
"SMARTSTORE.VISITOR": ""
},
"html": "<!--Powered by Smartstore - https://www\\.smartstore\\.com-->",
"icon": "Smartstore.png",
"implies": "Microsoft ASP.NET",
"meta": {
"generator": "^Smartstore (.+)$\\;version:\\1"
},
"website": "https://www.smartstore.com"
},
"Smartstore biz": { "Smartstore biz": {
"cats": [ "cats": [
6 6
@ -11064,40 +11079,23 @@
"icon": "Smartstore.biz.png", "icon": "Smartstore.biz.png",
"script": "smjslib\\.js", "script": "smjslib\\.js",
"website": "http://smartstore.com" "website": "http://smartstore.com"
} },
, "Smartstore.NET": {
"Smartstore.NET": { "cats": [
"cats": [ 1,
1, 6
6 ],
], "cookies": {
"cookies": {
"SMARTSTORE.VISITOR": ""
},
"html": "<!--Powered by SmartStore\\.NET - https://www\\.smartstore\\.com-->",
"icon": "smartstore.png",
"implies": "Microsoft ASP.NET",
"meta": {
"generator": "^SmartStore.NET (.+)$\\;version:\\1"
},
"website": "https://www.smartstore.com"
},
"Smartstore": {
"cats": [
1,
6
],
"cookies": {
"SMARTSTORE.VISITOR": "" "SMARTSTORE.VISITOR": ""
}, },
"html": "<!--Powered by Smartstore - https://www\\.smartstore\\.com-->", "html": "<!--Powered by SmartStore\\.NET - https://www\\.smartstore\\.com-->",
"icon": "Smartstore.png", "icon": "smartstore.png",
"implies": "Microsoft ASP.NET", "implies": "Microsoft ASP.NET",
"meta": { "meta": {
"generator": "^Smartstore (.+)$\\;version:\\1" "generator": "^SmartStore.NET (.+)$\\;version:\\1"
}, },
"website": "https://www.smartstore.com" "website": "https://www.smartstore.com"
}, },
"Snap": { "Snap": {
"cats": [ "cats": [
18, 18,
@ -11122,9 +11120,9 @@
"website": "http://snapsvg.io" "website": "http://snapsvg.io"
}, },
"Snipcart": { "Snipcart": {
"cats": [6], "cats": [
"website": "https://snipcart.com/", 6
"icon": "Snipcart.png", ],
"cookies": { "cookies": {
"snipcart-cart": "" "snipcart-cart": ""
}, },
@ -11132,7 +11130,9 @@
"<link [^>]*href=\".*snipcart\\.css\"", "<link [^>]*href=\".*snipcart\\.css\"",
"<div [^>]*id=\".*snipcart.*\"" "<div [^>]*id=\".*snipcart.*\""
], ],
"script": "https://cdn\\.snipcart\\.com/themes/v([\\w.]+)/default/snipcart\\.js\\;version:\\1" "icon": "Snipcart.png",
"script": "https://cdn\\.snipcart\\.com/themes/v([\\w.]+)/default/snipcart\\.js\\;version:\\1",
"website": "https://snipcart.com/"
}, },
"Snoobi": { "Snoobi": {
"cats": [ "cats": [
@ -14336,6 +14336,17 @@
"script": "https://hcaptcha.com/([\\d]+?)/api.js\\;version:\\1", "script": "https://hcaptcha.com/([\\d]+?)/api.js\\;version:\\1",
"website": "https://www.hcaptcha.com/" "website": "https://www.hcaptcha.com/"
}, },
"hantana": {
"cats": [
10
],
"icon": "hantana.png",
"js": {
"Hantana": ""
},
"script": "//hantana\\.org/widget",
"website": "https://hantana.org/"
},
"iEXExchanger": { "iEXExchanger": {
"cats": [ "cats": [
1 1
@ -15337,17 +15348,6 @@
"generator": "xt:Commerce" "generator": "xt:Commerce"
}, },
"website": "https://www.xt-commerce.com" "website": "https://www.xt-commerce.com"
},
"hantana": {
"cats": [
10
],
"icon": "hantana.png",
"js": {
"Hantana": ""
},
"script": "//hantana\\.org/widget",
"website": "https://hantana.org/"
} }
}, },
"categories": { "categories": {
@ -15620,4 +15620,4 @@
"priority": 6 "priority": 6
} }
} }
} }

@ -19,7 +19,7 @@ const aliases = {
m: 'maxUrls', m: 'maxUrls',
P: 'pretty', P: 'pretty',
r: 'recursive', r: 'recursive',
w: 'maxWait' w: 'maxWait',
} }
while (true) { while (true) {
@ -76,7 +76,7 @@ Options:
process.exit(1) process.exit(1)
} }
;(async function() { ;(async function () {
const wappalyzer = await new Wappalyzer(options) const wappalyzer = await new Wappalyzer(options)
try { try {

@ -13,7 +13,7 @@
"software" "software"
], ],
"homepage": "https://www.wappalyzer.com", "homepage": "https://www.wappalyzer.com",
"version": "6.2.6", "version": "6.3.0",
"author": "Wappalyzer", "author": "Wappalyzer",
"license": "MIT", "license": "MIT",
"repository": { "repository": {
@ -37,4 +37,4 @@
"dependencies": { "dependencies": {
"puppeteer": "^5.2.1" "puppeteer": "^5.2.1"
} }
} }

@ -70,7 +70,7 @@ const Content = {
Content.driver('onContentLoad', [ Content.driver('onContentLoad', [
location.href, location.href,
{ html, scripts, meta }, { html, scripts, meta },
language language,
]) ])
Content.onGetTechnologies(await Content.driver('getTechnologies')) Content.onGetTechnologies(await Content.driver('getTechnologies'))
@ -85,7 +85,7 @@ const Content = {
{ {
source: 'content.js', source: 'content.js',
func, func,
args: args ? (Array.isArray(args) ? args : [args]) : [] args: args ? (Array.isArray(args) ? args : [args]) : [],
}, },
(response) => { (response) => {
chrome.runtime.lastError chrome.runtime.lastError
@ -115,7 +115,7 @@ const Content = {
chrome.runtime.sendMessage({ chrome.runtime.sendMessage({
source: 'content.js', source: 'content.js',
func: 'analyzeJs', func: 'analyzeJs',
args: [location.href.split('#')[0], data.wappalyzer.js] args: [location.href.split('#')[0], data.wappalyzer.js],
}) })
script.remove() script.remove()
@ -127,15 +127,15 @@ const Content = {
wappalyzer: { wappalyzer: {
technologies: technologies technologies: technologies
.filter(({ js }) => Object.keys(js).length) .filter(({ js }) => Object.keys(js).length)
.map(({ name, js }) => ({ name, chains: Object.keys(js) })) .map(({ name, js }) => ({ name, chains: Object.keys(js) })),
} },
}) })
} }
script.setAttribute('src', chrome.extension.getURL('js/inject.js')) script.setAttribute('src', chrome.extension.getURL('js/inject.js'))
document.body.appendChild(script) document.body.appendChild(script)
} },
} }
if (/complete|interactive|loaded/.test(document.readyState)) { if (/complete|interactive|loaded/.test(document.readyState)) {

@ -7,7 +7,7 @@ const {
setCategories, setCategories,
analyze, analyze,
analyzeManyToMany, analyzeManyToMany,
resolve resolve,
} = Wappalyzer } = Wappalyzer
const { agent, promisify, getOption, setOption, open } = Utils const { agent, promisify, getOption, setOption, open } = Utils
@ -34,25 +34,25 @@ const Driver = {
({ ({
technology: name, technology: name,
pattern: { regex, confidence }, pattern: { regex, confidence },
version version,
}) => ({ }) => ({
technology: Wappalyzer.technologies.find( technology: Wappalyzer.technologies.find(
({ name: _name }) => name === _name ({ name: _name }) => name === _name
), ),
pattern: { pattern: {
regex: new RegExp(regex, 'i'), regex: new RegExp(regex, 'i'),
confidence confidence,
}, },
version version,
}) })
) ),
} },
}), }),
{} {}
), ),
tabs: {}, tabs: {},
robots: await getOption('robots', {}), robots: await getOption('robots', {}),
ads: await getOption('ads', []) ads: await getOption('ads', []),
} }
chrome.browserAction.setBadgeBackgroundColor({ color: '#6B39BD' }, () => {}) chrome.browserAction.setBadgeBackgroundColor({ color: '#6B39BD' }, () => {})
@ -126,7 +126,7 @@ const Driver = {
try { try {
return fetch(url, { return fetch(url, {
method: 'POST', method: 'POST',
body: JSON.stringify(body) body: JSON.stringify(body),
}) })
} catch (error) { } catch (error) {
throw new Error(error.message || error.toString()) throw new Error(error.message || error.toString())
@ -194,7 +194,7 @@ const Driver = {
try { try {
const [tab] = await promisify(chrome.tabs, 'query', { const [tab] = await promisify(chrome.tabs, 'query', {
url: [request.url] url: [request.url],
}) })
if (tab) { if (tab) {
@ -233,12 +233,12 @@ const Driver = {
items.cookies = ( items.cookies = (
await promisify(chrome.cookies, 'getAll', { await promisify(chrome.cookies, 'getAll', {
domain: `.${hostname}` domain: `.${hostname}`,
}) })
).reduce( ).reduce(
(cookies, { name, value }) => ({ (cookies, { name, value }) => ({
...cookies, ...cookies,
[name]: [value] [name]: [value],
}), }),
{} {}
) )
@ -288,9 +288,9 @@ const Driver = {
...(Driver.cache.hostnames[hostname] || { ...(Driver.cache.hostnames[hostname] || {
url: `${protocol}//${hostname}`, url: `${protocol}//${hostname}`,
detections: [], detections: [],
hits: incrementHits ? 0 : 1 hits: incrementHits ? 0 : 1,
}), }),
dateTime: Date.now() dateTime: Date.now(),
}) })
// Remove duplicates // Remove duplicates
@ -336,17 +336,17 @@ const Driver = {
({ ({
technology: { name: technology }, technology: { name: technology },
pattern: { regex, confidence }, pattern: { regex, confidence },
version version,
}) => ({ }) => ({
technology, technology,
pattern: { pattern: {
regex: regex.source, regex: regex.source,
confidence confidence,
}, },
version version,
}) })
) ),
} },
}), }),
{} {}
) )
@ -402,7 +402,9 @@ const Driver = {
{ {
tabId, tabId,
text: text:
badge && technologies.length ? technologies.length.toString() : '' badge && technologies.length
? technologies.length.toString()
: '',
}, },
() => {} () => {}
) )
@ -416,7 +418,7 @@ const Driver = {
? `converted/${icon.replace(/\.svg$/, '.png')}` ? `converted/${icon.replace(/\.svg$/, '.png')}`
: icon : icon
}` }`
) ),
}, },
() => {} () => {}
) )
@ -430,7 +432,7 @@ const Driver = {
async getDetections() { async getDetections() {
const [{ id, url }] = await promisify(chrome.tabs, 'query', { const [{ id, url }] = await promisify(chrome.tabs, 'query', {
active: true, active: true,
currentWindow: true currentWindow: true,
}) })
if (await Driver.isDisabledDomain(url)) { if (await Driver.isDisabledDomain(url)) {
@ -462,12 +464,13 @@ const Driver = {
try { try {
Driver.cache.robots[hostname] = await Promise.race([ Driver.cache.robots[hostname] = await Promise.race([
// eslint-disable-next-line no-async-promise-executor
new Promise(async (resolve) => { new Promise(async (resolve) => {
const response = await fetch( const response = await fetch(
`http${secure ? 's' : ''}://${hostname}/robots.txt`, `http${secure ? 's' : ''}://${hostname}/robots.txt`,
{ {
redirect: 'follow', redirect: 'follow',
mode: 'no-cors' mode: 'no-cors',
} }
) )
@ -497,7 +500,7 @@ const Driver = {
}, []) }, [])
) )
}), }),
new Promise((resolve) => setTimeout(() => resolve(''), 5000)) new Promise((resolve) => setTimeout(() => resolve(''), 5000)),
]) ])
Driver.cache.robots = Object.keys(Driver.cache.robots) Driver.cache.robots = Object.keys(Driver.cache.robots)
@ -505,7 +508,7 @@ const Driver = {
.reduce( .reduce(
(cache, hostname) => ({ (cache, hostname) => ({
...cache, ...cache,
[hostname]: Driver.cache.robots[hostname] [hostname]: Driver.cache.robots[hostname],
}), }),
{} {}
) )
@ -578,7 +581,7 @@ const Driver = {
if (confidence === 100) { if (confidence === 100) {
technologies[name] = { technologies[name] = {
version, version,
hits hits,
} }
} }
@ -587,8 +590,8 @@ const Driver = {
{} {}
), ),
meta: { meta: {
language language,
} },
} }
} }
@ -613,7 +616,7 @@ const Driver = {
await setOption('ads', (Driver.cache.ads = [])) await setOption('ads', (Driver.cache.ads = []))
} }
} }
} },
} }
Driver.init() Driver.init()

@ -1,6 +1,6 @@
/* eslint-env browser */ /* eslint-env browser */
;(function() { ;(function () {
try { try {
const onMessage = ({ data }) => { const onMessage = ({ data }) => {
if (!data.wappalyzer) { if (!data.wappalyzer) {
@ -21,7 +21,7 @@
(value, method) => (value, method) =>
value && value &&
value instanceof Object && value instanceof Object &&
value.hasOwnProperty(method) Object.prototype.hasOwnProperty.call(value, method)
? value[method] ? value[method]
: undefined, : undefined,
window window
@ -34,14 +34,14 @@
value: value:
typeof value === 'string' || typeof value === 'number' typeof value === 'string' || typeof value === 'number'
? value ? value
: !!value : !!value,
}) })
} }
}) })
return technologies return technologies
}, []) }, []),
} },
}) })
} }

@ -21,12 +21,13 @@ const Options = {
['dynamicIcon', false], ['dynamicIcon', false],
['badge', true], ['badge', true],
['tracking', true], ['tracking', true],
['themeMode', false] ['themeMode', false],
].map(async ([option, defaultValue]) => { ].map(async ([option, defaultValue]) => {
const el = document const el = document
.querySelector( .querySelector(
`[data-i18n="option${option.charAt(0).toUpperCase() + `[data-i18n="option${
option.slice(1)}"]` option.charAt(0).toUpperCase() + option.slice(1)
}"]`
) )
.parentNode.querySelector('input') .parentNode.querySelector('input')
@ -50,7 +51,7 @@ const Options = {
{ {
source: 'content.js', source: 'content.js',
func, func,
args: args ? (Array.isArray(args) ? args : [args]) : [] args: args ? (Array.isArray(args) ? args : [args]) : [],
}, },
(response) => { (response) => {
chrome.runtime.lastError chrome.runtime.lastError
@ -59,7 +60,7 @@ const Options = {
} }
) )
}) })
} },
} }
if (/complete|interactive|loaded/.test(document.readyState)) { if (/complete|interactive|loaded/.test(document.readyState)) {

@ -9,7 +9,7 @@ const {
getOption, getOption,
setOption, setOption,
promisify, promisify,
sendMessage sendMessage,
} = Utils } = Utils
function setDisabledDomain(enabled) { function setDisabledDomain(enabled) {
@ -83,7 +83,7 @@ const Popup = {
// Alert // Alert
const tabs = await promisify(chrome.tabs, 'query', { const tabs = await promisify(chrome.tabs, 'query', {
active: true, active: true,
currentWindow: true currentWindow: true,
}) })
if (tabs && tabs.length) { if (tabs && tabs.length) {
@ -168,7 +168,7 @@ const Popup = {
technology.categories.forEach((category) => { technology.categories.forEach((category) => {
categories[category.id] = categories[category.id] || { categories[category.id] = categories[category.id] || {
...category, ...category,
technologies: [] technologies: [],
} }
categories[category.id].technologies.push(technology) categories[category.id].technologies.push(technology)
@ -296,7 +296,7 @@ const Popup = {
) )
i18n() i18n()
} },
} }
if (/complete|interactive|loaded/.test(document.readyState)) { if (/complete|interactive|loaded/.test(document.readyState)) {

@ -60,7 +60,7 @@ const Utils = {
async setOption(name, value) { async setOption(name, value) {
try { try {
await Utils.promisify(chrome.storage.local, 'set', { await Utils.promisify(chrome.storage.local, 'set', {
[name]: value [name]: value,
}) })
} catch (error) { } catch (error) {
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
@ -83,7 +83,7 @@ const Utils = {
{ {
source, source,
func, func,
args: args ? (Array.isArray(args) ? args : [args]) : [] args: args ? (Array.isArray(args) ? args : [args]) : [],
}, },
(response) => { (response) => {
chrome.runtime.lastError chrome.runtime.lastError
@ -92,5 +92,5 @@ const Utils = {
} }
) )
}) })
} },
} }

@ -4,7 +4,7 @@
"author": "Wappalyzer", "author": "Wappalyzer",
"homepage_url": "https://www.wappalyzer.com", "homepage_url": "https://www.wappalyzer.com",
"description": "Identify web technologies", "description": "Identify web technologies",
"version": "6.2.4", "version": "6.3.0",
"default_locale": "en", "default_locale": "en",
"manifest_version": 2, "manifest_version": 2,
"icons": { "icons": {

@ -13,7 +13,7 @@
"software" "software"
], ],
"homepage": "https://www.wappalyzer.com", "homepage": "https://www.wappalyzer.com",
"version": "6.2.6", "version": "6.3.0",
"author": "Wappalyzer", "author": "Wappalyzer",
"license": "MIT", "license": "MIT",
"repository": { "repository": {
@ -27,4 +27,4 @@
"files": [ "files": [
"wappalyzer.js" "wappalyzer.js"
] ]
} }

@ -69,7 +69,7 @@ const Wappalyzer = {
({ ({
technology: { name, slug, categories, icon, website, cpe }, technology: { name, slug, categories, icon, website, cpe },
confidence, confidence,
version version,
}) => ({ }) => ({
name, name,
slug, slug,
@ -78,7 +78,7 @@ const Wappalyzer = {
version, version,
icon, icon,
website, website,
cpe cpe,
}) })
) )
}, },
@ -166,7 +166,7 @@ const Wappalyzer = {
resolved.push({ resolved.push({
technology: implied, technology: implied,
confidence: Math.min(confidence, _confidence), confidence: Math.min(confidence, _confidence),
version: '' version: '',
}) })
done = false done = false
@ -197,7 +197,7 @@ const Wappalyzer = {
om(technology, 'scripts', scripts), om(technology, 'scripts', scripts),
mm(technology, 'cookies', cookies), mm(technology, 'cookies', cookies),
mm(technology, 'meta', meta), mm(technology, 'meta', meta),
mm(technology, 'headers', headers) mm(technology, 'headers', headers),
]) ])
) )
).filter((technology) => technology) ).filter((technology) => technology)
@ -230,7 +230,7 @@ const Wappalyzer = {
excludes, excludes,
icon, icon,
website, website,
cpe cpe,
} = data[name] } = data[name]
technologies.push({ technologies.push({
@ -247,14 +247,14 @@ const Wappalyzer = {
js: transform(js, true), js: transform(js, true),
implies: transform(implies).map(({ value, confidence }) => ({ implies: transform(implies).map(({ value, confidence }) => ({
name: value, name: value,
confidence confidence,
})), })),
excludes: transform(excludes).map(({ value }) => ({ excludes: transform(excludes).map(({ value }) => ({
name: value name: value,
})), })),
icon: icon || 'default.svg', icon: icon || 'default.svg',
website: website || null, website: website || null,
cpe: cpe || null cpe: cpe || null,
}) })
return technologies return technologies
@ -273,7 +273,7 @@ const Wappalyzer = {
categories.push({ categories.push({
id: parseInt(id, 10), id: parseInt(id, 10),
slug: Wappalyzer.slugify(category.name), slug: Wappalyzer.slugify(category.name),
...category ...category,
}) })
return categories return categories
@ -324,7 +324,7 @@ const Wappalyzer = {
value, value,
regex, regex,
confidence: parseInt(confidence || 100, 10), confidence: parseInt(confidence || 100, 10),
version: version || '' version: version || '',
} }
}) })
@ -346,7 +346,7 @@ const Wappalyzer = {
technologies.push({ technologies.push({
technology, technology,
pattern, pattern,
version: Wappalyzer.resolveVersion(pattern, value) version: Wappalyzer.resolveVersion(pattern, value),
}) })
} }
@ -369,7 +369,7 @@ const Wappalyzer = {
technologies.push({ technologies.push({
technology, technology,
pattern, pattern,
version: Wappalyzer.resolveVersion(pattern, value) version: Wappalyzer.resolveVersion(pattern, value),
}) })
} }
}) })
@ -395,7 +395,7 @@ const Wappalyzer = {
technologies.push({ technologies.push({
technology, technology,
pattern, pattern,
version: Wappalyzer.resolveVersion(pattern, value) version: Wappalyzer.resolveVersion(pattern, value),
}) })
} }
}) })
@ -403,7 +403,7 @@ const Wappalyzer = {
return technologies return technologies
}, []) }, [])
} },
} }
if (typeof module !== 'undefined') { if (typeof module !== 'undefined') {