@browserless.io/browserless 2.34.0-beta-0 → 2.34.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/CHANGELOG.md +18 -1
- package/build/routes/chrome/http/content.post.body.json +18 -109
- package/build/routes/chrome/http/pdf.post.body.json +18 -109
- package/build/routes/chrome/http/scrape.post.body.json +18 -109
- package/build/routes/chrome/http/screenshot.post.body.json +18 -109
- package/build/routes/chromium/http/content.post.body.json +18 -109
- package/build/routes/chromium/http/pdf.post.body.json +18 -109
- package/build/routes/chromium/http/scrape.post.body.json +18 -109
- package/build/routes/chromium/http/screenshot.post.body.json +18 -109
- package/build/routes/edge/http/content.post.body.json +18 -109
- package/build/routes/edge/http/pdf.post.body.json +18 -109
- package/build/routes/edge/http/scrape.post.body.json +18 -109
- package/build/routes/edge/http/screenshot.post.body.json +18 -109
- package/build/shared/content.http.js +9 -2
- package/build/shared/pdf.http.js +9 -2
- package/build/shared/scrape.http.js +9 -2
- package/build/shared/screenshot.http.js +9 -2
- package/build/types.d.ts +7 -1
- package/build/utils.d.ts +1 -0
- package/build/utils.js +3 -2
- package/extensions/ublocklite/README.md +1 -1
- package/extensions/ublocklite/_locales/bs/messages.json +58 -58
- package/extensions/ublocklite/_locales/ro/messages.json +1 -1
- package/extensions/ublocklite/_locales/ru/messages.json +1 -1
- package/extensions/ublocklite/_locales/sr/messages.json +28 -28
- package/extensions/ublocklite/css/dashboard.css +9 -4
- package/extensions/ublocklite/css/settings.css +17 -13
- package/extensions/ublocklite/css/unpicker-ui.css +1 -0
- package/extensions/ublocklite/dashboard.html +16 -12
- package/extensions/ublocklite/js/background.js +48 -14
- package/extensions/ublocklite/js/config.js +2 -1
- package/extensions/ublocklite/js/dashboard.js +9 -5
- package/extensions/ublocklite/js/debug.js +62 -3
- package/extensions/ublocklite/js/ext.js +6 -0
- package/extensions/ublocklite/js/fetch.js +3 -1
- package/extensions/ublocklite/js/filter-lists.js +16 -7
- package/extensions/ublocklite/js/filter-manager.js +63 -9
- package/extensions/ublocklite/js/jsonpath.js +65 -26
- package/extensions/ublocklite/js/mode-manager.js +5 -1
- package/extensions/ublocklite/js/popup.js +1 -1
- package/extensions/ublocklite/js/report.js +4 -2
- package/extensions/ublocklite/js/ruleset-manager.js +38 -13
- package/extensions/ublocklite/js/scripting/css-generic.js +0 -1
- package/extensions/ublocklite/js/scripting/css-procedural.js +2 -0
- package/extensions/ublocklite/js/scripting/css-specific.js +2 -0
- package/extensions/ublocklite/js/scripting-manager.js +4 -10
- package/extensions/ublocklite/js/settings.js +3 -5
- package/extensions/ublocklite/js/static-filtering-parser.js +18 -11
- package/extensions/ublocklite/js/tool-overlay-ui.js +19 -23
- package/extensions/ublocklite/js/troubleshooting.js +11 -19
- package/extensions/ublocklite/js/ubo-parser.js +1 -1
- package/extensions/ublocklite/manifest.json +7 -2
- package/extensions/ublocklite/rulesets/generic-details.json +19 -3
- package/extensions/ublocklite/rulesets/main/adguard-mobile.json +3 -1
- package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +15 -11
- package/extensions/ublocklite/rulesets/main/annoyances-notifications.json +276 -0
- package/extensions/ublocklite/rulesets/main/annoyances-others.json +2 -1
- package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +2 -1
- package/extensions/ublocklite/rulesets/main/bgr-0.json +54 -68
- package/extensions/ublocklite/rulesets/main/block-lan.json +1 -1
- package/extensions/ublocklite/rulesets/main/chn-0.json +22 -12
- package/extensions/ublocklite/rulesets/main/deu-0.json +5 -7
- package/extensions/ublocklite/rulesets/main/dpollock-0.json +5 -0
- package/extensions/ublocklite/rulesets/main/easylist.json +29 -85
- package/extensions/ublocklite/rulesets/main/easyprivacy.json +44 -8
- package/extensions/ublocklite/rulesets/main/fra-0.json +15 -11
- package/extensions/ublocklite/rulesets/main/hun-0.json +5 -3
- package/extensions/ublocklite/rulesets/main/idn-0.json +6 -1
- package/extensions/ublocklite/rulesets/main/ind-0.json +14 -9
- package/extensions/ublocklite/rulesets/main/irn-0.json +632 -3
- package/extensions/ublocklite/rulesets/main/jpn-1.json +26 -18
- package/extensions/ublocklite/rulesets/main/kor-1.json +4 -2
- package/extensions/ublocklite/rulesets/main/nld-0.json +1 -1
- package/extensions/ublocklite/rulesets/main/nor-0.json +24 -4
- package/extensions/ublocklite/rulesets/main/pgl.json +8 -6
- package/extensions/ublocklite/rulesets/main/pol-0.json +3 -3
- package/extensions/ublocklite/rulesets/main/rus-0.json +18 -11
- package/extensions/ublocklite/rulesets/main/rus-1.json +6 -2
- package/extensions/ublocklite/rulesets/main/spa-1.json +11 -2
- package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +5438 -4232
- package/extensions/ublocklite/rulesets/main/swe-1.json +29 -24
- package/extensions/ublocklite/rulesets/main/tur-0.json +30 -10
- package/extensions/ublocklite/rulesets/main/ublock-badware.json +29 -30
- package/extensions/ublocklite/rulesets/main/ublock-filters.json +73 -49
- package/extensions/ublocklite/rulesets/main/ubol-tests.json +17 -0
- package/extensions/ublocklite/rulesets/main/urlhaus-full.json +326 -356
- package/extensions/ublocklite/rulesets/main/vie-1.json +30 -26
- package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +1 -2
- package/extensions/ublocklite/rulesets/modify-headers/fra-0.json +1 -0
- package/extensions/ublocklite/rulesets/modify-headers/irn-0.json +45 -0
- package/extensions/ublocklite/rulesets/modify-headers/rus-0.json +0 -1
- package/extensions/ublocklite/rulesets/modify-headers/ublock-filters.json +4 -3
- package/extensions/ublocklite/rulesets/redirect/annoyances-overlays.json +1 -2
- package/extensions/ublocklite/rulesets/redirect/easyprivacy.json +19 -0
- package/extensions/ublocklite/rulesets/redirect/irn-0.json +73 -0
- package/extensions/ublocklite/rulesets/redirect/jpn-1.json +0 -1
- package/extensions/ublocklite/rulesets/redirect/kor-1.json +1 -1
- package/extensions/ublocklite/rulesets/redirect/tur-0.json +2 -1
- package/extensions/ublocklite/rulesets/redirect/ublock-badware.json +18 -0
- package/extensions/ublocklite/rulesets/redirect/ublock-filters.json +18 -28
- package/extensions/ublocklite/rulesets/redirect/vie-1.json +34 -2
- package/extensions/ublocklite/rulesets/regex/chn-0.json +3 -1
- package/extensions/ublocklite/rulesets/regex/easylist.json +0 -2
- package/extensions/ublocklite/rulesets/regex/irn-0.json +22 -0
- package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
- package/extensions/ublocklite/rulesets/regex/tur-0.json +2 -1
- package/extensions/ublocklite/rulesets/regex/ublock-badware.json +2 -4
- package/extensions/ublocklite/rulesets/regex/ublock-filters.json +10 -9
- package/extensions/ublocklite/rulesets/regex/ukr-0.json +1 -3
- package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +9 -5
- package/extensions/ublocklite/rulesets/removeparam/irn-0.json +16 -27
- package/extensions/ublocklite/rulesets/removeparam/rus-1.json +3 -1
- package/extensions/ublocklite/rulesets/removeparam/ublock-filters.json +6 -3
- package/extensions/ublocklite/rulesets/ruleset-details.json +264 -233
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +87 -0
- package/extensions/ublocklite/rulesets/scripting/generic/bgr-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/deu-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/est-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/irn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/pol-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/rus-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generichigh/annoyances-notifications.css +36 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +12 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +1 -12
- package/extensions/ublocklite/rulesets/scripting/generichigh/est-0.css +1 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +11 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/irn-0.css +27 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/nor-0.css +17 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/pol-0.css +8 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/rou-1.css +1 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +106 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/rus-1.css +3 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/swe-1.css +1 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/ublock-filters.css +8 -2
- package/extensions/ublocklite/rulesets/scripting/generichigh/vie-1.css +1 -0
- package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-notifications.js +42 -0
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-social.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/ind-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/irn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/ita-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/rou-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/rus-1.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/tur-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-cookie-reload.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-constant.js +2 -2
- 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.set-session-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.abort-current-script.js +452 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.abort-on-property-write.js +347 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.addEventListener-defuser.js +498 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.remove-attr.js +405 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.remove-class.js +396 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-constant.js +541 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-cookie.js +442 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-local-storage-item.js +399 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-session-storage-item.js +399 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-click-element.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-outbound-text.js +427 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.json-prune-fetch-response.js +588 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.json-prune.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-current-script.js +452 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-on-property-read.js +369 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-on-property-write.js +347 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-on-stack-trace.js +421 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.addEventListener-defuser.js +498 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.adjust-setInterval.js +332 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.adjust-setTimeout.js +332 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.href-sanitizer.js +541 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.json-prune.js +506 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +553 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-setTimeout.js +443 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-window-open.js +471 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-xhr.js +584 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.remove-attr.js +405 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.remove-cookie.js +376 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/{ublock-experimental.trusted-replace-node-text.js → irn-0.remove-node-text.js} +8 -9
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-attr.js +425 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-constant.js +541 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-session-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.abort-on-property-write.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.href-sanitizer.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.spoof-css.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-write.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.href-sanitizer.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.remove-attr.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-xhr.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.adjust-setTimeout.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-local-storage-item.js +3 -3
- 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 +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/{ublock-filters.trusted-json-edit-fetch-request.js → ublock-filters.json-edit-fetch-response.js} +109 -66
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit.js +69 -29
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.jsonl-edit-xhr-response.js +68 -28
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
- 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 +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-create-html.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-response.js +68 -28
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-local-storage-item.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-fetch-response.js +68 -28
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-xhr-response.js +68 -28
- 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 +2 -2
- 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 +42 -0
- 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/bgr-0.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/fra-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/hun-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/irn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +3 -3
- 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/nld-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/specific/pol-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/rus-1.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/ukr-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
- package/extensions/ublocklite/rulesets/scriptlet-details.json +521 -135
- package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +16 -0
- package/extensions/ublocklite/rulesets/strictblock/annoyances-notifications.json +41 -0
- package/extensions/ublocklite/rulesets/strictblock/bgr-0.json +1 -2
- package/extensions/ublocklite/rulesets/strictblock/chn-0.json +112 -0
- package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +5 -0
- package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +36 -71
- package/extensions/ublocklite/rulesets/strictblock/fra-0.json +270 -16
- package/extensions/ublocklite/rulesets/strictblock/hun-0.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/irn-0.json +249 -2
- package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +182 -177
- package/extensions/ublocklite/rulesets/strictblock/kor-1.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/nor-0.json +6 -4
- package/extensions/ublocklite/rulesets/strictblock/pgl.json +8 -6
- package/extensions/ublocklite/rulesets/strictblock/pol-0.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/rus-1.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/spa-1.json +2 -0
- package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +5438 -4232
- package/extensions/ublocklite/rulesets/strictblock/swe-1.json +3 -0
- package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +679 -675
- package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +326 -356
- package/extensions/ublocklite/rulesets/strictblock/vie-1.json +1 -1
- package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +37 -12
- package/extensions/ublocklite/ublock.zip +0 -0
- package/package.json +8 -8
- package/scripts/build-open-api.js +15 -1
- package/src/shared/content.http.ts +9 -1
- package/src/shared/pdf.http.ts +9 -1
- package/src/shared/scrape.http.ts +9 -1
- package/src/shared/screenshot.http.ts +9 -1
- package/src/types.ts +7 -1
- package/src/utils.ts +4 -2
- package/static/docs/swagger.json +218 -122
- package/static/docs/swagger.min.json +217 -121
- package/static/function/client.js +71 -68
- package/static/function/index.html +71 -68
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-json-edit-xhr-request.js +0 -795
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.overlay-buster.js +0 -165
- package/extensions/ublocklite/rulesets/scripting/specific/easyprivacy.js +0 -42
|
@@ -99,12 +99,19 @@ export class JSONPath {
|
|
|
99
99
|
const r = this.#compile(query, 0);
|
|
100
100
|
if ( r === undefined ) { return; }
|
|
101
101
|
if ( r.i !== query.length ) {
|
|
102
|
-
|
|
102
|
+
let val;
|
|
103
|
+
if ( query.startsWith('=', r.i) ) {
|
|
104
|
+
if ( /^=repl\(.+\)$/.test(query.slice(r.i)) ) {
|
|
105
|
+
r.modify = 'repl';
|
|
106
|
+
val = query.slice(r.i+6, -1);
|
|
107
|
+
} else {
|
|
108
|
+
val = query.slice(r.i+1);
|
|
109
|
+
}
|
|
110
|
+
} else if ( query.startsWith('+=', r.i) ) {
|
|
103
111
|
r.modify = '+';
|
|
104
|
-
r.i
|
|
112
|
+
val = query.slice(r.i+2);
|
|
105
113
|
}
|
|
106
|
-
|
|
107
|
-
try { r.rval = JSON.parse(query.slice(r.i+1)); }
|
|
114
|
+
try { r.rval = JSON.parse(val); }
|
|
108
115
|
catch { return; }
|
|
109
116
|
}
|
|
110
117
|
this.#compiled = r;
|
|
@@ -117,28 +124,25 @@ export class JSONPath {
|
|
|
117
124
|
return paths;
|
|
118
125
|
}
|
|
119
126
|
apply(root) {
|
|
120
|
-
if ( this.valid === false ) { return
|
|
121
|
-
const {
|
|
122
|
-
this.#root = root;
|
|
127
|
+
if ( this.valid === false ) { return; }
|
|
128
|
+
const { rval } = this.#compiled;
|
|
129
|
+
this.#root = { '$': root };
|
|
123
130
|
const paths = this.#evaluate(this.#compiled.steps, []);
|
|
124
|
-
|
|
125
|
-
|
|
131
|
+
let i = paths.length
|
|
132
|
+
if ( i === 0 ) { this.#root = null; return; }
|
|
126
133
|
while ( i-- ) {
|
|
127
134
|
const { obj, key } = this.#resolvePath(paths[i]);
|
|
128
135
|
if ( rval !== undefined ) {
|
|
129
|
-
|
|
130
|
-
this.#modifyVal(obj, key, rval);
|
|
131
|
-
} else {
|
|
132
|
-
obj[key] = rval;
|
|
133
|
-
}
|
|
136
|
+
this.#modifyVal(obj, key);
|
|
134
137
|
} else if ( Array.isArray(obj) && typeof key === 'number' ) {
|
|
135
138
|
obj.splice(key, 1);
|
|
136
139
|
} else {
|
|
137
140
|
delete obj[key];
|
|
138
141
|
}
|
|
139
142
|
}
|
|
143
|
+
const result = this.#root['$'] ?? null;
|
|
140
144
|
this.#root = null;
|
|
141
|
-
return
|
|
145
|
+
return result;
|
|
142
146
|
}
|
|
143
147
|
dump() {
|
|
144
148
|
return JSON.stringify(this.#compiled);
|
|
@@ -163,8 +167,15 @@ export class JSONPath {
|
|
|
163
167
|
if ( query.length === 0 ) { return; }
|
|
164
168
|
const steps = [];
|
|
165
169
|
let c = query.charCodeAt(i);
|
|
166
|
-
|
|
167
|
-
|
|
170
|
+
if ( c === 0x24 /* $ */ ) {
|
|
171
|
+
steps.push({ mv: this.#ROOT });
|
|
172
|
+
i += 1;
|
|
173
|
+
} else if ( c === 0x40 /* @ */ ) {
|
|
174
|
+
steps.push({ mv: this.#CURRENT });
|
|
175
|
+
i += 1;
|
|
176
|
+
} else {
|
|
177
|
+
steps.push({ mv: i === 0 ? this.#ROOT : this.#CURRENT });
|
|
178
|
+
}
|
|
168
179
|
let mv = this.#UNDEFINED;
|
|
169
180
|
for (;;) {
|
|
170
181
|
if ( i === query.length ) { break; }
|
|
@@ -226,7 +237,8 @@ export class JSONPath {
|
|
|
226
237
|
i = r.i + 1;
|
|
227
238
|
mv = this.#UNDEFINED;
|
|
228
239
|
}
|
|
229
|
-
if ( steps.length
|
|
240
|
+
if ( steps.length === 0 ) { return; }
|
|
241
|
+
if ( mv !== this.#UNDEFINED ) { return; }
|
|
230
242
|
return { steps, i };
|
|
231
243
|
}
|
|
232
244
|
#evaluate(steps, pathin) {
|
|
@@ -235,7 +247,7 @@ export class JSONPath {
|
|
|
235
247
|
for ( const step of steps ) {
|
|
236
248
|
switch ( step.mv ) {
|
|
237
249
|
case this.#ROOT:
|
|
238
|
-
resultset = [ [] ];
|
|
250
|
+
resultset = [ [ '$' ] ];
|
|
239
251
|
break;
|
|
240
252
|
case this.#CURRENT:
|
|
241
253
|
resultset = [ pathin ];
|
|
@@ -458,13 +470,40 @@ export class JSONPath {
|
|
|
458
470
|
}
|
|
459
471
|
if ( outcome ) { return k; }
|
|
460
472
|
}
|
|
461
|
-
#modifyVal(obj, key
|
|
462
|
-
const
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
473
|
+
#modifyVal(obj, key) {
|
|
474
|
+
const { modify, rval } = this.#compiled;
|
|
475
|
+
switch ( modify ) {
|
|
476
|
+
case undefined:
|
|
477
|
+
obj[key] = rval;
|
|
478
|
+
break;
|
|
479
|
+
case '+': {
|
|
480
|
+
if ( rval instanceof Object === false ) { return; }
|
|
481
|
+
const lval = obj[key];
|
|
482
|
+
if ( lval instanceof Object === false ) { return; }
|
|
483
|
+
if ( Array.isArray(lval) ) { return; }
|
|
484
|
+
for ( const [ k, v ] of Object.entries(rval) ) {
|
|
485
|
+
lval[k] = v;
|
|
486
|
+
}
|
|
487
|
+
break;
|
|
488
|
+
}
|
|
489
|
+
case 'repl': {
|
|
490
|
+
const lval = obj[key];
|
|
491
|
+
if ( typeof lval !== 'string' ) { return; }
|
|
492
|
+
if ( this.#compiled.re === undefined ) {
|
|
493
|
+
this.#compiled.re = null;
|
|
494
|
+
try {
|
|
495
|
+
this.#compiled.re = rval.regex !== undefined
|
|
496
|
+
? new RegExp(rval.regex, rval.flags)
|
|
497
|
+
: new RegExp(rval.pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
|
|
498
|
+
} catch {
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
if ( this.#compiled.re === null ) { return; }
|
|
502
|
+
obj[key] = lval.replace(this.#compiled.re, rval.replacement);
|
|
503
|
+
break;
|
|
504
|
+
}
|
|
505
|
+
default:
|
|
506
|
+
break;
|
|
468
507
|
}
|
|
469
508
|
}
|
|
470
509
|
}
|
|
@@ -361,16 +361,20 @@ export async function syncWithBrowserPermissions() {
|
|
|
361
361
|
const { optimal, complete } = filteringModes;
|
|
362
362
|
for ( const hn of optimal ) {
|
|
363
363
|
if ( allowedHostnames.has(hn) ) { continue; }
|
|
364
|
+
if ( isDescendantHostnameOfIter(hn, allowedHostnames) ) { continue; }
|
|
364
365
|
optimal.delete(hn);
|
|
365
366
|
modified = true;
|
|
366
367
|
}
|
|
367
368
|
for ( const hn of complete ) {
|
|
368
369
|
if ( allowedHostnames.has(hn) ) { continue; }
|
|
370
|
+
if ( isDescendantHostnameOfIter(hn, allowedHostnames) ) { continue; }
|
|
369
371
|
complete.delete(hn);
|
|
370
372
|
modified = true;
|
|
371
373
|
}
|
|
374
|
+
if ( modified ) {
|
|
375
|
+
await writeFilteringModeDetails(filteringModes);
|
|
376
|
+
}
|
|
372
377
|
}
|
|
373
|
-
await writeFilteringModeDetails(filteringModes);
|
|
374
378
|
return modified;
|
|
375
379
|
}
|
|
376
380
|
|
|
@@ -233,7 +233,7 @@ dom.on('#gotoReport', 'click', ev => {
|
|
|
233
233
|
}
|
|
234
234
|
if ( url === undefined ) { return; }
|
|
235
235
|
const reportURL = new URL(runtime.getURL('/report.html'));
|
|
236
|
-
reportURL.searchParams.set('url',
|
|
236
|
+
reportURL.searchParams.set('url', tabURL.href);
|
|
237
237
|
reportURL.searchParams.set('mode', popupPanelData.level);
|
|
238
238
|
sendMessage({
|
|
239
239
|
what: 'gotoURL',
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
22
|
import { dom, qs$ } from './dom.js';
|
|
23
|
-
import { getTroubleshootingInfo } from './troubleshooting.js';
|
|
24
23
|
import { sendMessage } from './ext.js';
|
|
25
24
|
|
|
26
25
|
/******************************************************************************/
|
|
@@ -93,7 +92,10 @@ async function reportSpecificFilterIssue() {
|
|
|
93
92
|
|
|
94
93
|
/******************************************************************************/
|
|
95
94
|
|
|
96
|
-
|
|
95
|
+
sendMessage({
|
|
96
|
+
what: 'getTroubleshootingInfo',
|
|
97
|
+
siteMode: reportedPage.mode,
|
|
98
|
+
}).then(config => {
|
|
97
99
|
qs$('[data-i18n="supportS5H"] + pre').textContent = config;
|
|
98
100
|
|
|
99
101
|
dom.on('[data-url]', 'click', ev => {
|
|
@@ -36,7 +36,7 @@ import { fetchJSON } from './fetch.js';
|
|
|
36
36
|
import { getAdminRulesets } from './admin.js';
|
|
37
37
|
import { hasBroadHostPermissions } from './utils.js';
|
|
38
38
|
import { rulesFromText } from './dnr-parser.js';
|
|
39
|
-
import { ubolLog } from './debug.js';
|
|
39
|
+
import { ubolErr, ubolLog } from './debug.js';
|
|
40
40
|
|
|
41
41
|
/******************************************************************************/
|
|
42
42
|
|
|
@@ -306,6 +306,9 @@ async function updateDynamicRules() {
|
|
|
306
306
|
if ( dynamicRegexCount !== 0 ) {
|
|
307
307
|
ubolLog(`Using ${dynamicRegexCount}/${dnr.MAX_NUMBER_OF_REGEX_RULES} dynamic regex-based DNR rules`);
|
|
308
308
|
}
|
|
309
|
+
|
|
310
|
+
const response = {};
|
|
311
|
+
|
|
309
312
|
try {
|
|
310
313
|
await dnr.updateDynamicRules({ addRules, removeRuleIds });
|
|
311
314
|
if ( removeRuleIds.length !== 0 ) {
|
|
@@ -315,9 +318,16 @@ async function updateDynamicRules() {
|
|
|
315
318
|
ubolLog(`Add ${addRules.length} dynamic DNR rules`);
|
|
316
319
|
}
|
|
317
320
|
} catch(reason) {
|
|
318
|
-
|
|
321
|
+
ubolErr(`updateDynamicRules/${reason}`);
|
|
322
|
+
response.error = `${reason}`;
|
|
319
323
|
}
|
|
320
|
-
|
|
324
|
+
|
|
325
|
+
const result = await updateSessionRules();
|
|
326
|
+
if ( result?.error ) {
|
|
327
|
+
response.error ||= result.error;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
return response;
|
|
321
331
|
}
|
|
322
332
|
|
|
323
333
|
/******************************************************************************/
|
|
@@ -452,6 +462,7 @@ async function updateSessionRules() {
|
|
|
452
462
|
if ( sessionRegexCount !== 0 ) {
|
|
453
463
|
ubolLog(`Using ${sessionRegexCount}/${dnr.MAX_NUMBER_OF_REGEX_RULES} session regex-based DNR rules`);
|
|
454
464
|
}
|
|
465
|
+
const response = {};
|
|
455
466
|
try {
|
|
456
467
|
await dnr.updateSessionRules({ addRules, removeRuleIds });
|
|
457
468
|
if ( removeRuleIds.length !== 0 ) {
|
|
@@ -461,8 +472,10 @@ async function updateSessionRules() {
|
|
|
461
472
|
ubolLog(`Add ${addRules.length} session DNR rules`);
|
|
462
473
|
}
|
|
463
474
|
} catch(reason) {
|
|
464
|
-
|
|
475
|
+
ubolErr(`updateSessionRules/${reason}`);
|
|
476
|
+
response.error = `${reason}`;
|
|
465
477
|
}
|
|
478
|
+
return response;
|
|
466
479
|
}
|
|
467
480
|
|
|
468
481
|
/******************************************************************************/
|
|
@@ -636,9 +649,7 @@ async function enableRulesets(ids) {
|
|
|
636
649
|
disableRulesetSet.delete(id);
|
|
637
650
|
}
|
|
638
651
|
|
|
639
|
-
if ( enableRulesetSet.size === 0 && disableRulesetSet.size === 0 ) {
|
|
640
|
-
return false;
|
|
641
|
-
}
|
|
652
|
+
if ( enableRulesetSet.size === 0 && disableRulesetSet.size === 0 ) { return; }
|
|
642
653
|
|
|
643
654
|
const enableRulesetIds = Array.from(enableRulesetSet);
|
|
644
655
|
const disableRulesetIds = Array.from(disableRulesetSet);
|
|
@@ -649,20 +660,34 @@ async function enableRulesets(ids) {
|
|
|
649
660
|
if ( disableRulesetIds.length !== 0 ) {
|
|
650
661
|
ubolLog(`Disable ruleset: ${disableRulesetIds}`);
|
|
651
662
|
}
|
|
652
|
-
|
|
653
|
-
|
|
663
|
+
|
|
664
|
+
const response = {};
|
|
665
|
+
|
|
666
|
+
await dnr.updateEnabledRulesets({
|
|
667
|
+
enableRulesetIds,
|
|
668
|
+
disableRulesetIds,
|
|
669
|
+
}).catch(reason => {
|
|
670
|
+
ubolErr(`updateEnabledRulesets/${reason}`);
|
|
671
|
+
response.error = `${reason}`;
|
|
654
672
|
});
|
|
655
673
|
|
|
656
|
-
await updateDynamicRules();
|
|
674
|
+
const result = await updateDynamicRules();
|
|
675
|
+
if ( result?.error ) {
|
|
676
|
+
response.error ||= result.error;
|
|
677
|
+
}
|
|
657
678
|
|
|
658
|
-
dnr.getEnabledRulesets().then(enabledRulesets => {
|
|
679
|
+
await dnr.getEnabledRulesets().then(enabledRulesets => {
|
|
659
680
|
ubolLog(`Enabled rulesets: ${enabledRulesets}`);
|
|
681
|
+
response.enabledRulesets = enabledRulesets;
|
|
660
682
|
return dnr.getAvailableStaticRuleCount();
|
|
661
683
|
}).then(count => {
|
|
662
684
|
ubolLog(`Available static rule count: ${count}`);
|
|
685
|
+
response.staticRuleCount = count;
|
|
686
|
+
}).catch(reason => {
|
|
687
|
+
ubolErr(`getEnabledRulesets/${reason}`);
|
|
663
688
|
});
|
|
664
689
|
|
|
665
|
-
return
|
|
690
|
+
return response;
|
|
666
691
|
}
|
|
667
692
|
|
|
668
693
|
/******************************************************************************/
|
|
@@ -756,7 +781,7 @@ async function updateUserRules() {
|
|
|
756
781
|
out.added = addRules.length;
|
|
757
782
|
out.removed = removeRuleIds.length;
|
|
758
783
|
} catch(reason) {
|
|
759
|
-
|
|
784
|
+
ubolErr(`updateUserRules/${reason}`);
|
|
760
785
|
out.errors.push(`${reason}`);
|
|
761
786
|
} finally {
|
|
762
787
|
const userRules = await getEffectiveUserRules();
|
|
@@ -233,7 +233,6 @@ const stopAll = reason => {
|
|
|
233
233
|
domMutationObserver.takeRecords();
|
|
234
234
|
domMutationObserver = undefined;
|
|
235
235
|
genericSelectorMap.clear();
|
|
236
|
-
console.info(`uBOL: Generic cosmetic filtering stopped because ${reason}`);
|
|
237
236
|
};
|
|
238
237
|
|
|
239
238
|
/******************************************************************************/
|
|
@@ -60,6 +60,8 @@ self.isolatedAPI.forEachHostname(lookupAll, {
|
|
|
60
60
|
});
|
|
61
61
|
proceduralImports.length = 0;
|
|
62
62
|
|
|
63
|
+
if ( selectors.length === 0 ) { return; }
|
|
64
|
+
|
|
63
65
|
const exceptedSelectors = exceptions.length !== 0
|
|
64
66
|
? selectors.filter(a => exceptions.includes(JSON.stringify(a)) === false)
|
|
65
67
|
: selectors;
|
|
@@ -58,6 +58,8 @@ self.isolatedAPI.forEachHostname(lookupAll, {
|
|
|
58
58
|
|
|
59
59
|
specificImports.length = 0;
|
|
60
60
|
|
|
61
|
+
if ( selectors.length === 0 ) { return; }
|
|
62
|
+
|
|
61
63
|
const exceptedSelectors = exceptions.length !== 0
|
|
62
64
|
? selectors.filter(a => exceptions.includes(a) === false)
|
|
63
65
|
: selectors;
|
|
@@ -21,18 +21,14 @@
|
|
|
21
21
|
|
|
22
22
|
import * as ut from './utils.js';
|
|
23
23
|
|
|
24
|
-
import {
|
|
25
|
-
|
|
26
|
-
localRemove,
|
|
27
|
-
localWrite,
|
|
28
|
-
} from './ext.js';
|
|
24
|
+
import { browser, localRemove } from './ext.js';
|
|
25
|
+
import { ubolErr, ubolLog } from './debug.js';
|
|
29
26
|
|
|
30
27
|
import { fetchJSON } from './fetch.js';
|
|
31
28
|
import { getEnabledRulesetsDetails } from './ruleset-manager.js';
|
|
32
29
|
import { getFilteringModeDetails } from './mode-manager.js';
|
|
33
30
|
import { registerCustomFilters } from './filter-manager.js';
|
|
34
31
|
import { registerToolbarIconToggler } from './action.js';
|
|
35
|
-
import { ubolLog } from './debug.js';
|
|
36
32
|
|
|
37
33
|
/******************************************************************************/
|
|
38
34
|
|
|
@@ -555,8 +551,7 @@ async function registerInjectables() {
|
|
|
555
551
|
await browser.scripting.unregisterContentScripts({ ids: toRemove });
|
|
556
552
|
localRemove('$scripting.unregisterContentScripts');
|
|
557
553
|
} catch(reason) {
|
|
558
|
-
|
|
559
|
-
console.info(reason);
|
|
554
|
+
ubolErr(`unregisterContentScripts/${reason}`);
|
|
560
555
|
}
|
|
561
556
|
}
|
|
562
557
|
|
|
@@ -566,8 +561,7 @@ async function registerInjectables() {
|
|
|
566
561
|
await browser.scripting.registerContentScripts(toAdd);
|
|
567
562
|
localRemove('$scripting.registerContentScripts');
|
|
568
563
|
} catch(reason) {
|
|
569
|
-
|
|
570
|
-
console.info(reason);
|
|
564
|
+
ubolErr(`registerContentScripts/${reason}`);
|
|
571
565
|
}
|
|
572
566
|
}
|
|
573
567
|
|
|
@@ -222,10 +222,8 @@ listen.onmessage = ev => {
|
|
|
222
222
|
}
|
|
223
223
|
|
|
224
224
|
if ( message.enabledRulesets !== undefined ) {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
render = true;
|
|
228
|
-
}
|
|
225
|
+
local.enabledRulesets = message.enabledRulesets;
|
|
226
|
+
render = true;
|
|
229
227
|
}
|
|
230
228
|
|
|
231
229
|
if ( render === false ) { return; }
|
|
@@ -250,7 +248,7 @@ sendMessage({
|
|
|
250
248
|
}
|
|
251
249
|
listen();
|
|
252
250
|
}).catch(reason => {
|
|
253
|
-
console.
|
|
251
|
+
console.error(reason);
|
|
254
252
|
});
|
|
255
253
|
|
|
256
254
|
/******************************************************************************/
|
|
@@ -841,6 +841,11 @@ export class AstFilterParser {
|
|
|
841
841
|
this.netOptionValueParser = new ArglistParser(',');
|
|
842
842
|
this.scriptletArgListParser = new ArglistParser(',');
|
|
843
843
|
this.domainRegexValueParser = new ArglistParser('/');
|
|
844
|
+
this.reNetOptionTokens = new RegExp(
|
|
845
|
+
`^~?(${Array.from(netOptionTokenDescriptors.keys())
|
|
846
|
+
.map(s => escapeForRegex(s))
|
|
847
|
+
.join('|')})\\b`
|
|
848
|
+
);
|
|
844
849
|
}
|
|
845
850
|
|
|
846
851
|
finish() {
|
|
@@ -1273,7 +1278,6 @@ export class AstFilterParser {
|
|
|
1273
1278
|
case NODE_TYPE_NET_OPTION_NAME_FONT:
|
|
1274
1279
|
case NODE_TYPE_NET_OPTION_NAME_IMAGE:
|
|
1275
1280
|
case NODE_TYPE_NET_OPTION_NAME_MEDIA:
|
|
1276
|
-
case NODE_TYPE_NET_OPTION_NAME_OBJECT:
|
|
1277
1281
|
case NODE_TYPE_NET_OPTION_NAME_OTHER:
|
|
1278
1282
|
case NODE_TYPE_NET_OPTION_NAME_SCRIPT:
|
|
1279
1283
|
case NODE_TYPE_NET_OPTION_NAME_XHR:
|
|
@@ -1301,6 +1305,7 @@ export class AstFilterParser {
|
|
|
1301
1305
|
break;
|
|
1302
1306
|
case NODE_TYPE_NET_OPTION_NAME_DOC:
|
|
1303
1307
|
case NODE_TYPE_NET_OPTION_NAME_FRAME:
|
|
1308
|
+
case NODE_TYPE_NET_OPTION_NAME_OBJECT:
|
|
1304
1309
|
realBad = hasValue;
|
|
1305
1310
|
if ( realBad ) { break; }
|
|
1306
1311
|
docTypeCount += 1;
|
|
@@ -1512,12 +1517,7 @@ export class AstFilterParser {
|
|
|
1512
1517
|
for (;;) {
|
|
1513
1518
|
const before = s.charAt(j-1);
|
|
1514
1519
|
if ( before === '$' ) { return -1; }
|
|
1515
|
-
|
|
1516
|
-
if ( ')/|'.includes(after) === false ) {
|
|
1517
|
-
if ( before === '' || '"\'\\`'.includes(before) === false ) {
|
|
1518
|
-
return j;
|
|
1519
|
-
}
|
|
1520
|
-
}
|
|
1520
|
+
if ( this.reNetOptionTokens.test(s.slice(j+1)) ) { return j; }
|
|
1521
1521
|
if ( j === start ) { break; }
|
|
1522
1522
|
j = s.lastIndexOf('$', j-1);
|
|
1523
1523
|
if ( j === -1 ) { break; }
|
|
@@ -3080,9 +3080,10 @@ export function parseReplaceByRegexValue(s) {
|
|
|
3080
3080
|
if ( parser.transform ) {
|
|
3081
3081
|
pattern = parser.normalizeArg(pattern);
|
|
3082
3082
|
}
|
|
3083
|
-
if ( pattern
|
|
3084
|
-
|
|
3085
|
-
|
|
3083
|
+
if ( pattern !== '' ) {
|
|
3084
|
+
pattern = parser.normalizeArg(pattern, '$');
|
|
3085
|
+
pattern = parser.normalizeArg(pattern, ',');
|
|
3086
|
+
}
|
|
3086
3087
|
parser.nextArg(s, parser.separatorEnd);
|
|
3087
3088
|
let replacement = s.slice(parser.argBeg, parser.argEnd);
|
|
3088
3089
|
if ( parser.separatorEnd === parser.separatorBeg ) { return; }
|
|
@@ -3092,6 +3093,9 @@ export function parseReplaceByRegexValue(s) {
|
|
|
3092
3093
|
replacement = parser.normalizeArg(replacement, '$');
|
|
3093
3094
|
replacement = parser.normalizeArg(replacement, ',');
|
|
3094
3095
|
const flags = s.slice(parser.separatorEnd);
|
|
3096
|
+
if ( pattern === '' ) {
|
|
3097
|
+
return { flags, replacement }
|
|
3098
|
+
}
|
|
3095
3099
|
try {
|
|
3096
3100
|
return { re: new RegExp(pattern, flags), replacement };
|
|
3097
3101
|
} catch {
|
|
@@ -3101,7 +3105,10 @@ export function parseReplaceByRegexValue(s) {
|
|
|
3101
3105
|
export function parseReplaceValue(s) {
|
|
3102
3106
|
if ( s.startsWith('/') ) {
|
|
3103
3107
|
const r = parseReplaceByRegexValue(s);
|
|
3104
|
-
if ( r ) {
|
|
3108
|
+
if ( r ) {
|
|
3109
|
+
if ( r.re === undefined ) { return; }
|
|
3110
|
+
r.type = 'text';
|
|
3111
|
+
}
|
|
3105
3112
|
return r;
|
|
3106
3113
|
}
|
|
3107
3114
|
const pos = s.indexOf(':');
|
|
@@ -48,9 +48,8 @@ export const toolOverlay = {
|
|
|
48
48
|
};
|
|
49
49
|
this.moveable = qs$('aside:has(#move)');
|
|
50
50
|
if ( this.moveable !== null ) {
|
|
51
|
-
dom.on('aside #move', 'pointerdown', ev => {
|
|
52
|
-
|
|
53
|
-
});
|
|
51
|
+
dom.on('aside #move', 'pointerdown', ev => { this.mover(ev); });
|
|
52
|
+
dom.on('aside #move', 'touchstart', this.eatTouchEvent);
|
|
54
53
|
}
|
|
55
54
|
this.onMessage({ what: 'startTool',
|
|
56
55
|
url: msg.url,
|
|
@@ -167,20 +166,16 @@ export const toolOverlay = {
|
|
|
167
166
|
if ( target.matches('#move') === false ) { return; }
|
|
168
167
|
if ( dom.cl.has(this.moveable, 'moving') ) { return; }
|
|
169
168
|
target.setPointerCapture(ev.pointerId);
|
|
170
|
-
this.
|
|
171
|
-
|
|
172
|
-
const touch = ev.touches[0];
|
|
173
|
-
this.moverX0 = touch.pageX;
|
|
174
|
-
this.moverY0 = touch.pageY;
|
|
175
|
-
} else {
|
|
176
|
-
this.moverX0 = ev.pageX;
|
|
177
|
-
this.moverY0 = ev.pageY;
|
|
178
|
-
}
|
|
169
|
+
this.moverX0 = ev.pageX;
|
|
170
|
+
this.moverY0 = ev.pageY;
|
|
179
171
|
const rect = this.moveable.getBoundingClientRect();
|
|
180
172
|
this.moverCX0 = rect.x + rect.width / 2;
|
|
181
173
|
this.moverCY0 = rect.y + rect.height / 2;
|
|
182
174
|
dom.cl.add(this.moveable, 'moving');
|
|
183
|
-
self.addEventListener('pointermove', this.moverMoveAsync, {
|
|
175
|
+
self.addEventListener('pointermove', this.moverMoveAsync, {
|
|
176
|
+
passive: true,
|
|
177
|
+
capture: true,
|
|
178
|
+
});
|
|
184
179
|
self.addEventListener('pointerup', this.moverStop, { capture: true, once: true });
|
|
185
180
|
ev.stopPropagation();
|
|
186
181
|
ev.preventDefault();
|
|
@@ -209,15 +204,9 @@ export const toolOverlay = {
|
|
|
209
204
|
}
|
|
210
205
|
},
|
|
211
206
|
moverMoveAsync(ev) {
|
|
207
|
+
toolOverlay.moverX1 = ev.pageX;
|
|
208
|
+
toolOverlay.moverY1 = ev.pageY;
|
|
212
209
|
if ( toolOverlay.moverTimer !== undefined ) { return; }
|
|
213
|
-
if ( toolOverlay.moverIsTouch ) {
|
|
214
|
-
const touch = ev.touches[0];
|
|
215
|
-
toolOverlay.moverX1 = touch.pageX;
|
|
216
|
-
toolOverlay.moverY1 = touch.pageY;
|
|
217
|
-
} else {
|
|
218
|
-
toolOverlay.moverX1 = ev.pageX;
|
|
219
|
-
toolOverlay.moverY1 = ev.pageY;
|
|
220
|
-
}
|
|
221
210
|
toolOverlay.moverTimer = self.requestAnimationFrame(( ) => {
|
|
222
211
|
toolOverlay.moverMove();
|
|
223
212
|
});
|
|
@@ -225,13 +214,20 @@ export const toolOverlay = {
|
|
|
225
214
|
moverStop(ev) {
|
|
226
215
|
if ( dom.cl.has(toolOverlay.moveable, 'moving') === false ) { return; }
|
|
227
216
|
dom.cl.remove(toolOverlay.moveable, 'moving');
|
|
228
|
-
self.removeEventListener('pointermove', toolOverlay.moverMoveAsync, {
|
|
217
|
+
self.removeEventListener('pointermove', toolOverlay.moverMoveAsync, {
|
|
218
|
+
passive: true,
|
|
219
|
+
capture: true,
|
|
220
|
+
});
|
|
229
221
|
ev.target.releasePointerCapture(ev.pointerId);
|
|
230
222
|
ev.stopPropagation();
|
|
231
223
|
ev.preventDefault();
|
|
232
224
|
},
|
|
225
|
+
eatTouchEvent(ev) {
|
|
226
|
+
if ( ev.target !== qs$('aside #move') ) { return; }
|
|
227
|
+
ev.stopPropagation();
|
|
228
|
+
ev.preventDefault();
|
|
229
|
+
},
|
|
233
230
|
moveable: null,
|
|
234
|
-
moverIsTouch: false,
|
|
235
231
|
moverX0: 0, moverY0: 0,
|
|
236
232
|
moverX1: 0, moverY1: 0,
|
|
237
233
|
moverCX0: 0, moverCY0: 0,
|
|
@@ -19,14 +19,11 @@
|
|
|
19
19
|
Home: https://github.com/gorhill/uBlock
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
import {
|
|
23
|
-
localRead,
|
|
24
|
-
runtime,
|
|
25
|
-
sendMessage,
|
|
26
|
-
} from './ext.js';
|
|
27
|
-
|
|
28
22
|
import { dnr } from './ext-compat.js';
|
|
29
|
-
import {
|
|
23
|
+
import { getConsoleOutput } from './debug.js';
|
|
24
|
+
import { getDefaultFilteringMode } from './mode-manager.js';
|
|
25
|
+
import { getEffectiveUserRules } from './ruleset-manager.js';
|
|
26
|
+
import { runtime } from './ext.js';
|
|
30
27
|
|
|
31
28
|
/******************************************************************************/
|
|
32
29
|
|
|
@@ -63,15 +60,11 @@ export async function getTroubleshootingInfo(siteMode) {
|
|
|
63
60
|
rulesets,
|
|
64
61
|
defaultMode,
|
|
65
62
|
userRules,
|
|
66
|
-
registerContentScriptsReason,
|
|
67
|
-
unregisterContentScriptsReason,
|
|
68
63
|
] = await Promise.all([
|
|
69
64
|
runtime.getPlatformInfo(),
|
|
70
65
|
dnr.getEnabledRulesets(),
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
localRead('$scripting.registerContentScripts'),
|
|
74
|
-
localRead('$scripting.unregisterContentScripts'),
|
|
66
|
+
getDefaultFilteringMode(),
|
|
67
|
+
getEffectiveUserRules(),
|
|
75
68
|
]);
|
|
76
69
|
const browser = (( ) => {
|
|
77
70
|
const extURL = runtime.getURL('');
|
|
@@ -85,7 +78,6 @@ export async function getTroubleshootingInfo(siteMode) {
|
|
|
85
78
|
} else {
|
|
86
79
|
agent = 'Chrome';
|
|
87
80
|
}
|
|
88
|
-
dom.cl.add('html', agent.toLowerCase());
|
|
89
81
|
if ( /\bMobile\b/.test(navigator.userAgent) ) {
|
|
90
82
|
agent += ' Mobile';
|
|
91
83
|
}
|
|
@@ -113,11 +105,11 @@ export async function getTroubleshootingInfo(siteMode) {
|
|
|
113
105
|
config['user rules'] = userRules.length;
|
|
114
106
|
}
|
|
115
107
|
config.rulesets = rulesets;
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
108
|
+
const consoleOutput = getConsoleOutput();
|
|
109
|
+
if ( consoleOutput.length !== 0 ) {
|
|
110
|
+
config.console = siteMode
|
|
111
|
+
? consoleOutput.slice(-8)
|
|
112
|
+
: consoleOutput;
|
|
121
113
|
}
|
|
122
114
|
return renderData(config);
|
|
123
115
|
}
|
|
@@ -314,7 +314,7 @@ function parseNetworkFilter(parser) {
|
|
|
314
314
|
break;
|
|
315
315
|
case sfp.NODE_TYPE_NET_OPTION_NAME_METHOD: {
|
|
316
316
|
const value = parser.getNetOptionValue(type);
|
|
317
|
-
for ( const method of value.
|
|
317
|
+
for ( const method of value.toLowerCase().split('|') ) {
|
|
318
318
|
const not = method.charCodeAt(0) === 0x7E /* '~' */;
|
|
319
319
|
if ( not ) {
|
|
320
320
|
excludedRequestMethods.add(method.slice(1));
|
|
@@ -97,6 +97,11 @@
|
|
|
97
97
|
"enabled": false,
|
|
98
98
|
"path": "/rulesets/main/annoyances-others.json"
|
|
99
99
|
},
|
|
100
|
+
{
|
|
101
|
+
"id": "annoyances-notifications",
|
|
102
|
+
"enabled": false,
|
|
103
|
+
"path": "/rulesets/main/annoyances-notifications.json"
|
|
104
|
+
},
|
|
100
105
|
{
|
|
101
106
|
"id": "ublock-experimental",
|
|
102
107
|
"enabled": false,
|
|
@@ -319,7 +324,7 @@
|
|
|
319
324
|
"storage": {
|
|
320
325
|
"managed_schema": "managed_storage.json"
|
|
321
326
|
},
|
|
322
|
-
"version": "2025.
|
|
327
|
+
"version": "2025.818.1918",
|
|
323
328
|
"web_accessible_resources": [
|
|
324
329
|
{
|
|
325
330
|
"resources": [
|
|
@@ -360,8 +365,8 @@
|
|
|
360
365
|
{
|
|
361
366
|
"resources": [
|
|
362
367
|
"web_accessible_resources/noop.js",
|
|
363
|
-
"web_accessible_resources/google-ima.js",
|
|
364
368
|
"web_accessible_resources/amazon_apstag.js",
|
|
369
|
+
"web_accessible_resources/google-ima.js",
|
|
365
370
|
"web_accessible_resources/noop.txt",
|
|
366
371
|
"web_accessible_resources/noop.css",
|
|
367
372
|
"web_accessible_resources/1x1.gif",
|