@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.
Files changed (338) hide show
  1. package/build/browsers/index.js +15 -0
  2. package/build/routes/chrome/http/content.post.query.json +3 -0
  3. package/build/routes/chrome/http/download.post.query.json +3 -0
  4. package/build/routes/chrome/http/function.post.query.json +3 -0
  5. package/build/routes/chrome/http/pdf.post.query.json +3 -0
  6. package/build/routes/chrome/http/performance.post.query.json +3 -0
  7. package/build/routes/chrome/http/scrape.post.query.json +3 -0
  8. package/build/routes/chrome/http/screenshot.post.query.json +3 -0
  9. package/build/routes/chrome/tests/content.spec.js +21 -0
  10. package/build/routes/chrome/tests/json.spec.js +100 -0
  11. package/build/routes/chrome/ws/browser.query.json +3 -0
  12. package/build/routes/chrome/ws/cdp.query.json +3 -0
  13. package/build/routes/chrome/ws/function-connect.query.json +3 -0
  14. package/build/routes/chrome/ws/page.query.json +3 -0
  15. package/build/routes/chromium/http/content.post.query.json +3 -0
  16. package/build/routes/chromium/http/download.post.query.json +3 -0
  17. package/build/routes/chromium/http/function.post.query.json +3 -0
  18. package/build/routes/chromium/http/pdf.post.query.json +3 -0
  19. package/build/routes/chromium/http/performance.post.query.json +3 -0
  20. package/build/routes/chromium/http/scrape.post.query.json +3 -0
  21. package/build/routes/chromium/http/screenshot.post.query.json +3 -0
  22. package/build/routes/chromium/tests/content.spec.js +21 -0
  23. package/build/routes/chromium/tests/function.spec.js +27 -0
  24. package/build/routes/chromium/tests/json.spec.js +100 -0
  25. package/build/routes/chromium/ws/browser.query.json +3 -0
  26. package/build/routes/chromium/ws/cdp.query.json +3 -0
  27. package/build/routes/chromium/ws/function-connect.query.json +3 -0
  28. package/build/routes/chromium/ws/page.query.json +3 -0
  29. package/build/routes/edge/http/content.post.query.json +3 -0
  30. package/build/routes/edge/http/download.post.query.json +3 -0
  31. package/build/routes/edge/http/function.post.query.json +3 -0
  32. package/build/routes/edge/http/pdf.post.query.json +3 -0
  33. package/build/routes/edge/http/performance.post.query.json +3 -0
  34. package/build/routes/edge/http/scrape.post.query.json +3 -0
  35. package/build/routes/edge/http/screenshot.post.query.json +3 -0
  36. package/build/routes/edge/tests/content.spec.js +21 -0
  37. package/build/routes/edge/tests/json.spec.js +100 -0
  38. package/build/routes/edge/ws/browser.query.json +3 -0
  39. package/build/routes/edge/ws/cdp.query.json +3 -0
  40. package/build/routes/edge/ws/function-connect.query.json +3 -0
  41. package/build/routes/edge/ws/page.query.json +3 -0
  42. package/build/routes/management/http/kill.get.query.json +3 -0
  43. package/build/routes/management/http/sessions.get.query.json +3 -0
  44. package/build/routes/management/tests/management.spec.js +44 -0
  45. package/build/server.js +1 -1
  46. package/build/shim.js +11 -1
  47. package/build/shim.spec.js +14 -0
  48. package/build/types.d.ts +2 -0
  49. package/extensions/ublocklite/_locales/br_FR/messages.json +2 -2
  50. package/extensions/ublocklite/_locales/cs/messages.json +8 -8
  51. package/extensions/ublocklite/_locales/da/messages.json +5 -5
  52. package/extensions/ublocklite/_locales/es/messages.json +4 -4
  53. package/extensions/ublocklite/_locales/gl/messages.json +5 -5
  54. package/extensions/ublocklite/_locales/ka/messages.json +5 -5
  55. package/extensions/ublocklite/_locales/ru/messages.json +3 -3
  56. package/extensions/ublocklite/_locales/sq/messages.json +5 -5
  57. package/extensions/ublocklite/_locales/sv/messages.json +5 -5
  58. package/extensions/ublocklite/_locales/zh_CN/messages.json +5 -5
  59. package/extensions/ublocklite/css/settings.css +6 -0
  60. package/extensions/ublocklite/dashboard.html +1 -1
  61. package/extensions/ublocklite/js/background.js +10 -6
  62. package/extensions/ublocklite/js/dashboard.js +4 -5
  63. package/extensions/ublocklite/js/jsonpath.js +25 -10
  64. package/extensions/ublocklite/js/report.js +2 -4
  65. package/extensions/ublocklite/js/troubleshooting.js +30 -18
  66. package/extensions/ublocklite/manifest.json +2 -2
  67. package/extensions/ublocklite/rulesets/main/adguard-mobile.json +1 -1
  68. package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +1 -1
  69. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +6 -4
  70. package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +2 -1
  71. package/extensions/ublocklite/rulesets/main/chn-0.json +5 -3
  72. package/extensions/ublocklite/rulesets/main/easylist.json +10 -13
  73. package/extensions/ublocklite/rulesets/main/easyprivacy.json +8 -9
  74. package/extensions/ublocklite/rulesets/main/fin-0.json +3 -1
  75. package/extensions/ublocklite/rulesets/main/ita-0.json +2 -0
  76. package/extensions/ublocklite/rulesets/main/jpn-1.json +8 -10
  77. package/extensions/ublocklite/rulesets/main/nor-0.json +2 -2
  78. package/extensions/ublocklite/rulesets/main/pol-0.json +1 -1
  79. package/extensions/ublocklite/rulesets/main/rus-1.json +2 -1
  80. package/extensions/ublocklite/rulesets/main/spa-1.json +6 -1
  81. package/extensions/ublocklite/rulesets/main/swe-1.json +5 -5
  82. package/extensions/ublocklite/rulesets/main/tur-0.json +2 -2
  83. package/extensions/ublocklite/rulesets/main/ublock-badware.json +4 -2
  84. package/extensions/ublocklite/rulesets/main/ublock-filters.json +25 -25
  85. package/extensions/ublocklite/rulesets/main/ukr-0.json +2 -2
  86. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +610 -80
  87. package/extensions/ublocklite/rulesets/main/vie-1.json +20 -14
  88. package/extensions/ublocklite/rulesets/regex/easylist.json +1 -6
  89. package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
  90. package/extensions/ublocklite/rulesets/regex/ublock-badware.json +3 -4
  91. package/extensions/ublocklite/rulesets/regex/ublock-filters.json +11 -9
  92. package/extensions/ublocklite/rulesets/ruleset-details.json +120 -120
  93. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +2 -2
  94. package/extensions/ublocklite/rulesets/scripting/generic/ita-0.js +1 -1
  95. package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +2 -2
  96. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
  97. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +2 -2
  98. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
  99. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +3 -3
  100. package/extensions/ublocklite/rulesets/scripting/procedural/fin-0.js +1 -1
  101. package/extensions/ublocklite/rulesets/scripting/procedural/grc-0.js +3 -3
  102. package/extensions/ublocklite/rulesets/scripting/procedural/ind-0.js +3 -3
  103. package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
  104. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  105. package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
  106. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +2 -2
  107. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
  108. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.addEventListener-defuser.js +7 -3
  109. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.prevent-setTimeout.js +5 -1
  110. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.addEventListener-defuser.js +5 -1
  111. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-requestAnimationFrame.js +5 -1
  112. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-setTimeout.js +5 -1
  113. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  114. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  115. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
  116. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  117. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.addEventListener-defuser.js +5 -1
  118. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.addEventListener-defuser.js +5 -1
  119. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.json-prune.js +2 -2
  120. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.prevent-setInterval.js +5 -1
  121. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.prevent-setTimeout.js +5 -1
  122. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +5 -1
  123. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.noeval-if.js +5 -1
  124. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-fetch.js +5 -1
  125. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setInterval.js +5 -1
  126. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +5 -1
  127. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-window-open.js +5 -1
  128. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-class.js +2 -2
  129. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-argument.js +5 -1
  130. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-outbound-text.js +5 -1
  131. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-suppress-native-method.js +5 -1
  132. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +5 -1
  133. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.evaldata-prune.js +5 -1
  134. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.noeval-if.js +5 -1
  135. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +6 -2
  136. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setInterval.js +5 -1
  137. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +5 -1
  138. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-window-open.js +5 -1
  139. package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.addEventListener-defuser.js +5 -1
  140. package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.prevent-setInterval.js +5 -1
  141. package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.prevent-setTimeout.js +5 -1
  142. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.prevent-fetch.js +5 -1
  143. package/extensions/ublocklite/rulesets/scripting/scriptlet/est-0.addEventListener-defuser.js +5 -1
  144. package/extensions/ublocklite/rulesets/scripting/scriptlet/fin-0.prevent-setTimeout.js +5 -1
  145. package/extensions/ublocklite/rulesets/scripting/scriptlet/fin-0.remove-node-text.js +449 -0
  146. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.addEventListener-defuser.js +5 -1
  147. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-fetch.js +5 -1
  148. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-requestAnimationFrame.js +5 -1
  149. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setInterval.js +5 -1
  150. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setTimeout.js +5 -1
  151. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-window-open.js +5 -1
  152. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.addEventListener-defuser.js +5 -1
  153. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.prevent-setTimeout.js +5 -1
  154. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.prevent-window-open.js +5 -1
  155. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.addEventListener-defuser.js +5 -1
  156. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.noeval-if.js +5 -1
  157. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-fetch.js +5 -1
  158. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-setTimeout.js +5 -1
  159. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-window-open.js +5 -1
  160. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.addEventListener-defuser.js +5 -1
  161. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +5 -1
  162. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-setTimeout.js +5 -1
  163. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-window-open.js +5 -1
  164. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.addEventListener-defuser.js +5 -1
  165. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +5 -1
  166. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-setTimeout.js +5 -1
  167. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-window-open.js +5 -1
  168. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.addEventListener-defuser.js +5 -1
  169. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.json-prune.js +2 -2
  170. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.noeval-if.js +5 -1
  171. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +5 -1
  172. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-setInterval.js +5 -1
  173. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-setTimeout.js +5 -1
  174. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-window-open.js +5 -1
  175. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.addEventListener-defuser.js +5 -1
  176. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +5 -1
  177. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setInterval.js +5 -1
  178. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setTimeout.js +5 -1
  179. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-window-open.js +5 -1
  180. package/extensions/ublocklite/rulesets/scripting/scriptlet/ltu-0.prevent-setTimeout.js +5 -1
  181. package/extensions/ublocklite/rulesets/scripting/scriptlet/ltu-0.prevent-window-open.js +5 -1
  182. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.addEventListener-defuser.js +5 -1
  183. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-fetch.js +5 -1
  184. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-setTimeout.js +5 -1
  185. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.addEventListener-defuser.js +5 -1
  186. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-fetch.js +5 -1
  187. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-setTimeout.js +5 -1
  188. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.addEventListener-defuser.js +5 -1
  189. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.noeval-if.js +5 -1
  190. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-setInterval.js +5 -1
  191. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-setTimeout.js +5 -1
  192. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-window-open.js +5 -1
  193. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.noeval-if.js +5 -1
  194. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setInterval.js +5 -1
  195. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setTimeout.js +5 -1
  196. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-window-open.js +5 -1
  197. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-stack-trace.js +2 -2
  198. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +8 -4
  199. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.noeval-if.js +5 -1
  200. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +5 -1
  201. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setInterval.js +5 -1
  202. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setTimeout.js +5 -1
  203. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-window-open.js +5 -1
  204. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +3 -3
  205. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +2 -2
  206. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
  207. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.addEventListener-defuser.js +5 -1
  208. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-fetch.js +5 -1
  209. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-setTimeout.js +5 -1
  210. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +5 -1
  211. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.json-prune.js +2 -2
  212. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +5 -1
  213. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +5 -1
  214. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-requestAnimationFrame.js +5 -1
  215. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setInterval.js +5 -1
  216. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.js +5 -1
  217. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +5 -1
  218. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.addEventListener-defuser.js +5 -1
  219. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.noeval-if.js +5 -1
  220. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setInterval.js +5 -1
  221. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setTimeout.js +5 -1
  222. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +5 -1
  223. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +5 -1
  224. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setInterval.js +5 -1
  225. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setTimeout.js +5 -1
  226. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +6 -2
  227. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +1 -1
  228. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.addEventListener-defuser.js +5 -1
  229. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.noeval-if.js +5 -1
  230. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.trusted-replace-argument.js +5 -1
  231. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-json-edit-xhr-request.js +848 -0
  232. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-replace-node-text.js +1 -1
  233. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
  234. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +1 -1
  235. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
  236. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +7 -3
  237. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-fetch-response.js +29 -11
  238. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-xhr-response.js +24 -10
  239. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit.js +29 -11
  240. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
  241. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.jsonl-edit-xhr-response.js +24 -10
  242. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +6 -2
  243. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +7 -3
  244. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +5 -1
  245. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +5 -1
  246. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +7 -3
  247. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +5 -1
  248. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
  249. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +2 -2
  250. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +1 -1
  251. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
  252. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-request.js +941 -0
  253. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-response.js +29 -11
  254. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit.js +29 -11
  255. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-override-element-method.js +5 -1
  256. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-dom-bypass.js +5 -1
  257. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-fetch.js +7 -3
  258. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +5 -1
  259. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +2 -2
  260. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +7 -3
  261. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +6 -2
  262. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-fetch-response.js +29 -11
  263. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-xhr-response.js +24 -10
  264. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.prevent-setTimeout.js +5 -1
  265. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.trusted-prevent-dom-bypass.js +5 -1
  266. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-fetch.js +5 -1
  267. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-window-open.js +5 -1
  268. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
  269. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +1 -1
  270. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.addEventListener-defuser.js +5 -1
  271. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-fetch.js +5 -1
  272. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-setTimeout.js +5 -1
  273. package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
  274. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  275. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +3 -3
  276. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  277. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  278. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  279. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  280. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  281. package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
  282. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  283. package/extensions/ublocklite/rulesets/scripting/specific/grc-0.js +3 -3
  284. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  285. package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
  286. package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +1 -1
  287. package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
  288. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  289. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
  290. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  291. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  292. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  293. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  294. package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
  295. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  296. package/extensions/ublocklite/rulesets/scriptlet-details.json +90 -32
  297. package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +5 -0
  298. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +67 -1
  299. package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
  300. package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +17 -1
  301. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +198 -196
  302. package/extensions/ublocklite/rulesets/strictblock/nor-0.json +1 -1
  303. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +2 -0
  304. package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +532 -530
  305. package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +23 -19
  306. package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +2 -0
  307. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +610 -80
  308. package/extensions/ublocklite/ublock.zip +0 -0
  309. package/package.json +13 -12
  310. package/scripts/install-debugger.js +2 -2
  311. package/src/browsers/index.ts +20 -0
  312. package/src/routes/chrome/tests/content.spec.ts +24 -0
  313. package/src/routes/chrome/tests/json.spec.ts +134 -0
  314. package/src/routes/chromium/tests/content.spec.ts +24 -0
  315. package/src/routes/chromium/tests/function.spec.ts +33 -0
  316. package/src/routes/chromium/tests/json.spec.ts +134 -0
  317. package/src/routes/chromium/tests/scrape.spec.ts +3 -1
  318. package/src/routes/edge/tests/content.spec.ts +24 -0
  319. package/src/routes/edge/tests/json.spec.ts +134 -0
  320. package/src/routes/management/tests/management.spec.ts +66 -0
  321. package/src/server.ts +1 -1
  322. package/src/shared/screenshot.http.ts +1 -1
  323. package/src/shim.spec.ts +18 -0
  324. package/src/shim.ts +15 -1
  325. package/src/types.ts +2 -0
  326. package/static/docs/swagger.json +4 -1
  327. package/static/docs/swagger.min.json +4 -1
  328. package/static/function/client.js +86 -92
  329. package/static/function/index.html +86 -92
  330. package/build/routes/chrome/tests/json-version.spec.js +0 -37
  331. package/build/routes/chromium/tests/json-version.spec.js +0 -37
  332. package/build/routes/edge/tests/json-version.spec.js +0 -37
  333. package/src/routes/chrome/tests/json-version.spec.ts +0 -52
  334. package/src/routes/chromium/tests/json-version.spec.ts +0 -52
  335. package/src/routes/edge/tests/json-version.spec.ts +0 -52
  336. /package/build/routes/chrome/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
  337. /package/build/routes/chromium/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
  338. /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
