@browserless.io/browserless 2.37.0 → 2.38.0
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 +25 -1
- 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/ar/messages.json +5 -5
- 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/de/messages.json +1 -1
- package/extensions/ublocklite/_locales/es/messages.json +4 -4
- package/extensions/ublocklite/_locales/fa/messages.json +8 -8
- package/extensions/ublocklite/_locales/gl/messages.json +5 -5
- package/extensions/ublocklite/_locales/hu/messages.json +5 -5
- package/extensions/ublocklite/_locales/ka/messages.json +5 -5
- package/extensions/ublocklite/_locales/nb/messages.json +7 -7
- package/extensions/ublocklite/_locales/pt_PT/messages.json +9 -9
- package/extensions/ublocklite/_locales/ro/messages.json +32 -32
- 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 +29 -8
- package/extensions/ublocklite/js/dashboard.js +4 -5
- package/extensions/ublocklite/js/jsonpath.js +25 -10
- package/extensions/ublocklite/js/mode-manager.js +7 -9
- package/extensions/ublocklite/js/report.js +2 -4
- package/extensions/ublocklite/js/scripting/css-api.js +33 -0
- package/extensions/ublocklite/js/scripting/css-generic.js +3 -13
- package/extensions/ublocklite/js/scripting/css-procedural-api.js +1 -9
- package/extensions/ublocklite/js/scripting/css-procedural.js +1 -5
- package/extensions/ublocklite/js/scripting/css-specific.js +1 -5
- package/extensions/ublocklite/js/scripting-manager.js +11 -8
- package/extensions/ublocklite/js/troubleshooting.js +33 -18
- package/extensions/ublocklite/js/utils.js +15 -13
- package/extensions/ublocklite/manifest.json +3 -2
- package/extensions/ublocklite/rulesets/generic-details.json +4 -2
- package/extensions/ublocklite/rulesets/main/adguard-mobile.json +4 -5
- package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +13 -8
- package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +24 -18
- package/extensions/ublocklite/rulesets/main/annoyances-notifications.json +2 -1
- package/extensions/ublocklite/rulesets/main/annoyances-others.json +3 -2
- package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +5 -3
- package/extensions/ublocklite/rulesets/main/chn-0.json +26 -16
- package/extensions/ublocklite/rulesets/main/deu-0.json +4 -4
- package/extensions/ublocklite/rulesets/main/dpollock-0.json +2 -1
- package/extensions/ublocklite/rulesets/main/easylist.json +44 -101
- package/extensions/ublocklite/rulesets/main/easyprivacy.json +28 -15
- package/extensions/ublocklite/rulesets/main/est-0.json +2 -1
- package/extensions/ublocklite/rulesets/main/fin-0.json +3 -1
- package/extensions/ublocklite/rulesets/main/fra-0.json +6 -4
- package/extensions/ublocklite/rulesets/main/hrv-0.json +6 -3
- package/extensions/ublocklite/rulesets/main/hun-0.json +5 -2
- package/extensions/ublocklite/rulesets/main/idn-0.json +1 -1
- package/extensions/ublocklite/rulesets/main/ind-0.json +36 -34
- package/extensions/ublocklite/rulesets/main/isr-0.json +1 -1
- package/extensions/ublocklite/rulesets/main/ita-0.json +6 -3
- package/extensions/ublocklite/rulesets/main/jpn-1.json +31 -24
- package/extensions/ublocklite/rulesets/main/kor-1.json +5 -3
- package/extensions/ublocklite/rulesets/main/mkd-0.json +2 -1
- package/extensions/ublocklite/rulesets/main/nld-0.json +3 -1
- package/extensions/ublocklite/rulesets/main/nor-0.json +17 -3
- package/extensions/ublocklite/rulesets/main/pgl.json +16 -20
- package/extensions/ublocklite/rulesets/main/pol-0.json +1 -1
- package/extensions/ublocklite/rulesets/main/rus-0.json +14 -13
- package/extensions/ublocklite/rulesets/main/rus-1.json +5 -2
- package/extensions/ublocklite/rulesets/main/spa-1.json +13 -3
- package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +11287 -12041
- package/extensions/ublocklite/rulesets/main/swe-1.json +24 -22
- package/extensions/ublocklite/rulesets/main/tur-0.json +15 -6
- package/extensions/ublocklite/rulesets/main/ublock-badware.json +30 -3
- package/extensions/ublocklite/rulesets/main/ublock-filters.json +91 -88
- package/extensions/ublocklite/rulesets/main/ukr-0.json +3 -3
- package/extensions/ublocklite/rulesets/main/urlhaus-full.json +4063 -328
- package/extensions/ublocklite/rulesets/main/vie-1.json +62 -51
- package/extensions/ublocklite/rulesets/regex/block-lan.json +16 -0
- package/extensions/ublocklite/rulesets/regex/chn-0.json +3 -2
- package/extensions/ublocklite/rulesets/regex/easylist.json +1 -6
- package/extensions/ublocklite/rulesets/regex/jpn-1.json +2 -3
- package/extensions/ublocklite/rulesets/regex/rus-0.json +2 -1
- package/extensions/ublocklite/rulesets/regex/ublock-badware.json +5 -5
- package/extensions/ublocklite/rulesets/regex/ublock-filters.json +23 -14
- package/extensions/ublocklite/rulesets/ruleset-details.json +239 -239
- package/extensions/ublocklite/rulesets/scripting/generic/adguard-mobile.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/alb-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-others.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-overlays.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-widgets.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/bgr-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/cze-0.js +2 -2
- 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/easyprivacy.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/est-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/fin-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/fra-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/grc-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/hrv-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/hun-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/ind-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/irn-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/isr-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/ita-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/kor-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/ltu-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/lva-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/mkd-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/nld-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/pol-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/rou-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/rus-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/rus-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/spa-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/spa-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/svn-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/tha-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/ublock-badware.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/ubol-tests.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +3 -5
- package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +4 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +4 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +1 -1
- 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-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/easylist.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/fin-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/fra-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/irn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/isr-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +3 -3
- 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 +3 -3
- 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/ublock-experimental.js +42 -0
- 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.remove-node-text.js +1 -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.set-session-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +5 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-replace-node-text.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-notifications.set-constant.js +2 -2
- 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-others.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-stack-trace.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +6 -2
- 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 +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-attr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-class.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 +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-click-element.js +3 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-argument.js +19 -8
- 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 +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/{nld-0.json-prune-fetch-response.js → chn-0.set-cookie.js} +120 -266
- 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/{vie-1.addEventListener-defuser.js → fin-0.remove-node-text.js} +105 -154
- 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/hun-0.set-constant.js +2 -2
- 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.href-sanitizer.js +4 -22
- 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 +6 -2
- 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.adjust-setInterval.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.href-sanitizer.js +6 -24
- 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.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.addEventListener-defuser.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setTimeout.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-xhr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.remove-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.remove-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-local-storage-item.js +399 -0
- 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-property-write.js +2 -2
- 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.href-sanitizer.js +6 -24
- 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-0.set-cookie.js +2 -2
- 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/rus-1.set-local-storage-item.js +399 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.href-sanitizer.js +4 -22
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +6 -2
- 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 +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.remove-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.href-sanitizer.js +4 -22
- 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 +2 -2
- 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 +19 -8
- 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-property-write.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.adjust-setInterval.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.href-sanitizer.js +5 -23
- 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.json-prune-xhr-response.js +3 -3
- 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 +24 -10
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +8 -4
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +8 -4
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-attr.js +2 -2
- 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 +3 -3
- 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.trusted-click-element.js +3 -0
- 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 +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 +21 -10
- 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 +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-attr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +7 -3
- 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 +2 -2
- 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/scriptlet/vie-1.set-constant.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 +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/est-0.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/grc-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/hrv-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/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/nor-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/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-badware.js +1 -1
- 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 +205 -117
- package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +18 -28
- package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/annoyances-widgets.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/chn-0.json +267 -247
- package/extensions/ublocklite/rulesets/strictblock/deu-0.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +2 -1
- package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +47 -3
- package/extensions/ublocklite/rulesets/strictblock/fra-0.json +102 -41
- package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +208 -198
- package/extensions/ublocklite/rulesets/strictblock/nor-0.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/pgl.json +16 -20
- package/extensions/ublocklite/rulesets/strictblock/pol-0.json +5 -1
- package/extensions/ublocklite/rulesets/strictblock/spa-1.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +11287 -12041
- package/extensions/ublocklite/rulesets/strictblock/swe-1.json +0 -1
- package/extensions/ublocklite/rulesets/strictblock/tur-0.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +671 -653
- package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +23 -19
- package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +3 -0
- package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +4063 -328
- package/extensions/ublocklite/rulesets/strictblock/vie-1.json +5 -1
- package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +59 -1
- package/extensions/ublocklite/ublock.zip +0 -0
- package/package.json +23 -22
- 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 +5 -2
- package/static/docs/swagger.min.json +4 -1
- package/static/function/client.js +143 -105
- package/static/function/index.html +143 -105
- 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
|
@@ -399,7 +399,7 @@ class JSONPath {
|
|
|
399
399
|
continue;
|
|
400
400
|
}
|
|
401
401
|
if ( c0 === 0x27 /* ' */ ) {
|
|
402
|
-
const r = this.#
|
|
402
|
+
const r = this.#untilChar(query, 0x27 /* ' */, i+1)
|
|
403
403
|
if ( r === undefined ) { return; }
|
|
404
404
|
keys.push(r.s);
|
|
405
405
|
i = r.i;
|
|
@@ -420,22 +420,27 @@ class JSONPath {
|
|
|
420
420
|
}
|
|
421
421
|
return { s: keys.length === 1 ? keys[0] : keys, i };
|
|
422
422
|
}
|
|
423
|
-
#
|
|
423
|
+
#consumeUnquotedIdentifier(query, i) {
|
|
424
|
+
const match = this.#reUnquotedIdentifier.exec(query.slice(i));
|
|
425
|
+
if ( match === null ) { return; }
|
|
426
|
+
return match[0];
|
|
427
|
+
}
|
|
428
|
+
#untilChar(query, targetCharCode, i) {
|
|
424
429
|
const len = query.length;
|
|
425
430
|
const parts = [];
|
|
426
431
|
let beg = i, end = i;
|
|
427
432
|
for (;;) {
|
|
428
433
|
if ( end === len ) { return; }
|
|
429
434
|
const c = query.charCodeAt(end);
|
|
430
|
-
if ( c ===
|
|
435
|
+
if ( c === targetCharCode ) {
|
|
431
436
|
parts.push(query.slice(beg, end));
|
|
432
437
|
end += 1;
|
|
433
438
|
break;
|
|
434
439
|
}
|
|
435
440
|
if ( c === 0x5C /* \ */ && (end+1) < len ) {
|
|
436
441
|
parts.push(query.slice(beg, end));
|
|
437
|
-
const d = query.
|
|
438
|
-
if ( d ===
|
|
442
|
+
const d = query.charCodeAt(end+1);
|
|
443
|
+
if ( d === targetCharCode || d === 0x5C ) {
|
|
439
444
|
end += 1;
|
|
440
445
|
beg = end;
|
|
441
446
|
}
|
|
@@ -444,12 +449,20 @@ class JSONPath {
|
|
|
444
449
|
}
|
|
445
450
|
return { s: parts.join(''), i: end };
|
|
446
451
|
}
|
|
447
|
-
#consumeUnquotedIdentifier(query, i) {
|
|
448
|
-
const match = this.#reUnquotedIdentifier.exec(query.slice(i));
|
|
449
|
-
if ( match === null ) { return; }
|
|
450
|
-
return match[0];
|
|
451
|
-
}
|
|
452
452
|
#compileExpr(query, step, i) {
|
|
453
|
+
if ( query.startsWith('=/', i) ) {
|
|
454
|
+
const r = this.#untilChar(query, 0x2F /* / */, i+2);
|
|
455
|
+
if ( r === undefined ) { return i; }
|
|
456
|
+
const match = /^[i]/.exec(query.slice(r.i));
|
|
457
|
+
try {
|
|
458
|
+
step.rval = new RegExp(r.s, match && match[0] || undefined);
|
|
459
|
+
} catch {
|
|
460
|
+
return i;
|
|
461
|
+
}
|
|
462
|
+
step.op = 're';
|
|
463
|
+
if ( match ) { r.i += match[0].length; }
|
|
464
|
+
return r.i;
|
|
465
|
+
}
|
|
453
466
|
const match = this.#reExpr.exec(query.slice(i));
|
|
454
467
|
if ( match === null ) { return i; }
|
|
455
468
|
try {
|
|
@@ -489,6 +502,7 @@ class JSONPath {
|
|
|
489
502
|
case '^=': outcome = `${v}`.startsWith(step.rval) === target; break;
|
|
490
503
|
case '$=': outcome = `${v}`.endsWith(step.rval) === target; break;
|
|
491
504
|
case '*=': outcome = `${v}`.includes(step.rval) === target; break;
|
|
505
|
+
case 're': outcome = step.rval.test(`${v}`); break;
|
|
492
506
|
default: outcome = hasOwn === target; break;
|
|
493
507
|
}
|
|
494
508
|
if ( outcome ) { return k; }
|
|
@@ -633,6 +647,10 @@ function proxyApplyFn(
|
|
|
633
647
|
: new proxyApplyFn.ApplyContext(...args);
|
|
634
648
|
}
|
|
635
649
|
};
|
|
650
|
+
proxyApplyFn.isCtor = new Map();
|
|
651
|
+
}
|
|
652
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
653
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
636
654
|
}
|
|
637
655
|
const fnStr = fn.toString();
|
|
638
656
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -645,7 +663,7 @@ function proxyApplyFn(
|
|
|
645
663
|
return Reflect.get(target, prop);
|
|
646
664
|
},
|
|
647
665
|
};
|
|
648
|
-
if (
|
|
666
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
649
667
|
proxyDetails.construct = function(target, args) {
|
|
650
668
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
651
669
|
};
|
package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-xhr-response.js
CHANGED
|
@@ -404,7 +404,7 @@ class JSONPath {
|
|
|
404
404
|
continue;
|
|
405
405
|
}
|
|
406
406
|
if ( c0 === 0x27 /* ' */ ) {
|
|
407
|
-
const r = this.#
|
|
407
|
+
const r = this.#untilChar(query, 0x27 /* ' */, i+1)
|
|
408
408
|
if ( r === undefined ) { return; }
|
|
409
409
|
keys.push(r.s);
|
|
410
410
|
i = r.i;
|
|
@@ -425,22 +425,27 @@ class JSONPath {
|
|
|
425
425
|
}
|
|
426
426
|
return { s: keys.length === 1 ? keys[0] : keys, i };
|
|
427
427
|
}
|
|
428
|
-
#
|
|
428
|
+
#consumeUnquotedIdentifier(query, i) {
|
|
429
|
+
const match = this.#reUnquotedIdentifier.exec(query.slice(i));
|
|
430
|
+
if ( match === null ) { return; }
|
|
431
|
+
return match[0];
|
|
432
|
+
}
|
|
433
|
+
#untilChar(query, targetCharCode, i) {
|
|
429
434
|
const len = query.length;
|
|
430
435
|
const parts = [];
|
|
431
436
|
let beg = i, end = i;
|
|
432
437
|
for (;;) {
|
|
433
438
|
if ( end === len ) { return; }
|
|
434
439
|
const c = query.charCodeAt(end);
|
|
435
|
-
if ( c ===
|
|
440
|
+
if ( c === targetCharCode ) {
|
|
436
441
|
parts.push(query.slice(beg, end));
|
|
437
442
|
end += 1;
|
|
438
443
|
break;
|
|
439
444
|
}
|
|
440
445
|
if ( c === 0x5C /* \ */ && (end+1) < len ) {
|
|
441
446
|
parts.push(query.slice(beg, end));
|
|
442
|
-
const d = query.
|
|
443
|
-
if ( d ===
|
|
447
|
+
const d = query.charCodeAt(end+1);
|
|
448
|
+
if ( d === targetCharCode || d === 0x5C ) {
|
|
444
449
|
end += 1;
|
|
445
450
|
beg = end;
|
|
446
451
|
}
|
|
@@ -449,12 +454,20 @@ class JSONPath {
|
|
|
449
454
|
}
|
|
450
455
|
return { s: parts.join(''), i: end };
|
|
451
456
|
}
|
|
452
|
-
#consumeUnquotedIdentifier(query, i) {
|
|
453
|
-
const match = this.#reUnquotedIdentifier.exec(query.slice(i));
|
|
454
|
-
if ( match === null ) { return; }
|
|
455
|
-
return match[0];
|
|
456
|
-
}
|
|
457
457
|
#compileExpr(query, step, i) {
|
|
458
|
+
if ( query.startsWith('=/', i) ) {
|
|
459
|
+
const r = this.#untilChar(query, 0x2F /* / */, i+2);
|
|
460
|
+
if ( r === undefined ) { return i; }
|
|
461
|
+
const match = /^[i]/.exec(query.slice(r.i));
|
|
462
|
+
try {
|
|
463
|
+
step.rval = new RegExp(r.s, match && match[0] || undefined);
|
|
464
|
+
} catch {
|
|
465
|
+
return i;
|
|
466
|
+
}
|
|
467
|
+
step.op = 're';
|
|
468
|
+
if ( match ) { r.i += match[0].length; }
|
|
469
|
+
return r.i;
|
|
470
|
+
}
|
|
458
471
|
const match = this.#reExpr.exec(query.slice(i));
|
|
459
472
|
if ( match === null ) { return i; }
|
|
460
473
|
try {
|
|
@@ -494,6 +507,7 @@ class JSONPath {
|
|
|
494
507
|
case '^=': outcome = `${v}`.startsWith(step.rval) === target; break;
|
|
495
508
|
case '$=': outcome = `${v}`.endsWith(step.rval) === target; break;
|
|
496
509
|
case '*=': outcome = `${v}`.includes(step.rval) === target; break;
|
|
510
|
+
case 're': outcome = step.rval.test(`${v}`); break;
|
|
497
511
|
default: outcome = hasOwn === target; break;
|
|
498
512
|
}
|
|
499
513
|
if ( outcome ) { return k; }
|
|
@@ -364,7 +364,7 @@ class JSONPath {
|
|
|
364
364
|
continue;
|
|
365
365
|
}
|
|
366
366
|
if ( c0 === 0x27 /* ' */ ) {
|
|
367
|
-
const r = this.#
|
|
367
|
+
const r = this.#untilChar(query, 0x27 /* ' */, i+1)
|
|
368
368
|
if ( r === undefined ) { return; }
|
|
369
369
|
keys.push(r.s);
|
|
370
370
|
i = r.i;
|
|
@@ -385,22 +385,27 @@ class JSONPath {
|
|
|
385
385
|
}
|
|
386
386
|
return { s: keys.length === 1 ? keys[0] : keys, i };
|
|
387
387
|
}
|
|
388
|
-
#
|
|
388
|
+
#consumeUnquotedIdentifier(query, i) {
|
|
389
|
+
const match = this.#reUnquotedIdentifier.exec(query.slice(i));
|
|
390
|
+
if ( match === null ) { return; }
|
|
391
|
+
return match[0];
|
|
392
|
+
}
|
|
393
|
+
#untilChar(query, targetCharCode, i) {
|
|
389
394
|
const len = query.length;
|
|
390
395
|
const parts = [];
|
|
391
396
|
let beg = i, end = i;
|
|
392
397
|
for (;;) {
|
|
393
398
|
if ( end === len ) { return; }
|
|
394
399
|
const c = query.charCodeAt(end);
|
|
395
|
-
if ( c ===
|
|
400
|
+
if ( c === targetCharCode ) {
|
|
396
401
|
parts.push(query.slice(beg, end));
|
|
397
402
|
end += 1;
|
|
398
403
|
break;
|
|
399
404
|
}
|
|
400
405
|
if ( c === 0x5C /* \ */ && (end+1) < len ) {
|
|
401
406
|
parts.push(query.slice(beg, end));
|
|
402
|
-
const d = query.
|
|
403
|
-
if ( d ===
|
|
407
|
+
const d = query.charCodeAt(end+1);
|
|
408
|
+
if ( d === targetCharCode || d === 0x5C ) {
|
|
404
409
|
end += 1;
|
|
405
410
|
beg = end;
|
|
406
411
|
}
|
|
@@ -409,12 +414,20 @@ class JSONPath {
|
|
|
409
414
|
}
|
|
410
415
|
return { s: parts.join(''), i: end };
|
|
411
416
|
}
|
|
412
|
-
#consumeUnquotedIdentifier(query, i) {
|
|
413
|
-
const match = this.#reUnquotedIdentifier.exec(query.slice(i));
|
|
414
|
-
if ( match === null ) { return; }
|
|
415
|
-
return match[0];
|
|
416
|
-
}
|
|
417
417
|
#compileExpr(query, step, i) {
|
|
418
|
+
if ( query.startsWith('=/', i) ) {
|
|
419
|
+
const r = this.#untilChar(query, 0x2F /* / */, i+2);
|
|
420
|
+
if ( r === undefined ) { return i; }
|
|
421
|
+
const match = /^[i]/.exec(query.slice(r.i));
|
|
422
|
+
try {
|
|
423
|
+
step.rval = new RegExp(r.s, match && match[0] || undefined);
|
|
424
|
+
} catch {
|
|
425
|
+
return i;
|
|
426
|
+
}
|
|
427
|
+
step.op = 're';
|
|
428
|
+
if ( match ) { r.i += match[0].length; }
|
|
429
|
+
return r.i;
|
|
430
|
+
}
|
|
418
431
|
const match = this.#reExpr.exec(query.slice(i));
|
|
419
432
|
if ( match === null ) { return i; }
|
|
420
433
|
try {
|
|
@@ -454,6 +467,7 @@ class JSONPath {
|
|
|
454
467
|
case '^=': outcome = `${v}`.startsWith(step.rval) === target; break;
|
|
455
468
|
case '$=': outcome = `${v}`.endsWith(step.rval) === target; break;
|
|
456
469
|
case '*=': outcome = `${v}`.includes(step.rval) === target; break;
|
|
470
|
+
case 're': outcome = step.rval.test(`${v}`); break;
|
|
457
471
|
default: outcome = hasOwn === target; break;
|
|
458
472
|
}
|
|
459
473
|
if ( outcome ) { return k; }
|
|
@@ -557,6 +571,10 @@ function proxyApplyFn(
|
|
|
557
571
|
: new proxyApplyFn.ApplyContext(...args);
|
|
558
572
|
}
|
|
559
573
|
};
|
|
574
|
+
proxyApplyFn.isCtor = new Map();
|
|
575
|
+
}
|
|
576
|
+
if ( proxyApplyFn.isCtor.has(target) === false ) {
|
|
577
|
+
proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
|
|
560
578
|
}
|
|
561
579
|
const fnStr = fn.toString();
|
|
562
580
|
const toString = (function toString() { return fnStr; }).bind(null);
|
|
@@ -569,7 +587,7 @@ function proxyApplyFn(
|
|
|
569
587
|
return Reflect.get(target, prop);
|
|
570
588
|
},
|
|
571
589
|
};
|
|
572
|
-
if (
|
|
590
|
+
if ( proxyApplyFn.isCtor.get(target) ) {
|
|
573
591
|
proxyDetails.construct = function(target, args) {
|
|
574
592
|
return handler(proxyApplyFn.CtorContext.factory(target, args));
|
|
575
593
|
};
|
|
@@ -507,8 +507,8 @@ function getRandomTokenFn() {
|
|
|
507
507
|
/******************************************************************************/
|
|
508
508
|
|
|
509
509
|
const scriptletGlobals = {}; // eslint-disable-line
|
|
510
|
-
const argsList = [["adPlacements adSlots no_ads playerResponse.adPlacements playerResponse.adSlots playerResponse.no_ads [].playerResponse.adPlacements [].playerResponse.adSlots [].playerResponse.no_ads","","propsToMatch","/player?"],["playerAds adPlacements adSlots no_ads playerResponse.playerAds playerResponse.adPlacements playerResponse.adSlots playerResponse.no_ads","","propsToMatch","/playlist?"],["reelWatchSequenceResponse.entries.[-].command.reelWatchEndpoint.adClientParams.isAd entries.[-].command.reelWatchEndpoint.adClientParams.isAd","","propsToMatch","url:/reel_watch_sequence?"],["prerolls midrolls postrolls comm_ad house_ad pause_ad block_ad end_ad exit_ad pin_ad content_pool vertical_ad elements","","propsToMatch","/detail"],["data.item.[-].business_info.ad_desc","","propsToMatch","/feed/rcmd"],["adUrl","","propsToMatch",".azurewebsites.net"],["pageProps.__TEMPLATE_QUERY_DATA__.aotFooterWidgets","","propsToMatch","/_next/data"],["response.timeline.elements.[-].advertiserId","","propsToMatch","url:/api/v2/tabs/for_you"],["avails","","propsToMatch","amazonaws.com"],["imasdk","","propsToMatch","topaz."],["ssaiInfo fallback.ssaiInfo","","propsToMatch","/playbackInfo"],["response.ads","","propsToMatch","/api"],["plugins.adService"],["adBreaks.[].startingOffset adBreaks.[].adBreakDuration adBreaks.[].ads adBreaks.[].startTime adBreak adBreakLocations","","propsToMatch","/session.json"],["data.device.adsParams data.device.adSponsorshipTemplate","","propsToMatch","url:/appconfig"],["response.ads","","propsToMatch","/streams"],["
|
|
511
|
-
const hostnamesMap = new Map([["www.youtube.com",[0,1,2]],["m.youtube.com",2],["music.youtube.com",2],["tv.youtube.com",2],["youtubekids.com",2],["youtube-nocookie.com",2],["ofiii.com",3],["bilibili.com",4],["nos.nl",5],["
|
|
510
|
+
const argsList = [["adPlacements adSlots no_ads playerResponse.adPlacements playerResponse.adSlots playerResponse.no_ads [].playerResponse.adPlacements [].playerResponse.adSlots [].playerResponse.no_ads","","propsToMatch","/player?"],["playerAds adPlacements adSlots no_ads playerResponse.playerAds playerResponse.adPlacements playerResponse.adSlots playerResponse.no_ads","","propsToMatch","/playlist?"],["reelWatchSequenceResponse.entries.[-].command.reelWatchEndpoint.adClientParams.isAd entries.[-].command.reelWatchEndpoint.adClientParams.isAd","","propsToMatch","url:/reel_watch_sequence?"],["prerolls midrolls postrolls comm_ad house_ad pause_ad block_ad end_ad exit_ad pin_ad content_pool vertical_ad elements","","propsToMatch","/detail"],["data.item.[-].business_info.ad_desc","","propsToMatch","/feed/rcmd"],["adUrl","","propsToMatch",".azurewebsites.net"],["assets.preroll assets.prerollDebug","","propsToMatch","/stream-link"],["pageProps.__TEMPLATE_QUERY_DATA__.aotFooterWidgets","","propsToMatch","/_next/data"],["response.timeline.elements.[-].advertiserId","","propsToMatch","url:/api/v2/tabs/for_you"],["avails","","propsToMatch","amazonaws.com"],["imasdk","","propsToMatch","topaz."],["ssaiInfo fallback.ssaiInfo","","propsToMatch","/playbackInfo"],["response.ads","","propsToMatch","/api"],["plugins.adService"],["adBreaks.[].startingOffset adBreaks.[].adBreakDuration adBreaks.[].ads adBreaks.[].startTime adBreak adBreakLocations","","propsToMatch","/session.json"],["data.device.adsParams data.device.adSponsorshipTemplate","","propsToMatch","url:/appconfig"],["response.ads","","propsToMatch","/streams"],["adDetails","","propsToMatch","/secure?"],["data.search.products.[-].sponsored_ad.ad_source","","propsToMatch","url:/plp_search_v2?"],["session.sessionAds session.sessionAdsRequired","","propsToMatch","/session"],["itemList.[-].ad_info.ad_id","","propsToMatch","url:api/recommend/item_list/"],["adsConfiguration","","propsToMatch","/vod"],["layout.sections.mainContentCollection.components.[].data.productTiles.[-].sponsoredCreative.adGroupId","","propsToMatch","/search"],["data.[].affiliate_url","","propsToMatch","cdnpk.net/v2/images/search?"],["data.[-].inner.ctaCopy","","propsToMatch","?page="],["configs.*.properties.componentConfigs.slideshowConfigs.*.interstitialNativeAds","","propsToMatch","url:/config"],["*","list.[].link.kicker","propsToMatch","/content/v1/cms/api/amp/Document"],["properties.tiles.[-].isAd","","propsToMatch","/mestripewc/default/config"],["breaks custom_breaks_data pause_ads video_metadata.end_credits_time","pause_ads","propsToMatch","/playlist"],["breaks custom_breaks_data pause_ads video_metadata.end_credits_time","breaks","propsToMatch","/playlist"],["breaks custom_breaks_data pause_ads","","propsToMatch","/playlist"],["*","*.aurl","propsToMatch","/cs?id="],["imasdk","","propsToMatch","/topaz/api"]];
|
|
511
|
+
const hostnamesMap = new Map([["www.youtube.com",[0,1,2]],["m.youtube.com",2],["music.youtube.com",2],["tv.youtube.com",2],["youtubekids.com",2],["youtube-nocookie.com",2],["ofiii.com",3],["bilibili.com",4],["nos.nl",5],["bnnvara.nl",6],["npodoc.nl",6],["vpro.nl",6],["npo.nl",6],["asiaon.*",7],["asiaontop.com",7],["tumblr.com",8],["nbc.com",9],["southpark.*",10],["southpark.cc.com",10],["southparkstudios.*",10],["cnn.com",11],["player.pop.co.uk",12],["player.popfun.co.uk",12],["pop-player.com",12],["iprima.cz",13],["pluto.tv",14],["crackle.com",15],["play.virginmediatelevision.ie",16],["zee5.com",17],["target.com",18],["play.geforcenow.com",19],["www.tiktok.com",20],["watch.shout-tv.com",21],["realcanadiansuperstore.ca",22],["flaticon.com",23],["fomo.id",24],["www.msn.com",[25,26,27]],["hulu.com",[28,29,30]],["mega.nz",31],["www.cc.com",32]]);
|
|
512
512
|
const exceptionsMap = new Map([]);
|
|
513
513
|
const hasEntities = true;
|
|
514
514
|
const hasAncestors = false;
|
package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-xhr-response.js
CHANGED
|
@@ -516,9 +516,9 @@ function getRandomTokenFn() {
|
|
|
516
516
|
/******************************************************************************/
|
|
517
517
|
|
|
518
518
|
const scriptletGlobals = {}; // eslint-disable-line
|
|
519
|
-
const argsList = [["playerAds adPlacements adSlots no_ads playerResponse.playerAds playerResponse.adPlacements playerResponse.adSlots playerResponse.no_ads [].playerResponse.adPlacements [].playerResponse.playerAds [].playerResponse.adSlots [].playerResponse.no_ads","","propsToMatch","/\\/player(?:\\?.+)?$/"],["data.viewer.sideFeedUnit.nodes.[].new_adverts.nodes.[-].sponsored_data","","propsToMatch","/graphql"],["stream.insertion","","propsToMatch","/video/auth/media"],["data.viewer.instream_video_ads data.scrubber","","propsToMatch","/api/graphql"],["ssaiInfo fallback.ssaiInfo","","propsToMatch","/playbackInfo"],["data.home.home_timeline_urt.instructions.[].entries.[-].content.itemContent.promotedMetadata","","propsToMatch","url:/Home"],["data.search_by_raw_query.search_timeline.timeline.instructions.[].entries.[-].content.itemContent.promotedMetadata","","propsToMatch","url:/SearchTimeline"],["data.threaded_conversation_with_injections_v2.instructions.[].entries.[-].content.items.[].item.itemContent.promotedMetadata","","propsToMatch","url:/TweetDetail"],["data.user.result.timeline_v2.timeline.instructions.[].entries.[-].content.itemContent.promotedMetadata","","propsToMatch","url:/UserTweets"],["data.immersiveMedia.timeline.instructions.[].entries.[-].content.itemContent.promotedMetadata","","propsToMatch","url:/ImmersiveMedia"],["imasdk","","propsToMatch","/topaz/api"]];
|
|
520
|
-
const hostnamesMap = new Map([["www.youtube.com",0],["web.facebook.com",[1,3]],["www.facebook.com",[1,3]],["espn.com",2],["
|
|
521
|
-
const exceptionsMap = new Map([["platform.twitter.com",[
|
|
519
|
+
const argsList = [["playerAds adPlacements adSlots no_ads playerResponse.playerAds playerResponse.adPlacements playerResponse.adSlots playerResponse.no_ads [].playerResponse.adPlacements [].playerResponse.playerAds [].playerResponse.adSlots [].playerResponse.no_ads","","propsToMatch","/\\/player(?:\\?.+)?$/"],["data.viewer.sideFeedUnit.nodes.[].new_adverts.nodes.[-].sponsored_data","","propsToMatch","/graphql"],["stream.insertion","","propsToMatch","/video/auth/media"],["data.viewer.instream_video_ads data.scrubber","","propsToMatch","/api/graphql"],["data.value data.redirectUrl data.bannerUrl","","propsToMatch","/admin/settings"],["ssaiInfo fallback.ssaiInfo","","propsToMatch","/playbackInfo"],["data.home.home_timeline_urt.instructions.[].entries.[-].content.itemContent.promotedMetadata","","propsToMatch","url:/Home"],["data.search_by_raw_query.search_timeline.timeline.instructions.[].entries.[-].content.itemContent.promotedMetadata","","propsToMatch","url:/SearchTimeline"],["data.threaded_conversation_with_injections_v2.instructions.[].entries.[-].content.items.[].item.itemContent.promotedMetadata","","propsToMatch","url:/TweetDetail"],["data.user.result.timeline_v2.timeline.instructions.[].entries.[-].content.itemContent.promotedMetadata","","propsToMatch","url:/UserTweets"],["data.immersiveMedia.timeline.instructions.[].entries.[-].content.itemContent.promotedMetadata","","propsToMatch","url:/ImmersiveMedia"],["imasdk","","propsToMatch","/topaz/api"]];
|
|
520
|
+
const hostnamesMap = new Map([["www.youtube.com",0],["web.facebook.com",[1,3]],["www.facebook.com",[1,3]],["espn.com",2],["rushuploads.com",4],["cnn.com",5],["twitter.com",[6,7,8,9,10]],["x.com",[6,7,8,9,10]],["www.cc.com",11]]);
|
|
521
|
+
const exceptionsMap = new Map([["platform.twitter.com",[6,7,8,9,10]]]);
|
|
522
522
|
const hasEntities = false;
|
|
523
523
|
const hasAncestors = false;
|
|
524
524
|
|
|
@@ -425,8 +425,8 @@ function getRandomTokenFn() {
|
|
|
425
425
|
/******************************************************************************/
|
|
426
426
|
|
|
427
427
|
const scriptletGlobals = {}; // eslint-disable-line
|
|
428
|
-
const argsList = [["entries.[-].command.reelWatchEndpoint.adClientParams.isAd"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.viewer.sideFeedUnit.nodes.[].new_adverts.nodes.[-].sponsored_data"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.serpResponse.results.edges.[-].rendering_strategy.view_model.story.sponsored_data.ad_id"],["config.globalInteractions.[].bsData"],["playerResponse.adPlacements playerResponse.playerAds playerResponse.adSlots adPlacements playerAds adSlots important"],["enabled","force_disabled"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.serpResponse.results.edges.[-].relay_rendering_strategy.view_model.story.sponsored_data.ad_id"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node","require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node.story.sponsored_data.ad_id"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.marketplace_search.feed_units.edges.[-].node.story.sponsored_data.ad_id"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.viewer.marketplace_feed_stories.edges.[-].node.story.sponsored_data.ad_id"],["*","*.adserverDomain"],["urls","urls.0"],["value.media.ad_breaks"],["data.[].vast_url"],["adReinsertion"],["enabled","testhide"],["AffiliateAdBlock"],["ad_pods.0.ads.0.segments.0.media ad_pods.1.ads.1.segments.1.media ad_pods.2.ads.2.segments.2.media ad_pods.3.ads.3.segments.3.media ad_pods.4.ads.4.segments.4.media ad_pods.5.ads.5.segments.5.media ad_pods.6.ads.6.segments.6.media ad_pods.7.ads.7.segments.7.media ad_pods.8.ads.8.segments.8.media"],["web_share_ads_adsterra_config wap_short_link_middle_page_ad wap_short_link_middle_page_show_time data.ads_cpm_info"],["data.meta.require_addon data.meta.require_captcha data.meta.require_notifications data.meta.require_og_ads data.meta.require_video data.meta.require_web data.meta.require_related_topics data.meta.require_custom_ad_step data.meta.og_ads_offers data.meta.addon_url data.displayAds data.linkCustomAdOffers"],["data.getDetailPageContent.linkCustomAdOffers.[-].title"],["data.getTaboolaAds.*"],["RT-1562-AdShield-script-on-Huffpost"],["data.[].relationships.advert data.[].relationships.vast"],["ads.servers.[].apiAddress"],["breaks interstitials info","interstitials"],["ad_slots"],["plugins.dfp"],["clickAnywhere urls"],["meta.advertise"],["data.attributes.config.freewheel data.attributes.config.featureFlags.dPlayer"],["data.attributes.ssaiInfo.forecastTimeline data.attributes.ssaiInfo.vendorAttributes.nonLinearAds data.attributes.ssaiInfo.vendorAttributes.videoView data.attributes.ssaiInfo.vendorAttributes.breaks.[].ads.[].adMetadata data.attributes.ssaiInfo.vendorAttributes.breaks.[].ads.[].adParameters data.attributes.ssaiInfo.vendorAttributes.breaks.[].timeOffset"],["ssaiInfo"],["movie.advertising.ad_server playlist.movie.advertising.ad_server"],["MediaContainer.Metadata.[].Ad"],["cuepoints","cuepoints.[].start cuepoints.[].end cuepoints.[].start_float cuepoints.[].end_float"],["props.pageProps.data.aotHomepageTopBar props.pageProps.data.aotHomepageTopBar props.pageProps.data.aotHeaderAdScripts props.pageProps.data.aotFooterWidgets"],["testadtags ad"],["resource_response.data.[-].pin_promotion_id resource_response.data.results.[-].pin_promotion_id"],["initialReduxState.pins.{-}.pin_promotion_id initialReduxState.resources.UserHomefeedResource.*.data.[-].pin_promotion_id"],["ads"],["[].data.searchResults.listings.[-].targetingSegments"],["data.xdt_injected_story_units.ad_media_items"],["ssaiInfo fallback.ssaiInfo"],["adtech-brightline adtech-google-pal adtech-iab-om"],["result.ads"],["items.[-].potentialActions.0.object.impressionToken items.[-].hasPart.0.potentialActions.0.object.impressionToken"],["context.adsIncluded"],["stream.insertion.adSession stream.insertion.points stream.insertion stream.sources.*.insertion pods.0.ads"],["ads.metadata ads.document ads.dxc ads.live ads.vod"],["*.tanya_video_ads"],["success.page.spaces.player.widget_wrappers.[].widget.data.intervention_data"],["avails"],["data.reg"],["playerResponse.adPlacements playerResponse.playerAds adPlacements playerAds"],["response.ads"],["adease adeaseBlob vmap","adease"],["plugins.adService"],["session.showAds"],["adverts.breaks"],["result.responses.[].response.result.cards.[-].data.offers"],["*","all"],["adtagparameter","enabled"],["ssai_manifest ad_manifest playback_info.ad_info qvt.playback_info.ad_info"],["PlaybackDetails.[].DaiVod"],["data.searchClassifiedFeed.searchResultView.0.searchResultItemsV2.edges.[-].node.item.content.creative.clickThroughEvent.adsTrackingMetadata.metadata.adRequestId"],["data.me.personalizedFeed.feedItems.[-].promo.creative.clickThroughUrl.adsTrackingMetadata.metadata.adRequestId"],["data.me.rhrFeed.feedItems.[-].promo.creative.clickThroughUrl.adsTrackingMetadata.metadata.sponsor"],["[].data.displayAdsV3.data.[-].__typename"],["[].data.TopAdsProducts.data.[-].__typename"],["[].data.topads.data.[-].__typename"],["placements.processingFile"],["sorts.[-].recommendationList.[].contentMetadata.EncryptedAdTrackingData"],["ads.[-].ad_id"],["gifs.[-].cta.link"],["playlist.movie.advertising.ad_server"],["result.adverts"],["data.pinotPausedPlaybackPage"],["ads breaks cuepoints times"],["breaks custom_breaks_data pause_ads"],["breaks custom_breaks_data pause_ads video_metadata.end_credits_time","pause_ads"],["breaks custom_breaks_data pause_ads video_metadata.end_credits_time","breaks"],["cuepointPlaylist vodPlaybackUrls.result.playbackUrls.cuepoints vodPlaylistedPlaybackUrls.result.playbackUrls.pauseBehavior vodPlaylistedPlaybackUrls.result.playbackUrls.pauseAdsResolution vodPlaylistedPlaybackUrls.result.playbackUrls.intraTitlePlaylist.[-].shouldShowOnScrubBar"],["show_adverts"],["bannerad sidebar ti_sidebar"],["data.getFinalClickoutUrl data.sendSraBid"],["data","data.availableProductCount"],["results.[-].advertisement"],["data.*.elements.edges.[].node.outboundLink"],["data.children.[].data.outbound_link"],["require.0.3.0.__bbox.define.[].2.is_linkshim_supported"],["dataLayer.trackingId user.trackingId"]];
|
|
429
|
-
const hostnamesMap = new Map([["youtube.com",0],["m.youtube.com",[0,4]],["music.youtube.com",[0,4]],["tv.youtube.com",0],["www.youtube.com",0],["youtubekids.com",[0,4]],["youtube-nocookie.com",[0,4]],["web.facebook.com",[1,2,6,7,8,9]],["www.facebook.com",[1,2,6,7,8,9]],["stories.los40.com",3],["chip.de",5],["focus.de",5],["kicker.de",5],["vipbox.*",10],["vipboxtv.*",10],["viprow.*",10],["shazysport.pro",10],["streamhd247.info",10],["volokit2.com",10],["voodc.com",10],["elixx.*",11],["crunchyroll.com",12],["vvvvid.it",13],["plus.rtl.de",14],["tv2.no",15],["5flix.top",16],["listeamed.net",16],["yesmovies.*>>",16],["pistona.xyz",16],["vinomo.xyz",16],["art19.com",17],["fansonlinehub.com",18],["hotmediahub.com",18],["terabox.fun",18],["teralink.me",18],["terashare.me",18],["teraearn.com",18],["linkvertise.com",[19,20,21]],["huffpost.com",22],["myvideo.ge",23],["domoplus.pl",24],["kuchniaplus.pl",24],["miniminiplus.pl",24],["teletoonplus.pl",24],["vix.com",[25,26,27]],["shorttey.*",28],["vlive.tv",29],["discoveryplus.*",[30,31]],["go.discovery.com",31],["investigationdiscovery.com",31],["watch.foodnetwork.com",31],["play.discoveryplus.com",32],["tvn.pl",33],["app.plex.tv",34],["10.com.au",35],["10play.com.au",35],["asiaon.*",36],["asiaontop.com",36],["player.stv.tv",37],["pinterest.*",[38,39]],["fox.com",40],["foxsports.com",40],["serially.it",40],["autotrader.co.uk",41],["instagram.com",42],["play.hbomax.com",[43,44]],["play.max.com",[43,44]],["sportstiger.com",45],["swisscows.com",[46,47]],["disneyplus.com",[48,49]],["colearn.id",50],["hotstar.com",51],["nbc.com",52],["play.virginmediatelevision.ie",52],["play.history.com",53],["eu-proxy.startpage.com",54],["player.pop.co.uk",55],["player.popfun.co.uk",55],["foxtel.com.au",56],["iprima.cz",57],["speedrun.com",58],["channel4.com",59],["mail.yahoo.com",60],["hentaihaven.xxx",61],["winfuture.de",62],["watch.sling.com",63],["dazn.com",64],["nextdoor.com",[65,66,67]],["tokopedia.com",[68,69,70]],["upscaler.stockphotos.com",71],["roblox.com",72],["sainsburys.co.uk",73],["redgifs.com",74],["tvn24.pl",75],["netflix.com",[76,77]],["sbs.com.au",78],["hulu.com",[79,80,81]],["www.amazon.co.jp",82],["www.amazon.co.uk",82],["www.amazon.com",82],["www.amazon.de",82],["www.primevideo.com",82],["bitchute.com",83],["criticker.com",
|
|
428
|
+
const argsList = [["entries.[-].command.reelWatchEndpoint.adClientParams.isAd"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.viewer.sideFeedUnit.nodes.[].new_adverts.nodes.[-].sponsored_data"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.serpResponse.results.edges.[-].rendering_strategy.view_model.story.sponsored_data.ad_id"],["config.globalInteractions.[].bsData"],["playerResponse.adPlacements playerResponse.playerAds playerResponse.adSlots adPlacements playerAds adSlots important"],["enabled","force_disabled"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.serpResponse.results.edges.[-].relay_rendering_strategy.view_model.story.sponsored_data.ad_id"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node","require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node.story.sponsored_data.ad_id"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.marketplace_search.feed_units.edges.[-].node.story.sponsored_data.ad_id"],["require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.viewer.marketplace_feed_stories.edges.[-].node.story.sponsored_data.ad_id"],["*","*.adserverDomain"],["urls","urls.0"],["value.media.ad_breaks"],["data.[].vast_url"],["adReinsertion"],["enabled","testhide"],["AffiliateAdBlock"],["ad_pods.0.ads.0.segments.0.media ad_pods.1.ads.1.segments.1.media ad_pods.2.ads.2.segments.2.media ad_pods.3.ads.3.segments.3.media ad_pods.4.ads.4.segments.4.media ad_pods.5.ads.5.segments.5.media ad_pods.6.ads.6.segments.6.media ad_pods.7.ads.7.segments.7.media ad_pods.8.ads.8.segments.8.media"],["web_share_ads_adsterra_config wap_short_link_middle_page_ad wap_short_link_middle_page_show_time data.ads_cpm_info"],["data.meta.require_addon data.meta.require_captcha data.meta.require_notifications data.meta.require_og_ads data.meta.require_video data.meta.require_web data.meta.require_related_topics data.meta.require_custom_ad_step data.meta.og_ads_offers data.meta.addon_url data.displayAds data.linkCustomAdOffers"],["data.getDetailPageContent.linkCustomAdOffers.[-].title"],["data.getTaboolaAds.*"],["RT-1562-AdShield-script-on-Huffpost"],["data.[].relationships.advert data.[].relationships.vast"],["ads.servers.[].apiAddress"],["breaks interstitials info","interstitials"],["ad_slots"],["plugins.dfp"],["clickAnywhere urls"],["meta.advertise"],["data.attributes.config.freewheel data.attributes.config.featureFlags.dPlayer"],["data.attributes.ssaiInfo.forecastTimeline data.attributes.ssaiInfo.vendorAttributes.nonLinearAds data.attributes.ssaiInfo.vendorAttributes.videoView data.attributes.ssaiInfo.vendorAttributes.breaks.[].ads.[].adMetadata data.attributes.ssaiInfo.vendorAttributes.breaks.[].ads.[].adParameters data.attributes.ssaiInfo.vendorAttributes.breaks.[].timeOffset"],["ssaiInfo"],["movie.advertising.ad_server playlist.movie.advertising.ad_server"],["MediaContainer.Metadata.[].Ad"],["cuepoints","cuepoints.[].start cuepoints.[].end cuepoints.[].start_float cuepoints.[].end_float"],["props.pageProps.data.aotHomepageTopBar props.pageProps.data.aotHomepageTopBar props.pageProps.data.aotHeaderAdScripts props.pageProps.data.aotFooterWidgets"],["testadtags ad"],["resource_response.data.[-].pin_promotion_id resource_response.data.results.[-].pin_promotion_id"],["initialReduxState.pins.{-}.pin_promotion_id initialReduxState.resources.UserHomefeedResource.*.data.[-].pin_promotion_id"],["ads"],["[].data.searchResults.listings.[-].targetingSegments"],["data.xdt_injected_story_units.ad_media_items"],["ssaiInfo fallback.ssaiInfo"],["adtech-brightline adtech-google-pal adtech-iab-om"],["result.ads"],["items.[-].potentialActions.0.object.impressionToken items.[-].hasPart.0.potentialActions.0.object.impressionToken"],["context.adsIncluded"],["stream.insertion.adSession stream.insertion.points stream.insertion stream.sources.*.insertion pods.0.ads"],["ads.metadata ads.document ads.dxc ads.live ads.vod"],["*.tanya_video_ads"],["success.page.spaces.player.widget_wrappers.[].widget.data.intervention_data"],["avails"],["data.reg"],["playerResponse.adPlacements playerResponse.playerAds adPlacements playerAds"],["response.ads"],["adease adeaseBlob vmap","adease"],["plugins.adService"],["session.showAds"],["adverts.breaks"],["result.responses.[].response.result.cards.[-].data.offers"],["*","all"],["adtagparameter","enabled"],["ssai_manifest ad_manifest playback_info.ad_info qvt.playback_info.ad_info"],["PlaybackDetails.[].DaiVod"],["data.searchClassifiedFeed.searchResultView.0.searchResultItemsV2.edges.[-].node.item.content.creative.clickThroughEvent.adsTrackingMetadata.metadata.adRequestId"],["data.me.personalizedFeed.feedItems.[-].promo.creative.clickThroughUrl.adsTrackingMetadata.metadata.adRequestId"],["data.me.rhrFeed.feedItems.[-].promo.creative.clickThroughUrl.adsTrackingMetadata.metadata.sponsor"],["[].data.displayAdsV3.data.[-].__typename"],["[].data.TopAdsProducts.data.[-].__typename"],["[].data.topads.data.[-].__typename"],["placements.processingFile"],["sorts.[-].recommendationList.[].contentMetadata.EncryptedAdTrackingData"],["ads.[-].ad_id"],["gifs.[-].cta.link"],["playlist.movie.advertising.ad_server"],["result.adverts"],["data.pinotPausedPlaybackPage"],["ads breaks cuepoints times"],["breaks custom_breaks_data pause_ads"],["breaks custom_breaks_data pause_ads video_metadata.end_credits_time","pause_ads"],["breaks custom_breaks_data pause_ads video_metadata.end_credits_time","breaks"],["cuepointPlaylist vodPlaybackUrls.result.playbackUrls.cuepoints vodPlaylistedPlaybackUrls.result.playbackUrls.pauseBehavior vodPlaylistedPlaybackUrls.result.playbackUrls.pauseAdsResolution vodPlaylistedPlaybackUrls.result.playbackUrls.intraTitlePlaylist.[-].shouldShowOnScrubBar"],["show_adverts"],["[].props.slides.[-].adIndex"],["bannerad sidebar ti_sidebar"],["data.getFinalClickoutUrl data.sendSraBid"],["data","data.availableProductCount"],["results.[-].advertisement"],["data.*.elements.edges.[].node.outboundLink"],["data.children.[].data.outbound_link"],["require.0.3.0.__bbox.define.[].2.is_linkshim_supported"],["dataLayer.trackingId user.trackingId"]];
|
|
429
|
+
const hostnamesMap = new Map([["youtube.com",0],["m.youtube.com",[0,4]],["music.youtube.com",[0,4]],["tv.youtube.com",0],["www.youtube.com",0],["youtubekids.com",[0,4]],["youtube-nocookie.com",[0,4]],["web.facebook.com",[1,2,6,7,8,9]],["www.facebook.com",[1,2,6,7,8,9]],["stories.los40.com",3],["chip.de",5],["focus.de",5],["kicker.de",5],["vipbox.*",10],["vipboxtv.*",10],["viprow.*",10],["shazysport.pro",10],["streamhd247.info",10],["volokit2.com",10],["voodc.com",10],["elixx.*",11],["crunchyroll.com",12],["vvvvid.it",13],["plus.rtl.de",14],["tv2.no",15],["5flix.top",16],["listeamed.net",16],["yesmovies.*>>",16],["pistona.xyz",16],["vinomo.xyz",16],["art19.com",17],["fansonlinehub.com",18],["hotmediahub.com",18],["terabox.fun",18],["teralink.me",18],["terashare.me",18],["teraearn.com",18],["linkvertise.com",[19,20,21]],["huffpost.com",22],["myvideo.ge",23],["domoplus.pl",24],["kuchniaplus.pl",24],["miniminiplus.pl",24],["teletoonplus.pl",24],["vix.com",[25,26,27]],["shorttey.*",28],["vlive.tv",29],["discoveryplus.*",[30,31]],["go.discovery.com",31],["investigationdiscovery.com",31],["watch.foodnetwork.com",31],["play.discoveryplus.com",32],["tvn.pl",33],["app.plex.tv",34],["10.com.au",35],["10play.com.au",35],["asiaon.*",36],["asiaontop.com",36],["player.stv.tv",37],["pinterest.*",[38,39]],["fox.com",40],["foxsports.com",40],["serially.it",40],["autotrader.co.uk",41],["instagram.com",42],["play.hbomax.com",[43,44]],["play.max.com",[43,44]],["sportstiger.com",45],["swisscows.com",[46,47]],["disneyplus.com",[48,49]],["colearn.id",50],["hotstar.com",51],["nbc.com",52],["play.virginmediatelevision.ie",52],["play.history.com",53],["eu-proxy.startpage.com",54],["player.pop.co.uk",55],["player.popfun.co.uk",55],["pop-player.com",55],["foxtel.com.au",56],["iprima.cz",57],["speedrun.com",58],["channel4.com",59],["mail.yahoo.com",60],["hentaihaven.xxx",61],["winfuture.de",62],["watch.sling.com",63],["dazn.com",64],["nextdoor.com",[65,66,67]],["tokopedia.com",[68,69,70]],["upscaler.stockphotos.com",71],["roblox.com",72],["sainsburys.co.uk",73],["redgifs.com",74],["tvn24.pl",75],["netflix.com",[76,77]],["sbs.com.au",78],["hulu.com",[79,80,81]],["www.amazon.co.jp",82],["www.amazon.co.uk",82],["www.amazon.com",82],["www.amazon.de",82],["www.primevideo.com",82],["bitchute.com",83],["mirror.co.uk",84],["criticker.com",85],["justwatch.com",86],["spaziogames.it",87],["forge.plebmasters.de",88],["www.reddit.com",[89,90]],["threads.com",91],["threads.net",91],["nypost.com",92],["pagesix.com",92]]);
|
|
430
430
|
const exceptionsMap = new Map([["vvid30c.*",[16]]]);
|
|
431
431
|
const hasEntities = true;
|
|
432
432
|
const hasAncestors = true;
|
package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.jsonl-edit-xhr-response.js
CHANGED
|
@@ -396,7 +396,7 @@ class JSONPath {
|
|
|
396
396
|
continue;
|
|
397
397
|
}
|
|
398
398
|
if ( c0 === 0x27 /* ' */ ) {
|
|
399
|
-
const r = this.#
|
|
399
|
+
const r = this.#untilChar(query, 0x27 /* ' */, i+1)
|
|
400
400
|
if ( r === undefined ) { return; }
|
|
401
401
|
keys.push(r.s);
|
|
402
402
|
i = r.i;
|
|
@@ -417,22 +417,27 @@ class JSONPath {
|
|
|
417
417
|
}
|
|
418
418
|
return { s: keys.length === 1 ? keys[0] : keys, i };
|
|
419
419
|
}
|
|
420
|
-
#
|
|
420
|
+
#consumeUnquotedIdentifier(query, i) {
|
|
421
|
+
const match = this.#reUnquotedIdentifier.exec(query.slice(i));
|
|
422
|
+
if ( match === null ) { return; }
|
|
423
|
+
return match[0];
|
|
424
|
+
}
|
|
425
|
+
#untilChar(query, targetCharCode, i) {
|
|
421
426
|
const len = query.length;
|
|
422
427
|
const parts = [];
|
|
423
428
|
let beg = i, end = i;
|
|
424
429
|
for (;;) {
|
|
425
430
|
if ( end === len ) { return; }
|
|
426
431
|
const c = query.charCodeAt(end);
|
|
427
|
-
if ( c ===
|
|
432
|
+
if ( c === targetCharCode ) {
|
|
428
433
|
parts.push(query.slice(beg, end));
|
|
429
434
|
end += 1;
|
|
430
435
|
break;
|
|
431
436
|
}
|
|
432
437
|
if ( c === 0x5C /* \ */ && (end+1) < len ) {
|
|
433
438
|
parts.push(query.slice(beg, end));
|
|
434
|
-
const d = query.
|
|
435
|
-
if ( d ===
|
|
439
|
+
const d = query.charCodeAt(end+1);
|
|
440
|
+
if ( d === targetCharCode || d === 0x5C ) {
|
|
436
441
|
end += 1;
|
|
437
442
|
beg = end;
|
|
438
443
|
}
|
|
@@ -441,12 +446,20 @@ class JSONPath {
|
|
|
441
446
|
}
|
|
442
447
|
return { s: parts.join(''), i: end };
|
|
443
448
|
}
|
|
444
|
-
#consumeUnquotedIdentifier(query, i) {
|
|
445
|
-
const match = this.#reUnquotedIdentifier.exec(query.slice(i));
|
|
446
|
-
if ( match === null ) { return; }
|
|
447
|
-
return match[0];
|
|
448
|
-
}
|
|
449
449
|
#compileExpr(query, step, i) {
|
|
450
|
+
if ( query.startsWith('=/', i) ) {
|
|
451
|
+
const r = this.#untilChar(query, 0x2F /* / */, i+2);
|
|
452
|
+
if ( r === undefined ) { return i; }
|
|
453
|
+
const match = /^[i]/.exec(query.slice(r.i));
|
|
454
|
+
try {
|
|
455
|
+
step.rval = new RegExp(r.s, match && match[0] || undefined);
|
|
456
|
+
} catch {
|
|
457
|
+
return i;
|
|
458
|
+
}
|
|
459
|
+
step.op = 're';
|
|
460
|
+
if ( match ) { r.i += match[0].length; }
|
|
461
|
+
return r.i;
|
|
462
|
+
}
|
|
450
463
|
const match = this.#reExpr.exec(query.slice(i));
|
|
451
464
|
if ( match === null ) { return i; }
|
|
452
465
|
try {
|
|
@@ -486,6 +499,7 @@ class JSONPath {
|
|
|
486
499
|
case '^=': outcome = `${v}`.startsWith(step.rval) === target; break;
|
|
487
500
|
case '$=': outcome = `${v}`.endsWith(step.rval) === target; break;
|
|
488
501
|
case '*=': outcome = `${v}`.includes(step.rval) === target; break;
|
|
502
|
+
case 're': outcome = step.rval.test(`${v}`); break;
|
|
489
503
|
default: outcome = hasOwn === target; break;
|
|
490
504
|
}
|
|
491
505
|
if ( outcome ) { return k; }
|