@browserless.io/browserless 2.37.0 → 2.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/browsers/index.js +15 -0
- package/build/routes/chrome/http/content.post.query.json +3 -0
- package/build/routes/chrome/http/download.post.query.json +3 -0
- package/build/routes/chrome/http/function.post.query.json +3 -0
- package/build/routes/chrome/http/pdf.post.query.json +3 -0
- package/build/routes/chrome/http/performance.post.query.json +3 -0
- package/build/routes/chrome/http/scrape.post.query.json +3 -0
- package/build/routes/chrome/http/screenshot.post.query.json +3 -0
- package/build/routes/chrome/tests/content.spec.js +21 -0
- package/build/routes/chrome/tests/json.spec.js +100 -0
- package/build/routes/chrome/ws/browser.query.json +3 -0
- package/build/routes/chrome/ws/cdp.query.json +3 -0
- package/build/routes/chrome/ws/function-connect.query.json +3 -0
- package/build/routes/chrome/ws/page.query.json +3 -0
- package/build/routes/chromium/http/content.post.query.json +3 -0
- package/build/routes/chromium/http/download.post.query.json +3 -0
- package/build/routes/chromium/http/function.post.query.json +3 -0
- package/build/routes/chromium/http/pdf.post.query.json +3 -0
- package/build/routes/chromium/http/performance.post.query.json +3 -0
- package/build/routes/chromium/http/scrape.post.query.json +3 -0
- package/build/routes/chromium/http/screenshot.post.query.json +3 -0
- package/build/routes/chromium/tests/content.spec.js +21 -0
- package/build/routes/chromium/tests/function.spec.js +27 -0
- package/build/routes/chromium/tests/json.spec.js +100 -0
- package/build/routes/chromium/ws/browser.query.json +3 -0
- package/build/routes/chromium/ws/cdp.query.json +3 -0
- package/build/routes/chromium/ws/function-connect.query.json +3 -0
- package/build/routes/chromium/ws/page.query.json +3 -0
- package/build/routes/edge/http/content.post.query.json +3 -0
- package/build/routes/edge/http/download.post.query.json +3 -0
- package/build/routes/edge/http/function.post.query.json +3 -0
- package/build/routes/edge/http/pdf.post.query.json +3 -0
- package/build/routes/edge/http/performance.post.query.json +3 -0
- package/build/routes/edge/http/scrape.post.query.json +3 -0
- package/build/routes/edge/http/screenshot.post.query.json +3 -0
- package/build/routes/edge/tests/content.spec.js +21 -0
- package/build/routes/edge/tests/json.spec.js +100 -0
- package/build/routes/edge/ws/browser.query.json +3 -0
- package/build/routes/edge/ws/cdp.query.json +3 -0
- package/build/routes/edge/ws/function-connect.query.json +3 -0
- package/build/routes/edge/ws/page.query.json +3 -0
- package/build/routes/management/http/kill.get.query.json +3 -0
- package/build/routes/management/http/sessions.get.query.json +3 -0
- package/build/routes/management/tests/management.spec.js +44 -0
- package/build/server.js +1 -1
- package/build/shim.js +11 -1
- package/build/shim.spec.js +14 -0
- package/build/types.d.ts +2 -0
- package/extensions/ublocklite/_locales/br_FR/messages.json +2 -2
- package/extensions/ublocklite/_locales/cs/messages.json +8 -8
- package/extensions/ublocklite/_locales/da/messages.json +5 -5
- package/extensions/ublocklite/_locales/es/messages.json +4 -4
- package/extensions/ublocklite/_locales/gl/messages.json +5 -5
- package/extensions/ublocklite/_locales/ka/messages.json +5 -5
- package/extensions/ublocklite/_locales/ru/messages.json +3 -3
- package/extensions/ublocklite/_locales/sq/messages.json +5 -5
- package/extensions/ublocklite/_locales/sv/messages.json +5 -5
- package/extensions/ublocklite/_locales/zh_CN/messages.json +5 -5
- package/extensions/ublocklite/css/settings.css +6 -0
- package/extensions/ublocklite/dashboard.html +1 -1
- package/extensions/ublocklite/js/background.js +10 -6
- package/extensions/ublocklite/js/dashboard.js +4 -5
- package/extensions/ublocklite/js/jsonpath.js +25 -10
- package/extensions/ublocklite/js/report.js +2 -4
- package/extensions/ublocklite/js/troubleshooting.js +30 -18
- package/extensions/ublocklite/manifest.json +2 -2
- package/extensions/ublocklite/rulesets/main/adguard-mobile.json +1 -1
- package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +1 -1
- package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +6 -4
- package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +2 -1
- package/extensions/ublocklite/rulesets/main/chn-0.json +5 -3
- package/extensions/ublocklite/rulesets/main/easylist.json +10 -13
- package/extensions/ublocklite/rulesets/main/easyprivacy.json +8 -9
- package/extensions/ublocklite/rulesets/main/fin-0.json +3 -1
- package/extensions/ublocklite/rulesets/main/ita-0.json +2 -0
- package/extensions/ublocklite/rulesets/main/jpn-1.json +8 -10
- package/extensions/ublocklite/rulesets/main/nor-0.json +2 -2
- package/extensions/ublocklite/rulesets/main/pol-0.json +1 -1
- package/extensions/ublocklite/rulesets/main/rus-1.json +2 -1
- package/extensions/ublocklite/rulesets/main/spa-1.json +6 -1
- package/extensions/ublocklite/rulesets/main/swe-1.json +5 -5
- package/extensions/ublocklite/rulesets/main/tur-0.json +2 -2
- package/extensions/ublocklite/rulesets/main/ublock-badware.json +4 -2
- package/extensions/ublocklite/rulesets/main/ublock-filters.json +25 -25
- package/extensions/ublocklite/rulesets/main/ukr-0.json +2 -2
- package/extensions/ublocklite/rulesets/main/urlhaus-full.json +610 -80
- package/extensions/ublocklite/rulesets/main/vie-1.json +20 -14
- package/extensions/ublocklite/rulesets/regex/easylist.json +1 -6
- package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
- package/extensions/ublocklite/rulesets/regex/ublock-badware.json +3 -4
- package/extensions/ublocklite/rulesets/regex/ublock-filters.json +11 -9
- package/extensions/ublocklite/rulesets/ruleset-details.json +120 -120
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/ita-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/fin-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/grc-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/ind-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.addEventListener-defuser.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-requestAnimationFrame.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-class.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-argument.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-outbound-text.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-suppress-native-method.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.evaldata-prune.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/est-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fin-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fin-0.remove-node-text.js +449 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-requestAnimationFrame.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ltu-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ltu-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-stack-trace.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +8 -4
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-requestAnimationFrame.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.trusted-replace-argument.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-json-edit-xhr-request.js +848 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-replace-node-text.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-fetch-response.js +29 -11
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-xhr-response.js +24 -10
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit.js +29 -11
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.jsonl-edit-xhr-response.js +24 -10
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-request.js +941 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-response.js +29 -11
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit.js +29 -11
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-override-element-method.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-dom-bypass.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-fetch.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-fetch-response.js +29 -11
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-xhr-response.js +24 -10
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.trusted-prevent-dom-bypass.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/grc-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
- package/extensions/ublocklite/rulesets/scriptlet-details.json +90 -32
- package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +5 -0
- package/extensions/ublocklite/rulesets/strictblock/chn-0.json +67 -1
- package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +17 -1
- package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +198 -196
- package/extensions/ublocklite/rulesets/strictblock/nor-0.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/pol-0.json +2 -0
- package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +532 -530
- package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +23 -19
- package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +2 -0
- package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +610 -80
- package/extensions/ublocklite/ublock.zip +0 -0
- package/package.json +13 -12
- package/scripts/install-debugger.js +2 -2
- package/src/browsers/index.ts +20 -0
- package/src/routes/chrome/tests/content.spec.ts +24 -0
- package/src/routes/chrome/tests/json.spec.ts +134 -0
- package/src/routes/chromium/tests/content.spec.ts +24 -0
- package/src/routes/chromium/tests/function.spec.ts +33 -0
- package/src/routes/chromium/tests/json.spec.ts +134 -0
- package/src/routes/chromium/tests/scrape.spec.ts +3 -1
- package/src/routes/edge/tests/content.spec.ts +24 -0
- package/src/routes/edge/tests/json.spec.ts +134 -0
- package/src/routes/management/tests/management.spec.ts +66 -0
- package/src/server.ts +1 -1
- package/src/shared/screenshot.http.ts +1 -1
- package/src/shim.spec.ts +18 -0
- package/src/shim.ts +15 -1
- package/src/types.ts +2 -0
- package/static/docs/swagger.json +4 -1
- package/static/docs/swagger.min.json +4 -1
- package/static/function/client.js +86 -92
- package/static/function/index.html +86 -92
- package/build/routes/chrome/tests/json-version.spec.js +0 -37
- package/build/routes/chromium/tests/json-version.spec.js +0 -37
- package/build/routes/edge/tests/json-version.spec.js +0 -37
- package/src/routes/chrome/tests/json-version.spec.ts +0 -52
- package/src/routes/chromium/tests/json-version.spec.ts +0 -52
- package/src/routes/edge/tests/json-version.spec.ts +0 -52
- /package/build/routes/chrome/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
- /package/build/routes/chromium/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
- /package/build/routes/edge/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
/*******************************************************************************
|
|
2
|
+
|
|
3
|
+
uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
|
|
4
|
+
Copyright (C) 2014-present Raymond Hill
|
|
5
|
+
|
|
6
|
+
This program is free software: you can redistribute it and/or modify
|
|
7
|
+
it under the terms of the GNU General Public License as published by
|
|
8
|
+
the Free Software Foundation, either version 3 of the License, or
|
|
9
|
+
(at your option) any later version.
|
|
10
|
+
|
|
11
|
+
This program is distributed in the hope that it will be useful,
|
|
12
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
+
GNU General Public License for more details.
|
|
15
|
+
|
|
16
|
+
You should have received a copy of the GNU General Public License
|
|
17
|
+
along with this program. If not, see {http://www.gnu.org/licenses/}.
|
|
18
|
+
|
|
19
|
+
Home: https://github.com/gorhill/uBlock
|
|
20
|
+
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
// ruleset: fin-0
|
|
24
|
+
|
|
25
|
+
// Important!
|
|
26
|
+
// Isolate from global scope
|
|
27
|
+
|
|
28
|
+
// Start of local scope
|
|
29
|
+
(function uBOL_removeNodeText() {
|
|
30
|
+
|
|
31
|
+
/******************************************************************************/
|
|
32
|
+
|
|
33
|
+
function removeNodeText(
|
|
34
|
+
nodeName,
|
|
35
|
+
includes,
|
|
36
|
+
...extraArgs
|
|
37
|
+
) {
|
|
38
|
+
replaceNodeTextFn(nodeName, '', '', 'includes', includes || '', ...extraArgs);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function replaceNodeTextFn(
|
|
42
|
+
nodeName = '',
|
|
43
|
+
pattern = '',
|
|
44
|
+
replacement = ''
|
|
45
|
+
) {
|
|
46
|
+
const safe = safeSelf();
|
|
47
|
+
const logPrefix = safe.makeLogPrefix('replace-node-text.fn', ...Array.from(arguments));
|
|
48
|
+
const reNodeName = safe.patternToRegex(nodeName, 'i', true);
|
|
49
|
+
const rePattern = safe.patternToRegex(pattern, 'gms');
|
|
50
|
+
const extraArgs = safe.getExtraArgs(Array.from(arguments), 3);
|
|
51
|
+
const reIncludes = extraArgs.includes || extraArgs.condition
|
|
52
|
+
? safe.patternToRegex(extraArgs.includes || extraArgs.condition, 'ms')
|
|
53
|
+
: null;
|
|
54
|
+
const reExcludes = extraArgs.excludes
|
|
55
|
+
? safe.patternToRegex(extraArgs.excludes, 'ms')
|
|
56
|
+
: null;
|
|
57
|
+
const stop = (takeRecord = true) => {
|
|
58
|
+
if ( takeRecord ) {
|
|
59
|
+
handleMutations(observer.takeRecords());
|
|
60
|
+
}
|
|
61
|
+
observer.disconnect();
|
|
62
|
+
if ( safe.logLevel > 1 ) {
|
|
63
|
+
safe.uboLog(logPrefix, 'Quitting');
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
const textContentFactory = (( ) => {
|
|
67
|
+
const out = { createScript: s => s };
|
|
68
|
+
const { trustedTypes: tt } = self;
|
|
69
|
+
if ( tt instanceof Object ) {
|
|
70
|
+
if ( typeof tt.getPropertyType === 'function' ) {
|
|
71
|
+
if ( tt.getPropertyType('script', 'textContent') === 'TrustedScript' ) {
|
|
72
|
+
return tt.createPolicy(getRandomTokenFn(), out);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return out;
|
|
77
|
+
})();
|
|
78
|
+
let sedCount = extraArgs.sedCount || 0;
|
|
79
|
+
const handleNode = node => {
|
|
80
|
+
const before = node.textContent;
|
|
81
|
+
if ( reIncludes ) {
|
|
82
|
+
reIncludes.lastIndex = 0;
|
|
83
|
+
if ( safe.RegExp_test.call(reIncludes, before) === false ) { return true; }
|
|
84
|
+
}
|
|
85
|
+
if ( reExcludes ) {
|
|
86
|
+
reExcludes.lastIndex = 0;
|
|
87
|
+
if ( safe.RegExp_test.call(reExcludes, before) ) { return true; }
|
|
88
|
+
}
|
|
89
|
+
rePattern.lastIndex = 0;
|
|
90
|
+
if ( safe.RegExp_test.call(rePattern, before) === false ) { return true; }
|
|
91
|
+
rePattern.lastIndex = 0;
|
|
92
|
+
const after = pattern !== ''
|
|
93
|
+
? before.replace(rePattern, replacement)
|
|
94
|
+
: replacement;
|
|
95
|
+
node.textContent = node.nodeName === 'SCRIPT'
|
|
96
|
+
? textContentFactory.createScript(after)
|
|
97
|
+
: after;
|
|
98
|
+
if ( safe.logLevel > 1 ) {
|
|
99
|
+
safe.uboLog(logPrefix, `Text before:\n${before.trim()}`);
|
|
100
|
+
}
|
|
101
|
+
safe.uboLog(logPrefix, `Text after:\n${after.trim()}`);
|
|
102
|
+
return sedCount === 0 || (sedCount -= 1) !== 0;
|
|
103
|
+
};
|
|
104
|
+
const handleMutations = mutations => {
|
|
105
|
+
for ( const mutation of mutations ) {
|
|
106
|
+
for ( const node of mutation.addedNodes ) {
|
|
107
|
+
if ( reNodeName.test(node.nodeName) === false ) { continue; }
|
|
108
|
+
if ( handleNode(node) ) { continue; }
|
|
109
|
+
stop(false); return;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const observer = new MutationObserver(handleMutations);
|
|
114
|
+
observer.observe(document, { childList: true, subtree: true });
|
|
115
|
+
if ( document.documentElement ) {
|
|
116
|
+
const treeWalker = document.createTreeWalker(
|
|
117
|
+
document.documentElement,
|
|
118
|
+
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT
|
|
119
|
+
);
|
|
120
|
+
let count = 0;
|
|
121
|
+
for (;;) {
|
|
122
|
+
const node = treeWalker.nextNode();
|
|
123
|
+
count += 1;
|
|
124
|
+
if ( node === null ) { break; }
|
|
125
|
+
if ( reNodeName.test(node.nodeName) === false ) { continue; }
|
|
126
|
+
if ( node === document.currentScript ) { continue; }
|
|
127
|
+
if ( handleNode(node) ) { continue; }
|
|
128
|
+
stop(); break;
|
|
129
|
+
}
|
|
130
|
+
safe.uboLog(logPrefix, `${count} nodes present before installing mutation observer`);
|
|
131
|
+
}
|
|
132
|
+
if ( extraArgs.stay ) { return; }
|
|
133
|
+
runAt(( ) => {
|
|
134
|
+
const quitAfter = extraArgs.quitAfter || 0;
|
|
135
|
+
if ( quitAfter !== 0 ) {
|
|
136
|
+
setTimeout(( ) => { stop(); }, quitAfter);
|
|
137
|
+
} else {
|
|
138
|
+
stop();
|
|
139
|
+
}
|
|
140
|
+
}, 'interactive');
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function getRandomTokenFn() {
|
|
144
|
+
const safe = safeSelf();
|
|
145
|
+
return safe.String_fromCharCode(Date.now() % 26 + 97) +
|
|
146
|
+
safe.Math_floor(safe.Math_random() * 982451653 + 982451653).toString(36);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function runAt(fn, when) {
|
|
150
|
+
const intFromReadyState = state => {
|
|
151
|
+
const targets = {
|
|
152
|
+
'loading': 1, 'asap': 1,
|
|
153
|
+
'interactive': 2, 'end': 2, '2': 2,
|
|
154
|
+
'complete': 3, 'idle': 3, '3': 3,
|
|
155
|
+
};
|
|
156
|
+
const tokens = Array.isArray(state) ? state : [ state ];
|
|
157
|
+
for ( const token of tokens ) {
|
|
158
|
+
const prop = `${token}`;
|
|
159
|
+
if ( Object.hasOwn(targets, prop) === false ) { continue; }
|
|
160
|
+
return targets[prop];
|
|
161
|
+
}
|
|
162
|
+
return 0;
|
|
163
|
+
};
|
|
164
|
+
const runAt = intFromReadyState(when);
|
|
165
|
+
if ( intFromReadyState(document.readyState) >= runAt ) {
|
|
166
|
+
fn(); return;
|
|
167
|
+
}
|
|
168
|
+
const onStateChange = ( ) => {
|
|
169
|
+
if ( intFromReadyState(document.readyState) < runAt ) { return; }
|
|
170
|
+
fn();
|
|
171
|
+
safe.removeEventListener.apply(document, args);
|
|
172
|
+
};
|
|
173
|
+
const safe = safeSelf();
|
|
174
|
+
const args = [ 'readystatechange', onStateChange, { capture: true } ];
|
|
175
|
+
safe.addEventListener.apply(document, args);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
function safeSelf() {
|
|
179
|
+
if ( scriptletGlobals.safeSelf ) {
|
|
180
|
+
return scriptletGlobals.safeSelf;
|
|
181
|
+
}
|
|
182
|
+
const self = globalThis;
|
|
183
|
+
const safe = {
|
|
184
|
+
'Array_from': Array.from,
|
|
185
|
+
'Error': self.Error,
|
|
186
|
+
'Function_toStringFn': self.Function.prototype.toString,
|
|
187
|
+
'Function_toString': thisArg => safe.Function_toStringFn.call(thisArg),
|
|
188
|
+
'Math_floor': Math.floor,
|
|
189
|
+
'Math_max': Math.max,
|
|
190
|
+
'Math_min': Math.min,
|
|
191
|
+
'Math_random': Math.random,
|
|
192
|
+
'Object': Object,
|
|
193
|
+
'Object_defineProperty': Object.defineProperty.bind(Object),
|
|
194
|
+
'Object_defineProperties': Object.defineProperties.bind(Object),
|
|
195
|
+
'Object_fromEntries': Object.fromEntries.bind(Object),
|
|
196
|
+
'Object_getOwnPropertyDescriptor': Object.getOwnPropertyDescriptor.bind(Object),
|
|
197
|
+
'Object_hasOwn': Object.hasOwn.bind(Object),
|
|
198
|
+
'RegExp': self.RegExp,
|
|
199
|
+
'RegExp_test': self.RegExp.prototype.test,
|
|
200
|
+
'RegExp_exec': self.RegExp.prototype.exec,
|
|
201
|
+
'Request_clone': self.Request.prototype.clone,
|
|
202
|
+
'String': self.String,
|
|
203
|
+
'String_fromCharCode': String.fromCharCode,
|
|
204
|
+
'String_split': String.prototype.split,
|
|
205
|
+
'XMLHttpRequest': self.XMLHttpRequest,
|
|
206
|
+
'addEventListener': self.EventTarget.prototype.addEventListener,
|
|
207
|
+
'removeEventListener': self.EventTarget.prototype.removeEventListener,
|
|
208
|
+
'fetch': self.fetch,
|
|
209
|
+
'JSON': self.JSON,
|
|
210
|
+
'JSON_parseFn': self.JSON.parse,
|
|
211
|
+
'JSON_stringifyFn': self.JSON.stringify,
|
|
212
|
+
'JSON_parse': (...args) => safe.JSON_parseFn.call(safe.JSON, ...args),
|
|
213
|
+
'JSON_stringify': (...args) => safe.JSON_stringifyFn.call(safe.JSON, ...args),
|
|
214
|
+
'log': console.log.bind(console),
|
|
215
|
+
// Properties
|
|
216
|
+
logLevel: 0,
|
|
217
|
+
// Methods
|
|
218
|
+
makeLogPrefix(...args) {
|
|
219
|
+
return this.sendToLogger && `[${args.join(' \u205D ')}]` || '';
|
|
220
|
+
},
|
|
221
|
+
uboLog(...args) {
|
|
222
|
+
if ( this.sendToLogger === undefined ) { return; }
|
|
223
|
+
if ( args === undefined || args[0] === '' ) { return; }
|
|
224
|
+
return this.sendToLogger('info', ...args);
|
|
225
|
+
|
|
226
|
+
},
|
|
227
|
+
uboErr(...args) {
|
|
228
|
+
if ( this.sendToLogger === undefined ) { return; }
|
|
229
|
+
if ( args === undefined || args[0] === '' ) { return; }
|
|
230
|
+
return this.sendToLogger('error', ...args);
|
|
231
|
+
},
|
|
232
|
+
escapeRegexChars(s) {
|
|
233
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
234
|
+
},
|
|
235
|
+
initPattern(pattern, options = {}) {
|
|
236
|
+
if ( pattern === '' ) {
|
|
237
|
+
return { matchAll: true, expect: true };
|
|
238
|
+
}
|
|
239
|
+
const expect = (options.canNegate !== true || pattern.startsWith('!') === false);
|
|
240
|
+
if ( expect === false ) {
|
|
241
|
+
pattern = pattern.slice(1);
|
|
242
|
+
}
|
|
243
|
+
const match = /^\/(.+)\/([gimsu]*)$/.exec(pattern);
|
|
244
|
+
if ( match !== null ) {
|
|
245
|
+
return {
|
|
246
|
+
re: new this.RegExp(
|
|
247
|
+
match[1],
|
|
248
|
+
match[2] || options.flags
|
|
249
|
+
),
|
|
250
|
+
expect,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
if ( options.flags !== undefined ) {
|
|
254
|
+
return {
|
|
255
|
+
re: new this.RegExp(this.escapeRegexChars(pattern),
|
|
256
|
+
options.flags
|
|
257
|
+
),
|
|
258
|
+
expect,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
return { pattern, expect };
|
|
262
|
+
},
|
|
263
|
+
testPattern(details, haystack) {
|
|
264
|
+
if ( details.matchAll ) { return true; }
|
|
265
|
+
if ( details.re ) {
|
|
266
|
+
return this.RegExp_test.call(details.re, haystack) === details.expect;
|
|
267
|
+
}
|
|
268
|
+
return haystack.includes(details.pattern) === details.expect;
|
|
269
|
+
},
|
|
270
|
+
patternToRegex(pattern, flags = undefined, verbatim = false) {
|
|
271
|
+
if ( pattern === '' ) { return /^/; }
|
|
272
|
+
const match = /^\/(.+)\/([gimsu]*)$/.exec(pattern);
|
|
273
|
+
if ( match === null ) {
|
|
274
|
+
const reStr = this.escapeRegexChars(pattern);
|
|
275
|
+
return new RegExp(verbatim ? `^${reStr}$` : reStr, flags);
|
|
276
|
+
}
|
|
277
|
+
try {
|
|
278
|
+
return new RegExp(match[1], match[2] || undefined);
|
|
279
|
+
}
|
|
280
|
+
catch {
|
|
281
|
+
}
|
|
282
|
+
return /^/;
|
|
283
|
+
},
|
|
284
|
+
getExtraArgs(args, offset = 0) {
|
|
285
|
+
const entries = args.slice(offset).reduce((out, v, i, a) => {
|
|
286
|
+
if ( (i & 1) === 0 ) {
|
|
287
|
+
const rawValue = a[i+1];
|
|
288
|
+
const value = /^\d+$/.test(rawValue)
|
|
289
|
+
? parseInt(rawValue, 10)
|
|
290
|
+
: rawValue;
|
|
291
|
+
out.push([ a[i], value ]);
|
|
292
|
+
}
|
|
293
|
+
return out;
|
|
294
|
+
}, []);
|
|
295
|
+
return this.Object_fromEntries(entries);
|
|
296
|
+
},
|
|
297
|
+
onIdle(fn, options) {
|
|
298
|
+
if ( self.requestIdleCallback ) {
|
|
299
|
+
return self.requestIdleCallback(fn, options);
|
|
300
|
+
}
|
|
301
|
+
return self.requestAnimationFrame(fn);
|
|
302
|
+
},
|
|
303
|
+
offIdle(id) {
|
|
304
|
+
if ( self.requestIdleCallback ) {
|
|
305
|
+
return self.cancelIdleCallback(id);
|
|
306
|
+
}
|
|
307
|
+
return self.cancelAnimationFrame(id);
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
scriptletGlobals.safeSelf = safe;
|
|
311
|
+
if ( scriptletGlobals.bcSecret === undefined ) { return safe; }
|
|
312
|
+
// This is executed only when the logger is opened
|
|
313
|
+
safe.logLevel = scriptletGlobals.logLevel || 1;
|
|
314
|
+
let lastLogType = '';
|
|
315
|
+
let lastLogText = '';
|
|
316
|
+
let lastLogTime = 0;
|
|
317
|
+
safe.toLogText = (type, ...args) => {
|
|
318
|
+
if ( args.length === 0 ) { return; }
|
|
319
|
+
const text = `[${document.location.hostname || document.location.href}]${args.join(' ')}`;
|
|
320
|
+
if ( text === lastLogText && type === lastLogType ) {
|
|
321
|
+
if ( (Date.now() - lastLogTime) < 5000 ) { return; }
|
|
322
|
+
}
|
|
323
|
+
lastLogType = type;
|
|
324
|
+
lastLogText = text;
|
|
325
|
+
lastLogTime = Date.now();
|
|
326
|
+
return text;
|
|
327
|
+
};
|
|
328
|
+
try {
|
|
329
|
+
const bc = new self.BroadcastChannel(scriptletGlobals.bcSecret);
|
|
330
|
+
let bcBuffer = [];
|
|
331
|
+
safe.sendToLogger = (type, ...args) => {
|
|
332
|
+
const text = safe.toLogText(type, ...args);
|
|
333
|
+
if ( text === undefined ) { return; }
|
|
334
|
+
if ( bcBuffer === undefined ) {
|
|
335
|
+
return bc.postMessage({ what: 'messageToLogger', type, text });
|
|
336
|
+
}
|
|
337
|
+
bcBuffer.push({ type, text });
|
|
338
|
+
};
|
|
339
|
+
bc.onmessage = ev => {
|
|
340
|
+
const msg = ev.data;
|
|
341
|
+
switch ( msg ) {
|
|
342
|
+
case 'iamready!':
|
|
343
|
+
if ( bcBuffer === undefined ) { break; }
|
|
344
|
+
bcBuffer.forEach(({ type, text }) =>
|
|
345
|
+
bc.postMessage({ what: 'messageToLogger', type, text })
|
|
346
|
+
);
|
|
347
|
+
bcBuffer = undefined;
|
|
348
|
+
break;
|
|
349
|
+
case 'setScriptletLogLevelToOne':
|
|
350
|
+
safe.logLevel = 1;
|
|
351
|
+
break;
|
|
352
|
+
case 'setScriptletLogLevelToTwo':
|
|
353
|
+
safe.logLevel = 2;
|
|
354
|
+
break;
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
bc.postMessage('areyouready?');
|
|
358
|
+
} catch {
|
|
359
|
+
safe.sendToLogger = (type, ...args) => {
|
|
360
|
+
const text = safe.toLogText(type, ...args);
|
|
361
|
+
if ( text === undefined ) { return; }
|
|
362
|
+
safe.log(`uBO ${text}`);
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
return safe;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/******************************************************************************/
|
|
369
|
+
|
|
370
|
+
const scriptletGlobals = {}; // eslint-disable-line
|
|
371
|
+
const argsList = [["script","async-hide"]];
|
|
372
|
+
const hostnamesMap = new Map([["vauva.fi",0]]);
|
|
373
|
+
const exceptionsMap = new Map([]);
|
|
374
|
+
const hasEntities = false;
|
|
375
|
+
const hasAncestors = false;
|
|
376
|
+
|
|
377
|
+
const collectArgIndices = (hn, map, out) => {
|
|
378
|
+
let argsIndices = map.get(hn);
|
|
379
|
+
if ( argsIndices === undefined ) { return; }
|
|
380
|
+
if ( typeof argsIndices !== 'number' ) {
|
|
381
|
+
for ( const argsIndex of argsIndices ) {
|
|
382
|
+
out.add(argsIndex);
|
|
383
|
+
}
|
|
384
|
+
} else {
|
|
385
|
+
out.add(argsIndices);
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
|
|
389
|
+
const indicesFromHostname = (hostname, suffix = '') => {
|
|
390
|
+
const hnParts = hostname.split('.');
|
|
391
|
+
const hnpartslen = hnParts.length;
|
|
392
|
+
if ( hnpartslen === 0 ) { return; }
|
|
393
|
+
for ( let i = 0; i < hnpartslen; i++ ) {
|
|
394
|
+
const hn = `${hnParts.slice(i).join('.')}${suffix}`;
|
|
395
|
+
collectArgIndices(hn, hostnamesMap, todoIndices);
|
|
396
|
+
collectArgIndices(hn, exceptionsMap, tonotdoIndices);
|
|
397
|
+
}
|
|
398
|
+
if ( hasEntities ) {
|
|
399
|
+
const n = hnpartslen - 1;
|
|
400
|
+
for ( let i = 0; i < n; i++ ) {
|
|
401
|
+
for ( let j = n; j > i; j-- ) {
|
|
402
|
+
const en = `${hnParts.slice(i,j).join('.')}.*${suffix}`;
|
|
403
|
+
collectArgIndices(en, hostnamesMap, todoIndices);
|
|
404
|
+
collectArgIndices(en, exceptionsMap, tonotdoIndices);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
};
|
|
409
|
+
|
|
410
|
+
const entries = (( ) => {
|
|
411
|
+
const docloc = document.location;
|
|
412
|
+
const origins = [ docloc.origin ];
|
|
413
|
+
if ( docloc.ancestorOrigins ) {
|
|
414
|
+
origins.push(...docloc.ancestorOrigins);
|
|
415
|
+
}
|
|
416
|
+
return origins.map((origin, i) => {
|
|
417
|
+
const beg = origin.lastIndexOf('://');
|
|
418
|
+
if ( beg === -1 ) { return; }
|
|
419
|
+
const hn = origin.slice(beg+3)
|
|
420
|
+
const end = hn.indexOf(':');
|
|
421
|
+
return { hn: end === -1 ? hn : hn.slice(0, end), i };
|
|
422
|
+
}).filter(a => a !== undefined);
|
|
423
|
+
})();
|
|
424
|
+
if ( entries.length === 0 ) { return; }
|
|
425
|
+
|
|
426
|
+
const todoIndices = new Set();
|
|
427
|
+
const tonotdoIndices = new Set();
|
|
428
|
+
|
|
429
|
+
indicesFromHostname(entries[0].hn);
|
|
430
|
+
if ( hasAncestors ) {
|
|
431
|
+
for ( const entry of entries ) {
|
|
432
|
+
if ( entry.i === 0 ) { continue; }
|
|
433
|
+
indicesFromHostname(entry.hn, '>>');
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
// Apply scriplets
|
|
438
|
+
for ( const i of todoIndices ) {
|
|
439
|
+
if ( tonotdoIndices.has(i) ) { continue; }
|
|
440
|
+
try { removeNodeText(...argsList[i]); }
|
|
441
|
+
catch { }
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/******************************************************************************/
|
|
445
|
+
|
|
446
|
+
// End of local scope
|
|
447
|
+
})();
|
|
448
|
+
|
|
449
|
+
void 0;
|
package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.addEventListener-defuser.js
CHANGED
|
@@ -170,6 +170,10 @@ function proxyApplyFn(
|
|
|
170
170
|
: new proxyApplyFn.ApplyContext(...args);
|
|
171
171
|
}
|
|
172
172
|
};
|
|
173
|
+
proxyApplyFn.isCtor = new Map();
|
|
174
|
+
}
|
|
175
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
176
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
173
177
|
}
|
|
174
178
|
const fnStr = fn.toString();
|
|
175
179
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -182,7 +186,7 @@ function proxyApplyFn(
|
|
|
182
186
|
return Reflect.get(target, prop);
|
|
183
187
|
},
|
|
184
188
|
};
|
|
185
|
-
if (
|
|
189
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
186
190
|
proxyDetails.construct = function(target, args) {
|
|
187
191
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
188
192
|
};
|
|
@@ -266,6 +266,10 @@ function proxyApplyFn(
|
|
|
266
266
|
: new proxyApplyFn.ApplyContext(...args);
|
|
267
267
|
}
|
|
268
268
|
};
|
|
269
|
+
proxyApplyFn.isCtor = new Map();
|
|
270
|
+
}
|
|
271
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
272
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
269
273
|
}
|
|
270
274
|
const fnStr = fn.toString();
|
|
271
275
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -278,7 +282,7 @@ function proxyApplyFn(
|
|
|
278
282
|
return Reflect.get(target, prop);
|
|
279
283
|
},
|
|
280
284
|
};
|
|
281
|
-
if (
|
|
285
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
282
286
|
proxyDetails.construct = function(target, args) {
|
|
283
287
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
284
288
|
};
|
package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-requestAnimationFrame.js
CHANGED
|
@@ -113,6 +113,10 @@ function proxyApplyFn(
|
|
|
113
113
|
: new proxyApplyFn.ApplyContext(...args);
|
|
114
114
|
}
|
|
115
115
|
};
|
|
116
|
+
proxyApplyFn.isCtor = new Map();
|
|
117
|
+
}
|
|
118
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
119
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
116
120
|
}
|
|
117
121
|
const fnStr = fn.toString();
|
|
118
122
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -125,7 +129,7 @@ function proxyApplyFn(
|
|
|
125
129
|
return Reflect.get(target, prop);
|
|
126
130
|
},
|
|
127
131
|
};
|
|
128
|
-
if (
|
|
132
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
129
133
|
proxyDetails.construct = function(target, args) {
|
|
130
134
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
131
135
|
};
|
|
@@ -118,6 +118,10 @@ function proxyApplyFn(
|
|
|
118
118
|
: new proxyApplyFn.ApplyContext(...args);
|
|
119
119
|
}
|
|
120
120
|
};
|
|
121
|
+
proxyApplyFn.isCtor = new Map();
|
|
122
|
+
}
|
|
123
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
124
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
121
125
|
}
|
|
122
126
|
const fnStr = fn.toString();
|
|
123
127
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -130,7 +134,7 @@ function proxyApplyFn(
|
|
|
130
134
|
return Reflect.get(target, prop);
|
|
131
135
|
},
|
|
132
136
|
};
|
|
133
|
-
if (
|
|
137
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
134
138
|
proxyDetails.construct = function(target, args) {
|
|
135
139
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
136
140
|
};
|
|
@@ -118,6 +118,10 @@ function proxyApplyFn(
|
|
|
118
118
|
: new proxyApplyFn.ApplyContext(...args);
|
|
119
119
|
}
|
|
120
120
|
};
|
|
121
|
+
proxyApplyFn.isCtor = new Map();
|
|
122
|
+
}
|
|
123
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
124
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
121
125
|
}
|
|
122
126
|
const fnStr = fn.toString();
|
|
123
127
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -130,7 +134,7 @@ function proxyApplyFn(
|
|
|
130
134
|
return Reflect.get(target, prop);
|
|
131
135
|
},
|
|
132
136
|
};
|
|
133
|
-
if (
|
|
137
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
134
138
|
proxyDetails.construct = function(target, args) {
|
|
135
139
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
136
140
|
};
|
|
@@ -177,6 +177,10 @@ function proxyApplyFn(
|
|
|
177
177
|
: new proxyApplyFn.ApplyContext(...args);
|
|
178
178
|
}
|
|
179
179
|
};
|
|
180
|
+
proxyApplyFn.isCtor = new Map();
|
|
181
|
+
}
|
|
182
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
183
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
180
184
|
}
|
|
181
185
|
const fnStr = fn.toString();
|
|
182
186
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -189,7 +193,7 @@ function proxyApplyFn(
|
|
|
189
193
|
return Reflect.get(target, prop);
|
|
190
194
|
},
|
|
191
195
|
};
|
|
192
|
-
if (
|
|
196
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
193
197
|
proxyDetails.construct = function(target, args) {
|
|
194
198
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
195
199
|
};
|
package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.addEventListener-defuser.js
CHANGED
|
@@ -170,6 +170,10 @@ function proxyApplyFn(
|
|
|
170
170
|
: new proxyApplyFn.ApplyContext(...args);
|
|
171
171
|
}
|
|
172
172
|
};
|
|
173
|
+
proxyApplyFn.isCtor = new Map();
|
|
174
|
+
}
|
|
175
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
176
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
173
177
|
}
|
|
174
178
|
const fnStr = fn.toString();
|
|
175
179
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -182,7 +186,7 @@ function proxyApplyFn(
|
|
|
182
186
|
return Reflect.get(target, prop);
|
|
183
187
|
},
|
|
184
188
|
};
|
|
185
|
-
if (
|
|
189
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
186
190
|
proxyDetails.construct = function(target, args) {
|
|
187
191
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
188
192
|
};
|
|
@@ -118,6 +118,10 @@ function proxyApplyFn(
|
|
|
118
118
|
: new proxyApplyFn.ApplyContext(...args);
|
|
119
119
|
}
|
|
120
120
|
};
|
|
121
|
+
proxyApplyFn.isCtor = new Map();
|
|
122
|
+
}
|
|
123
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
124
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
121
125
|
}
|
|
122
126
|
const fnStr = fn.toString();
|
|
123
127
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -130,7 +134,7 @@ function proxyApplyFn(
|
|
|
130
134
|
return Reflect.get(target, prop);
|
|
131
135
|
},
|
|
132
136
|
};
|
|
133
|
-
if (
|
|
137
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
134
138
|
proxyDetails.construct = function(target, args) {
|
|
135
139
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
136
140
|
};
|
|
@@ -177,6 +177,10 @@ function proxyApplyFn(
|
|
|
177
177
|
: new proxyApplyFn.ApplyContext(...args);
|
|
178
178
|
}
|
|
179
179
|
};
|
|
180
|
+
proxyApplyFn.isCtor = new Map();
|
|
181
|
+
}
|
|
182
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
183
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
180
184
|
}
|
|
181
185
|
const fnStr = fn.toString();
|
|
182
186
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -189,7 +193,7 @@ function proxyApplyFn(
|
|
|
189
193
|
return Reflect.get(target, prop);
|
|
190
194
|
},
|
|
191
195
|
};
|
|
192
|
-
if (
|
|
196
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
193
197
|
proxyDetails.construct = function(target, args) {
|
|
194
198
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
195
199
|
};
|
package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.addEventListener-defuser.js
CHANGED
|
@@ -170,6 +170,10 @@ function proxyApplyFn(
|
|
|
170
170
|
: new proxyApplyFn.ApplyContext(...args);
|
|
171
171
|
}
|
|
172
172
|
};
|
|
173
|
+
proxyApplyFn.isCtor = new Map();
|
|
174
|
+
}
|
|
175
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
176
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
173
177
|
}
|
|
174
178
|
const fnStr = fn.toString();
|
|
175
179
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -182,7 +186,7 @@ function proxyApplyFn(
|
|
|
182
186
|
return Reflect.get(target, prop);
|
|
183
187
|
},
|
|
184
188
|
};
|
|
185
|
-
if (
|
|
189
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
186
190
|
proxyDetails.construct = function(target, args) {
|
|
187
191
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
188
192
|
};
|
|
@@ -112,6 +112,10 @@ function proxyApplyFn(
|
|
|
112
112
|
: new proxyApplyFn.ApplyContext(...args);
|
|
113
113
|
}
|
|
114
114
|
};
|
|
115
|
+
proxyApplyFn.isCtor = new Map();
|
|
116
|
+
}
|
|
117
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
118
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
115
119
|
}
|
|
116
120
|
const fnStr = fn.toString();
|
|
117
121
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -124,7 +128,7 @@ function proxyApplyFn(
|
|
|
124
128
|
return Reflect.get(target, prop);
|
|
125
129
|
},
|
|
126
130
|
};
|
|
127
|
-
if (
|
|
131
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
128
132
|
proxyDetails.construct = function(target, args) {
|
|
129
133
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
130
134
|
};
|