@browserless.io/browserless 2.33.0 → 2.34.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 +13 -1
- package/README.md +1 -1
- package/build/config.d.ts +1 -1
- package/build/config.js +1 -1
- package/build/http.d.ts +10 -0
- package/build/http.js +5 -0
- package/build/limiter.spec.js +1 -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/chrome/tests/content.spec.js +12 -12
- package/build/routes/chrome/tests/page-websocket.spec.js +3 -3
- package/build/routes/chrome/tests/pdf.spec.js +13 -13
- package/build/routes/chrome/tests/performance.spec.js +4 -4
- package/build/routes/chrome/tests/scrape.spec.js +13 -13
- package/build/routes/chrome/tests/screenshot.spec.js +14 -14
- 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/chromium/tests/content.spec.js +13 -13
- package/build/routes/chromium/tests/page-websocket.spec.js +3 -3
- package/build/routes/chromium/tests/pdf.spec.js +13 -13
- package/build/routes/chromium/tests/performance.spec.js +4 -4
- package/build/routes/chromium/tests/scrape.spec.js +13 -13
- package/build/routes/chromium/tests/screenshot.spec.js +14 -14
- 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/routes/edge/tests/content.spec.js +12 -12
- package/build/routes/edge/tests/page-websocket.spec.js +3 -3
- package/build/routes/edge/tests/pdf.spec.js +13 -13
- package/build/routes/edge/tests/performance.spec.js +4 -4
- package/build/routes/edge/tests/scrape.spec.js +13 -13
- package/build/routes/edge/tests/screenshot.spec.js +14 -14
- package/build/routes/management/http/kill.get.d.ts +1 -1
- package/build/routes/management/http/kill.get.query.json +0 -3
- package/build/routes/management/http/pressure.get.d.ts +1 -1
- package/build/routes/management/http/pressure.get.js +12 -4
- package/build/routes/management/http/sessions.get.d.ts +1 -1
- package/build/routes/management/http/sessions.get.query.json +0 -3
- package/build/routes/management/tests/management.spec.js +13 -13
- package/build/server.js +12 -4
- 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/shim.d.ts +5 -0
- package/build/shim.js +13 -0
- package/build/shim.spec.js +28 -1
- package/build/types.d.ts +21 -1
- package/build/types.js +14 -0
- package/build/utils.d.ts +1 -0
- package/build/utils.js +4 -3
- package/extensions/ublocklite/_locales/ar/messages.json +8 -8
- package/extensions/ublocklite/_locales/be/messages.json +8 -8
- package/extensions/ublocklite/_locales/fi/messages.json +18 -18
- package/extensions/ublocklite/_locales/hi/messages.json +21 -21
- package/extensions/ublocklite/_locales/hu/messages.json +8 -8
- package/extensions/ublocklite/_locales/id/messages.json +15 -15
- package/extensions/ublocklite/_locales/ja/messages.json +23 -23
- package/extensions/ublocklite/_locales/nl/messages.json +1 -1
- package/extensions/ublocklite/_locales/pt_BR/messages.json +15 -15
- package/extensions/ublocklite/_locales/pt_PT/messages.json +18 -18
- package/extensions/ublocklite/_locales/ru/messages.json +1 -1
- package/extensions/ublocklite/_locales/th/messages.json +30 -30
- package/extensions/ublocklite/_locales/tr/messages.json +1 -1
- package/extensions/ublocklite/_locales/uk/messages.json +10 -10
- package/extensions/ublocklite/_locales/vi/messages.json +8 -8
- package/extensions/ublocklite/css/dashboard.css +9 -4
- package/extensions/ublocklite/css/picker-ui.css +1 -1
- package/extensions/ublocklite/css/report.css +0 -8
- package/extensions/ublocklite/css/settings.css +17 -13
- package/extensions/ublocklite/dashboard.html +16 -12
- package/extensions/ublocklite/js/background.js +75 -19
- package/extensions/ublocklite/js/config.js +2 -1
- package/extensions/ublocklite/js/dashboard.js +9 -5
- package/extensions/ublocklite/js/debug.js +69 -6
- package/extensions/ublocklite/js/develop.js +1 -1
- package/extensions/ublocklite/js/ext-compat.js +9 -2
- package/extensions/ublocklite/js/ext.js +6 -0
- package/extensions/ublocklite/js/fetch.js +3 -1
- package/extensions/ublocklite/js/filter-lists.js +17 -9
- package/extensions/ublocklite/js/filter-manager.js +80 -28
- package/extensions/ublocklite/js/jsonpath.js +65 -26
- package/extensions/ublocklite/js/mode-manager.js +5 -1
- package/extensions/ublocklite/js/picker-ui.js +32 -41
- package/extensions/ublocklite/js/popup.js +11 -11
- package/extensions/ublocklite/js/redirect-resources.js +1 -0
- package/extensions/ublocklite/js/report.js +4 -2
- package/extensions/ublocklite/js/ro-dnr-editor.js +6 -1
- 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-api.js +821 -0
- package/extensions/ublocklite/js/scripting/css-procedural.js +62 -718
- package/extensions/ublocklite/{rulesets/scripting/declarative/ubol-tests.js → js/scripting/css-user-terminate.js} +16 -13
- package/extensions/ublocklite/js/scripting/css-user.js +12 -1
- package/extensions/ublocklite/js/scripting/picker.js +46 -13
- package/extensions/ublocklite/js/scripting/tool-overlay.js +14 -8
- package/extensions/ublocklite/js/scripting/unpicker.js +5 -9
- package/extensions/ublocklite/js/scripting/zapper.js +1 -1
- package/extensions/ublocklite/js/scripting-manager.js +4 -75
- package/extensions/ublocklite/js/settings.js +3 -5
- package/extensions/ublocklite/js/static-filtering-parser.js +3 -3
- package/extensions/ublocklite/js/tool-overlay-ui.js +20 -24
- package/extensions/ublocklite/js/troubleshooting.js +11 -19
- package/extensions/ublocklite/js/ubo-parser.js +1 -1
- package/extensions/ublocklite/js/unpicker-ui.js +16 -9
- package/extensions/ublocklite/js/zapper-ui.js +3 -2
- package/extensions/ublocklite/manifest.json +12 -2
- package/extensions/ublocklite/picker-ui.html +1 -1
- package/extensions/ublocklite/report.html +0 -1
- package/extensions/ublocklite/rulesets/generic-details.json +28 -16
- package/extensions/ublocklite/rulesets/main/adguard-mobile.json +5 -2
- package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +27 -15
- package/extensions/ublocklite/rulesets/main/annoyances-notifications.json +276 -0
- package/extensions/ublocklite/rulesets/main/annoyances-others.json +4 -3
- package/extensions/ublocklite/rulesets/main/annoyances-overlays.json +4 -4
- package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +3 -2
- package/extensions/ublocklite/rulesets/main/bgr-0.json +54 -68
- package/extensions/ublocklite/rulesets/main/block-lan.json +3 -2
- package/extensions/ublocklite/rulesets/main/chn-0.json +28 -21
- package/extensions/ublocklite/rulesets/main/deu-0.json +7 -6
- package/extensions/ublocklite/rulesets/main/dpollock-0.json +8 -41
- package/extensions/ublocklite/rulesets/main/easylist.json +68 -42
- package/extensions/ublocklite/rulesets/main/easyprivacy.json +89 -12
- package/extensions/ublocklite/rulesets/main/fra-0.json +19 -19
- package/extensions/ublocklite/rulesets/main/hrv-0.json +5 -5
- package/extensions/ublocklite/rulesets/main/hun-0.json +5 -3
- package/extensions/ublocklite/rulesets/main/idn-0.json +13 -2
- package/extensions/ublocklite/rulesets/main/ind-0.json +34 -26
- package/extensions/ublocklite/rulesets/main/irn-0.json +676 -635
- package/extensions/ublocklite/rulesets/main/isr-0.json +1 -0
- package/extensions/ublocklite/rulesets/main/jpn-1.json +55 -31
- package/extensions/ublocklite/rulesets/main/kor-1.json +9 -4
- package/extensions/ublocklite/rulesets/main/mkd-0.json +1 -1
- package/extensions/ublocklite/rulesets/main/nld-0.json +2 -1
- package/extensions/ublocklite/rulesets/main/nor-0.json +35 -13
- package/extensions/ublocklite/rulesets/main/pgl.json +36 -15
- package/extensions/ublocklite/rulesets/main/pol-0.json +3 -2
- package/extensions/ublocklite/rulesets/main/rus-0.json +37 -37
- package/extensions/ublocklite/rulesets/main/rus-1.json +7 -3
- package/extensions/ublocklite/rulesets/main/spa-1.json +15 -33
- package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +15675 -15915
- package/extensions/ublocklite/rulesets/main/swe-1.json +46 -34
- package/extensions/ublocklite/rulesets/main/tur-0.json +56 -32
- package/extensions/ublocklite/rulesets/main/ublock-badware.json +87 -89
- package/extensions/ublocklite/rulesets/main/ublock-experimental.json +3 -0
- package/extensions/ublocklite/rulesets/main/ublock-filters.json +139 -69
- package/extensions/ublocklite/rulesets/main/ukr-0.json +5 -7
- package/extensions/ublocklite/rulesets/main/urlhaus-full.json +546 -1235
- package/extensions/ublocklite/rulesets/main/vie-1.json +55 -57
- package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +4 -2
- package/extensions/ublocklite/rulesets/modify-headers/fra-0.json +2 -1
- package/extensions/ublocklite/rulesets/modify-headers/irn-0.json +14 -14
- package/extensions/ublocklite/rulesets/modify-headers/ublock-filters.json +4 -8
- package/extensions/ublocklite/rulesets/modify-headers/vie-1.json +1 -1
- package/extensions/ublocklite/rulesets/redirect/annoyances-overlays.json +1 -1
- package/extensions/ublocklite/rulesets/redirect/easyprivacy.json +35 -0
- package/extensions/ublocklite/rulesets/redirect/irn-0.json +23 -23
- package/extensions/ublocklite/rulesets/redirect/kor-1.json +1 -1
- package/extensions/ublocklite/rulesets/redirect/rus-0.json +2 -1
- package/extensions/ublocklite/rulesets/redirect/spa-1.json +1 -2
- package/extensions/ublocklite/rulesets/redirect/tur-0.json +2 -3
- package/extensions/ublocklite/rulesets/redirect/ublock-badware.json +18 -0
- package/extensions/ublocklite/rulesets/redirect/ublock-filters.json +20 -15
- package/extensions/ublocklite/rulesets/redirect/vie-1.json +5 -22
- package/extensions/ublocklite/rulesets/regex/chn-0.json +1 -1
- package/extensions/ublocklite/rulesets/regex/ita-0.json +1 -0
- package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
- package/extensions/ublocklite/rulesets/regex/tur-0.json +4 -1
- package/extensions/ublocklite/rulesets/regex/ublock-badware.json +3 -8
- package/extensions/ublocklite/rulesets/regex/ublock-filters.json +14 -9
- package/extensions/ublocklite/rulesets/regex/ukr-0.json +3 -5
- package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +26 -11
- package/extensions/ublocklite/rulesets/removeparam/irn-0.json +16 -15
- package/extensions/ublocklite/rulesets/removeparam/rus-1.json +3 -2
- package/extensions/ublocklite/rulesets/removeparam/ublock-filters.json +6 -5
- package/extensions/ublocklite/rulesets/ruleset-details.json +332 -324
- 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/annoyances-social.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/bgr-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/deu-0.js +1 -1
- 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/fra-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/hrv-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/ind-0.js +2 -2
- 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/kor-1.js +2 -2
- 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/rou-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/rus-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/generic/swe-1.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 +3 -3
- package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/{declarative/isr-0.js → generichigh/annoyances-notifications.css} +15 -21
- package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +14 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +3 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/est-0.css +1 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +34 -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 +107 -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/tur-0.css +1 -0
- package/extensions/ublocklite/rulesets/scripting/generichigh/ublock-filters.css +6 -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/alb-0.js +4 -4
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +4 -4
- 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/cze-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/deu-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/{declarative → procedural}/easyprivacy.js +5 -5
- package/extensions/ublocklite/rulesets/scripting/procedural/est-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/fin-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/fra-0.js +4 -4
- package/extensions/ublocklite/rulesets/scripting/procedural/grc-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/hrv-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/hun-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/idn-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/isl-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/isr-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 +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/ltu-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/lva-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/{declarative → procedural}/mkd-0.js +4 -4
- package/extensions/ublocklite/rulesets/scripting/procedural/nld-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/nor-0.js +4 -4
- package/extensions/ublocklite/rulesets/scripting/procedural/pol-0.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-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +4 -4
- package/extensions/ublocklite/rulesets/scripting/procedural/svn-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/tha-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/tur-0.js +4 -4
- package/extensions/ublocklite/rulesets/scripting/procedural/ublock-badware.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/ubol-tests.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/ukr-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/vie-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-current-script.js +6 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie-reload.js +446 -0
- 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-cookies.trusted-set-local-storage-item.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/{tur-0.set-attr.js → annoyances-notifications.remove-class.js} +90 -119
- 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 +5 -4
- 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.prevent-window-open.js +1 -1
- 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.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-current-script.js +6 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.adjust-setTimeout.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.json-prune.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +2 -2
- 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/cze-0.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.abort-current-script.js +5 -4
- package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-local-storage-item.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fin-0.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-requestAnimationFrame.js +407 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-window-open.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.remove-node-text.js +449 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.abort-current-script.js +6 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.set-local-storage-item.js +399 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.abort-current-script.js +7 -6
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.abort-on-property-read.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-current-script.js +4 -3
- 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/isr-0.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.abort-current-script.js +6 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.abort-on-property-write.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.addEventListener-defuser.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.adjust-setTimeout.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.href-sanitizer.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.remove-attr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.remove-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.spoof-css.js +422 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ltu-0.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-xhr.js +584 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setInterval.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setTimeout.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-window-open.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-current-script.js +5 -4
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.adjust-setInterval.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.href-sanitizer.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.json-prune-fetch-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.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.prevent-xhr.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-current-script.js +6 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-write.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.adjust-setTimeout.js +2 -2
- 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-setTimeout.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 +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-constant.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-local-storage-item.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.abort-current-script.js +5 -4
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.noeval-if.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-xhr.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-write.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.adjust-setInterval.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.adjust-setTimeout.js +332 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.m3u-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-attr.js +2 -2
- 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-badware.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +7 -6
- 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 +3 -3
- 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 +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.close-window.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.href-sanitizer.js +2 -2
- 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 +70 -30
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.nowebrtc.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/{irn-0.close-window.js → ublock-filters.prevent-canvas.js} +14 -21
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +2 -2
- 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 +2 -2
- 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.set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-session-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-click-element.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 +927 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-override-element-method.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/{hun-0.prevent-fetch.js → ublock-filters.trusted-prevent-fetch.js} +7 -7
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-fetch-response.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 +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-attr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +4 -4
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-cookie.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-local-storage-item.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +2 -2
- 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/ukr-0.abort-current-script.js +4 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +6 -5
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +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/cze-0.js +1 -1
- 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/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/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 +3 -3
- 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 +408 -341
- package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +13 -1
- package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +0 -1
- 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 +278 -1
- package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +8 -41
- package/extensions/ublocklite/rulesets/strictblock/easylist.json +13 -14
- package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +74 -3
- package/extensions/ublocklite/rulesets/strictblock/fra-0.json +500 -41
- package/extensions/ublocklite/rulesets/strictblock/hun-0.json +2 -0
- package/extensions/ublocklite/rulesets/strictblock/irn-0.json +6 -2
- package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +182 -171
- package/extensions/ublocklite/rulesets/strictblock/kor-1.json +5 -0
- package/extensions/ublocklite/rulesets/strictblock/mkd-0.json +1 -0
- package/extensions/ublocklite/rulesets/strictblock/nor-0.json +6 -4
- package/extensions/ublocklite/rulesets/strictblock/pgl.json +36 -15
- 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 +1 -0
- package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +15675 -15915
- package/extensions/ublocklite/rulesets/strictblock/swe-1.json +6 -55
- package/extensions/ublocklite/rulesets/strictblock/tur-0.json +0 -1
- package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +677 -670
- package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +1 -4
- package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +546 -1235
- package/extensions/ublocklite/rulesets/strictblock/vie-1.json +2 -2
- package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +97 -14
- package/extensions/ublocklite/ublock.zip +0 -0
- package/extensions/ublocklite/web_accessible_resources/fingerprint2.js +1 -1
- package/package.json +12 -12
- package/src/config.ts +1 -1
- package/src/http.ts +5 -0
- package/src/limiter.spec.ts +1 -1
- package/src/routes/chrome/tests/content.spec.ts +12 -12
- package/src/routes/chrome/tests/page-websocket.spec.ts +3 -3
- package/src/routes/chrome/tests/pdf.spec.ts +13 -13
- package/src/routes/chrome/tests/performance.spec.ts +4 -4
- package/src/routes/chrome/tests/scrape.spec.ts +13 -13
- package/src/routes/chrome/tests/screenshot.spec.ts +14 -14
- package/src/routes/chromium/tests/content.spec.ts +13 -13
- package/src/routes/chromium/tests/page-websocket.spec.ts +3 -3
- package/src/routes/chromium/tests/pdf.spec.ts +13 -13
- package/src/routes/chromium/tests/performance.spec.ts +4 -4
- package/src/routes/chromium/tests/scrape.spec.ts +13 -13
- package/src/routes/chromium/tests/screenshot.spec.ts +14 -14
- package/src/routes/edge/tests/content.spec.ts +12 -12
- package/src/routes/edge/tests/page-websocket.spec.ts +3 -3
- package/src/routes/edge/tests/pdf.spec.ts +13 -13
- package/src/routes/edge/tests/performance.spec.ts +4 -4
- package/src/routes/edge/tests/scrape.spec.ts +13 -13
- package/src/routes/edge/tests/screenshot.spec.ts +14 -14
- package/src/routes/management/http/kill.get.ts +1 -1
- package/src/routes/management/http/pressure.get.ts +15 -3
- package/src/routes/management/http/sessions.get.ts +1 -1
- package/src/routes/management/tests/management.spec.ts +13 -13
- package/src/server.ts +17 -3
- 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/shim.spec.ts +40 -1
- package/src/shim.ts +17 -0
- package/src/types.ts +32 -1
- package/src/utils.ts +5 -3
- package/static/docs/swagger.json +455 -150
- package/static/docs/swagger.min.json +454 -149
- package/static/function/client.js +46 -8
- package/static/function/index.html +46 -8
- package/extensions/ublocklite/js/scripting/css-declarative.js +0 -116
- package/extensions/ublocklite/rulesets/scripting/declarative/adguard-mobile.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/alb-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-cookies.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-others.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-overlays.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-social.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/chn-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/cze-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/easylist.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/est-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/fin-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/fra-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/grc-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/hrv-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/hun-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/idn-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/irn-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/jpn-1.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/kor-1.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/ltu-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/nld-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/nor-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/pol-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/rou-1.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/rus-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/rus-1.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/spa-1.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/swe-1.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/tur-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/ublock-badware.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/ublock-filters.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/ukr-0.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/declarative/vie-1.js +0 -42
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.overlay-buster.js +0 -165
|
@@ -15,7 +15,7 @@ describe('/edge/screenshot API', function () {
|
|
|
15
15
|
const metrics = new Metrics();
|
|
16
16
|
await start({ config, metrics });
|
|
17
17
|
const body = {
|
|
18
|
-
url: 'https://
|
|
18
|
+
url: 'https://one.one.one.one',
|
|
19
19
|
};
|
|
20
20
|
await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
|
|
21
21
|
body: JSON.stringify(body),
|
|
@@ -44,7 +44,7 @@ describe('/edge/screenshot API', function () {
|
|
|
44
44
|
const metrics = new Metrics();
|
|
45
45
|
await start({ config, metrics });
|
|
46
46
|
const body = {
|
|
47
|
-
url: 'https://
|
|
47
|
+
url: 'https://one.one.one.one',
|
|
48
48
|
viewport: {
|
|
49
49
|
deviceScaleFactor: 3,
|
|
50
50
|
height: 100,
|
|
@@ -69,7 +69,7 @@ describe('/edge/screenshot API', function () {
|
|
|
69
69
|
await start({ config, metrics });
|
|
70
70
|
const body = {
|
|
71
71
|
selector: 'h1',
|
|
72
|
-
url: 'https://
|
|
72
|
+
url: 'https://one.one.one.one',
|
|
73
73
|
};
|
|
74
74
|
await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
|
|
75
75
|
body: JSON.stringify(body),
|
|
@@ -120,7 +120,7 @@ describe('/edge/screenshot API', function () {
|
|
|
120
120
|
},
|
|
121
121
|
},
|
|
122
122
|
],
|
|
123
|
-
url: 'https://
|
|
123
|
+
url: 'https://one.one.one.one',
|
|
124
124
|
};
|
|
125
125
|
await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
|
|
126
126
|
body: JSON.stringify(body),
|
|
@@ -139,7 +139,7 @@ describe('/edge/screenshot API', function () {
|
|
|
139
139
|
const metrics = new Metrics();
|
|
140
140
|
await start({ config, metrics });
|
|
141
141
|
const body = {
|
|
142
|
-
url: 'https://
|
|
142
|
+
url: 'https://one.one.one.one',
|
|
143
143
|
waitForFunction: {
|
|
144
144
|
fn: '() => 5 + 5',
|
|
145
145
|
},
|
|
@@ -161,7 +161,7 @@ describe('/edge/screenshot API', function () {
|
|
|
161
161
|
const metrics = new Metrics();
|
|
162
162
|
await start({ config, metrics });
|
|
163
163
|
const body = {
|
|
164
|
-
url: 'https://
|
|
164
|
+
url: 'https://one.one.one.one',
|
|
165
165
|
waitForFunction: {
|
|
166
166
|
fn: 'async () => new Promise(resolve => resolve(5))',
|
|
167
167
|
},
|
|
@@ -183,7 +183,7 @@ describe('/edge/screenshot API', function () {
|
|
|
183
183
|
const metrics = new Metrics();
|
|
184
184
|
await start({ config, metrics });
|
|
185
185
|
const body = {
|
|
186
|
-
url: 'https://
|
|
186
|
+
url: 'https://one.one.one.one',
|
|
187
187
|
waitForSelector: {
|
|
188
188
|
selector: 'h1',
|
|
189
189
|
},
|
|
@@ -205,7 +205,7 @@ describe('/edge/screenshot API', function () {
|
|
|
205
205
|
const metrics = new Metrics();
|
|
206
206
|
await start({ config, metrics });
|
|
207
207
|
const body = {
|
|
208
|
-
url: 'https://
|
|
208
|
+
url: 'https://one.one.one.one',
|
|
209
209
|
waitForTimeout: 500,
|
|
210
210
|
};
|
|
211
211
|
await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
|
|
@@ -250,8 +250,8 @@ describe('/edge/screenshot API', function () {
|
|
|
250
250
|
const metrics = new Metrics();
|
|
251
251
|
await start({ config, metrics });
|
|
252
252
|
const body = {
|
|
253
|
-
cookies: [{ domain: '
|
|
254
|
-
url: 'https://
|
|
253
|
+
cookies: [{ domain: 'one.one.one.one', name: 'foo', value: 'bar' }],
|
|
254
|
+
url: 'https://one.one.one.one',
|
|
255
255
|
};
|
|
256
256
|
await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
|
|
257
257
|
body: JSON.stringify(body),
|
|
@@ -270,7 +270,7 @@ describe('/edge/screenshot API', function () {
|
|
|
270
270
|
const metrics = new Metrics();
|
|
271
271
|
await start({ config, metrics });
|
|
272
272
|
const body = {
|
|
273
|
-
url: 'https://
|
|
273
|
+
url: 'https://one.one.one.one',
|
|
274
274
|
};
|
|
275
275
|
await fetch('http://localhost:3000/edge/screenshot?token=browserless&timeout=10', {
|
|
276
276
|
body: JSON.stringify(body),
|
|
@@ -290,7 +290,7 @@ describe('/edge/screenshot API', function () {
|
|
|
290
290
|
const metrics = new Metrics();
|
|
291
291
|
await start({ config, metrics });
|
|
292
292
|
const body = {
|
|
293
|
-
url: 'https://
|
|
293
|
+
url: 'https://one.one.one.one',
|
|
294
294
|
};
|
|
295
295
|
await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
|
|
296
296
|
body: JSON.stringify(body),
|
|
@@ -308,7 +308,7 @@ describe('/edge/screenshot API', function () {
|
|
|
308
308
|
const metrics = new Metrics();
|
|
309
309
|
await start({ config, metrics });
|
|
310
310
|
const body = {
|
|
311
|
-
url: 'https://
|
|
311
|
+
url: 'https://one.one.one.one',
|
|
312
312
|
};
|
|
313
313
|
await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
|
|
314
314
|
body: JSON.stringify(body),
|
|
@@ -323,7 +323,7 @@ describe('/edge/screenshot API', function () {
|
|
|
323
323
|
it('allows requests without token when auth token is not set', async () => {
|
|
324
324
|
await start();
|
|
325
325
|
const body = {
|
|
326
|
-
url: 'https://
|
|
326
|
+
url: 'https://one.one.one.one',
|
|
327
327
|
};
|
|
328
328
|
await fetch('http://localhost:3000/edge/screenshot', {
|
|
329
329
|
body: JSON.stringify(body),
|
|
@@ -2,7 +2,7 @@ import { APITags, HTTPManagementRoutes, HTTPRoute, Methods, Request, SystemQuery
|
|
|
2
2
|
import { ServerResponse } from 'http';
|
|
3
3
|
export type ResponseSchema = string;
|
|
4
4
|
export interface QuerySchema extends SystemQueryParameters {
|
|
5
|
-
token
|
|
5
|
+
token?: string;
|
|
6
6
|
browserId?: string;
|
|
7
7
|
trackingId?: string;
|
|
8
8
|
}
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import { APITags, BrowserlessRoutes, HTTPManagementRoutes, HTTPRoute, Methods, contentTypes, jsonResponse, } from '@browserless.io/browserless';
|
|
1
|
+
import { APITags, BrowserlessRoutes, HTTPManagementRoutes, HTTPRoute, Methods, contentTypes, dedent, jsonResponse, writeResponse, } from '@browserless.io/browserless';
|
|
2
2
|
export default class PressureGetRoute extends HTTPRoute {
|
|
3
3
|
name = BrowserlessRoutes.PressureGetRoute;
|
|
4
4
|
accepts = [contentTypes.any];
|
|
5
5
|
auth = true;
|
|
6
6
|
browser = null;
|
|
7
7
|
concurrency = false;
|
|
8
|
-
contentTypes = [contentTypes.json];
|
|
9
|
-
description = `Returns a JSON body of stats related to the pressure being
|
|
8
|
+
contentTypes = [contentTypes.json, contentTypes.text];
|
|
9
|
+
description = dedent(`Returns a JSON body of stats related to the pressure being exerted on the instance. This route is dynamic based upon the supplied "Accept" header, and will either return a human-readable message if the "Accept" header is set to "text/plain", or the default JSON body and a 200 HTTP code.
|
|
10
|
+
|
|
11
|
+
When Accept is set to "text/plain" a human-readable message is sent back describing the state of the container, and either a "200" code (indicating "ok") or a "503" code (indicating that the service is unavailable due to load).
|
|
12
|
+
|
|
13
|
+
If the "Accept" header is set to anything else it will return a JSON body with the same information.`);
|
|
10
14
|
method = Methods.get;
|
|
11
15
|
path = HTTPManagementRoutes.pressure;
|
|
12
16
|
tags = [APITags.management];
|
|
13
|
-
async handler(
|
|
17
|
+
async handler(req, res) {
|
|
14
18
|
const monitoring = this.monitoring();
|
|
15
19
|
const config = this.config();
|
|
16
20
|
const limiter = this.limiter();
|
|
@@ -53,6 +57,10 @@ export default class PressureGetRoute extends HTTPRoute {
|
|
|
53
57
|
running,
|
|
54
58
|
},
|
|
55
59
|
};
|
|
60
|
+
if (req.headers.accept === contentTypes.text) {
|
|
61
|
+
const code = response.pressure.isAvailable ? 200 : 503;
|
|
62
|
+
return writeResponse(res, code, message);
|
|
63
|
+
}
|
|
56
64
|
return jsonResponse(res, 200, response);
|
|
57
65
|
}
|
|
58
66
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { APITags, BrowserlessSessionJSON, HTTPManagementRoutes, HTTPRoute, Methods, Request, SystemQueryParameters, contentTypes } from '@browserless.io/browserless';
|
|
2
2
|
import { ServerResponse } from 'http';
|
|
3
3
|
export interface QuerySchema extends SystemQueryParameters {
|
|
4
|
-
token
|
|
4
|
+
token?: string;
|
|
5
5
|
trackingId?: string;
|
|
6
6
|
}
|
|
7
7
|
export type ResponseSchema = BrowserlessSessionJSON[];
|
|
@@ -14,16 +14,16 @@ describe('Management APIs', function () {
|
|
|
14
14
|
it('allows Single Origin OPTIONS requests', async () => {
|
|
15
15
|
const config = new Config();
|
|
16
16
|
config.enableCORS(true);
|
|
17
|
-
config.setCORSOrigin('https://
|
|
17
|
+
config.setCORSOrigin('https://one.one.one.one');
|
|
18
18
|
await start({ config });
|
|
19
19
|
const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
|
|
20
20
|
method: 'OPTIONS',
|
|
21
21
|
headers: {
|
|
22
|
-
Origin: 'https://
|
|
22
|
+
Origin: 'https://one.one.one.one',
|
|
23
23
|
},
|
|
24
24
|
});
|
|
25
25
|
expect(r.status).to.equal(204);
|
|
26
|
-
expect(r.headers.get('access-control-allow-origin')).to.equal('https://
|
|
26
|
+
expect(r.headers.get('access-control-allow-origin')).to.equal('https://one.one.one.one');
|
|
27
27
|
});
|
|
28
28
|
it('allows wildcard orign OPTIONS requests', async () => {
|
|
29
29
|
const config = new Config();
|
|
@@ -33,44 +33,44 @@ describe('Management APIs', function () {
|
|
|
33
33
|
const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
|
|
34
34
|
method: 'OPTIONS',
|
|
35
35
|
headers: {
|
|
36
|
-
Origin: 'https://
|
|
36
|
+
Origin: 'https://one.one.one.one',
|
|
37
37
|
},
|
|
38
38
|
});
|
|
39
39
|
expect(r.status).to.equal(204);
|
|
40
|
-
expect(r.headers.get('access-control-allow-origin')).to.equal('https://
|
|
40
|
+
expect(r.headers.get('access-control-allow-origin')).to.equal('https://one.one.one.one');
|
|
41
41
|
});
|
|
42
42
|
it('allows glob-matched OPTIONS requests', async () => {
|
|
43
43
|
const config = new Config();
|
|
44
44
|
config.enableCORS(true);
|
|
45
|
-
config.setCORSOrigin('*.
|
|
45
|
+
config.setCORSOrigin('*.one.one.one.one');
|
|
46
46
|
await start({ config });
|
|
47
47
|
const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
|
|
48
48
|
method: 'OPTIONS',
|
|
49
49
|
headers: {
|
|
50
|
-
Origin: 'https://subdomain.
|
|
50
|
+
Origin: 'https://subdomain.one.one.one.one',
|
|
51
51
|
},
|
|
52
52
|
});
|
|
53
53
|
expect(r.status).to.equal(204);
|
|
54
|
-
expect(r.headers.get('access-control-allow-origin')).to.equal('https://subdomain.
|
|
54
|
+
expect(r.headers.get('access-control-allow-origin')).to.equal('https://subdomain.one.one.one.one');
|
|
55
55
|
});
|
|
56
56
|
it('allows glob-matched OPTIONS requests with OR patterns', async () => {
|
|
57
57
|
const config = new Config();
|
|
58
58
|
config.enableCORS(true);
|
|
59
|
-
config.setCORSOrigin('https://(abc|xyz).
|
|
59
|
+
config.setCORSOrigin('https://(abc|xyz).one.one.one.one');
|
|
60
60
|
await start({ config });
|
|
61
61
|
const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
|
|
62
62
|
method: 'OPTIONS',
|
|
63
63
|
headers: {
|
|
64
|
-
Origin: 'https://abc.
|
|
64
|
+
Origin: 'https://abc.one.one.one.one',
|
|
65
65
|
},
|
|
66
66
|
});
|
|
67
67
|
expect(r.status).to.equal(204);
|
|
68
|
-
expect(r.headers.get('access-control-allow-origin')).to.equal('https://abc.
|
|
68
|
+
expect(r.headers.get('access-control-allow-origin')).to.equal('https://abc.one.one.one.one');
|
|
69
69
|
});
|
|
70
70
|
it('allows glob-matched OPTIONS requests with OR patterns across two domains', async () => {
|
|
71
71
|
const config = new Config();
|
|
72
72
|
config.enableCORS(true);
|
|
73
|
-
config.setCORSOrigin('(https://(abc|xyz).
|
|
73
|
+
config.setCORSOrigin('(https://(abc|xyz).one.one.one.one|https://deploy-preview-*.netlify.app)');
|
|
74
74
|
await start({ config });
|
|
75
75
|
const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
|
|
76
76
|
method: 'OPTIONS',
|
|
@@ -89,7 +89,7 @@ describe('Management APIs', function () {
|
|
|
89
89
|
const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
|
|
90
90
|
method: 'OPTIONS',
|
|
91
91
|
headers: {
|
|
92
|
-
Origin: 'https://subdomain.
|
|
92
|
+
Origin: 'https://subdomain.one.one.one.one',
|
|
93
93
|
},
|
|
94
94
|
});
|
|
95
95
|
expect(r.status).to.equal(404);
|
package/build/server.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as http from 'http';
|
|
2
|
-
import { BadRequest, Logger as BlessLogger, NotFound, Timeout, TooManyRequests, Unauthorized, contentTypes, convertPathToURL, isMatch, queryParamsToObject, readBody, shimLegacyRequests, writeResponse, } from '@browserless.io/browserless';
|
|
2
|
+
import { BadRequest, Logger as BlessLogger, NotFound, Timeout, TooManyRequests, Unauthorized, contentTypes, convertPathToURL, isMatch, moveTokenToHeader, queryParamsToObject, readBody, shimLegacyRequests, writeResponse, } from '@browserless.io/browserless';
|
|
3
3
|
import { EventEmitter } from 'events';
|
|
4
4
|
import EnjoiResolver from './shared/utils/enjoi-resolver.js';
|
|
5
5
|
export class HTTPServer extends EventEmitter {
|
|
@@ -73,7 +73,8 @@ export class HTTPServer extends EventEmitter {
|
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
75
|
async handleRequest(request, res) {
|
|
76
|
-
|
|
76
|
+
request.url = moveTokenToHeader(request);
|
|
77
|
+
this.logger.trace(`Handling inbound HTTP request on "${request.method}: ${request.url || ''}"`);
|
|
77
78
|
const req = request;
|
|
78
79
|
const proceed = await this.hooks.before({ req, res });
|
|
79
80
|
req.parsed = convertPathToURL(request.url || '', this.config);
|
|
@@ -114,8 +115,11 @@ export class HTTPServer extends EventEmitter {
|
|
|
114
115
|
return Promise.resolve();
|
|
115
116
|
}
|
|
116
117
|
this.logger.trace(`Found matching HTTP route handler "${route.path}"`);
|
|
118
|
+
if (route.before && !(await route.before(req, res))) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
117
121
|
if (route?.auth) {
|
|
118
|
-
this.logger.trace(`Authorizing HTTP request to "${request.url}"`);
|
|
122
|
+
this.logger.trace(`Authorizing HTTP request to "${request.url || ''}"`);
|
|
119
123
|
const isPermitted = await this.token.isAuthorized(req, route);
|
|
120
124
|
if (!isPermitted) {
|
|
121
125
|
return this.onHTTPUnauthorized(req, res);
|
|
@@ -182,7 +186,8 @@ export class HTTPServer extends EventEmitter {
|
|
|
182
186
|
.catch((e) => this.handleErrorRequest(e, res));
|
|
183
187
|
}
|
|
184
188
|
async handleWebSocket(request, socket, head) {
|
|
185
|
-
|
|
189
|
+
request.url = moveTokenToHeader(request);
|
|
190
|
+
this.logger.trace(`Handling inbound WebSocket request on "${request.url || ''}"`);
|
|
186
191
|
const req = request;
|
|
187
192
|
const proceed = await this.hooks.before({ head, req, socket });
|
|
188
193
|
req.parsed = convertPathToURL(request.url || '', this.config);
|
|
@@ -193,6 +198,9 @@ export class HTTPServer extends EventEmitter {
|
|
|
193
198
|
const route = await this.router.getRouteForWebSocketRequest(req);
|
|
194
199
|
if (route) {
|
|
195
200
|
this.logger.trace(`Found matching WebSocket route handler "${route.path}"`);
|
|
201
|
+
if (route.before && !(await route.before(req, socket, head))) {
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
196
204
|
if (route?.auth) {
|
|
197
205
|
this.logger.trace(`Authorizing WebSocket request to "${req.parsed.href}"`);
|
|
198
206
|
const isPermitted = await this.token.isAuthorized(req, route);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, writeResponse, } from '@browserless.io/browserless';
|
|
1
|
+
import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, isBase64Encoded, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, writeResponse, } from '@browserless.io/browserless';
|
|
2
2
|
export default class ChromiumContentPostRoute extends BrowserHTTPRoute {
|
|
3
3
|
name = BrowserlessRoutes.ChromiumContentPostRoute;
|
|
4
4
|
accepts = [contentTypes.json];
|
|
@@ -59,7 +59,14 @@ export default class ChromiumContentPostRoute extends BrowserHTTPRoute {
|
|
|
59
59
|
}
|
|
60
60
|
const interceptor = requestInterceptors.find((r) => req.url().match(r.pattern));
|
|
61
61
|
if (interceptor) {
|
|
62
|
-
return req.respond(
|
|
62
|
+
return req.respond({
|
|
63
|
+
...interceptor.response,
|
|
64
|
+
body: interceptor.response.body
|
|
65
|
+
? isBase64Encoded(interceptor.response.body)
|
|
66
|
+
? Buffer.from(interceptor.response.body, 'base64')
|
|
67
|
+
: interceptor.response.body
|
|
68
|
+
: undefined,
|
|
69
|
+
});
|
|
63
70
|
}
|
|
64
71
|
return req.continue();
|
|
65
72
|
});
|
package/build/shared/pdf.http.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
|
|
1
|
+
import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, isBase64Encoded, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
|
|
2
2
|
export default class ChromiumPDFPostRoute extends BrowserHTTPRoute {
|
|
3
3
|
name = BrowserlessRoutes.ChromiumPDFPostRoute;
|
|
4
4
|
accepts = [contentTypes.json];
|
|
@@ -64,7 +64,14 @@ export default class ChromiumPDFPostRoute extends BrowserHTTPRoute {
|
|
|
64
64
|
}
|
|
65
65
|
const interceptor = requestInterceptors.find((r) => req.url().match(r.pattern));
|
|
66
66
|
if (interceptor) {
|
|
67
|
-
return req.respond(
|
|
67
|
+
return req.respond({
|
|
68
|
+
...interceptor.response,
|
|
69
|
+
body: interceptor.response.body
|
|
70
|
+
? isBase64Encoded(interceptor.response.body)
|
|
71
|
+
? Buffer.from(interceptor.response.body, 'base64')
|
|
72
|
+
: interceptor.response.body
|
|
73
|
+
: undefined,
|
|
74
|
+
});
|
|
68
75
|
}
|
|
69
76
|
return req.continue();
|
|
70
77
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, Timeout, bestAttemptCatch, contentTypes, debugScreenshotOpts, dedent, jsonResponse, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
|
|
1
|
+
import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, Timeout, bestAttemptCatch, contentTypes, debugScreenshotOpts, dedent, isBase64Encoded, jsonResponse, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
|
|
2
2
|
const scrape = async (elements) => {
|
|
3
3
|
const wait = (selector, timeout = 30000) => {
|
|
4
4
|
return new Promise((resolve, reject) => {
|
|
@@ -127,7 +127,14 @@ export default class ChromiumScrapePostRoute extends BrowserHTTPRoute {
|
|
|
127
127
|
}
|
|
128
128
|
const interceptor = requestInterceptors.find((r) => req.url().match(r.pattern));
|
|
129
129
|
if (interceptor) {
|
|
130
|
-
return req.respond(
|
|
130
|
+
return req.respond({
|
|
131
|
+
...interceptor.response,
|
|
132
|
+
body: interceptor.response.body
|
|
133
|
+
? isBase64Encoded(interceptor.response.body)
|
|
134
|
+
? Buffer.from(interceptor.response.body, 'base64')
|
|
135
|
+
: interceptor.response.body
|
|
136
|
+
: undefined,
|
|
137
|
+
});
|
|
131
138
|
}
|
|
132
139
|
return req.continue();
|
|
133
140
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, noop, scrollThroughPage, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
|
|
1
|
+
import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, isBase64Encoded, noop, scrollThroughPage, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
|
|
2
2
|
import Stream from 'stream';
|
|
3
3
|
export default class ScreenshotPost extends BrowserHTTPRoute {
|
|
4
4
|
name = BrowserlessRoutes.ChromiumScreenshotPostRoute;
|
|
@@ -67,7 +67,14 @@ export default class ScreenshotPost extends BrowserHTTPRoute {
|
|
|
67
67
|
}
|
|
68
68
|
const interceptor = requestInterceptors.find((r) => req.url().match(r.pattern));
|
|
69
69
|
if (interceptor) {
|
|
70
|
-
return req.respond(
|
|
70
|
+
return req.respond({
|
|
71
|
+
...interceptor.response,
|
|
72
|
+
body: interceptor.response.body
|
|
73
|
+
? isBase64Encoded(interceptor.response.body)
|
|
74
|
+
? Buffer.from(interceptor.response.body, 'base64')
|
|
75
|
+
: interceptor.response.body
|
|
76
|
+
: undefined,
|
|
77
|
+
});
|
|
71
78
|
}
|
|
72
79
|
return req.continue();
|
|
73
80
|
});
|
package/build/shim.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import * as http from 'http';
|
|
2
|
+
/**
|
|
3
|
+
* Obfuscates the ?token parameter by shifting it to a header instead of a query-parameter.
|
|
4
|
+
*/
|
|
5
|
+
export declare function moveTokenToHeader(req: http.IncomingMessage): string;
|
|
1
6
|
/**
|
|
2
7
|
* Given a legacy connect or API call, this shim will
|
|
3
8
|
* re-order the arguments to make them valid in the 2.0
|
package/build/shim.js
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import { convertIfBase64, safeParse, } from '@browserless.io/browserless';
|
|
2
2
|
const shimParam = ['headless', 'stealth', 'ignoreDefaultArgs', 'slowMo'];
|
|
3
|
+
/**
|
|
4
|
+
* Obfuscates the ?token parameter by shifting it to a header instead of a query-parameter.
|
|
5
|
+
*/
|
|
6
|
+
export function moveTokenToHeader(req) {
|
|
7
|
+
const parsed = new URL(req.url || '', 'http://localhost');
|
|
8
|
+
const token = parsed.searchParams.get('token');
|
|
9
|
+
if (token) {
|
|
10
|
+
parsed.searchParams.delete('token');
|
|
11
|
+
req.headers.authorization = req.headers.authorization ?? `Bearer ${token}`;
|
|
12
|
+
req.url = parsed.pathname + parsed.search;
|
|
13
|
+
}
|
|
14
|
+
return req.url;
|
|
15
|
+
}
|
|
3
16
|
/**
|
|
4
17
|
* Given a legacy connect or API call, this shim will
|
|
5
18
|
* re-order the arguments to make them valid in the 2.0
|
package/build/shim.spec.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
-
import { shimLegacyRequests } from '@browserless.io/browserless';
|
|
2
|
+
import { shimLegacyRequests, moveTokenToHeader, } from '@browserless.io/browserless';
|
|
3
3
|
describe('Request Shimming', () => {
|
|
4
4
|
describe('headless', () => {
|
|
5
5
|
it('converts headless true', () => {
|
|
@@ -125,4 +125,31 @@ describe('Request Shimming', () => {
|
|
|
125
125
|
expect(decodeURIComponent(shimmed.href)).to.equal(final);
|
|
126
126
|
});
|
|
127
127
|
});
|
|
128
|
+
describe('token shimming', () => {
|
|
129
|
+
it('converts token query parameters to an authorization header', () => {
|
|
130
|
+
const url = 'wss://localhost?token=12345';
|
|
131
|
+
const shimmed = moveTokenToHeader({
|
|
132
|
+
url,
|
|
133
|
+
headers: {},
|
|
134
|
+
});
|
|
135
|
+
expect(shimmed).not.to.include('?token=');
|
|
136
|
+
});
|
|
137
|
+
it('converts the token to a proper header', () => {
|
|
138
|
+
const url = 'wss://localhost?token=12345';
|
|
139
|
+
const request = { url, headers: {} };
|
|
140
|
+
moveTokenToHeader(request);
|
|
141
|
+
expect(request.headers.authorization).to.eql('Bearer 12345');
|
|
142
|
+
});
|
|
143
|
+
it('does no conversion if an authorization header is already present', () => {
|
|
144
|
+
const oldAuth = 'Bearer foo-bar';
|
|
145
|
+
const url = 'wss://localhost?token=12345';
|
|
146
|
+
const request = {
|
|
147
|
+
url,
|
|
148
|
+
headers: { authorization: oldAuth },
|
|
149
|
+
};
|
|
150
|
+
const shimmed = moveTokenToHeader(request);
|
|
151
|
+
expect(shimmed).not.to.include('?token=');
|
|
152
|
+
expect(request.headers.authorization).to.eql(oldAuth);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
128
155
|
});
|
package/build/types.d.ts
CHANGED
|
@@ -171,6 +171,12 @@ declare abstract class BasicHTTPRoute extends Route {
|
|
|
171
171
|
* The allowed methods ("GET", "POST", etc) this route can utilize and match against.
|
|
172
172
|
*/
|
|
173
173
|
abstract method: Methods;
|
|
174
|
+
/**
|
|
175
|
+
* A function that can run before the requests is parsed and any query or body validation is run.
|
|
176
|
+
* Useful if you need to alter something about the request to conform it or otherwise. This
|
|
177
|
+
* hook is ran after any "global" hooks have run.
|
|
178
|
+
*/
|
|
179
|
+
before?: (req: Request, res: http.ServerResponse) => Promise<boolean>;
|
|
174
180
|
}
|
|
175
181
|
/**
|
|
176
182
|
* A HTTP-based route, with a handler, that can fulfill requests without
|
|
@@ -211,6 +217,10 @@ export declare abstract class WebSocketRoute extends Route {
|
|
|
211
217
|
* Handles an inbound Websocket request, and handles the connection
|
|
212
218
|
*/
|
|
213
219
|
abstract handler(req: Request, socket: stream.Duplex, head: Buffer, logger: Logger): Promise<unknown>;
|
|
220
|
+
/**
|
|
221
|
+
* Handles an inbound HTTP request, and supplies the Request and Response objects from node's HTTP request event
|
|
222
|
+
*/
|
|
223
|
+
before?: (req: Request, socket: stream.Duplex, head: Buffer) => Promise<boolean>;
|
|
214
224
|
}
|
|
215
225
|
/**
|
|
216
226
|
* A WebSocket-based route, with a handler, that can fulfill requests
|
|
@@ -230,6 +240,10 @@ export declare abstract class BrowserWebsocketRoute extends Route {
|
|
|
230
240
|
* creation. Useful for injecting behaviors or other functionality.
|
|
231
241
|
*/
|
|
232
242
|
onNewPage?: (url: URL, page: Page) => Promise<void>;
|
|
243
|
+
/**
|
|
244
|
+
* Handles an inbound HTTP request, and supplies the Request and Response objects from node's HTTP request event
|
|
245
|
+
*/
|
|
246
|
+
before?: (req: Request, socket: stream.Duplex, head: Buffer) => Promise<boolean>;
|
|
233
247
|
}
|
|
234
248
|
interface BrowserlessLaunch {
|
|
235
249
|
stealth?: boolean;
|
|
@@ -392,7 +406,13 @@ export type requestInterceptors = {
|
|
|
392
406
|
* corresponding responses to use in order to fulfill those requests.
|
|
393
407
|
*/
|
|
394
408
|
pattern: string;
|
|
395
|
-
response: Partial<ResponseForRequest
|
|
409
|
+
response: Partial<Omit<ResponseForRequest, 'body'>> & {
|
|
410
|
+
/**
|
|
411
|
+
* A string representation of the body to return. Can be a base64-encoded
|
|
412
|
+
* string but please omit any leading content-type data (eg "data:image/png;base64,").
|
|
413
|
+
*/
|
|
414
|
+
body?: string;
|
|
415
|
+
};
|
|
396
416
|
};
|
|
397
417
|
export interface IResourceLoad {
|
|
398
418
|
cpu: number | null;
|
package/build/types.js
CHANGED
|
@@ -101,6 +101,12 @@ class Route {
|
|
|
101
101
|
* and WebSocketRoute
|
|
102
102
|
*/
|
|
103
103
|
class BasicHTTPRoute extends Route {
|
|
104
|
+
/**
|
|
105
|
+
* A function that can run before the requests is parsed and any query or body validation is run.
|
|
106
|
+
* Useful if you need to alter something about the request to conform it or otherwise. This
|
|
107
|
+
* hook is ran after any "global" hooks have run.
|
|
108
|
+
*/
|
|
109
|
+
before;
|
|
104
110
|
}
|
|
105
111
|
/**
|
|
106
112
|
* A HTTP-based route, with a handler, that can fulfill requests without
|
|
@@ -127,6 +133,10 @@ export class BrowserHTTPRoute extends BasicHTTPRoute {
|
|
|
127
133
|
*/
|
|
128
134
|
export class WebSocketRoute extends Route {
|
|
129
135
|
browser = null;
|
|
136
|
+
/**
|
|
137
|
+
* Handles an inbound HTTP request, and supplies the Request and Response objects from node's HTTP request event
|
|
138
|
+
*/
|
|
139
|
+
before;
|
|
130
140
|
}
|
|
131
141
|
/**
|
|
132
142
|
* A WebSocket-based route, with a handler, that can fulfill requests
|
|
@@ -140,6 +150,10 @@ export class BrowserWebsocketRoute extends Route {
|
|
|
140
150
|
* creation. Useful for injecting behaviors or other functionality.
|
|
141
151
|
*/
|
|
142
152
|
onNewPage;
|
|
153
|
+
/**
|
|
154
|
+
* Handles an inbound HTTP request, and supplies the Request and Response objects from node's HTTP request event
|
|
155
|
+
*/
|
|
156
|
+
before;
|
|
143
157
|
}
|
|
144
158
|
export const debugScreenshotOpts = {
|
|
145
159
|
encoding: 'base64',
|
package/build/utils.d.ts
CHANGED
|
@@ -80,6 +80,7 @@ export declare const exists: (path: string) => Promise<boolean>;
|
|
|
80
80
|
* @returns {boolean}
|
|
81
81
|
*/
|
|
82
82
|
export declare const fileExists: (path: string) => Promise<boolean>;
|
|
83
|
+
export declare const isBase64Encoded: (item: string) => boolean;
|
|
83
84
|
export declare const convertIfBase64: (item: string) => string;
|
|
84
85
|
export declare const availableBrowsers: Promise<(typeof ChromiumCDP | typeof ChromiumPlaywright | typeof FirefoxPlaywright | typeof WebKitPlaywright)[]>;
|
|
85
86
|
export declare const queryParamsToObject: (params: URLSearchParams) => Record<string, unknown>;
|
package/build/utils.js
CHANGED
|
@@ -156,7 +156,7 @@ export const fetchJson = (url, init) => fetch(url, init).then((res) => {
|
|
|
156
156
|
return res.json();
|
|
157
157
|
});
|
|
158
158
|
export const getTokenFromRequest = (req) => {
|
|
159
|
-
const authHeader = req.headers
|
|
159
|
+
const authHeader = req.headers.authorization;
|
|
160
160
|
const tokenParam = req.parsed.searchParams.get('token');
|
|
161
161
|
return tokenParam ?? getAuthHeaderToken(authHeader || '');
|
|
162
162
|
};
|
|
@@ -233,7 +233,7 @@ export const generateDataDir = async (sessionId = id(), config) => {
|
|
|
233
233
|
};
|
|
234
234
|
export const readBody = async (req, maxSize = 10485760) => {
|
|
235
235
|
if (typeof req.body === 'string' &&
|
|
236
|
-
(
|
|
236
|
+
(isBase64Encoded(req.body) || req.body.startsWith('{'))) {
|
|
237
237
|
return safeParse(convertIfBase64(req.body));
|
|
238
238
|
}
|
|
239
239
|
const body = await readRequestBody(req, maxSize);
|
|
@@ -352,7 +352,8 @@ export const fileExists = async (path) => fs
|
|
|
352
352
|
.then((stat) => stat.isFile())
|
|
353
353
|
.catch(() => false);
|
|
354
354
|
const isBase64 = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
|
|
355
|
-
export const
|
|
355
|
+
export const isBase64Encoded = (item) => isBase64.test(item);
|
|
356
|
+
export const convertIfBase64 = (item) => isBase64Encoded(item) ? Buffer.from(item, 'base64').toString() : item;
|
|
356
357
|
export const availableBrowsers = Promise.all([
|
|
357
358
|
exists(playwright.chromium.executablePath()),
|
|
358
359
|
exists(playwright.firefox.executablePath()),
|