You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.4 KiB

/* eslint-env browser */
;(function () {
try {
const onMessage = ({ data }) => {
if (!data.wappalyzer || !data.wappalyzer.technologies) {
return
}
const { technologies } = data.wappalyzer
postMessage({
wappalyzer: {
js: technologies.reduce((technologies, { name, chains }) => {
chains.forEach((chain, index) => {
const value = chain
.split('.')
.reduce(
(value, method) =>
value &&
value instanceof Object &&
Object.prototype.hasOwnProperty.call(value, method) &&
!(Object.getOwnPropertyDescriptor(value, method) || {}).get
? value[method]
: '__UNDEFINED__',
window
)
if (value !== '__UNDEFINED__') {
technologies.push({
name,
chain,
value:
typeof value === 'string' || typeof value === 'number'
? value
: !!value,
})
}
})
return technologies
}, []),
},
})
}
addEventListener('message', onMessage, { once: true })
} catch (e) {
// Fail quietly
}
})()