+ });
@@ -97,6 +97,9 @@
97
97
  "ignoreHTTPSErrors": {
98
98
  "type": "boolean"
99
99
  },
100
+ "acceptInsecureCerts": {
101
+ "type": "boolean"
102
+ },
100
103
  "slowMo": {
101
104
  "type": "number"
102
105
  },
@@ -97,6 +97,9 @@
97
97
  "ignoreHTTPSErrors": {
98
98
  "type": "boolean"
99
99
  },
100
+ "acceptInsecureCerts": {
101
+ "type": "boolean"
102
+ },
100
103
  "slowMo": {
101
104
  "type": "number"
102
105
  },
@@ -97,6 +97,9 @@
97
97
  "ignoreHTTPSErrors": {
98
98
  "type": "boolean"
99
99
  },
100
+ "acceptInsecureCerts": {
101
+ "type": "boolean"
102
+ },
100
103
  "slowMo": {
101
104
  "type": "number"
102
105
  },
@@ -97,6 +97,9 @@
97
97
  "ignoreHTTPSErrors": {
98
98
  "type": "boolean"
99
99
  },
100
+ "acceptInsecureCerts": {
101
+ "type": "boolean"
102
+ },
100
103
  "slowMo": {
101
104
  "type": "number"
102
105
  },
