Prettify, fix parsing + in regex

main
Elbert Alias 2 years ago
parent 9246aa1f79
commit 80a0929282

@ -172,17 +172,13 @@ const Driver = {
* @param {String} body
*/
post(url, body) {
try {
return fetch(url, {
method: 'POST',
body: JSON.stringify(body),
headers: {
'Content-Type': 'application/json',
},
})
} catch (error) {
throw new Error(error.message || error.toString())
}
return fetch(url, {
method: 'POST',
body: JSON.stringify(body),
headers: {
'Content-Type': 'application/json',
},
})
},
/**
@ -267,6 +263,16 @@ const Driver = {
}
if (typeof attribute !== 'undefined') {
if (technology.name === 'RSS') {
console.log(
selector,
value,
analyzeManyToMany(technology, `dom.attributes.${attribute}`, {
[selector]: [value],
})
)
}
return analyzeManyToMany(
technology,
`dom.attributes.${attribute}`,
@ -942,10 +948,15 @@ const Driver = {
const count = Object.keys(urls).length
if (count && (count >= 25 || Driver.lastPing < Date.now() - expiry)) {
await Driver.post('https://api.wappalyzer.com/v2/ping/', {
version: chrome.runtime.getManifest().version,
urls,
})
try {
await Driver.post('https://api.wappalyzer.com/v2/ping/', {
version: chrome.runtime.getManifest().version,
urls,
})
} catch (error) {
// eslint-disable-next-line no-console
console.error(error)
}
Object.keys(Driver.cache.hostnames).forEach((hostname) => {
Driver.cache.hostnames[hostname].hits = 0
@ -955,7 +966,15 @@ const Driver = {
}
if (Driver.cache.ads.length > 25) {
await Driver.post('https://ad.wappalyzer.com/log/wp/', Driver.cache.ads)
try {
await Driver.post(
'https://ad.wappalyzer.com/log/wp/',
Driver.cache.ads
)
} catch (error) {
// eslint-disable-next-line no-console
console.error(error)
}
Driver.cache.ads = []
}

@ -101,7 +101,6 @@
"scriptSrc": "4tellcdn\\.azureedge\\.net",
"website": "https://4-tell.com"
},
"51.LA": {
"cats": [
10
@ -111,12 +110,12 @@
"js": {
"LA.config.ck": ""
},
"saas": true,
"pricing": [
"freemium",
"recurring",
"payg"
],
"saas": true,
"website": "https://www.51.la"
},
"6sense": {
@ -125,17 +124,17 @@
76
],
"description": "6sense is a B2B predictive intelligence platform for marketing and sales.",
"icon": "6sense.svg",
"headers": {
"Content-Security-Policy": "\\.6sc\\.co/"
},
"scriptSrc": "\\.6sc\\.co/",
"saas": true,
"icon": "6sense.svg",
"pricing": [
"poa",
"high",
"recurring"
],
"saas": true,
"scriptSrc": "\\.6sc\\.co/",
"website": "https://6sense.com"
},
"8base": {

@ -487,36 +487,6 @@
"scriptSrc": "\\.getbento\\.com/",
"website": "https://getbento.com"
},
"BetterDocs": {
"cats": [
4
],
"description": "BetterDocs is an advanced documentation and knowledge base plugin for WordPress and Shopify.",
"icon": "BetterDocs.png",
"js": {
"betterdocs.FEEDBACK": "",
"betterdocspublic.post_id": "",
"betterdocs_pro.FEEDBACK": ""
},
"pricing": [
"onetime"
],
"website": "https://betterdocs.co"
},
"BetterDocs plugin": {
"cats": [
87
],
"description": "BetterDocs plugin is an advanced documentation and knowledge base plugin for WordPress.",
"icon": "BetterDocs.png",
"implies": "BetterDocs",
"requires": "WordPress",
"scriptSrc": "/wp-content/plugins/betterdocs(?:-pro)?/.+\\.js(?:\\?ver=(\\d+(?:\\.\\d+)+))?\\;version:\\1",
"pricing": [
"onetime"
],
"website": "https://betterdocs.co/docs/wordpress"
},
"Better Price": {
"cats": [
100
@ -550,6 +520,36 @@
"scriptSrc": "//betteruptime\\.com/",
"website": "https://betterstack.com/better-uptime"
},
"BetterDocs": {
"cats": [
4
],
"description": "BetterDocs is an advanced documentation and knowledge base plugin for WordPress and Shopify.",
"icon": "BetterDocs.png",
"js": {
"betterdocs.FEEDBACK": "",
"betterdocs_pro.FEEDBACK": "",
"betterdocspublic.post_id": ""
},
"pricing": [
"onetime"
],
"website": "https://betterdocs.co"
},
"BetterDocs plugin": {
"cats": [
87
],
"description": "BetterDocs plugin is an advanced documentation and knowledge base plugin for WordPress.",
"icon": "BetterDocs.png",
"implies": "BetterDocs",
"pricing": [
"onetime"
],
"requires": "WordPress",
"scriptSrc": "/wp-content/plugins/betterdocs(?:-pro)?/.+\\.js(?:\\?ver=(\\d+(?:\\.\\d+)+))?\\;version:\\1",
"website": "https://betterdocs.co/docs/wordpress"
},
"Betty Blocks": {
"cats": [
47,

@ -367,8 +367,8 @@
"description": "CallTrackingMetrics is a call tracking and marketing attribution solution for contact centers and agencies.",
"icon": "CallTrackingMetrics.svg",
"js": {
"__ctm_tracked_numbers": "",
"__ctm.numbers": ""
"__ctm.numbers": "",
"__ctm_tracked_numbers": ""
},
"pricing": [
"mid",
@ -1617,8 +1617,8 @@
"js": {
"CFAppDomain": "app\\.clickfunnels\\.com",
"CFSurveyParticipantID": "",
"cfAddPolyfill": "",
"ClickFunnels": ""
"ClickFunnels": "",
"cfAddPolyfill": ""
},
"meta": {
"cf:app_domain:": "app\\.clickfunnels\\.com"

@ -1786,4 +1786,4 @@
"scriptSrc": "deepMiner\\.js",
"website": "https://github.com/deepwn/deepMiner"
}
}
}

@ -360,12 +360,12 @@
],
"description": "Hatena Blog is one of the traditional blog platforms in Japan.",
"icon": "Hatena.svg",
"scriptSrc": "cdn\\.blog\\.st-hatena\\.com/",
"pricing": [
"freemium",
"low",
"recurring"
],
"scriptSrc": "cdn\\.blog\\.st-hatena\\.com/",
"website": "https://hatenablog.com"
},
"HeadJS": {
@ -1244,10 +1244,10 @@
"HubSpot",
"HubSpot Analytics"
],
"requires": "WordPress",
"js": {
"leadin_wordpress.leadinPluginVersion": "^([\\d.]+)$\\;version:\\1"
},
"requires": "WordPress",
"website": "https://wordpress.org/plugins/leadin/"
},
"Huberway": {
@ -1532,6 +1532,25 @@
"oss": true,
"website": "https://www.hypestylecss.xyz"
},
"Hyva Themes": {
"cats": [
19
],
"description": "Hyva Themes is an optimised theme for Magento 2 which eliminated the third-party libraries and having only two dependencies Alpine.js and Tailwind CSS.",
"headers": {
"X-Built-With": "^Hyva Themes$"
},
"icon": "Hyva Themes.svg",
"implies": [
"Magento\\;version:2",
"Tailwind CSS",
"Alpine.js"
],
"pricing": [
"onetime"
],
"website": "https://hyva.io"
},
"h5ai": {
"cats": [
19
@ -1593,24 +1612,5 @@
"saas": true,
"scriptSrc": "merchant\\.cdn\\.hoolah\\.co/",
"website": "https://www.hoolah.co"
},
"Hyva Themes": {
"cats": [
19
],
"description": "Hyva Themes is an optimised theme for Magento 2 which eliminated the third-party libraries and having only two dependencies Alpine.js and Tailwind CSS.",
"headers": {
"X-Built-With": "^Hyva Themes$"
},
"icon": "Hyva Themes.svg",
"implies": [
"Magento\\;version:2",
"Tailwind CSS",
"Alpine.js"
],
"pricing": [
"onetime"
],
"website": "https://hyva.io"
}
}

@ -2736,6 +2736,23 @@
"icon": "MySQL.svg",
"website": "http://mysql.com"
},
"MySiteNow": {
"cats": [
51
],
"description": "MySiteNow provides cloud-based web development services, allowing users to create HTML5 websites and mobile sites.",
"icon": "MySiteNow.png",
"meta": {
"app-platform": "^MySiteNow$"
},
"pricing": [
"low",
"recurring",
"poa"
],
"saas": true,
"website": "https://mysitenow.gr"
},
"MyWebsite": {
"cats": [
51
@ -2832,23 +2849,6 @@
"saas": true,
"website": "https://www.mysitefy.com"
},
"MySiteNow": {
"cats": [
51
],
"description": "MySiteNow provides cloud-based web development services, allowing users to create HTML5 websites and mobile sites.",
"icon": "MySiteNow.png",
"meta": {
"app-platform": "^MySiteNow$"
},
"saas": true,
"pricing": [
"low",
"recurring",
"poa"
],
"website": "https://mysitenow.gr"
},
"MysteryThemes News Portal": {
"cats": [
80

@ -135,11 +135,6 @@
66
],
"description": "Naive UI is a Vue.js UI library written in TypeScript, offering more than 80 treeshakable components.",
"icon": "Naive UI.svg",
"implies": [
"Vue.js",
"TypeScript"
],
"dom": {
"style[cssr-id^='n-']": {
"attributes": {
@ -147,6 +142,11 @@
}
}
},
"icon": "Naive UI.svg",
"implies": [
"Vue.js",
"TypeScript"
],
"oss": true,
"website": "https://www.naiveui.com"
},

@ -2421,42 +2421,42 @@
"cats": [
66
],
"css": "\\.p-(?:toast|calendar|dialog-mask|menuitem-text)(?:-content)?{",
"description": "PrimeNG is a rich set of open-source UI Components for Angular.",
"icon": "PrimeNG.svg",
"requires": "Angular",
"css": "\\.p-(?:toast|calendar|dialog-mask|menuitem-text)(?:-content)?{",
"oss": true,
"pricing": [
"onetime"
],
"requires": "Angular",
"website": "https://www.primefaces.org"
},
"PrimeReact": {
"cats": [
66
],
"css": ".p-(?:toast|calendar|dialog-mask|menuitem-text)(?:-content)?{",
"description": "PrimeReact is a rich set of open-source UI Components for React.",
"icon": "PrimeReact.svg",
"requires": "React",
"css": ".p-(?:toast|calendar|dialog-mask|menuitem-text)(?:-content)?{",
"oss": true,
"pricing": [
"onetime"
],
"requires": "React",
"website": "https://www.primefaces.org"
},
"PrimeVue": {
"cats": [
66
],
"css": ".p-(?:toast|calendar|dialog-mask|menuitem-text)(?:-content)?{",
"description": "PrimeVue is a rich set of open-source UI Components for Vue.js.",
"icon": "PrimeVue.svg",
"requires": "Vue.js",
"css": ".p-(?:toast|calendar|dialog-mask|menuitem-text)(?:-content)?{",
"oss": true,
"pricing": [
"onetime"
],
"requires": "Vue.js",
"website": "https://www.primefaces.org"
},
"Primis": {
@ -3072,12 +3072,12 @@
19
],
"icon": "Parcel.png",
"js": {
"parcelRequire": ""
},
"implies": [
"SWC"
],
"js": {
"parcelRequire": ""
},
"website": "https://parceljs.org/"
},
"particles.js": {
@ -3323,4 +3323,4 @@
},
"website": "http://punbb.informer.com"
}
}
}

@ -81,6 +81,21 @@
],
"website": "https://www.reg.ru"
},
"RSS": {
"cats": [
19
],
"description": "RSS is a family of web feed formats used to publish frequently updated works—such as blog entries, news headlines, audio, and video—in a standardized format.",
"dom": {
"link[type*='application']": {
"attributes": {
"type": "application/(?:rss|atom)\\+xml"
}
}
},
"icon": "RSS.svg",
"website": "https://www.rssboard.org/rss-specification"
},
"RTB House": {
"cats": [
77
@ -1895,21 +1910,6 @@
],
"website": "https://www.royalmail.com"
},
"RSS": {
"cats": [
19
],
"description": "RSS is a family of web feed formats used to publish frequently updated works—such as blog entries, news headlines, audio, and video—in a standardized format.",
"dom": {
"link[type*='application']": {
"attributes": {
"type": "application/(?:rss|atom)\\+xml"
}
}
},
"icon": "RSS.svg",
"website": "https://www.rssboard.org/rss-specification"
},
"Rubicon Project": {
"cats": [
36

@ -307,6 +307,16 @@
"scriptSrc": "/wp-content/plugins/svg-support/",
"website": "https://github.com/wp-plugins/svg-support"
},
"SWC": {
"cats": [
19
],
"description": "SWC is an extensible Rust-based platform for the next generation of fast developer tools.",
"icon": "swc.svg",
"implies": "Rust",
"oss": true,
"website": "https://swc.rs"
},
"SWFObject": {
"cats": [
19
@ -2014,14 +2024,14 @@
76
],
"description": "Shoefitr.io is data-based shoe size advice service where we measure the length, width, ball, and instep.",
"dom": "a[href*='api.shoefitr.io/']",
"icon": "Shoefitr.io.svg",
"dom":"a[href*='api.shoefitr.io/']",
"saas": true,
"pricing": [
"payg",
"high",
"recurring"
],
"saas": true,
"website": "https://www.shoefitr.io"
},
"Shogun": {
@ -5849,13 +5859,7 @@
12
],
"description": "Svelte is a free and open-source front end compiler created by Rich Harris and maintained by the Svelte core team members.",
"dom": {
"*": {
"attributes": {
"class": "svelte-\\w+"
}
}
},
"dom": "[class*='svelte-']",
"icon": "Svelte.svg",
"oss": true,
"website": "https://svelte.dev"
@ -5912,16 +5916,6 @@
"scriptSrc": "api\\.swagifyapp\\.com/",
"website": "https://swagifyapp.com"
},
"SWC": {
"cats": [
19
],
"description": "SWC is an extensible Rust-based platform for the next generation of fast developer tools.",
"icon": "swc.svg",
"implies": "Rust",
"oss": true,
"website": "https://swc.rs"
},
"SweetAlert": {
"cats": [
59

@ -133,12 +133,12 @@
"js": {
"ubilizSettings": ""
},
"saas": true,
"pricing": [
"freemium",
"mid",
"recurring"
],
"saas": true,
"website": "https://www.ubiliz.com"
},
"Ubuntu": {

@ -297,14 +297,14 @@
"cats": [
10
],
"icon": "vercel.svg",
"js": {
"va": ""
},
"scriptSrc": "/va/script\\.js",
"requires": [
"Vercel"
],
"icon": "vercel.svg",
"scriptSrc": "/va/script\\.js",
"website": "https://vercel.com/analytics"
},
"Verifone 2Checkout": {
@ -1082,4 +1082,4 @@
},
"website": "http://vibecommerce.com.br"
}
}
}

@ -540,8 +540,10 @@ const Wappalyzer = {
// Escape slashes
.replace(/\//g, '\\/')
// Optimise quantifiers for long strings
.replace(/\\\+/g, '__escapedPlus__')
.replace(/\+/g, '{1,250}')
.replace(/\*/g, '{0,250}')
.replace(/__escapedPlus__/g, '\\+')
: '',
'i'
)

Loading…
Cancel
Save