@browserless.io/browserless 2.37.0 → 2.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/browsers/index.js +15 -0
- package/build/routes/chrome/http/content.post.query.json +3 -0
- package/build/routes/chrome/http/download.post.query.json +3 -0
- package/build/routes/chrome/http/function.post.query.json +3 -0
- package/build/routes/chrome/http/pdf.post.query.json +3 -0
- package/build/routes/chrome/http/performance.post.query.json +3 -0
- package/build/routes/chrome/http/scrape.post.query.json +3 -0
- package/build/routes/chrome/http/screenshot.post.query.json +3 -0
- package/build/routes/chrome/tests/content.spec.js +21 -0
- package/build/routes/chrome/tests/json.spec.js +100 -0
- package/build/routes/chrome/ws/browser.query.json +3 -0
- package/build/routes/chrome/ws/cdp.query.json +3 -0
- package/build/routes/chrome/ws/function-connect.query.json +3 -0
- package/build/routes/chrome/ws/page.query.json +3 -0
- package/build/routes/chromium/http/content.post.query.json +3 -0
- package/build/routes/chromium/http/download.post.query.json +3 -0
- package/build/routes/chromium/http/function.post.query.json +3 -0
- package/build/routes/chromium/http/pdf.post.query.json +3 -0
- package/build/routes/chromium/http/performance.post.query.json +3 -0
- package/build/routes/chromium/http/scrape.post.query.json +3 -0
- package/build/routes/chromium/http/screenshot.post.query.json +3 -0
- package/build/routes/chromium/tests/content.spec.js +21 -0
- package/build/routes/chromium/tests/function.spec.js +27 -0
- package/build/routes/chromium/tests/json.spec.js +100 -0
- package/build/routes/chromium/ws/browser.query.json +3 -0
- package/build/routes/chromium/ws/cdp.query.json +3 -0
- package/build/routes/chromium/ws/function-connect.query.json +3 -0
- package/build/routes/chromium/ws/page.query.json +3 -0
- package/build/routes/edge/http/content.post.query.json +3 -0
- package/build/routes/edge/http/download.post.query.json +3 -0
- package/build/routes/edge/http/function.post.query.json +3 -0
- package/build/routes/edge/http/pdf.post.query.json +3 -0
- package/build/routes/edge/http/performance.post.query.json +3 -0
- package/build/routes/edge/http/scrape.post.query.json +3 -0
- package/build/routes/edge/http/screenshot.post.query.json +3 -0
- package/build/routes/edge/tests/content.spec.js +21 -0
- package/build/routes/edge/tests/json.spec.js +100 -0
- package/build/routes/edge/ws/browser.query.json +3 -0
- package/build/routes/edge/ws/cdp.query.json +3 -0
- package/build/routes/edge/ws/function-connect.query.json +3 -0
- package/build/routes/edge/ws/page.query.json +3 -0
- package/build/routes/management/http/kill.get.query.json +3 -0
- package/build/routes/management/http/sessions.get.query.json +3 -0
- package/build/routes/management/tests/management.spec.js +44 -0
- package/build/server.js +1 -1
- package/build/shim.js +11 -1
- package/build/shim.spec.js +14 -0
- package/build/types.d.ts +2 -0
- package/extensions/ublocklite/_locales/br_FR/messages.json +2 -2
- package/extensions/ublocklite/_locales/cs/messages.json +8 -8
- package/extensions/ublocklite/_locales/da/messages.json +5 -5
- package/extensions/ublocklite/_locales/es/messages.json +4 -4
- package/extensions/ublocklite/_locales/gl/messages.json +5 -5
- package/extensions/ublocklite/_locales/ka/messages.json +5 -5
- package/extensions/ublocklite/_locales/ru/messages.json +3 -3
- package/extensions/ublocklite/_locales/sq/messages.json +5 -5
- package/extensions/ublocklite/_locales/sv/messages.json +5 -5
- package/extensions/ublocklite/_locales/zh_CN/messages.json +5 -5
- package/extensions/ublocklite/css/settings.css +6 -0
- package/extensions/ublocklite/dashboard.html +1 -1
- package/extensions/ublocklite/js/background.js +10 -6
- package/extensions/ublocklite/js/dashboard.js +4 -5
- package/extensions/ublocklite/js/jsonpath.js +25 -10
- package/extensions/ublocklite/js/report.js +2 -4
- package/extensions/ublocklite/js/troubleshooting.js +30 -18
- package/extensions/ublocklite/manifest.json +2 -2
- package/extensions/ublocklite/rulesets/main/adguard-mobile.json +1 -1
- package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +1 -1
- package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +6 -4
- package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +2 -1
- package/extensions/ublocklite/rulesets/main/chn-0.json +5 -3
- package/extensions/ublocklite/rulesets/main/easylist.json +10 -13
- package/extensions/ublocklite/rulesets/main/easyprivacy.json +8 -9
- package/extensions/ublocklite/rulesets/main/fin-0.json +3 -1
- package/extensions/ublocklite/rulesets/main/ita-0.json +2 -0
- package/extensions/ublocklite/rulesets/main/jpn-1.json +8 -10
- package/extensions/ublocklite/rulesets/main/nor-0.json +2 -2
- package/extensions/ublocklite/rulesets/main/pol-0.json +1 -1
- package/extensions/ublocklite/rulesets/main/rus-1.json +2 -1
- package/extensions/ublocklite/rulesets/main/spa-1.json +6 -1
- package/extensions/ublocklite/rulesets/main/swe-1.json +5 -5
- package/extensions/ublocklite/rulesets/main/tur-0.json +2 -2
- package/extensions/ublocklite/rulesets/main/ublock-badware.json +4 -2
- package/extensions/ublocklite/rulesets/main/ublock-filters.json +25 -25
- package/extensions/ublocklite/rulesets/main/ukr-0.json +2 -2
- package/extensions/ublocklite/rulesets/main/urlhaus-full.json +610 -80
- package/extensions/ublocklite/rulesets/main/vie-1.json +20 -14
- package/extensions/ublocklite/rulesets/regex/easylist.json +1 -6
- package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
- package/extensions/ublocklite/rulesets/regex/ublock-badware.json +3 -4
- package/extensions/ublocklite/rulesets/regex/ublock-filters.json +11 -9
- package/extensions/ublocklite/rulesets/ruleset-details.json +120 -120
- package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/generic/ita-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/fin-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/procedural/grc-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/ind-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.addEventListener-defuser.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-requestAnimationFrame.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-class.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-argument.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-outbound-text.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-suppress-native-method.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.evaldata-prune.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/est-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fin-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fin-0.remove-node-text.js +449 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-requestAnimationFrame.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ltu-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ltu-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-stack-trace.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +8 -4
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.json-prune.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-requestAnimationFrame.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.noeval-if.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.trusted-replace-argument.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-json-edit-xhr-request.js +848 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-replace-node-text.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-fetch-response.js +29 -11
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-xhr-response.js +24 -10
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit.js +29 -11
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.jsonl-edit-xhr-response.js +24 -10
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-request.js +941 -0
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-response.js +29 -11
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit.js +29 -11
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-override-element-method.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-dom-bypass.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-fetch.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +7 -3
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +6 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-fetch-response.js +29 -11
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-xhr-response.js +24 -10
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.trusted-prevent-dom-bypass.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-window-open.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.addEventListener-defuser.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-fetch.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-setTimeout.js +5 -1
- package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/grc-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +1 -1
- package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
- package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
- package/extensions/ublocklite/rulesets/scriptlet-details.json +90 -32
- package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +5 -0
- package/extensions/ublocklite/rulesets/strictblock/chn-0.json +67 -1
- package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +17 -1
- package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +198 -196
- package/extensions/ublocklite/rulesets/strictblock/nor-0.json +1 -1
- package/extensions/ublocklite/rulesets/strictblock/pol-0.json +2 -0
- package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +532 -530
- package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +23 -19
- package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +2 -0
- package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +610 -80
- package/extensions/ublocklite/ublock.zip +0 -0
- package/package.json +13 -12
- package/scripts/install-debugger.js +2 -2
- package/src/browsers/index.ts +20 -0
- package/src/routes/chrome/tests/content.spec.ts +24 -0
- package/src/routes/chrome/tests/json.spec.ts +134 -0
- package/src/routes/chromium/tests/content.spec.ts +24 -0
- package/src/routes/chromium/tests/function.spec.ts +33 -0
- package/src/routes/chromium/tests/json.spec.ts +134 -0
- package/src/routes/chromium/tests/scrape.spec.ts +3 -1
- package/src/routes/edge/tests/content.spec.ts +24 -0
- package/src/routes/edge/tests/json.spec.ts +134 -0
- package/src/routes/management/tests/management.spec.ts +66 -0
- package/src/server.ts +1 -1
- package/src/shared/screenshot.http.ts +1 -1
- package/src/shim.spec.ts +18 -0
- package/src/shim.ts +15 -1
- package/src/types.ts +2 -0
- package/static/docs/swagger.json +4 -1
- package/static/docs/swagger.min.json +4 -1
- package/static/function/client.js +86 -92
- package/static/function/index.html +86 -92
- package/build/routes/chrome/tests/json-version.spec.js +0 -37
- package/build/routes/chromium/tests/json-version.spec.js +0 -37
- package/build/routes/edge/tests/json-version.spec.js +0 -37
- package/src/routes/chrome/tests/json-version.spec.ts +0 -52
- package/src/routes/chromium/tests/json-version.spec.ts +0 -52
- package/src/routes/edge/tests/json-version.spec.ts +0 -52
- /package/build/routes/chrome/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
- /package/build/routes/chromium/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
- /package/build/routes/edge/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Browserless, Config, Metrics } from '@browserless.io/browserless';
|
|
2
|
+
import { expect } from 'chai';
|
|
3
|
+
describe('/json/ API', function () {
|
|
4
|
+
let browserless;
|
|
5
|
+
const start = ({ config = new Config(), metrics = new Metrics(), } = {}) => {
|
|
6
|
+
browserless = new Browserless({ config, metrics });
|
|
7
|
+
return browserless.start();
|
|
8
|
+
};
|
|
9
|
+
afterEach(async () => {
|
|
10
|
+
await browserless.stop();
|
|
11
|
+
});
|
|
12
|
+
it('allows requests to /json/version', async () => {
|
|
13
|
+
const config = new Config();
|
|
14
|
+
config.setToken('browserless');
|
|
15
|
+
const metrics = new Metrics();
|
|
16
|
+
await start({ config, metrics });
|
|
17
|
+
const res = await fetch('http://localhost:3000/json/version?token=browserless');
|
|
18
|
+
const resJSON = await res.json();
|
|
19
|
+
[
|
|
20
|
+
'Browser',
|
|
21
|
+
'Protocol-Version',
|
|
22
|
+
'User-Agent',
|
|
23
|
+
'V8-Version',
|
|
24
|
+
'WebKit-Version',
|
|
25
|
+
'webSocketDebuggerUrl',
|
|
26
|
+
'Debugger-Version',
|
|
27
|
+
].forEach((k) => expect(resJSON).to.haveOwnProperty(k));
|
|
28
|
+
});
|
|
29
|
+
it('rejects unauthorized requests to /json/version', async () => {
|
|
30
|
+
const config = new Config();
|
|
31
|
+
config.setToken('browserless');
|
|
32
|
+
const metrics = new Metrics();
|
|
33
|
+
await start({ config, metrics });
|
|
34
|
+
const res = await fetch('http://localhost:3000/json/version?token=imabadboi');
|
|
35
|
+
expect(res.status).to.equal(401);
|
|
36
|
+
});
|
|
37
|
+
it('rejects unauthorized requests to /json/list', async () => {
|
|
38
|
+
const config = new Config();
|
|
39
|
+
config.setToken('browserless');
|
|
40
|
+
const metrics = new Metrics();
|
|
41
|
+
await start({ config, metrics });
|
|
42
|
+
const res = await fetch('http://localhost:3000/json/list?token=imabadboi');
|
|
43
|
+
expect(res.status).to.equal(401);
|
|
44
|
+
});
|
|
45
|
+
it('allows requests to /json/protocol', async () => {
|
|
46
|
+
const config = new Config();
|
|
47
|
+
config.setToken('browserless');
|
|
48
|
+
const metrics = new Metrics();
|
|
49
|
+
await start({ config, metrics });
|
|
50
|
+
const res = await fetch('http://localhost:3000/json/protocol?token=browserless');
|
|
51
|
+
expect(res.status).to.equal(200);
|
|
52
|
+
const resJSON = await res.json();
|
|
53
|
+
expect(resJSON).to.be.an('object');
|
|
54
|
+
expect(resJSON).to.haveOwnProperty('version');
|
|
55
|
+
expect(resJSON).to.haveOwnProperty('domains');
|
|
56
|
+
});
|
|
57
|
+
it('rejects unauthorized requests to /json/protocol', async () => {
|
|
58
|
+
const config = new Config();
|
|
59
|
+
config.setToken('browserless');
|
|
60
|
+
const metrics = new Metrics();
|
|
61
|
+
await start({ config, metrics });
|
|
62
|
+
const res = await fetch('http://localhost:3000/json/protocol?token=imabadboi');
|
|
63
|
+
expect(res.status).to.equal(401);
|
|
64
|
+
});
|
|
65
|
+
it('allows requests to PUT /json/new', async () => {
|
|
66
|
+
const config = new Config();
|
|
67
|
+
config.setToken('browserless');
|
|
68
|
+
const metrics = new Metrics();
|
|
69
|
+
await start({ config, metrics });
|
|
70
|
+
const res = await fetch('http://localhost:3000/json/new?token=browserless', {
|
|
71
|
+
method: 'PUT',
|
|
72
|
+
});
|
|
73
|
+
expect(res.status).to.equal(200);
|
|
74
|
+
const resJSON = await res.json();
|
|
75
|
+
const keys = [
|
|
76
|
+
'description',
|
|
77
|
+
'devtoolsFrontendUrl',
|
|
78
|
+
'id',
|
|
79
|
+
'title',
|
|
80
|
+
'type',
|
|
81
|
+
'url',
|
|
82
|
+
'webSocketDebuggerUrl',
|
|
83
|
+
];
|
|
84
|
+
keys.forEach((k) => expect(resJSON).to.haveOwnProperty(k));
|
|
85
|
+
expect(resJSON.type).to.equal('page');
|
|
86
|
+
expect(resJSON.title).to.equal('New Tab');
|
|
87
|
+
expect(resJSON.url).to.equal('about:blank');
|
|
88
|
+
expect(resJSON.description).to.equal('');
|
|
89
|
+
});
|
|
90
|
+
it('rejects unauthorized requests to PUT /json/new', async () => {
|
|
91
|
+
const config = new Config();
|
|
92
|
+
config.setToken('browserless');
|
|
93
|
+
const metrics = new Metrics();
|
|
94
|
+
await start({ config, metrics });
|
|
95
|
+
const res = await fetch('http://localhost:3000/json/new?token=imabadboi', {
|
|
96
|
+
method: 'PUT',
|
|
97
|
+
});
|
|
98
|
+
expect(res.status).to.equal(401);
|
|
99
|
+
});
|
|
100
|
+
});
|
|
@@ -95,6 +95,50 @@ describe('Management APIs', function () {
|
|
|
95
95
|
expect(r.status).to.equal(404);
|
|
96
96
|
});
|
|
97
97
|
});
|
|
98
|
+
describe('Static Files Serving', () => {
|
|
99
|
+
it('serves docs pages', async () => {
|
|
100
|
+
await start();
|
|
101
|
+
await fetch('http://localhost:3000/docs/index.html?token=6R0W53R135510').then(async (res) => {
|
|
102
|
+
expect(res.status).to.equal(200);
|
|
103
|
+
expect(res.headers.get('content-type')).to.equal('text/html');
|
|
104
|
+
const content = await res.text();
|
|
105
|
+
expect(content).to.include('<title>Browserless Docs</title>');
|
|
106
|
+
});
|
|
107
|
+
await fetch('http://localhost:3000/docs/docs.js?token=6R0W53R135510').then(async (res) => {
|
|
108
|
+
expect(res.status).to.equal(200);
|
|
109
|
+
expect(res.headers.get('content-type')).to.equal('application/javascript');
|
|
110
|
+
const content = await res.text();
|
|
111
|
+
expect(content).to.be.an('string');
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
it('serves swagger.json', async () => {
|
|
115
|
+
await start();
|
|
116
|
+
await fetch('http://localhost:3000/docs/swagger.json?token=6R0W53R135510').then(async (res) => {
|
|
117
|
+
expect(res.status).to.equal(200);
|
|
118
|
+
expect(res.headers.get('content-type')).to.equal('application/json');
|
|
119
|
+
const content = await res.json();
|
|
120
|
+
expect(content).to.be.an('object');
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
it('returns 404 if debugger is disabled', async () => {
|
|
124
|
+
process.env.ENABLE_DEBUGGER = 'false';
|
|
125
|
+
const config = new Config();
|
|
126
|
+
config.setToken('6R0W53R135510');
|
|
127
|
+
// Ensure debugger is not available
|
|
128
|
+
await start({ config });
|
|
129
|
+
await fetch('http://localhost:3000/debugger/some-file.html?token=6R0W53R135510').then(async (res) => {
|
|
130
|
+
expect(res.status).to.equal(404);
|
|
131
|
+
expect(res.headers.get('content-type')).to.equal('text/plain; charset=UTF-8');
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
it('handles requests without authentication token for static files', async () => {
|
|
135
|
+
await start();
|
|
136
|
+
await fetch('http://localhost:3000/docs/index.html').then(async (res) => {
|
|
137
|
+
expect(res.status).to.equal(200);
|
|
138
|
+
expect(res.headers.get('content-type')).to.equal('text/html');
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
});
|
|
98
142
|
it('allows requests to /config', async () => {
|
|
99
143
|
await start();
|
|
100
144
|
await fetch('http://localhost:3000/config?token=6R0W53R135510').then(async (res) => {
|
package/build/server.js
CHANGED
|
@@ -242,7 +242,7 @@ export class HTTPServer extends EventEmitter {
|
|
|
242
242
|
}
|
|
243
243
|
async shutdown() {
|
|
244
244
|
this.logger.info(`HTTP Server is shutting down`);
|
|
245
|
-
await new Promise((r) => this.server
|
|
245
|
+
await new Promise((r) => this.server?.close(r));
|
|
246
246
|
if (this.server) {
|
|
247
247
|
this.server.removeAllListeners();
|
|
248
248
|
}
|
package/build/shim.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { convertIfBase64, safeParse, } from '@browserless.io/browserless';
|
|
2
|
-
const shimParam = ['headless', 'stealth', 'ignoreDefaultArgs', 'slowMo'];
|
|
2
|
+
const shimParam = ['headless', 'stealth', 'ignoreDefaultArgs', 'slowMo', 'ignoreHTTPSErrors'];
|
|
3
3
|
/**
|
|
4
4
|
* Obfuscates the ?token parameter by shifting it to a header instead of a query-parameter.
|
|
5
5
|
*/
|
|
@@ -49,6 +49,16 @@ export function shimLegacyRequests(url) {
|
|
|
49
49
|
launchParams.ignoreHTTPSErrors === undefined) {
|
|
50
50
|
launchParams.ignoreHTTPSErrors = ignoreHTTPSErrors !== 'false';
|
|
51
51
|
}
|
|
52
|
+
// When acceptInsecureCerts is set, ignoreHTTPSErrors is ignored
|
|
53
|
+
if (launchParams.acceptInsecureCerts !== undefined) {
|
|
54
|
+
launchParams.ignoreHTTPSErrors = undefined;
|
|
55
|
+
}
|
|
56
|
+
// When ignoreHTTPSErrors sent, convert it to acceptInsecureCerts
|
|
57
|
+
if (typeof ignoreHTTPSErrors !== 'undefined' &&
|
|
58
|
+
launchParams.acceptInsecureCerts === undefined) {
|
|
59
|
+
launchParams.acceptInsecureCerts = ignoreHTTPSErrors !== 'false';
|
|
60
|
+
launchParams.ignoreHTTPSErrors = undefined;
|
|
61
|
+
}
|
|
52
62
|
if (typeof ignoreDefaultArgs !== 'undefined' &&
|
|
53
63
|
launchParams.ignoreDefaultArgs === undefined) {
|
|
54
64
|
const parsed = typeof ignoreDefaultArgs === 'string' && ignoreDefaultArgs.includes(',')
|
package/build/shim.spec.js
CHANGED
|
@@ -125,6 +125,20 @@ describe('Request Shimming', () => {
|
|
|
125
125
|
expect(decodeURIComponent(shimmed.href)).to.equal(final);
|
|
126
126
|
});
|
|
127
127
|
});
|
|
128
|
+
describe('insecure certs', () => {
|
|
129
|
+
it('converts ignoreHTTPSErrors to acceptInsecureCerts', () => {
|
|
130
|
+
const url = 'wss://localhost?ignoreHTTPSErrors';
|
|
131
|
+
const final = 'wss://localhost/?launch={"acceptInsecureCerts":true}';
|
|
132
|
+
const shimmed = shimLegacyRequests(new URL(url));
|
|
133
|
+
expect(decodeURIComponent(shimmed.href)).to.equal(final);
|
|
134
|
+
});
|
|
135
|
+
it('acceptInsecureCerts takes precedence over ignoreHTTPSErrors', () => {
|
|
136
|
+
const url = 'wss://localhost?ignoreHTTPSErrors&launch={"acceptInsecureCerts":false}';
|
|
137
|
+
const final = 'wss://localhost/?launch={"acceptInsecureCerts":false}';
|
|
138
|
+
const shimmed = shimLegacyRequests(new URL(url));
|
|
139
|
+
expect(decodeURIComponent(shimmed.href)).to.equal(final);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
128
142
|
describe('token shimming', () => {
|
|
129
143
|
it('converts token query parameters to an authorization header', () => {
|
|
130
144
|
const url = 'wss://localhost?token=12345';
|
package/build/types.d.ts
CHANGED
|
@@ -262,7 +262,9 @@ export interface CDPLaunchOptions extends BrowserlessLaunch {
|
|
|
262
262
|
dumpio?: boolean;
|
|
263
263
|
headless?: boolean | 'shell';
|
|
264
264
|
ignoreDefaultArgs?: boolean | string[];
|
|
265
|
+
/** @deprecated use acceptInsecureCerts field instead */
|
|
265
266
|
ignoreHTTPSErrors?: boolean;
|
|
267
|
+
acceptInsecureCerts?: boolean;
|
|
266
268
|
slowMo?: number;
|
|
267
269
|
stealth?: boolean;
|
|
268
270
|
timeout?: number;
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
"description": "Short description for a checkbox in the options page"
|
|
265
265
|
},
|
|
266
266
|
"settingsBackupRestoreLabel": {
|
|
267
|
-
"message": "
|
|
267
|
+
"message": "Gwared",
|
|
268
268
|
"description": "The header text for the back up/restore section"
|
|
269
269
|
},
|
|
270
270
|
"settingsBackupRestoreSummary": {
|
|
@@ -376,7 +376,7 @@
|
|
|
376
376
|
"description": "Text for buttons used to export content"
|
|
377
377
|
},
|
|
378
378
|
"backupButton": {
|
|
379
|
-
"message": "
|
|
379
|
+
"message": "Gwarediñ…",
|
|
380
380
|
"description": "Text for buttons used to back up content"
|
|
381
381
|
},
|
|
382
382
|
"restoreButton": {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"description": "appears as tab name in dashboard"
|
|
21
21
|
},
|
|
22
22
|
"customFiltersPageName": {
|
|
23
|
-
"message": "
|
|
23
|
+
"message": "Vlastní filtry",
|
|
24
24
|
"description": "appears as tab name in dashboard"
|
|
25
25
|
},
|
|
26
26
|
"developPageName": {
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"description": "Text label heading the import/export area of custom filters"
|
|
93
93
|
},
|
|
94
94
|
"customFiltersImportTextareaPlaceholder": {
|
|
95
|
-
"message": "
|
|
95
|
+
"message": "Vložte sem konkrétní kosmetické filtry, které chcete přidat",
|
|
96
96
|
"description": "Placeholder text which describes the purpose of the textarea widget"
|
|
97
97
|
},
|
|
98
98
|
"aboutChangelog": {
|
|
@@ -264,15 +264,15 @@
|
|
|
264
264
|
"description": "Short description for a checkbox in the options page"
|
|
265
265
|
},
|
|
266
266
|
"settingsBackupRestoreLabel": {
|
|
267
|
-
"message": "
|
|
267
|
+
"message": "Záloha",
|
|
268
268
|
"description": "The header text for the back up/restore section"
|
|
269
269
|
},
|
|
270
270
|
"settingsBackupRestoreSummary": {
|
|
271
|
-
"message": "
|
|
271
|
+
"message": "Zálohování vlastních nastavení do souboru nebo obnovení vlastních nastavení ze souboru.",
|
|
272
272
|
"description": "A summary description of the back up/restore section."
|
|
273
273
|
},
|
|
274
274
|
"settingsBackupRestoreLegend": {
|
|
275
|
-
"message": "
|
|
275
|
+
"message": "Obnovení přepíše všechna vaše aktuální vlastní nastavení.",
|
|
276
276
|
"description": "Important information about the back up/restore section."
|
|
277
277
|
},
|
|
278
278
|
"findListsPlaceholder": {
|
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
"description": "Text for buttons used to revert changes"
|
|
365
365
|
},
|
|
366
366
|
"addButton": {
|
|
367
|
-
"message": "
|
|
367
|
+
"message": "Přidat",
|
|
368
368
|
"description": "Text for buttons used to add content"
|
|
369
369
|
},
|
|
370
370
|
"importAndAppendButton": {
|
|
@@ -376,11 +376,11 @@
|
|
|
376
376
|
"description": "Text for buttons used to export content"
|
|
377
377
|
},
|
|
378
378
|
"backupButton": {
|
|
379
|
-
"message": "
|
|
379
|
+
"message": "Zálohovat…",
|
|
380
380
|
"description": "Text for buttons used to back up content"
|
|
381
381
|
},
|
|
382
382
|
"restoreButton": {
|
|
383
|
-
"message": "
|
|
383
|
+
"message": "Obnovit…",
|
|
384
384
|
"description": "Text for buttons used to restore content"
|
|
385
385
|
},
|
|
386
386
|
"dnrRulesWarning": {
|
|
@@ -264,15 +264,15 @@
|
|
|
264
264
|
"description": "Short description for a checkbox in the options page"
|
|
265
265
|
},
|
|
266
266
|
"settingsBackupRestoreLabel": {
|
|
267
|
-
"message": "
|
|
267
|
+
"message": "Sikkerhedskopiér",
|
|
268
268
|
"description": "The header text for the back up/restore section"
|
|
269
269
|
},
|
|
270
270
|
"settingsBackupRestoreSummary": {
|
|
271
|
-
"message": "
|
|
271
|
+
"message": "Sikkerhedskopiér tilpassede indstillinger til en fil, eller gendan tilpassede indstillinger fra en fil.",
|
|
272
272
|
"description": "A summary description of the back up/restore section."
|
|
273
273
|
},
|
|
274
274
|
"settingsBackupRestoreLegend": {
|
|
275
|
-
"message": "
|
|
275
|
+
"message": "Gendannelse overskriver alle nuværende tilpassede indstillinger.",
|
|
276
276
|
"description": "Important information about the back up/restore section."
|
|
277
277
|
},
|
|
278
278
|
"findListsPlaceholder": {
|
|
@@ -376,11 +376,11 @@
|
|
|
376
376
|
"description": "Text for buttons used to export content"
|
|
377
377
|
},
|
|
378
378
|
"backupButton": {
|
|
379
|
-
"message": "
|
|
379
|
+
"message": "Sikkerhedskopiér…",
|
|
380
380
|
"description": "Text for buttons used to back up content"
|
|
381
381
|
},
|
|
382
382
|
"restoreButton": {
|
|
383
|
-
"message": "
|
|
383
|
+
"message": "Gendan…",
|
|
384
384
|
"description": "Text for buttons used to restore content"
|
|
385
385
|
},
|
|
386
386
|
"dnrRulesWarning": {
|
|
@@ -264,15 +264,15 @@
|
|
|
264
264
|
"description": "Short description for a checkbox in the options page"
|
|
265
265
|
},
|
|
266
266
|
"settingsBackupRestoreLabel": {
|
|
267
|
-
"message": "
|
|
267
|
+
"message": "Respaldar",
|
|
268
268
|
"description": "The header text for the back up/restore section"
|
|
269
269
|
},
|
|
270
270
|
"settingsBackupRestoreSummary": {
|
|
271
|
-
"message": "Haz
|
|
271
|
+
"message": "Haz un respaldo de tu configuración personalizada en un archivo o restaura tu configuración personalizada desde uno.",
|
|
272
272
|
"description": "A summary description of the back up/restore section."
|
|
273
273
|
},
|
|
274
274
|
"settingsBackupRestoreLegend": {
|
|
275
|
-
"message": "
|
|
275
|
+
"message": "La restauración sobrescribirá toda tu configuración personalizada actual.",
|
|
276
276
|
"description": "Important information about the back up/restore section."
|
|
277
277
|
},
|
|
278
278
|
"findListsPlaceholder": {
|
|
@@ -376,7 +376,7 @@
|
|
|
376
376
|
"description": "Text for buttons used to export content"
|
|
377
377
|
},
|
|
378
378
|
"backupButton": {
|
|
379
|
-
"message": "
|
|
379
|
+
"message": "Respaldar…",
|
|
380
380
|
"description": "Text for buttons used to back up content"
|
|
381
381
|
},
|
|
382
382
|
"restoreButton": {
|
|
@@ -264,15 +264,15 @@
|
|
|
264
264
|
"description": "Short description for a checkbox in the options page"
|
|
265
265
|
},
|
|
266
266
|
"settingsBackupRestoreLabel": {
|
|
267
|
-
"message": "
|
|
267
|
+
"message": "Copia de apoio",
|
|
268
268
|
"description": "The header text for the back up/restore section"
|
|
269
269
|
},
|
|
270
270
|
"settingsBackupRestoreSummary": {
|
|
271
|
-
"message": "
|
|
271
|
+
"message": "Garda nun ficheiro a túa configuración ou restablece os axustes desde un ficheiro.",
|
|
272
272
|
"description": "A summary description of the back up/restore section."
|
|
273
273
|
},
|
|
274
274
|
"settingsBackupRestoreLegend": {
|
|
275
|
-
"message": "
|
|
275
|
+
"message": "Ao restablecer vas sobrescribir a configuración actual.",
|
|
276
276
|
"description": "Important information about the back up/restore section."
|
|
277
277
|
},
|
|
278
278
|
"findListsPlaceholder": {
|
|
@@ -376,11 +376,11 @@
|
|
|
376
376
|
"description": "Text for buttons used to export content"
|
|
377
377
|
},
|
|
378
378
|
"backupButton": {
|
|
379
|
-
"message": "
|
|
379
|
+
"message": "Gardar axustes…",
|
|
380
380
|
"description": "Text for buttons used to back up content"
|
|
381
381
|
},
|
|
382
382
|
"restoreButton": {
|
|
383
|
-
"message": "
|
|
383
|
+
"message": "Restablecer…",
|
|
384
384
|
"description": "Text for buttons used to restore content"
|
|
385
385
|
},
|
|
386
386
|
"dnrRulesWarning": {
|
|
@@ -264,15 +264,15 @@
|
|
|
264
264
|
"description": "Short description for a checkbox in the options page"
|
|
265
265
|
},
|
|
266
266
|
"settingsBackupRestoreLabel": {
|
|
267
|
-
"message": "
|
|
267
|
+
"message": "მარქაფი",
|
|
268
268
|
"description": "The header text for the back up/restore section"
|
|
269
269
|
},
|
|
270
270
|
"settingsBackupRestoreSummary": {
|
|
271
|
-
"message": "
|
|
271
|
+
"message": "დაამარქაფეთ მითითებული პარამეტრები ფაილში ან აღადგინეთ ფაილიდან.",
|
|
272
272
|
"description": "A summary description of the back up/restore section."
|
|
273
273
|
},
|
|
274
274
|
"settingsBackupRestoreLegend": {
|
|
275
|
-
"message": "
|
|
275
|
+
"message": "აღდგენისას ყველა მიმდინარე პარამეტრი ჩანაცვლდება.",
|
|
276
276
|
"description": "Important information about the back up/restore section."
|
|
277
277
|
},
|
|
278
278
|
"findListsPlaceholder": {
|
|
@@ -376,11 +376,11 @@
|
|
|
376
376
|
"description": "Text for buttons used to export content"
|
|
377
377
|
},
|
|
378
378
|
"backupButton": {
|
|
379
|
-
"message": "
|
|
379
|
+
"message": "დამარქფება…",
|
|
380
380
|
"description": "Text for buttons used to back up content"
|
|
381
381
|
},
|
|
382
382
|
"restoreButton": {
|
|
383
|
-
"message": "
|
|
383
|
+
"message": "აღდგენა…",
|
|
384
384
|
"description": "Text for buttons used to restore content"
|
|
385
385
|
},
|
|
386
386
|
"dnrRulesWarning": {
|
|
@@ -264,11 +264,11 @@
|
|
|
264
264
|
"description": "Short description for a checkbox in the options page"
|
|
265
265
|
},
|
|
266
266
|
"settingsBackupRestoreLabel": {
|
|
267
|
-
"message": "
|
|
267
|
+
"message": "Резервная копия",
|
|
268
268
|
"description": "The header text for the back up/restore section"
|
|
269
269
|
},
|
|
270
270
|
"settingsBackupRestoreSummary": {
|
|
271
|
-
"message": "Создайте резервную копию
|
|
271
|
+
"message": "Создайте резервную копию пользовательских настроек в файле, или восстановите настройки из файла.",
|
|
272
272
|
"description": "A summary description of the back up/restore section."
|
|
273
273
|
},
|
|
274
274
|
"settingsBackupRestoreLegend": {
|
|
@@ -376,7 +376,7 @@
|
|
|
376
376
|
"description": "Text for buttons used to export content"
|
|
377
377
|
},
|
|
378
378
|
"backupButton": {
|
|
379
|
-
"message": "Создать
|
|
379
|
+
"message": "Создать рез. копию…",
|
|
380
380
|
"description": "Text for buttons used to back up content"
|
|
381
381
|
},
|
|
382
382
|
"restoreButton": {
|
|
@@ -264,15 +264,15 @@
|
|
|
264
264
|
"description": "Short description for a checkbox in the options page"
|
|
265
265
|
},
|
|
266
266
|
"settingsBackupRestoreLabel": {
|
|
267
|
-
"message": "
|
|
267
|
+
"message": "Rezervoj",
|
|
268
268
|
"description": "The header text for the back up/restore section"
|
|
269
269
|
},
|
|
270
270
|
"settingsBackupRestoreSummary": {
|
|
271
|
-
"message": "
|
|
271
|
+
"message": "Krijoni kopje rezervë të parametrave të personalizuara në një skedar ose restauroni parametrat e personalizuara nga një skedar.",
|
|
272
272
|
"description": "A summary description of the back up/restore section."
|
|
273
273
|
},
|
|
274
274
|
"settingsBackupRestoreLegend": {
|
|
275
|
-
"message": "
|
|
275
|
+
"message": "Restaurimi do të mbishkruajë të gjitha parametrat tuaja aktuale të personalizuara.",
|
|
276
276
|
"description": "Important information about the back up/restore section."
|
|
277
277
|
},
|
|
278
278
|
"findListsPlaceholder": {
|
|
@@ -376,11 +376,11 @@
|
|
|
376
376
|
"description": "Text for buttons used to export content"
|
|
377
377
|
},
|
|
378
378
|
"backupButton": {
|
|
379
|
-
"message": "
|
|
379
|
+
"message": "Rezervoj…",
|
|
380
380
|
"description": "Text for buttons used to back up content"
|
|
381
381
|
},
|
|
382
382
|
"restoreButton": {
|
|
383
|
-
"message": "
|
|
383
|
+
"message": "Rivendos…",
|
|
384
384
|
"description": "Text for buttons used to restore content"
|
|
385
385
|
},
|
|
386
386
|
"dnrRulesWarning": {
|
|
@@ -264,15 +264,15 @@
|
|
|
264
264
|
"description": "Short description for a checkbox in the options page"
|
|
265
265
|
},
|
|
266
266
|
"settingsBackupRestoreLabel": {
|
|
267
|
-
"message": "
|
|
267
|
+
"message": "Säkerhetskopiering",
|
|
268
268
|
"description": "The header text for the back up/restore section"
|
|
269
269
|
},
|
|
270
270
|
"settingsBackupRestoreSummary": {
|
|
271
|
-
"message": "
|
|
271
|
+
"message": "Säkerhetskopiera dina anpassade inställningar till en fil, eller återställ dina anpassade inställningar från en fil.",
|
|
272
272
|
"description": "A summary description of the back up/restore section."
|
|
273
273
|
},
|
|
274
274
|
"settingsBackupRestoreLegend": {
|
|
275
|
-
"message": "
|
|
275
|
+
"message": "Återställningen kommer att skriva över alla dina nuvarande anpassade inställningar.",
|
|
276
276
|
"description": "Important information about the back up/restore section."
|
|
277
277
|
},
|
|
278
278
|
"findListsPlaceholder": {
|
|
@@ -376,11 +376,11 @@
|
|
|
376
376
|
"description": "Text for buttons used to export content"
|
|
377
377
|
},
|
|
378
378
|
"backupButton": {
|
|
379
|
-
"message": "
|
|
379
|
+
"message": "Säkerhetskopiera…",
|
|
380
380
|
"description": "Text for buttons used to back up content"
|
|
381
381
|
},
|
|
382
382
|
"restoreButton": {
|
|
383
|
-
"message": "
|
|
383
|
+
"message": "Återställ…",
|
|
384
384
|
"description": "Text for buttons used to restore content"
|
|
385
385
|
},
|
|
386
386
|
"dnrRulesWarning": {
|
|
@@ -264,15 +264,15 @@
|
|
|
264
264
|
"description": "Short description for a checkbox in the options page"
|
|
265
265
|
},
|
|
266
266
|
"settingsBackupRestoreLabel": {
|
|
267
|
-
"message": "
|
|
267
|
+
"message": "备份",
|
|
268
268
|
"description": "The header text for the back up/restore section"
|
|
269
269
|
},
|
|
270
270
|
"settingsBackupRestoreSummary": {
|
|
271
|
-
"message": "
|
|
271
|
+
"message": "将自定义设置备份到文件,或从文件还原自定义设置。",
|
|
272
272
|
"description": "A summary description of the back up/restore section."
|
|
273
273
|
},
|
|
274
274
|
"settingsBackupRestoreLegend": {
|
|
275
|
-
"message": "
|
|
275
|
+
"message": "还原将覆盖当前所有自定义设置。",
|
|
276
276
|
"description": "Important information about the back up/restore section."
|
|
277
277
|
},
|
|
278
278
|
"findListsPlaceholder": {
|
|
@@ -376,11 +376,11 @@
|
|
|
376
376
|
"description": "Text for buttons used to export content"
|
|
377
377
|
},
|
|
378
378
|
"backupButton": {
|
|
379
|
-
"message": "
|
|
379
|
+
"message": "备份…",
|
|
380
380
|
"description": "Text for buttons used to back up content"
|
|
381
381
|
},
|
|
382
382
|
"restoreButton": {
|
|
383
|
-
"message": "
|
|
383
|
+
"message": "还原…",
|
|
384
384
|
"description": "Text for buttons used to restore content"
|
|
385
385
|
},
|
|
386
386
|
"dnrRulesWarning": {
|
|
@@ -90,6 +90,12 @@ body[data-platform="safari"] [data-platform-exclude="safari"] {
|
|
|
90
90
|
display: none;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
section[data-pane="settings"] p:has(button) {
|
|
94
|
+
display: flex;
|
|
95
|
+
flex-wrap: wrap;
|
|
96
|
+
gap: 1em;
|
|
97
|
+
}
|
|
98
|
+
|
|
93
99
|
body:not(.committing) #commit-spinner {
|
|
94
100
|
display: none;
|
|
95
101
|
}
|