@@ -103,6 +103,9 @@
103
103
  "ignoreHTTPSErrors": {
104
104
  "type": "boolean"
105
105
  },
106
+ "acceptInsecureCerts": {
107
+ "type": "boolean"
108
+ },
106
109
  "slowMo": {
107
110
  "type": "number"
108
111
  },
@@ -100,6 +100,9 @@
100
100
  "ignoreHTTPSErrors": {
101
101
  "type": "boolean"
102
102
  },
103
+ "acceptInsecureCerts": {
104
+ "type": "boolean"
105
+ },
103
106
  "slowMo": {
104
107
  "type": "number"
105
108
  },
@@ -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.close(r));
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(',')
@@ -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": "Backup",
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": "Back up…",
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": "Custom filters",
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": "Paste here specific cosmetic filters to add",
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": "Backup",
267
+ "message": "Záloha",
268
268
  "description": "The header text for the back up/restore section"
269
269
  },
270
270
  "settingsBackupRestoreSummary": {
271
- "message": "Back up your custom settings to a file, or restore your custom settings from a file.",
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": "Restoring will overwrite all your current custom settings.",
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": "Add",
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": "Back up…",
379
+ "message": "Zálohovat…",
380
380
  "description": "Text for buttons used to back up content"
381
381
  },
382
382
  "restoreButton": {
383
- "message": "Restore…",
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": "Backup",
267
+ "message": "Sikkerhedskopiér",
268
268
  "description": "The header text for the back up/restore section"
269
269
  },
