@ -1,8 +1,8 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"file-type": "3.8.*",
|
||||
"is-svg": "2.0.*",
|
||||
"read-chunk": "2.0.*"
|
||||
"file-type": "7.4.*",
|
||||
"is-svg": "2.1.*",
|
||||
"read-chunk": "2.1.*"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,686 @@
|
||||
{
|
||||
"name": "wappalyzer",
|
||||
"version": "5.3.1",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
"abab": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz",
|
||||
"integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4="
|
||||
},
|
||||
"acorn": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz",
|
||||
"integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc="
|
||||
},
|
||||
"acorn-globals": {
|
||||
"version": "1.0.9",
|
||||
"resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz",
|
||||
"integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=",
|
||||
"requires": {
|
||||
"acorn": "2.7.0"
|
||||
}
|
||||
},
|
||||
"ajv": {
|
||||
"version": "5.5.2",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
|
||||
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
|
||||
"requires": {
|
||||
"co": "4.6.0",
|
||||
"fast-deep-equal": "1.0.0",
|
||||
"fast-json-stable-stringify": "2.0.0",
|
||||
"json-schema-traverse": "0.3.1"
|
||||
}
|
||||
},
|
||||
"asn1": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
|
||||
"integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y="
|
||||
},
|
||||
"assert-plus": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
||||
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
|
||||
},
|
||||
"asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
||||
},
|
||||
"aws-sign2": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
|
||||
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
|
||||
},
|
||||
"aws4": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz",
|
||||
"integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4="
|
||||
},
|
||||
"babel-runtime": {
|
||||
"version": "5.8.29",
|
||||
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.29.tgz",
|
||||
"integrity": "sha1-SiBSy8/1MXiNOp1rA81/RIKF+CU=",
|
||||
"requires": {
|
||||
"core-js": "1.2.7"
|
||||
}
|
||||
},
|
||||
"bcrypt-pbkdf": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz",
|
||||
"integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"tweetnacl": "0.14.5"
|
||||
}
|
||||
},
|
||||
"bluebird": {
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
|
||||
"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
|
||||
},
|
||||
"boom": {
|
||||
"version": "4.3.1",
|
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
|
||||
"integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
|
||||
"requires": {
|
||||
"hoek": "4.2.0"
|
||||
}
|
||||
},
|
||||
"caseless": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
|
||||
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
|
||||
},
|
||||
"co": {
|
||||
"version": "4.6.0",
|
||||
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
|
||||
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
|
||||
},
|
||||
"combined-stream": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz",
|
||||
"integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=",
|
||||
"requires": {
|
||||
"delayed-stream": "1.0.0"
|
||||
}
|
||||
},
|
||||
"core-js": {
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
|
||||
"integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY="
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
|
||||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"cryptiles": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz",
|
||||
"integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=",
|
||||
"requires": {
|
||||
"boom": "5.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"boom": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
|
||||
"integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
|
||||
"requires": {
|
||||
"hoek": "4.2.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"cssom": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz",
|
||||
"integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs="
|
||||
},
|
||||
"cssstyle": {
|
||||
"version": "0.2.37",
|
||||
"resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz",
|
||||
"integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=",
|
||||
"requires": {
|
||||
"cssom": "0.3.2"
|
||||
}
|
||||
},
|
||||
"dashdash": {
|
||||
"version": "1.14.1",
|
||||
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0"
|
||||
}
|
||||
},
|
||||
"debug": {
|
||||
"version": "2.6.9",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||
"requires": {
|
||||
"ms": "2.0.0"
|
||||
}
|
||||
},
|
||||
"deep-is": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
|
||||
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
||||
},
|
||||
"ecc-jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"jsbn": "0.1.1"
|
||||
}
|
||||
},
|
||||
"escodegen": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz",
|
||||
"integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==",
|
||||
"requires": {
|
||||
"esprima": "3.1.3",
|
||||
"estraverse": "4.2.0",
|
||||
"esutils": "2.0.2",
|
||||
"optionator": "0.8.2",
|
||||
"source-map": "0.5.7"
|
||||
}
|
||||
},
|
||||
"esprima": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
|
||||
"integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM="
|
||||
},
|
||||
"estraverse": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
|
||||
"integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM="
|
||||
},
|
||||
"esutils": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz",
|
||||
"integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs="
|
||||
},
|
||||
"eventsource": {
|
||||
"version": "0.1.6",
|
||||
"resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz",
|
||||
"integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=",
|
||||
"requires": {
|
||||
"original": "1.0.0"
|
||||
}
|
||||
},
|
||||
"extend": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz",
|
||||
"integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ="
|
||||
},
|
||||
"extsprintf": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
|
||||
"integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8="
|
||||
},
|
||||
"fast-json-stable-stringify": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
|
||||
"integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
|
||||
},
|
||||
"fast-levenshtein": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
|
||||
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
|
||||
},
|
||||
"forever-agent": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
|
||||
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
|
||||
},
|
||||
"form-data": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz",
|
||||
"integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=",
|
||||
"requires": {
|
||||
"asynckit": "0.4.0",
|
||||
"combined-stream": "1.0.5",
|
||||
"mime-types": "2.1.17"
|
||||
}
|
||||
},
|
||||
"getpass": {
|
||||
"version": "0.1.7",
|
||||
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
||||
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0"
|
||||
}
|
||||
},
|
||||
"har-schema": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
|
||||
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
|
||||
},
|
||||
"har-validator": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
|
||||
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
|
||||
"requires": {
|
||||
"ajv": "5.5.2",
|
||||
"har-schema": "2.0.0"
|
||||
}
|
||||
},
|
||||
"hawk": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
|
||||
"integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
|
||||
"requires": {
|
||||
"boom": "4.3.1",
|
||||
"cryptiles": "3.1.2",
|
||||
"hoek": "4.2.0",
|
||||
"sntp": "2.1.0"
|
||||
}
|
||||
},
|
||||
"hoek": {
|
||||
"version": "4.2.0",
|
||||
"resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz",
|
||||
"integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ=="
|
||||
},
|
||||
"http-signature": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
|
||||
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"jsprim": "1.4.1",
|
||||
"sshpk": "1.13.1"
|
||||
}
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.19",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
|
||||
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
|
||||
},
|
||||
"is-typedarray": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
|
||||
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
|
||||
},
|
||||
"isstream": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
|
||||
},
|
||||
"jsbn": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
|
||||
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
|
||||
"optional": true
|
||||
},
|
||||
"jsdom": {
|
||||
"version": "7.2.2",
|
||||
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz",
|
||||
"integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=",
|
||||
"requires": {
|
||||
"abab": "1.0.4",
|
||||
"acorn": "2.7.0",
|
||||
"acorn-globals": "1.0.9",
|
||||
"cssom": "0.3.2",
|
||||
"cssstyle": "0.2.37",
|
||||
"escodegen": "1.9.0",
|
||||
"nwmatcher": "1.4.3",
|
||||
"parse5": "1.5.1",
|
||||
"request": "2.83.0",
|
||||
"sax": "1.2.4",
|
||||
"symbol-tree": "3.2.2",
|
||||
"tough-cookie": "2.3.3",
|
||||
"webidl-conversions": "2.0.1",
|
||||
"whatwg-url-compat": "0.6.5",
|
||||
"xml-name-validator": "2.0.1"
|
||||
}
|
||||
},
|
||||
"json-schema": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
|
||||
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.3.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
|
||||
"integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
|
||||
},
|
||||
"json-stringify-safe": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
|
||||
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
|
||||
},
|
||||
"jsprim": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
|
||||
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"extsprintf": "1.3.0",
|
||||
"json-schema": "0.2.3",
|
||||
"verror": "1.10.0"
|
||||
}
|
||||
},
|
||||
"levn": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
||||
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
|
||||
"requires": {
|
||||
"prelude-ls": "1.1.2",
|
||||
"type-check": "0.3.2"
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "3.10.1",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz",
|
||||
"integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y="
|
||||
},
|
||||
"mime": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
|
||||
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.30.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz",
|
||||
"integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE="
|
||||
},
|
||||
"mime-types": {
|
||||
"version": "2.1.17",
|
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz",
|
||||
"integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=",
|
||||
"requires": {
|
||||
"mime-db": "1.30.0"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
|
||||
},
|
||||
"nwmatcher": {
|
||||
"version": "1.4.3",
|
||||
"resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz",
|
||||
"integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw=="
|
||||
},
|
||||
"oauth-sign": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
|
||||
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM="
|
||||
},
|
||||
"optionator": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
|
||||
"integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
|
||||
"requires": {
|
||||
"deep-is": "0.1.3",
|
||||
"fast-levenshtein": "2.0.6",
|
||||
"levn": "0.3.0",
|
||||
"prelude-ls": "1.1.2",
|
||||
"type-check": "0.3.2",
|
||||
"wordwrap": "1.0.0"
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz",
|
||||
"integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8="
|
||||
},
|
||||
"original": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz",
|
||||
"integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=",
|
||||
"requires": {
|
||||
"url-parse": "1.0.5"
|
||||
}
|
||||
},
|
||||
"parse5": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz",
|
||||
"integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ="
|
||||
},
|
||||
"performance-now": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
|
||||
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
|
||||
},
|
||||
"prelude-ls": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
||||
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
|
||||
},
|
||||
"punycode": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
|
||||
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
|
||||
},
|
||||
"qs": {
|
||||
"version": "6.5.1",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
|
||||
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
|
||||
},
|
||||
"querystringify": {
|
||||
"version": "0.0.4",
|
||||
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz",
|
||||
"integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw="
|
||||
},
|
||||
"request": {
|
||||
"version": "2.83.0",
|
||||
"resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
|
||||
"integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
|
||||
"requires": {
|
||||
"aws-sign2": "0.7.0",
|
||||
"aws4": "1.6.0",
|
||||
"caseless": "0.12.0",
|
||||
"combined-stream": "1.0.5",
|
||||
"extend": "3.0.1",
|
||||
"forever-agent": "0.6.1",
|
||||
"form-data": "2.3.1",
|
||||
"har-validator": "5.0.3",
|
||||
"hawk": "6.0.2",
|
||||
"http-signature": "1.2.0",
|
||||
"is-typedarray": "1.0.0",
|
||||
"isstream": "0.1.2",
|
||||
"json-stringify-safe": "5.0.1",
|
||||
"mime-types": "2.1.17",
|
||||
"oauth-sign": "0.8.2",
|
||||
"performance-now": "2.1.0",
|
||||
"qs": "6.5.1",
|
||||
"safe-buffer": "5.1.1",
|
||||
"stringstream": "0.0.5",
|
||||
"tough-cookie": "2.3.3",
|
||||
"tunnel-agent": "0.6.0",
|
||||
"uuid": "3.1.0"
|
||||
}
|
||||
},
|
||||
"requires-port": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
|
||||
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
|
||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
|
||||
},
|
||||
"sax": {
|
||||
"version": "1.2.4",
|
||||
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
|
||||
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
|
||||
},
|
||||
"sntp": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
|
||||
"integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
|
||||
"requires": {
|
||||
"hoek": "4.2.0"
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
|
||||
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
|
||||
"optional": true
|
||||
},
|
||||
"sshpk": {
|
||||
"version": "1.13.1",
|
||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz",
|
||||
"integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=",
|
||||
"requires": {
|
||||
"asn1": "0.2.3",
|
||||
"assert-plus": "1.0.0",
|
||||
"bcrypt-pbkdf": "1.0.1",
|
||||
"dashdash": "1.14.1",
|
||||
"ecc-jsbn": "0.1.1",
|
||||
"getpass": "0.1.7",
|
||||
"jsbn": "0.1.1",
|
||||
"tweetnacl": "0.14.5"
|
||||
}
|
||||
},
|
||||
"stringstream": {
|
||||
"version": "0.0.5",
|
||||
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
|
||||
"integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
|
||||
},
|
||||
"symbol-tree": {
|
||||
"version": "3.2.2",
|
||||
"resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz",
|
||||
"integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY="
|
||||
},
|
||||
"tough-cookie": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz",
|
||||
"integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=",
|
||||
"requires": {
|
||||
"punycode": "1.4.1"
|
||||
}
|
||||
},
|
||||
"tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
|
||||
},
|
||||
"tunnel-agent": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
||||
"requires": {
|
||||
"safe-buffer": "5.1.1"
|
||||
}
|
||||
},
|
||||
"tweetnacl": {
|
||||
"version": "0.14.5",
|
||||
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
|
||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
|
||||
"optional": true
|
||||
},
|
||||
"type-check": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
|
||||
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
|
||||
"requires": {
|
||||
"prelude-ls": "1.1.2"
|
||||
}
|
||||
},
|
||||
"url-parse": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz",
|
||||
"integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=",
|
||||
"requires": {
|
||||
"querystringify": "0.0.4",
|
||||
"requires-port": "1.0.0"
|
||||
}
|
||||
},
|
||||
"uuid": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
|
||||
"integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g=="
|
||||
},
|
||||
"verror": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
||||
"requires": {
|
||||
"assert-plus": "1.0.0",
|
||||
"core-util-is": "1.0.2",
|
||||
"extsprintf": "1.3.0"
|
||||
}
|
||||
},
|
||||
"webidl-conversions": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz",
|
||||
"integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY="
|
||||
},
|
||||
"whatwg-url-compat": {
|
||||
"version": "0.6.5",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz",
|
||||
"integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=",
|
||||
"requires": {
|
||||
"tr46": "0.0.3"
|
||||
}
|
||||
},
|
||||
"wordwrap": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
|
||||
"integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
|
||||
},
|
||||
"xml-name-validator": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz",
|
||||
"integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU="
|
||||
},
|
||||
"zombie": {
|
||||
"version": "5.0.7",
|
||||
"resolved": "https://registry.npmjs.org/zombie/-/zombie-5.0.7.tgz",
|
||||
"integrity": "sha512-zrYFTD5iWxI3EJohmZ8F2sNafo44F/132wLj5WHLSHmytds60s+JiXLomflQ8sbNuWCZJAuszvf6+eUiVsUqPQ==",
|
||||
"requires": {
|
||||
"babel-runtime": "5.8.29",
|
||||
"bluebird": "3.5.1",
|
||||
"debug": "2.6.9",
|
||||
"eventsource": "0.1.6",
|
||||
"iconv-lite": "0.4.19",
|
||||
"jsdom": "7.2.2",
|
||||
"lodash": "3.10.1",
|
||||
"mime": "1.6.0",
|
||||
"ms": "0.7.3",
|
||||
"request": "2.83.0",
|
||||
"tough-cookie": "2.3.3",
|
||||
"ws": "1.1.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"ms": {
|
||||
"version": "0.7.3",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz",
|
||||
"integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8="
|
||||
},
|
||||
"ultron": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
|
||||
"integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po="
|
||||
},
|
||||
"ws": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz",
|
||||
"integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==",
|
||||
"requires": {
|
||||
"options": "0.0.6",
|
||||
"ultron": "1.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
{
|
||||
"github": { "message": "Fork Wappalyzer no GitHub!" },
|
||||
"noAppsDetected": { "message": "Não foi detetada nenhuma apliação." },
|
||||
"nothingToDo": { "message": "Nada a fazer aqui." },
|
||||
"optionTracking": { "message": "Enviar anonimamente relatorios sobre as apliações detetadas ao wappalyzer.com para investigação" },
|
||||
"optionUpgradeMessage": { "message": "Atualizações automaticas" },
|
||||
"optionDynamicIcon": { "message": "Utilizar o icone da aplicação em vez do logotido do Wappalyzer" },
|
||||
"options": { "message": "Definições" },
|
||||
"optionsSave": { "message": "Guardar as opções" },
|
||||
"optionsSaved": { "message": "Guardado" },
|
||||
"twitter": { "message": "Seguir o Wappalyzer no Twitter" },
|
||||
"website": { "message": "Ir para wappalyzer.com" },
|
||||
"categoryPin": { "message": "Always show icon" },
|
||||
"categoryName1": { "message": "Sistema de gerenciamento de conteudo(CMS)" },
|
||||
"categoryName2": { "message": "Forum" },
|
||||
"categoryName3": { "message": "Gestor de base de dados" },
|
||||
"categoryName4": { "message": "Ferramenta de documentação" },
|
||||
"categoryName5": { "message": "Widget" },
|
||||
"categoryName6": { "message": "Loja online" },
|
||||
"categoryName7": { "message": "Galeria de fotografias" },
|
||||
"categoryName8": { "message": "Wiki" },
|
||||
"categoryName9": { "message": "Gestor de servidores" },
|
||||
"categoryName10": { "message": "Ferramenta de estatisticas" },
|
||||
"categoryName11": { "message": "Blog" },
|
||||
"categoryName12": { "message": "Framework JavaScript" },
|
||||
"categoryName13": { "message": "Ferramenta de seguimento de problemas" },
|
||||
"categoryName14": { "message": "Leitor de videos" },
|
||||
"categoryName15": { "message": "Sistemas de comentários" },
|
||||
"categoryName16": { "message": "Captcha" },
|
||||
"categoryName17": { "message": "Script de policia" },
|
||||
"categoryName18": { "message": "Framework WEB" },
|
||||
"categoryName19": { "message": "Diversos" },
|
||||
"categoryName20": { "message": "Editor" },
|
||||
"categoryName21": { "message": "Sistema de gestão de Aprendizagem(LMS)" },
|
||||
"categoryName22": { "message": "Servidor WEB" },
|
||||
"categoryName23": { "message": "Ferramenta de cache" },
|
||||
"categoryName24": { "message": "Editor WYSIWYG" },
|
||||
"categoryName25": { "message": "Grafismo JavaScript" },
|
||||
"categoryName26": { "message": "Framework para dispositivos mobile" },
|
||||
"categoryName27": { "message": "Linguagem de programação" },
|
||||
"categoryName28": { "message": "Sistema Operativo" },
|
||||
"categoryName29": { "message": "Motor de pesquisa" },
|
||||
"categoryName30": { "message": "WebMail" },
|
||||
"categoryName31": { "message": "Rede de distribuição de conteudo(CDN)" },
|
||||
"categoryName32": { "message": "Sistema de vendas" },
|
||||
"categoryName33": { "message": "Extensão do servidor WEB" },
|
||||
"categoryName34": { "message": "Base de dados" },
|
||||
"categoryName35": { "message": "Mapa" },
|
||||
"categoryName36": { "message": "Rede de publicidade" },
|
||||
"categoryName37": { "message": "Dispositivo de rede" },
|
||||
"categoryName38": { "message": "Servidor multimédia" },
|
||||
"categoryName39": { "message": "Webcam" },
|
||||
"categoryName40": { "message": "Impressora" },
|
||||
"categoryName41": { "message": "Serviço de pagamento" },
|
||||
"categoryName42": { "message": "Gestor de Tags" },
|
||||
"categoryName43": { "message": "Sistema de assinaturas paga(Paywall)" },
|
||||
"categoryName44": { "message": "Sistema CI" },
|
||||
"categoryName45": { "message": "Sistema SCADA" },
|
||||
"categoryName46": { "message": "Acesso à distancia" },
|
||||
"categoryName47": { "message": "Ferramenta de desenvolvimento" },
|
||||
"categoryName48": { "message": "Rede de armazenamento" },
|
||||
"categoryName49": { "message": "Leitor RSS" },
|
||||
"categoryName50": { "message": "Sistema de gestão de documentos" },
|
||||
"categoryName51": { "message": "Landing Page Builder" },
|
||||
"categoryName52": { "message": "Chat em direto" },
|
||||
"categoryName53": { "message": "Sistemas de relação com o cliente(CRM)" },
|
||||
"categoryName54": { "message": "Otimização para motores de pesquisa(SEO)" }
|
||||
}
|
@ -1,44 +1,65 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title data-i18n="options">Wappalyzer options</title>
|
||||
|
||||
<link rel="icon" href="../images/icon_32.png">
|
||||
|
||||
<link rel="stylesheet" href="../css/options.css">
|
||||
|
||||
<script src="../node_modules/webextension-polyfill/dist/browser-polyfill.js"></script>
|
||||
<script src="../js/wappalyzer.js"></script>
|
||||
<script src="../js/options.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="hero">
|
||||
<div class="container">
|
||||
<img src="../images/logo-white.svg">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<div class="container">
|
||||
<h1 data-i18n="options">Options</h1>
|
||||
|
||||
<p>
|
||||
<label for="option-upgrade-message"><input id="option-upgrade-message" type="checkbox"> <span data-i18n="optionUpgradeMessage">Tell me about upgrades</span></label>
|
||||
<label for="option-dynamic-icon"><input id="option-dynamic-icon" type="checkbox"> <span data-i18n="optionDynamicIcon">Use application icon instead of Wappalyzer logo</span></label>
|
||||
<label for="option-tracking"><input id="option-tracking" type="checkbox"> <span data-i18n="optionTracking">Anonymously send reports on detected applications to wappalyzer.com for research</span></label>
|
||||
</p>
|
||||
|
||||
<div id="about">
|
||||
<p>
|
||||
<button id="github"><img src="../images/github.png" width="16" height="16" alt=""/> <span data-i18n="github" >Fork Wappalyzer on GitHub!</span></button><!--
|
||||
--><button id="twitter"><img src="../images/twitter.png" width="16" height="16" alt=""/> <span data-i18n="twitter">Follow Wappalyzer on Twitter</span></button><!--
|
||||
--><button id="wappalyzer"><img src="../images/icon_16.png" width="16" height="16" alt=""/> <span data-i18n="website">Go to wappalyzer.com</span></button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title data-i18n="options">Wappalyzer options</title>
|
||||
|
||||
<link rel="icon" href="../images/icon_32.png">
|
||||
|
||||
<link rel="stylesheet" href="../css/options.css">
|
||||
|
||||
<script src="../node_modules/webextension-polyfill/dist/browser-polyfill.js"></script>
|
||||
<script src="../js/wappalyzer.js"></script>
|
||||
<script src="../js/options.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="hero">
|
||||
<div class="container">
|
||||
<img src="../images/logo-white.svg">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
<div class="container">
|
||||
<h1 data-i18n="options">Options</h1>
|
||||
|
||||
<p>
|
||||
<label for="option-upgrade-message">
|
||||
<input id="option-upgrade-message" type="checkbox">
|
||||
<span data-i18n="optionUpgradeMessage">Tell me about upgrades</span>
|
||||
</label>
|
||||
<label for="option-dynamic-icon">
|
||||
<input id="option-dynamic-icon" type="checkbox">
|
||||
<span data-i18n="optionDynamicIcon">Use application icon instead of Wappalyzer logo</span>
|
||||
</label>
|
||||
<label for="option-tracking">
|
||||
<input id="option-tracking" type="checkbox">
|
||||
<span data-i18n="optionTracking">Anonymously send reports on detected applications to wappalyzer.com for research</span>
|
||||
</label>
|
||||
</p>
|
||||
|
||||
<div id="about">
|
||||
<p>
|
||||
<button id="github">
|
||||
<img src="../images/github.png" width="16" height="16" alt="GitHub icon" />
|
||||
<span data-i18n="github">Fork Wappalyzer on GitHub!</span>
|
||||
</button>
|
||||
<button id="twitter">
|
||||
<img src="../images/twitter.png" width="16" height="16" alt="Twitter icon" />
|
||||
<span data-i18n="twitter">Follow Wappalyzer on Twitter</span>
|
||||
</button>
|
||||
<button id="wappalyzer">
|
||||
<img src="../images/icon_16.png" width="16" height="16" alt="Wappalyzer icon" />
|
||||
<span data-i18n="website">Go to wappalyzer.com</span>
|
||||
</button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 1.3 KiB |
@ -1,16 +1,61 @@
|
||||
(function() {
|
||||
try {
|
||||
var i, environmentVars = '', e = document.createEvent('Events');
|
||||
addEventListener('message', (event => {
|
||||
if ( event.data.id !== 'patterns' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
e.initEvent('wappalyzerEvent', true, false);
|
||||
const patterns = event.data.patterns || {};
|
||||
|
||||
for ( i in window ) {
|
||||
environmentVars += i + ' ';
|
||||
}
|
||||
const js = {};
|
||||
|
||||
document.getElementById('wappalyzerData').appendChild(document.createComment(environmentVars));
|
||||
document.getElementById('wappalyzerData').dispatchEvent(e);
|
||||
} catch(e) {
|
||||
// Fail quietly
|
||||
}
|
||||
for ( let appName in patterns ) {
|
||||
if ( patterns.hasOwnProperty(appName) ) {
|
||||
js[appName] = {};
|
||||
|
||||
for ( let chain in patterns[appName] ) {
|
||||
if ( patterns[appName].hasOwnProperty(chain) ) {
|
||||
js[appName][chain] = {};
|
||||
|
||||
for ( let index in patterns[appName][chain] ) {
|
||||
const value = detectJs(chain);
|
||||
|
||||
if ( value ) {
|
||||
js[appName][chain][index] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
postMessage({ id: 'js', js }, '*');
|
||||
}), false);
|
||||
} catch(e) {
|
||||
// Fail quietly
|
||||
}
|
||||
|
||||
function detectJs(chain) {
|
||||
try {
|
||||
const properties = chain.split('.');
|
||||
|
||||
var value = properties.length ? window : null;
|
||||
|
||||
for ( let i = 0; i < properties.length; i ++ ) {
|
||||
var property = properties[i];
|
||||
|
||||
if ( value.hasOwnProperty(property) ) {
|
||||
value = value[property];
|
||||
} else {
|
||||
value = null;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return typeof value === 'string' || typeof value === 'number' ? value : !!value;
|
||||
} catch(e) {
|
||||
// Fail quietly
|
||||
}
|
||||
}
|
||||
}());
|
||||
|
@ -1,846 +0,0 @@
|
||||
if (!Range.prototype["intersectsNode"]) {
|
||||
Range.prototype["intersectsNode"] = function (node) {
|
||||
let range = document.createRange();
|
||||
range.selectNode(node);
|
||||
return 0 > this.compareBoundaryPoints(Range.END_TO_START, range)
|
||||
&& 0 < this.compareBoundaryPoints(Range.START_TO_END, range);
|
||||
};
|
||||
}
|
||||
var getExtensionProtocol = function () {
|
||||
if (typeof browser == "undefined") {
|
||||
if (typeof chrome !== "undefined")
|
||||
return "chrome-extension://";
|
||||
}
|
||||
else {
|
||||
return "ms-browser-extension://";
|
||||
}
|
||||
};
|
||||
class FakeEvent {
|
||||
addListener(callback) { }
|
||||
addRules(rules, callback) { }
|
||||
getRules(ruleIdentifiers, callback) { }
|
||||
hasListener(callback) { return false; }
|
||||
hasListeners() { return false; }
|
||||
removeRules(ruleIdentifiers, callback) { }
|
||||
removeListener(callback) { }
|
||||
}
|
||||
class EdgeBridgeHelper {
|
||||
constructor() {
|
||||
this.fakeEvent = new FakeEvent();
|
||||
}
|
||||
toAbsolutePath(relativePath) {
|
||||
if (relativePath.indexOf("ms-browser-extension://") == 0) {
|
||||
return relativePath.replace(myBrowser.runtime.getURL(""), "");
|
||||
}
|
||||
else if (relativePath.indexOf("/") != 0) {
|
||||
var absolutePath = "";
|
||||
var documentPath = document.location.pathname;
|
||||
absolutePath = documentPath.substring(0, documentPath.lastIndexOf("/") + 1);
|
||||
absolutePath += relativePath;
|
||||
return absolutePath;
|
||||
}
|
||||
return relativePath;
|
||||
}
|
||||
}
|
||||
var bridgeHelper = new EdgeBridgeHelper();
|
||||
class EdgeBridgeDebugLog {
|
||||
constructor() {
|
||||
this.CatchOnException = true;
|
||||
this.VerboseLogging = true;
|
||||
this.FailedCalls = {};
|
||||
this.SuccededCalls = {};
|
||||
this.DeprecatedCalls = {};
|
||||
this.BridgedCalls = {};
|
||||
this.UnavailableApis = {};
|
||||
this.EdgeIssues = {};
|
||||
}
|
||||
log(message) {
|
||||
try {
|
||||
if (this.VerboseLogging) {
|
||||
console.log(message);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
}
|
||||
info(message) {
|
||||
try {
|
||||
if (this.VerboseLogging) {
|
||||
console.info(message);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
}
|
||||
warn(message) {
|
||||
try {
|
||||
if (this.VerboseLogging) {
|
||||
console.warn(message);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
}
|
||||
error(message) {
|
||||
try {
|
||||
if (this.VerboseLogging) {
|
||||
console.error(message);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
}
|
||||
DoActionAndLog(action, name, deprecatedTo, bridgedTo) {
|
||||
var result;
|
||||
try {
|
||||
result = action();
|
||||
this.AddToCalledDictionary(this.SuccededCalls, name);
|
||||
if (typeof deprecatedTo !== "undefined" && typeof deprecatedTo !== "null") {
|
||||
this.warn("API Call Deprecated - Name: " + name + ", Please use " + deprecatedTo + " instead!");
|
||||
this.AddToCalledDictionary(this.DeprecatedCalls, name);
|
||||
}
|
||||
if (typeof bridgedTo !== "undefined" && typeof bridgedTo !== "null") {
|
||||
this.info("API Call '" + name + "' has been bridged to another Edge API: " + bridgedTo);
|
||||
this.AddToCalledDictionary(this.BridgedCalls, name);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
catch (ex) {
|
||||
this.AddToCalledDictionary(this.FailedCalls, name);
|
||||
if (this.CatchOnException)
|
||||
this.error("API Call Failed: " + name + " - " + ex);
|
||||
else
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
LogEdgeIssue(name, message) {
|
||||
this.warn(message);
|
||||
this.AddToCalledDictionary(this.EdgeIssues, name);
|
||||
}
|
||||
LogUnavailbleApi(name, deprecatedTo) {
|
||||
this.warn("API Call '" + name + "' is not supported in Edge");
|
||||
this.AddToCalledDictionary(this.UnavailableApis, name);
|
||||
if (typeof deprecatedTo !== "undefined" && typeof deprecatedTo !== "null") {
|
||||
this.warn("API Call Deprecated - Name: " + name + ", Please use " + deprecatedTo + " instead!");
|
||||
this.AddToCalledDictionary(this.DeprecatedCalls, name);
|
||||
}
|
||||
}
|
||||
AddToCalledDictionary(dictionary, name) {
|
||||
if (typeof dictionary[name] !== "undefined") {
|
||||
dictionary[name]++;
|
||||
}
|
||||
else {
|
||||
dictionary[name] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
var bridgeLog = new EdgeBridgeDebugLog();
|
||||
class EdgeChromeAppBridge {
|
||||
getDetails() {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return EdgeChromeRuntimeBridge.prototype.getManifest();
|
||||
}, "app.getManifest", undefined, "runtime.getManifest");
|
||||
}
|
||||
get isInstalled() { return bridgeLog.DoActionAndLog(() => { throw "app.isInstalled is not available in Edge"; }, "app.isInstalled"); }
|
||||
getIsInstalled() { return bridgeLog.DoActionAndLog(() => { throw "app.getIsInstalled is not available in the Edge"; }, "app.getIsInstalled"); }
|
||||
installState() { return bridgeLog.DoActionAndLog(() => { throw "app.installState is not available in Edge"; }, "app.installState"); }
|
||||
runningState() { return bridgeLog.DoActionAndLog(() => { throw "app.runningState is not available in Edge"; }, "app.runningState"); }
|
||||
}
|
||||
class EdgeBrowserActionBridge {
|
||||
get onClicked() { return bridgeLog.DoActionAndLog(() => { return myBrowser.browserAction.onClicked; }, "browserAction.onClicked"); }
|
||||
disable(tabId) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.browserAction.disable(tabId);
|
||||
}, "browserAction.disable");
|
||||
}
|
||||
enable(tabId) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof tabId !== "undefined" && typeof tabId !== "null") {
|
||||
myBrowser.browserAction.enable(tabId);
|
||||
}
|
||||
else {
|
||||
myBrowser.browserAction.enable();
|
||||
}
|
||||
}, "browserAction.Enable");
|
||||
}
|
||||
getBadgeBackgroundColor(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.browserAction.getBadgeBackgroundColor(details, callback);
|
||||
}, "browserAction.getBadgeBackgroundColor");
|
||||
}
|
||||
getBadgeText(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.browserAction.getBadgeText(details, callback);
|
||||
}, "browserAction.getBadgeText");
|
||||
}
|
||||
setBadgeBackgroundColor(details) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.browserAction.setBadgeBackgroundColor(details);
|
||||
}, "browserAction.setBadgeBackgroundColor");
|
||||
}
|
||||
setBadgeText(details) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.browserAction.setBadgeText(details);
|
||||
}, "browserAction.setBadgeText");
|
||||
}
|
||||
setIcon(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof details.path !== "undefined") {
|
||||
if (typeof details.path === "object") {
|
||||
for (var key in details.path) {
|
||||
if (details.path.hasOwnProperty(key)) {
|
||||
details.path[key] = bridgeHelper.toAbsolutePath(details.path[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
details.path = bridgeHelper.toAbsolutePath(details.path);
|
||||
}
|
||||
}
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.browserAction.setIcon(details, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.browserAction.setIcon(details);
|
||||
}
|
||||
}, "browserAction.setIcon", undefined, "browserAction.setIcon with absolute path");
|
||||
}
|
||||
setPopup(details) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.browserAction.setPopup(details);
|
||||
}, "browserAction.setPopup");
|
||||
}
|
||||
}
|
||||
class EdgeChromeBrowserActionBridge extends EdgeBrowserActionBridge {
|
||||
getPopup(details, callback) {
|
||||
bridgeLog.LogUnavailbleApi("browserAction.getPopup");
|
||||
}
|
||||
getTitle(details, callback) {
|
||||
bridgeLog.LogUnavailbleApi("browserAction.getTitle");
|
||||
}
|
||||
setTitle(details) {
|
||||
bridgeLog.LogUnavailbleApi("browserAction.setTitle");
|
||||
}
|
||||
}
|
||||
class EdgeContextMenusBridge {
|
||||
get ACTION_MENU_TOP_LEVEL_LIMIT() { return bridgeLog.DoActionAndLog(() => { return myBrowser.contextMenus.ACTION_MENU_TOP_LEVEL_LIMIT; }, "contextMenus.ACTION_MENU_TOP_LEVEL_LIMIT"); }
|
||||
get onClicked() { return bridgeLog.DoActionAndLog(() => { return myBrowser.contextMenus.onClicked; }, "contextMenus.onClicked"); }
|
||||
create(createProperties, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.contextMenus.create(createProperties, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.contextMenus.create(createProperties);
|
||||
}
|
||||
}, "contextMenus.create");
|
||||
}
|
||||
remove(menuItemId, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.contextMenus.remove(menuItemId, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.contextMenus.remove(menuItemId);
|
||||
}
|
||||
}, "contextMenus.remove");
|
||||
}
|
||||
removeAll(callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.contextMenus.removeAll(callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.contextMenus.removeAll();
|
||||
}
|
||||
}, "contextMenus.removeAll");
|
||||
}
|
||||
update(id, updateProperties, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.contextMenus.update(id, updateProperties, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.contextMenus.update(id, updateProperties);
|
||||
}
|
||||
}, "contextMenus.update");
|
||||
}
|
||||
}
|
||||
class EdgeCookiesBridge {
|
||||
get(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.cookies.get(details, callback);
|
||||
}, "cookies.get");
|
||||
}
|
||||
getAll(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.cookies.getAll(details, callback);
|
||||
}, "cookies.getAll");
|
||||
}
|
||||
remove(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.cookies.remove(details, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.cookies.remove(details);
|
||||
}
|
||||
}, "cookies.remove");
|
||||
}
|
||||
set(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.cookies.set(details, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.cookies.set(details);
|
||||
}
|
||||
}, "cookies.set");
|
||||
}
|
||||
}
|
||||
class EdgeChromeCookiesBridge extends EdgeCookiesBridge {
|
||||
get onChanged() { bridgeLog.LogUnavailbleApi("cookies.onChanged"); return bridgeHelper.fakeEvent; }
|
||||
}
|
||||
class EdgeExtensionBridge {
|
||||
getBackgroundPage() {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.extension.getBackgroundPage();
|
||||
}, "extension.getBackgroundPage");
|
||||
}
|
||||
getURL(path) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.extension.getURL(path);
|
||||
}, "extension.getURL");
|
||||
}
|
||||
getViews(fetchProperties) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.extension.getViews(fetchProperties);
|
||||
}, "extension.getViews");
|
||||
}
|
||||
}
|
||||
class EdgeChromeExtensionBridge extends EdgeExtensionBridge {
|
||||
get onConnect() { return bridgeLog.DoActionAndLog(() => { return EdgeRuntimeBridge.prototype.onConnect; }, "extension.onConnect", "runtime.onConnect", "runtime.onConnect"); }
|
||||
get onMessage() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "extension.onMessage", "runtime.onMessage", "runtime.onMessage"); }
|
||||
get onRequest() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "extension.onRequest", "runtime.onMessage", "runtime.onMessage"); }
|
||||
get onRequestExternal() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessageExternal; }, "extension.onRequestExternal", "runtime.onMessageExternal", "runtime.onMessageExternal"); }
|
||||
get inIncognitoContext() { return bridgeLog.DoActionAndLog(() => { return myBrowser.extension["inPrivateContext"]; }, "extension.inIncognitoContext", undefined, "extension.inPrivateContext"); }
|
||||
get lastError() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.lastError; }, "extension.lastError", undefined, "runtime.lastError"); }
|
||||
connect(extensionId, connectInfo) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return EdgeRuntimeBridge.prototype.connect(extensionId, connectInfo);
|
||||
}, "extension.connect", "runtime.connect", "runtime.connect");
|
||||
}
|
||||
sendMessage(message, responseCallback) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return EdgeRuntimeBridge.prototype.sendMessage(message, responseCallback, undefined, undefined);
|
||||
}, "extension.sendMessage", "runtime.sendMessage", "runtime.sendMessage");
|
||||
}
|
||||
sendRequest(extensionId, message, options, responseCallback) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return EdgeRuntimeBridge.prototype.sendMessage(extensionId, message, options, responseCallback);
|
||||
}, "extension.sendRequest", "runtime.sendMessage", "runtime.sendMessage");
|
||||
}
|
||||
isAllowedFileSchemeAccess(callback) {
|
||||
bridgeLog.LogUnavailbleApi("extension.isAllowedFileSchemeAccess");
|
||||
}
|
||||
isAllowedIncognitoAccess(callback) {
|
||||
bridgeLog.LogUnavailbleApi("extension.isAllowedIncognitoAccess");
|
||||
}
|
||||
setUpdateUrlData(data) {
|
||||
bridgeLog.LogUnavailbleApi("extension.setUpdateUrlData");
|
||||
}
|
||||
}
|
||||
class EdgeHistoryBridge {
|
||||
get onVisited() { bridgeLog.LogUnavailbleApi("history.onVisited"); return bridgeHelper.fakeEvent; }
|
||||
get onVisitRemoved() { bridgeLog.LogUnavailbleApi("history.onVisitRemoved"); return bridgeHelper.fakeEvent; }
|
||||
addUrl(details, callback) {
|
||||
bridgeLog.LogUnavailbleApi("history.addUrl");
|
||||
}
|
||||
deleteAll(callback) {
|
||||
bridgeLog.LogUnavailbleApi("history.deleteAll");
|
||||
}
|
||||
deleteRange(range, callback) {
|
||||
bridgeLog.LogUnavailbleApi("history.deleteRange");
|
||||
}
|
||||
deleteUrl(details, callback) {
|
||||
bridgeLog.LogUnavailbleApi("history.deleteUrl");
|
||||
}
|
||||
getVisits(details, callback) {
|
||||
bridgeLog.LogUnavailbleApi("history.getVisits");
|
||||
}
|
||||
search(query, callback) {
|
||||
bridgeLog.LogUnavailbleApi("history.search");
|
||||
}
|
||||
}
|
||||
class EdgeI18nBridge {
|
||||
getAcceptLanguages(callback) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.i18n.getAcceptLanguages(callback);
|
||||
}, "i18n.getAcceptLanguages");
|
||||
}
|
||||
getMessage(messageName, substitutions) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
if (messageName.indexOf("@@extension_id") > -1) {
|
||||
return myBrowser.runtime.id;
|
||||
}
|
||||
if (typeof substitutions !== "undefined" && typeof substitutions !== "null") {
|
||||
return myBrowser.i18n.getMessage(messageName, substitutions);
|
||||
}
|
||||
else {
|
||||
return myBrowser.i18n.getMessage(messageName);
|
||||
}
|
||||
}, "i18n.getMessage");
|
||||
}
|
||||
getUILanguage() {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.i18n.getUILanguage();
|
||||
}, "i18n.getUILanguage");
|
||||
}
|
||||
}
|
||||
class EdgeNotificationBridge {
|
||||
get onButtonClicked() { bridgeLog.LogUnavailbleApi("notifications.onButtonClicked"); return bridgeHelper.fakeEvent; }
|
||||
get onClicked() { bridgeLog.LogUnavailbleApi("notifications.onClicked"); return bridgeHelper.fakeEvent; }
|
||||
get onClosed() { bridgeLog.LogUnavailbleApi("notifications.onClosed"); return bridgeHelper.fakeEvent; }
|
||||
get onPermissionLevelChanged() { bridgeLog.LogUnavailbleApi("notifications.onPermissionLevelChanged"); return bridgeHelper.fakeEvent; }
|
||||
get onShowSettings() { bridgeLog.LogUnavailbleApi("notifications.onShowSettings"); return bridgeHelper.fakeEvent; }
|
||||
clear(notificationId, callback) {
|
||||
bridgeLog.LogUnavailbleApi("notifications.clear");
|
||||
}
|
||||
create(notificationId, options, callback) {
|
||||
bridgeLog.LogUnavailbleApi("notifications.create");
|
||||
}
|
||||
getAll(callback) {
|
||||
bridgeLog.LogUnavailbleApi("notifications.getAll");
|
||||
}
|
||||
getPermissionLevel(callback) {
|
||||
bridgeLog.LogUnavailbleApi("notifications.getPermissionLevel");
|
||||
}
|
||||
update(notificationId, options, callback) {
|
||||
bridgeLog.LogUnavailbleApi("notifications.update");
|
||||
}
|
||||
}
|
||||
class EdgePageActionBridge {
|
||||
get onClicked() { return bridgeLog.DoActionAndLog(() => { return myBrowser.pageAction.onClicked; }, "pageAction.onClicked"); }
|
||||
getPopup(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.pageAction.getPopup(details, callback);
|
||||
}, "pageAction.getPopup");
|
||||
}
|
||||
getTitle(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.pageAction.getTitle(details, callback);
|
||||
}, "pageAction.getTitle");
|
||||
}
|
||||
hide(tabId) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.pageAction.hide(tabId);
|
||||
}, "pageAction.hide");
|
||||
}
|
||||
setTitle(details) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.pageAction.setTitle(details);
|
||||
}, "pageAction.setTitle");
|
||||
}
|
||||
setIcon(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.pageAction.setIcon(details, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.pageAction.setIcon(details, callback);
|
||||
}
|
||||
}, "pageAction.setIcon");
|
||||
}
|
||||
setPopup(details) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.pageAction.setPopup(details);
|
||||
}, "pageAction.setPopup");
|
||||
}
|
||||
show(tabId) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.pageAction.show(tabId);
|
||||
}, "pageAction.show");
|
||||
}
|
||||
}
|
||||
class EdgePermissionsBridge {
|
||||
get onAdded() { bridgeLog.LogUnavailbleApi("permissions.onAdded"); return bridgeHelper.fakeEvent; }
|
||||
get onRemoved() { bridgeLog.LogUnavailbleApi("permissions.onRemoved"); return bridgeHelper.fakeEvent; }
|
||||
contains(permissions, callback) {
|
||||
bridgeLog.LogUnavailbleApi("permissions.contains");
|
||||
}
|
||||
getAll(callback) {
|
||||
bridgeLog.LogUnavailbleApi("permissions.getAll");
|
||||
}
|
||||
remove(permissions, callback) {
|
||||
bridgeLog.LogUnavailbleApi("permissions.remove");
|
||||
}
|
||||
request(permissions, callback) {
|
||||
bridgeLog.LogUnavailbleApi("permissions.request");
|
||||
}
|
||||
}
|
||||
class EdgeRuntimeBridge {
|
||||
get id() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.id; }, "runtime.id"); }
|
||||
get lastError() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.lastError; }, "runtime.lastError"); }
|
||||
get onConnect() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onConnect; }, "runtime.onConnect"); }
|
||||
get onInstalled() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onInstalled; }, "runtime.onInstalled"); }
|
||||
get onMessage() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "runtime.onMessage"); }
|
||||
get onMessageExternal() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessageExternal; }, "runtime.onMessageExternal"); }
|
||||
connect(extensionId, connectInfo) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof connectInfo !== "undefined" && typeof connectInfo !== "null") {
|
||||
return myBrowser.runtime.connect(extensionId, connectInfo);
|
||||
}
|
||||
else {
|
||||
return myBrowser.runtime.connect(extensionId);
|
||||
}
|
||||
}, "runtime.connect");
|
||||
}
|
||||
getBackgroundPage(callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.runtime.getBackgroundPage(callback);
|
||||
}, "runtime.getBackgroundPage");
|
||||
}
|
||||
getManifest() {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.runtime.getManifest();
|
||||
}, "runtime.getManifest");
|
||||
}
|
||||
getURL(path) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.runtime.getURL(path);
|
||||
}, "runtime.getURL");
|
||||
}
|
||||
sendMessage(extensionId, message, options, responseCallback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof responseCallback !== "undefined" && typeof responseCallback !== "null") {
|
||||
myBrowser.runtime.sendMessage(extensionId, message, options, responseCallback);
|
||||
}
|
||||
else if (typeof options !== "undefined" && typeof options !== "null") {
|
||||
myBrowser.runtime.sendMessage(extensionId, message, options);
|
||||
}
|
||||
else if (typeof message !== "undefined" && typeof message !== "null") {
|
||||
myBrowser.runtime.sendMessage(extensionId, message);
|
||||
}
|
||||
else {
|
||||
myBrowser.runtime.sendMessage(undefined, extensionId);
|
||||
}
|
||||
}, "runtime.sendMessage");
|
||||
}
|
||||
}
|
||||
class EdgeChromeRuntimeBridge extends EdgeRuntimeBridge {
|
||||
get onConnectExternal() { bridgeLog.LogUnavailbleApi("runtime.onConnectExternal"); return bridgeHelper.fakeEvent; }
|
||||
get onRestartRequired() { bridgeLog.LogUnavailbleApi("runtime.onRestartRequired"); return bridgeHelper.fakeEvent; }
|
||||
get onStartup() { bridgeLog.LogUnavailbleApi("runtime.onStartup"); return bridgeHelper.fakeEvent; }
|
||||
get onSuspend() { bridgeLog.LogUnavailbleApi("runtime.onSuspend"); return bridgeHelper.fakeEvent; }
|
||||
get onSuspendCanceled() { bridgeLog.LogUnavailbleApi("runtime.onSuspendCanceled"); return bridgeHelper.fakeEvent; }
|
||||
get onUpdateAvailable() { bridgeLog.LogUnavailbleApi("runtime.onUpdateAvailable"); return bridgeHelper.fakeEvent; }
|
||||
openOptionsPage(callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
var optionsPage = myBrowser.runtime.getManifest()["options_page"];
|
||||
var optionsPageUrl = myBrowser.runtime.getURL(optionsPage);
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.tabs.create({ url: optionsPageUrl }, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.tabs.create({ url: optionsPageUrl });
|
||||
}
|
||||
}, "runtime.openOptionsPage", undefined, "tabs.create({ url: optionsPageUrl })");
|
||||
}
|
||||
connectNative(application) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.connectNative");
|
||||
return null;
|
||||
}
|
||||
getPackageDirectoryEntry(callback) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.getPackageDirectoryEntry");
|
||||
}
|
||||
getPlatformInfo(callback) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.getPlatformInfo");
|
||||
}
|
||||
reload() {
|
||||
bridgeLog.LogUnavailbleApi("runtime.reload");
|
||||
}
|
||||
requestUpdateCheck(callback) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.requestUpdateCheck");
|
||||
}
|
||||
restart() {
|
||||
bridgeLog.LogUnavailbleApi("runtime.restart");
|
||||
}
|
||||
setUninstallURL(url, callback) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.setUninstallURL");
|
||||
}
|
||||
sendNativeMessage(application, message, responseCallback) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.sendNativeMessage");
|
||||
}
|
||||
}
|
||||
class EdgeStorageBridge {
|
||||
get local() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.local; }, "storage.local"); }
|
||||
get onChanged() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.onChanged; }, "storage.onChanged"); }
|
||||
}
|
||||
class EdgeChromeStorageBridge extends EdgeStorageBridge {
|
||||
get managed() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.local; }, "storage.managed", undefined, "storage.local"); }
|
||||
get sync() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.local; }, "storage.sync", undefined, "storage.local"); }
|
||||
}
|
||||
class EdgeTabsBridge {
|
||||
get onActivated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onActivated; }, "tabs.onActivated"); }
|
||||
get onCreated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onCreated; }, "tabs.onCreated"); }
|
||||
get onRemoved() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onRemoved; }, "tabs.onRemoved"); }
|
||||
get onReplaced() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onReplaced; }, "tabs.onReplaced"); }
|
||||
get onUpdated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.tabs.onUpdated; }, "tabs.onUpdated"); }
|
||||
create(createProperties, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.tabs.create(createProperties, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.tabs.create(createProperties);
|
||||
}
|
||||
}, "tabs.create");
|
||||
}
|
||||
detectLanguage(tabId, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.tabs.detectLanguage(tabId, callback);
|
||||
}, "tabs.detectLanguage");
|
||||
}
|
||||
executeScript(tabId, details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.tabs.executeScript(tabId, details, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.tabs.executeScript(tabId, details);
|
||||
}
|
||||
}, "tabs.executeScript");
|
||||
}
|
||||
get(tabId, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.tabs.get(tabId, callback);
|
||||
}, "tabs.get");
|
||||
}
|
||||
getCurrent(callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.tabs.getCurrent(callback);
|
||||
}, "tabs.getCurrent");
|
||||
}
|
||||
insertCSS(tabId, details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.tabs.insertCSS(tabId, details, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.tabs.insertCSS(tabId, details);
|
||||
}
|
||||
}, "tabs.insertCSS");
|
||||
}
|
||||
query(queryInfo, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.tabs.query(queryInfo, callback);
|
||||
}, "tabs.query");
|
||||
}
|
||||
remove(tabId, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.tabs.remove(tabId, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.tabs.remove(tabId);
|
||||
}
|
||||
}, "tabs.remove");
|
||||
}
|
||||
sendMessage(tabId, message, responseCallback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof responseCallback !== "undefined" && typeof responseCallback !== "null") {
|
||||
myBrowser.tabs.sendMessage(tabId, message, responseCallback);
|
||||
}
|
||||
else {
|
||||
myBrowser.tabs.sendMessage(tabId, message);
|
||||
}
|
||||
}, "tabs.sendMessage");
|
||||
}
|
||||
update(tabId, updateProperties, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.tabs.update(tabId, updateProperties, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.tabs.update(tabId, updateProperties);
|
||||
}
|
||||
}, "tabs.update");
|
||||
}
|
||||
}
|
||||
class EdgeChromeTabsBridge extends EdgeTabsBridge {
|
||||
get onAttached() { bridgeLog.LogUnavailbleApi("tabs.onAttached"); return bridgeHelper.fakeEvent; }
|
||||
get onDetached() { bridgeLog.LogUnavailbleApi("tabs.onDetached"); return bridgeHelper.fakeEvent; }
|
||||
get onHighlighted() { bridgeLog.LogUnavailbleApi("tabs.onHighlighted"); return bridgeHelper.fakeEvent; }
|
||||
get onMoved() { bridgeLog.LogUnavailbleApi("tabs.onMoved"); return bridgeHelper.fakeEvent; }
|
||||
get onSelectionChanged() {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
var fakeEvent = bridgeHelper.fakeEvent;
|
||||
fakeEvent.addListener = (callback) => {
|
||||
myBrowser.tabs.onActivated.addListener((activeInfo) => {
|
||||
callback(activeInfo.tabId, { windowId: activeInfo.windowId });
|
||||
});
|
||||
};
|
||||
return fakeEvent;
|
||||
}, "tabs.onSelectionChanged", "tabs.onActivated", "tabs.onActivated");
|
||||
}
|
||||
duplicate(tabId, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
this.get(tabId, function (tab) {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.tabs.create({ url: tab.url }, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.tabs.create({ url: tab.url });
|
||||
}
|
||||
});
|
||||
}, "tabs.duplicate", undefined, "tabs.create");
|
||||
}
|
||||
getAllInWindow(windowId, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
this.query({ windowId: windowId }, callback);
|
||||
}, "tabs.getAllInWindow", "tabs.query", "tabs.query");
|
||||
}
|
||||
getSelected(windowId, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
this.query({ active: true }, (tabs) => callback(tabs[0]));
|
||||
}, "tabs.getSelected", "tabs.query", "tabs.query");
|
||||
}
|
||||
sendRequest(tabId, request, responseCallback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
this.sendMessage(tabId, request, responseCallback);
|
||||
}, "tabs.sendRequest", "tabs.sendMessage", "tabs.sendMessage");
|
||||
}
|
||||
captureVisibleTab(windowId, options, callback) {
|
||||
bridgeLog.LogUnavailbleApi("tabs.captureVisibleTab");
|
||||
}
|
||||
connect(tabId, connectInfo) {
|
||||
bridgeLog.LogUnavailbleApi("tabs.connect");
|
||||
return null;
|
||||
}
|
||||
highlight(highlightInfo, callback) {
|
||||
bridgeLog.LogUnavailbleApi("tabs.highlight");
|
||||
}
|
||||
move(tabId, moveProperties, callback) {
|
||||
bridgeLog.LogUnavailbleApi("tabs.move");
|
||||
}
|
||||
reload(tabId, reloadProperties, callback) {
|
||||
bridgeLog.LogUnavailbleApi("tabs.reload");
|
||||
}
|
||||
}
|
||||
class EdgeWebNavigationBridge {
|
||||
get onBeforeNavigate() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onBeforeNavigate; }, "webNavigation.onBeforeNavigate"); }
|
||||
get onCommitted() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onCommitted; }, "webNavigation.onCommitted"); }
|
||||
get onCompleted() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onCompleted; }, "webNavigation.onCompleted"); }
|
||||
get onCreatedNavigationTarget() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onCreatedNavigationTarget; }, "webNavigation.onCreatedNavigationTarget"); }
|
||||
get onDOMContentLoaded() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onDOMContentLoaded; }, "webNavigation.onDOMContentLoaded"); }
|
||||
get onErrorOccurred() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onErrorOccurred; }, "webNavigation.onErrorOccurred"); }
|
||||
get onHistoryStateUpdated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onHistoryStateUpdated; }, "webNavigation.onHistoryStateUpdated"); }
|
||||
get onReferenceFragmentUpdated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onReferenceFragmentUpdated; }, "webNavigation.onReferenceFragmentUpdated"); }
|
||||
get onTabReplaced() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webNavigation.onTabReplaced; }, "webNavigation.onTabReplaced"); }
|
||||
getAllFrames(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.webNavigation.getAllFrames(details, callback);
|
||||
}, "webNavigation.getAllFrames");
|
||||
}
|
||||
getFrame(details, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.webNavigation.getFrame(details, callback);
|
||||
}, "webNavigation.getFrame");
|
||||
}
|
||||
}
|
||||
class EdgeWebRequestBridge {
|
||||
get MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES; }, "webNavigation.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES"); }
|
||||
get onAuthRequired() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onAuthRequired; }, "webNavigation.onAuthRequired"); }
|
||||
get onBeforeRedirect() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onBeforeRedirect; }, "webNavigation.onBeforeRedirect"); }
|
||||
get onBeforeRequest() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onBeforeRequest; }, "webNavigation.onBeforeRequest"); }
|
||||
get onBeforeSendHeaders() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onBeforeSendHeaders; }, "webNavigation.onBeforeSendHeaders"); }
|
||||
get onCompleted() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onCompleted; }, "webNavigation.onCompleted"); }
|
||||
get onErrorOccurred() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onErrorOccurred; }, "webNavigation.onErrorOccurred"); }
|
||||
get onHeadersReceived() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onHeadersReceived; }, "webNavigation.onHeadersReceived"); }
|
||||
get onResponseStarted() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onResponseStarted; }, "webNavigation.onResponseStarted"); }
|
||||
get onSendHeaders() { return bridgeLog.DoActionAndLog(() => { return myBrowser.webRequest.onSendHeaders; }, "webNavigation.onSendHeaders"); }
|
||||
handlerBehaviorChanged(callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.webRequest.handlerBehaviorChanged(callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.webRequest.handlerBehaviorChanged();
|
||||
}
|
||||
}, "webRequest.handlerBehaviorChanged");
|
||||
}
|
||||
}
|
||||
class EdgeWindowsBridge {
|
||||
get WINDOW_ID_CURRENT() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.WINDOW_ID_CURRENT; }, "windows.WINDOW_ID_CURRENT"); }
|
||||
get WINDOW_ID_NONE() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.WINDOW_ID_NONE; }, "windows.WINDOW_ID_NONE"); }
|
||||
get onCreated() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.onCreated; }, "windows.onCreated"); }
|
||||
get onFocusChanged() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.onFocusChanged; }, "windows.onFocusChanged"); }
|
||||
get onRemoved() { return bridgeLog.DoActionAndLog(() => { return myBrowser.windows.onRemoved; }, "windows.onRemoved"); }
|
||||
create(createData, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.windows.create(createData, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.windows.create(createData);
|
||||
}
|
||||
}, "windows.create");
|
||||
}
|
||||
get(windowId, getInfo, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.windows.get(windowId, getInfo, callback);
|
||||
}, "windows.get");
|
||||
}
|
||||
getAll(getInfo, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.windows.getAll(getInfo, callback);
|
||||
}, "windows.getAll");
|
||||
}
|
||||
getCurrent(getInfo, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.windows.getCurrent(getInfo, callback);
|
||||
}, "windows.getCurrent");
|
||||
}
|
||||
getLastFocused(getInfo, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.windows.getLastFocused(getInfo, callback);
|
||||
}, "windows.getLastFocused");
|
||||
}
|
||||
update(windowId, updateInfo, callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.windows.update(windowId, updateInfo, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.windows.update(windowId, updateInfo);
|
||||
}
|
||||
}, "windows.update");
|
||||
}
|
||||
}
|
||||
class EdgeChromeWindowsBridge extends EdgeWindowsBridge {
|
||||
remove(windowId, callback) {
|
||||
bridgeLog.LogUnavailbleApi("windows.remove");
|
||||
}
|
||||
}
|
||||
class EdgeBackgroundBridge {
|
||||
constructor() {
|
||||
this.app = new EdgeChromeAppBridge();
|
||||
this.browserAction = typeof browser.browserAction !== "undefined" ? new EdgeChromeBrowserActionBridge() : undefined;
|
||||
this.contextMenus = typeof browser.contextMenus !== "undefined" ? new EdgeContextMenusBridge() : undefined;
|
||||
this.cookies = typeof browser.cookies !== "undefined" ? new EdgeChromeCookiesBridge() : undefined;
|
||||
this.extension = typeof browser.extension !== "undefined" ? new EdgeChromeExtensionBridge() : undefined;
|
||||
this.history = typeof browser.history !== "undefined" ? new EdgeHistoryBridge() : undefined;
|
||||
this.i18n = typeof browser.i18n !== "undefined" ? new EdgeI18nBridge() : undefined;
|
||||
this.notifications = typeof browser.notifications !== "undefined" ? new EdgeNotificationBridge() : undefined;
|
||||
this.pageAction = typeof browser.pageAction !== "undefined" ? new EdgePageActionBridge() : undefined;
|
||||
this.permissions = typeof browser.permissions !== "undefined" ? new EdgePermissionsBridge() : undefined;
|
||||
this.runtime = typeof browser.runtime !== "undefined" ? new EdgeChromeRuntimeBridge() : undefined;
|
||||
this.storage = typeof browser.storage !== "undefined" ? new EdgeChromeStorageBridge() : undefined;
|
||||
this.tabs = typeof browser.tabs !== "undefined" ? new EdgeChromeTabsBridge() : undefined;
|
||||
this.webNavigation = typeof browser.webNavigation !== "undefined" ? new EdgeWebNavigationBridge() : undefined;
|
||||
this.webRequest = typeof browser.webRequest !== "undefined" ? new EdgeWebRequestBridge() : undefined;
|
||||
this.windows = typeof browser.windows !== "undefined" ? new EdgeChromeWindowsBridge() : undefined;
|
||||
}
|
||||
}
|
||||
var myBrowser = browser;
|
||||
var chrome = new EdgeBackgroundBridge();
|
@ -1,323 +0,0 @@
|
||||
if (!Range.prototype["intersectsNode"]) {
|
||||
Range.prototype["intersectsNode"] = function (node) {
|
||||
let range = document.createRange();
|
||||
range.selectNode(node);
|
||||
return 0 > this.compareBoundaryPoints(Range.END_TO_START, range)
|
||||
&& 0 < this.compareBoundaryPoints(Range.START_TO_END, range);
|
||||
};
|
||||
}
|
||||
var getExtensionProtocol = function () {
|
||||
if (typeof browser == "undefined") {
|
||||
if (typeof chrome !== "undefined")
|
||||
return "chrome-extension://";
|
||||
}
|
||||
else {
|
||||
return "ms-browser-extension://";
|
||||
}
|
||||
};
|
||||
class FakeEvent {
|
||||
addListener(callback) { }
|
||||
addRules(rules, callback) { }
|
||||
getRules(ruleIdentifiers, callback) { }
|
||||
hasListener(callback) { return false; }
|
||||
hasListeners() { return false; }
|
||||
removeRules(ruleIdentifiers, callback) { }
|
||||
removeListener(callback) { }
|
||||
}
|
||||
class EdgeBridgeHelper {
|
||||
constructor() {
|
||||
this.fakeEvent = new FakeEvent();
|
||||
}
|
||||
toAbsolutePath(relativePath) {
|
||||
if (relativePath.indexOf("ms-browser-extension://") == 0) {
|
||||
return relativePath.replace(myBrowser.runtime.getURL(""), "");
|
||||
}
|
||||
else if (relativePath.indexOf("/") != 0) {
|
||||
var absolutePath = "";
|
||||
var documentPath = document.location.pathname;
|
||||
absolutePath = documentPath.substring(0, documentPath.lastIndexOf("/") + 1);
|
||||
absolutePath += relativePath;
|
||||
return absolutePath;
|
||||
}
|
||||
return relativePath;
|
||||
}
|
||||
}
|
||||
var bridgeHelper = new EdgeBridgeHelper();
|
||||
class EdgeBridgeDebugLog {
|
||||
constructor() {
|
||||
this.CatchOnException = true;
|
||||
this.VerboseLogging = true;
|
||||
this.FailedCalls = {};
|
||||
this.SuccededCalls = {};
|
||||
this.DeprecatedCalls = {};
|
||||
this.BridgedCalls = {};
|
||||
this.UnavailableApis = {};
|
||||
this.EdgeIssues = {};
|
||||
}
|
||||
log(message) {
|
||||
try {
|
||||
if (this.VerboseLogging) {
|
||||
console.log(message);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
}
|
||||
info(message) {
|
||||
try {
|
||||
if (this.VerboseLogging) {
|
||||
console.info(message);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
}
|
||||
warn(message) {
|
||||
try {
|
||||
if (this.VerboseLogging) {
|
||||
console.warn(message);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
}
|
||||
error(message) {
|
||||
try {
|
||||
if (this.VerboseLogging) {
|
||||
console.error(message);
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
}
|
||||
DoActionAndLog(action, name, deprecatedTo, bridgedTo) {
|
||||
var result;
|
||||
try {
|
||||
result = action();
|
||||
this.AddToCalledDictionary(this.SuccededCalls, name);
|
||||
if (typeof deprecatedTo !== "undefined" && typeof deprecatedTo !== "null") {
|
||||
this.warn("API Call Deprecated - Name: " + name + ", Please use " + deprecatedTo + " instead!");
|
||||
this.AddToCalledDictionary(this.DeprecatedCalls, name);
|
||||
}
|
||||
if (typeof bridgedTo !== "undefined" && typeof bridgedTo !== "null") {
|
||||
this.info("API Call '" + name + "' has been bridged to another Edge API: " + bridgedTo);
|
||||
this.AddToCalledDictionary(this.BridgedCalls, name);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
catch (ex) {
|
||||
this.AddToCalledDictionary(this.FailedCalls, name);
|
||||
if (this.CatchOnException)
|
||||
this.error("API Call Failed: " + name + " - " + ex);
|
||||
else
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
LogEdgeIssue(name, message) {
|
||||
this.warn(message);
|
||||
this.AddToCalledDictionary(this.EdgeIssues, name);
|
||||
}
|
||||
LogUnavailbleApi(name, deprecatedTo) {
|
||||
this.warn("API Call '" + name + "' is not supported in Edge");
|
||||
this.AddToCalledDictionary(this.UnavailableApis, name);
|
||||
if (typeof deprecatedTo !== "undefined" && typeof deprecatedTo !== "null") {
|
||||
this.warn("API Call Deprecated - Name: " + name + ", Please use " + deprecatedTo + " instead!");
|
||||
this.AddToCalledDictionary(this.DeprecatedCalls, name);
|
||||
}
|
||||
}
|
||||
AddToCalledDictionary(dictionary, name) {
|
||||
if (typeof dictionary[name] !== "undefined") {
|
||||
dictionary[name]++;
|
||||
}
|
||||
else {
|
||||
dictionary[name] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
var bridgeLog = new EdgeBridgeDebugLog();
|
||||
class EdgeExtensionBridge {
|
||||
getBackgroundPage() {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.extension.getBackgroundPage();
|
||||
}, "extension.getBackgroundPage");
|
||||
}
|
||||
getURL(path) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.extension.getURL(path);
|
||||
}, "extension.getURL");
|
||||
}
|
||||
getViews(fetchProperties) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.extension.getViews(fetchProperties);
|
||||
}, "extension.getViews");
|
||||
}
|
||||
}
|
||||
class EdgeChromeExtensionBridge extends EdgeExtensionBridge {
|
||||
get onConnect() { return bridgeLog.DoActionAndLog(() => { return EdgeRuntimeBridge.prototype.onConnect; }, "extension.onConnect", "runtime.onConnect", "runtime.onConnect"); }
|
||||
get onMessage() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "extension.onMessage", "runtime.onMessage", "runtime.onMessage"); }
|
||||
get onRequest() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "extension.onRequest", "runtime.onMessage", "runtime.onMessage"); }
|
||||
get onRequestExternal() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessageExternal; }, "extension.onRequestExternal", "runtime.onMessageExternal", "runtime.onMessageExternal"); }
|
||||
get inIncognitoContext() { return bridgeLog.DoActionAndLog(() => { return myBrowser.extension["inPrivateContext"]; }, "extension.inIncognitoContext", undefined, "extension.inPrivateContext"); }
|
||||
get lastError() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.lastError; }, "extension.lastError", undefined, "runtime.lastError"); }
|
||||
connect(extensionId, connectInfo) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return EdgeRuntimeBridge.prototype.connect(extensionId, connectInfo);
|
||||
}, "extension.connect", "runtime.connect", "runtime.connect");
|
||||
}
|
||||
sendMessage(message, responseCallback) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return EdgeRuntimeBridge.prototype.sendMessage(message, responseCallback, undefined, undefined);
|
||||
}, "extension.sendMessage", "runtime.sendMessage", "runtime.sendMessage");
|
||||
}
|
||||
sendRequest(extensionId, message, options, responseCallback) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return EdgeRuntimeBridge.prototype.sendMessage(extensionId, message, options, responseCallback);
|
||||
}, "extension.sendRequest", "runtime.sendMessage", "runtime.sendMessage");
|
||||
}
|
||||
isAllowedFileSchemeAccess(callback) {
|
||||
bridgeLog.LogUnavailbleApi("extension.isAllowedFileSchemeAccess");
|
||||
}
|
||||
isAllowedIncognitoAccess(callback) {
|
||||
bridgeLog.LogUnavailbleApi("extension.isAllowedIncognitoAccess");
|
||||
}
|
||||
setUpdateUrlData(data) {
|
||||
bridgeLog.LogUnavailbleApi("extension.setUpdateUrlData");
|
||||
}
|
||||
}
|
||||
class EdgeI18nBridge {
|
||||
getAcceptLanguages(callback) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.i18n.getAcceptLanguages(callback);
|
||||
}, "i18n.getAcceptLanguages");
|
||||
}
|
||||
getMessage(messageName, substitutions) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
if (messageName.indexOf("@@extension_id") > -1) {
|
||||
return myBrowser.runtime.id;
|
||||
}
|
||||
if (typeof substitutions !== "undefined" && typeof substitutions !== "null") {
|
||||
return myBrowser.i18n.getMessage(messageName, substitutions);
|
||||
}
|
||||
else {
|
||||
return myBrowser.i18n.getMessage(messageName);
|
||||
}
|
||||
}, "i18n.getMessage");
|
||||
}
|
||||
getUILanguage() {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.i18n.getUILanguage();
|
||||
}, "i18n.getUILanguage");
|
||||
}
|
||||
}
|
||||
class EdgeRuntimeBridge {
|
||||
get id() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.id; }, "runtime.id"); }
|
||||
get lastError() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.lastError; }, "runtime.lastError"); }
|
||||
get onConnect() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onConnect; }, "runtime.onConnect"); }
|
||||
get onInstalled() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onInstalled; }, "runtime.onInstalled"); }
|
||||
get onMessage() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessage; }, "runtime.onMessage"); }
|
||||
get onMessageExternal() { return bridgeLog.DoActionAndLog(() => { return myBrowser.runtime.onMessageExternal; }, "runtime.onMessageExternal"); }
|
||||
connect(extensionId, connectInfo) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof connectInfo !== "undefined" && typeof connectInfo !== "null") {
|
||||
return myBrowser.runtime.connect(extensionId, connectInfo);
|
||||
}
|
||||
else {
|
||||
return myBrowser.runtime.connect(extensionId);
|
||||
}
|
||||
}, "runtime.connect");
|
||||
}
|
||||
getBackgroundPage(callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
myBrowser.runtime.getBackgroundPage(callback);
|
||||
}, "runtime.getBackgroundPage");
|
||||
}
|
||||
getManifest() {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.runtime.getManifest();
|
||||
}, "runtime.getManifest");
|
||||
}
|
||||
getURL(path) {
|
||||
return bridgeLog.DoActionAndLog(() => {
|
||||
return myBrowser.runtime.getURL(path);
|
||||
}, "runtime.getURL");
|
||||
}
|
||||
sendMessage(extensionId, message, options, responseCallback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
if (typeof responseCallback !== "undefined" && typeof responseCallback !== "null") {
|
||||
myBrowser.runtime.sendMessage(extensionId, message, options, responseCallback);
|
||||
}
|
||||
else if (typeof options !== "undefined" && typeof options !== "null") {
|
||||
myBrowser.runtime.sendMessage(extensionId, message, options);
|
||||
}
|
||||
else if (typeof message !== "undefined" && typeof message !== "null") {
|
||||
myBrowser.runtime.sendMessage(extensionId, message);
|
||||
}
|
||||
else {
|
||||
myBrowser.runtime.sendMessage(undefined, extensionId);
|
||||
}
|
||||
}, "runtime.sendMessage");
|
||||
}
|
||||
}
|
||||
class EdgeChromeRuntimeBridge extends EdgeRuntimeBridge {
|
||||
get onConnectExternal() { bridgeLog.LogUnavailbleApi("runtime.onConnectExternal"); return bridgeHelper.fakeEvent; }
|
||||
get onRestartRequired() { bridgeLog.LogUnavailbleApi("runtime.onRestartRequired"); return bridgeHelper.fakeEvent; }
|
||||
get onStartup() { bridgeLog.LogUnavailbleApi("runtime.onStartup"); return bridgeHelper.fakeEvent; }
|
||||
get onSuspend() { bridgeLog.LogUnavailbleApi("runtime.onSuspend"); return bridgeHelper.fakeEvent; }
|
||||
get onSuspendCanceled() { bridgeLog.LogUnavailbleApi("runtime.onSuspendCanceled"); return bridgeHelper.fakeEvent; }
|
||||
get onUpdateAvailable() { bridgeLog.LogUnavailbleApi("runtime.onUpdateAvailable"); return bridgeHelper.fakeEvent; }
|
||||
openOptionsPage(callback) {
|
||||
bridgeLog.DoActionAndLog(() => {
|
||||
var optionsPage = myBrowser.runtime.getManifest()["options_page"];
|
||||
var optionsPageUrl = myBrowser.runtime.getURL(optionsPage);
|
||||
if (typeof callback !== "undefined" && typeof callback !== "null") {
|
||||
myBrowser.tabs.create({ url: optionsPageUrl }, callback);
|
||||
}
|
||||
else {
|
||||
myBrowser.tabs.create({ url: optionsPageUrl });
|
||||
}
|
||||
}, "runtime.openOptionsPage", undefined, "tabs.create({ url: optionsPageUrl })");
|
||||
}
|
||||
connectNative(application) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.connectNative");
|
||||
return null;
|
||||
}
|
||||
getPackageDirectoryEntry(callback) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.getPackageDirectoryEntry");
|
||||
}
|
||||
getPlatformInfo(callback) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.getPlatformInfo");
|
||||
}
|
||||
reload() {
|
||||
bridgeLog.LogUnavailbleApi("runtime.reload");
|
||||
}
|
||||
requestUpdateCheck(callback) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.requestUpdateCheck");
|
||||
}
|
||||
restart() {
|
||||
bridgeLog.LogUnavailbleApi("runtime.restart");
|
||||
}
|
||||
setUninstallURL(url, callback) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.setUninstallURL");
|
||||
}
|
||||
sendNativeMessage(application, message, responseCallback) {
|
||||
bridgeLog.LogUnavailbleApi("runtime.sendNativeMessage");
|
||||
}
|
||||
}
|
||||
class EdgeStorageBridge {
|
||||
get local() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.local; }, "storage.local"); }
|
||||
get onChanged() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.onChanged; }, "storage.onChanged"); }
|
||||
}
|
||||
class EdgeChromeStorageBridge extends EdgeStorageBridge {
|
||||
get managed() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.local; }, "storage.managed", undefined, "storage.local"); }
|
||||
get sync() { return bridgeLog.DoActionAndLog(() => { return myBrowser.storage.local; }, "storage.sync", undefined, "storage.local"); }
|
||||
}
|
||||
class EdgeContentBridge {
|
||||
constructor() {
|
||||
this.extension = typeof browser.extension !== "undefined" ? new EdgeChromeExtensionBridge() : undefined;
|
||||
this.i18n = typeof browser.i18n !== "undefined" ? new EdgeI18nBridge() : undefined;
|
||||
this.runtime = typeof browser.runtime !== "undefined" ? new EdgeChromeRuntimeBridge() : undefined;
|
||||
this.storage = typeof browser.storage !== "undefined" ? new EdgeChromeStorageBridge() : undefined;
|
||||
}
|
||||
}
|
||||
var myBrowser = browser;
|
||||
var chrome = new EdgeContentBridge();
|
@ -1,75 +0,0 @@
|
||||
{
|
||||
"name": "Wappalyzer",
|
||||
"short_name": "Wappalyzer",
|
||||
"author": "Elbert Alias",
|
||||
"homepage_url": "https://www.wappalyzer.com/",
|
||||
"description": "Identify web technologies",
|
||||
"version": "5.1.6",
|
||||
"default_locale": "en",
|
||||
"manifest_version": 2,
|
||||
"icons": {
|
||||
"16": "images/icon_16.png",
|
||||
"19": "images/icon_19.png",
|
||||
"32": "images/icon_32.png",
|
||||
"38": "images/icon_38.png",
|
||||
"128": "images/icon_128.png"
|
||||
},
|
||||
"page_action": {
|
||||
"default_icon": {
|
||||
"16": "images/icon_16.png",
|
||||
"19": "images/icon_19.png",
|
||||
"32": "images/icon_32.png",
|
||||
"38": "images/icon_38.png",
|
||||
"128": "images/icon_128.png"
|
||||
},
|
||||
"default_title": "Wappalyzer",
|
||||
"default_popup": "html/popup.html"
|
||||
},
|
||||
"background": {
|
||||
"page": "html/background.html",
|
||||
"persistent": true
|
||||
},
|
||||
"content_scripts": [
|
||||
{
|
||||
"matches": [
|
||||
"http://*/*",
|
||||
"https://*/*"
|
||||
],
|
||||
"js": [
|
||||
"node_modules/webextension-polyfill/dist/browser-polyfill.js",
|
||||
"js/content.js"
|
||||
],
|
||||
"run_at": "document_idle"
|
||||
},
|
||||
{
|
||||
"matches": [
|
||||
"http://*/*",
|
||||
"https://*/*"
|
||||
],
|
||||
"js": [
|
||||
"js/browser-polyfill.js",
|
||||
"js/iframe.js"
|
||||
],
|
||||
"run_at": "document_start",
|
||||
"all_frames": true
|
||||
}
|
||||
],
|
||||
"web_accessible_resources": [
|
||||
"js/inject.js"
|
||||
],
|
||||
"options_page": "html/options.html",
|
||||
"permissions": [
|
||||
"storage",
|
||||
"tabs",
|
||||
"webRequest",
|
||||
"webNavigation",
|
||||
"http://*/*",
|
||||
"https://*/*"
|
||||
],
|
||||
"content_security_policy": "script-src 'self'; object-src 'self'",
|
||||
"-ms-preload": {
|
||||
"backgroundScript": "js/ms_background_scripts_api_bridge.js",
|
||||
"contentScript": "js/ms_content_scripts_api_bridge.js"
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"webextension-polyfill": "^0.1.1"
|
||||
"webextension-polyfill": "^0.2.1"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 504 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 831 B |
Before Width: | Height: | Size: 772 B After Width: | Height: | Size: 345 B |
Before Width: | Height: | Size: 703 B After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 979 KiB After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 361 B |
Before Width: | Height: | Size: 247 B |
After Width: | Height: | Size: 230 B |
Before Width: | Height: | Size: 140 B |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 171 B |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 768 B |
After Width: | Height: | Size: 580 B |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 8.0 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 740 B |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 3.0 KiB |