270
270
  "settingsBackupRestoreSummary": {
271
- "message": "Back up your custom settings to a file, or restore your custom settings from a file.",
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": "Restoring will overwrite all your current custom settings.",
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": "Back up…",
379
+ "message": "Sikkerhedskopiér…",
380
380
  "description": "Text for buttons used to back up content"
381
381
  },
382
382
  "restoreButton": {
383
- "message": "Restore…",
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": "Copia de seg.",
267
+ "message": "Respaldar",
268
268
  "description": "The header text for the back up/restore section"
269
269
  },
270
270
  "settingsBackupRestoreSummary": {
271
- "message": "Haz una copia de seguridad de tus ajustes personalizados en un archivo o restaura tus ajustes personalizados desde uno.",
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": "Al restaurar se sobrescribirán todos tus ajustes personalizados actuales.",
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": "Hacer copia…",
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": "Backup",
267
+ "message": "Copia de apoio",
268
268
  "description": "The header text for the back up/restore section"
269
269
  },
270
270
  "settingsBackupRestoreSummary": {
271
- "message": "Back up your custom settings to a file, or restore your custom settings from a file.",
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": "Restoring will overwrite all your current custom settings.",
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": "Back up…",
379
+ "message": "Gardar axustes…",
380
380
  "description": "Text for buttons used to back up content"
381
381
  },
382
382
  "restoreButton": {
383
- "message": "Restore…",
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": "Backup",
267
+ "message": "მარქაფი",
268
268
  "description": "The header text for the back up/restore section"
269
269
  },
270
270
  "settingsBackupRestoreSummary": {
271
- "message": "Back up your custom settings to a file, or restore your custom settings from a file.",
271
+ "message": "დაამარქაფეთ მითითებული პარამეტრები ფაილში ან აღადგინეთ ფაილიდან.",
272
272
  "description": "A summary description of the back up/restore section."
273
273
  },
274
274
  "settingsBackupRestoreLegend": {
275
- "message": "Restoring will overwrite all your current custom settings.",
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": "Back up…",
379
+ "message": "დამარქფება…",
380
380
  "description": "Text for buttons used to back up content"
381
381
  },
382
382
  "restoreButton": {
383
- "message": "Restore…",
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": "Backup",
267
+ "message": "Rezervoj",
268
268
  "description": "The header text for the back up/restore section"
269
269
  },
270
270
  "settingsBackupRestoreSummary": {
271
- "message": "Back up your custom settings to a file, or restore your custom settings from a file.",
271
+ "message": "Krijoni kopje rezervë parametrave personalizuara 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": "Restoring will overwrite all your current custom settings.",
275
+ "message": "Restaurimi do mbishkruajë 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": "Back up…",
379
+ "message": "Rezervoj…",
380
380
  "description": "Text for buttons used to back up content"
381
381
  },
382
382
  "restoreButton": {
383
- "message": "Restore…",
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": "Backup",
267
+ "message": "Säkerhetskopiering",
268
268
  "description": "The header text for the back up/restore section"
269
269
  },
270
270
  "settingsBackupRestoreSummary": {
271
- "message": "Back up your custom settings to a file, or restore your custom settings from a file.",
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": "Restoring will overwrite all your current custom settings.",
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": "Back up…",
379
+ "message": "Säkerhetskopiera…",
380
380
  "description": "Text for buttons used to back up content"
381
381
  },
382
382
  "restoreButton": {
383
- "message": "Restore…",
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": "Backup",
267
+ "message": "备份",
268
268
  "description": "The header text for the back up/restore section"
269
269
  },
270
270
  "settingsBackupRestoreSummary": {
271
- "message": "Back up your custom settings to a file, or restore your custom settings from a file.",
271
+ "message": "将自定义设置备份到文件,或从文件还原自定义设置。",
272
272
  "description": "A summary description of the back up/restore section."
273
273
  },
274
274
  "settingsBackupRestoreLegend": {
275
- "message": "Restoring will overwrite all your current custom settings.",
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": "Back up…",
379
+ "message": "备份…",
380
380
  "description": "Text for buttons used to back up content"
381
381
  },
382
382
  "restoreButton": {
383
- "message": "Restore…",
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
  }