@browserless.io/browserless 2.33.0 → 2.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (568) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/README.md +1 -1
  3. package/build/config.d.ts +1 -1
  4. package/build/config.js +1 -1
  5. package/build/http.d.ts +10 -0
  6. package/build/http.js +5 -0
  7. package/build/limiter.spec.js +1 -1
  8. package/build/routes/chrome/http/content.post.body.json +18 -109
  9. package/build/routes/chrome/http/pdf.post.body.json +18 -109
  10. package/build/routes/chrome/http/scrape.post.body.json +18 -109
  11. package/build/routes/chrome/http/screenshot.post.body.json +18 -109
  12. package/build/routes/chrome/tests/content.spec.js +12 -12
  13. package/build/routes/chrome/tests/page-websocket.spec.js +3 -3
  14. package/build/routes/chrome/tests/pdf.spec.js +13 -13
  15. package/build/routes/chrome/tests/performance.spec.js +4 -4
  16. package/build/routes/chrome/tests/scrape.spec.js +13 -13
  17. package/build/routes/chrome/tests/screenshot.spec.js +14 -14
  18. package/build/routes/chromium/http/content.post.body.json +18 -109
  19. package/build/routes/chromium/http/pdf.post.body.json +18 -109
  20. package/build/routes/chromium/http/scrape.post.body.json +18 -109
  21. package/build/routes/chromium/http/screenshot.post.body.json +18 -109
  22. package/build/routes/chromium/tests/content.spec.js +13 -13
  23. package/build/routes/chromium/tests/page-websocket.spec.js +3 -3
  24. package/build/routes/chromium/tests/pdf.spec.js +13 -13
  25. package/build/routes/chromium/tests/performance.spec.js +4 -4
  26. package/build/routes/chromium/tests/scrape.spec.js +13 -13
  27. package/build/routes/chromium/tests/screenshot.spec.js +14 -14
  28. package/build/routes/edge/http/content.post.body.json +18 -109
  29. package/build/routes/edge/http/pdf.post.body.json +18 -109
  30. package/build/routes/edge/http/scrape.post.body.json +18 -109
  31. package/build/routes/edge/http/screenshot.post.body.json +18 -109
  32. package/build/routes/edge/tests/content.spec.js +12 -12
  33. package/build/routes/edge/tests/page-websocket.spec.js +3 -3
  34. package/build/routes/edge/tests/pdf.spec.js +13 -13
  35. package/build/routes/edge/tests/performance.spec.js +4 -4
  36. package/build/routes/edge/tests/scrape.spec.js +13 -13
  37. package/build/routes/edge/tests/screenshot.spec.js +14 -14
  38. package/build/routes/management/http/kill.get.d.ts +1 -1
  39. package/build/routes/management/http/kill.get.query.json +0 -3
  40. package/build/routes/management/http/pressure.get.d.ts +1 -1
  41. package/build/routes/management/http/pressure.get.js +12 -4
  42. package/build/routes/management/http/sessions.get.d.ts +1 -1
  43. package/build/routes/management/http/sessions.get.query.json +0 -3
  44. package/build/routes/management/tests/management.spec.js +13 -13
  45. package/build/server.js +12 -4
  46. package/build/shared/content.http.js +9 -2
  47. package/build/shared/pdf.http.js +9 -2
  48. package/build/shared/scrape.http.js +9 -2
  49. package/build/shared/screenshot.http.js +9 -2
  50. package/build/shim.d.ts +5 -0
  51. package/build/shim.js +13 -0
  52. package/build/shim.spec.js +28 -1
  53. package/build/types.d.ts +21 -1
  54. package/build/types.js +14 -0
  55. package/build/utils.d.ts +1 -0
  56. package/build/utils.js +4 -3
  57. package/extensions/ublocklite/_locales/ar/messages.json +8 -8
  58. package/extensions/ublocklite/_locales/be/messages.json +8 -8
  59. package/extensions/ublocklite/_locales/fi/messages.json +18 -18
  60. package/extensions/ublocklite/_locales/hi/messages.json +21 -21
  61. package/extensions/ublocklite/_locales/hu/messages.json +8 -8
  62. package/extensions/ublocklite/_locales/id/messages.json +15 -15
  63. package/extensions/ublocklite/_locales/ja/messages.json +23 -23
  64. package/extensions/ublocklite/_locales/nl/messages.json +1 -1
  65. package/extensions/ublocklite/_locales/pt_BR/messages.json +15 -15
  66. package/extensions/ublocklite/_locales/pt_PT/messages.json +18 -18
  67. package/extensions/ublocklite/_locales/ru/messages.json +1 -1
  68. package/extensions/ublocklite/_locales/th/messages.json +30 -30
  69. package/extensions/ublocklite/_locales/tr/messages.json +1 -1
  70. package/extensions/ublocklite/_locales/uk/messages.json +10 -10
  71. package/extensions/ublocklite/_locales/vi/messages.json +8 -8
  72. package/extensions/ublocklite/css/dashboard.css +9 -4
  73. package/extensions/ublocklite/css/picker-ui.css +1 -1
  74. package/extensions/ublocklite/css/report.css +0 -8
  75. package/extensions/ublocklite/css/settings.css +17 -13
  76. package/extensions/ublocklite/dashboard.html +16 -12
  77. package/extensions/ublocklite/js/background.js +75 -19
  78. package/extensions/ublocklite/js/config.js +2 -1
  79. package/extensions/ublocklite/js/dashboard.js +9 -5
  80. package/extensions/ublocklite/js/debug.js +69 -6
  81. package/extensions/ublocklite/js/develop.js +1 -1
  82. package/extensions/ublocklite/js/ext-compat.js +9 -2
  83. package/extensions/ublocklite/js/ext.js +6 -0
  84. package/extensions/ublocklite/js/fetch.js +3 -1
  85. package/extensions/ublocklite/js/filter-lists.js +17 -9
  86. package/extensions/ublocklite/js/filter-manager.js +80 -28
  87. package/extensions/ublocklite/js/jsonpath.js +65 -26
  88. package/extensions/ublocklite/js/mode-manager.js +5 -1
  89. package/extensions/ublocklite/js/picker-ui.js +32 -41
  90. package/extensions/ublocklite/js/popup.js +11 -11
  91. package/extensions/ublocklite/js/redirect-resources.js +1 -0
  92. package/extensions/ublocklite/js/report.js +4 -2
  93. package/extensions/ublocklite/js/ro-dnr-editor.js +6 -1
  94. package/extensions/ublocklite/js/ruleset-manager.js +38 -13
  95. package/extensions/ublocklite/js/scripting/css-generic.js +0 -1
  96. package/extensions/ublocklite/js/scripting/css-procedural-api.js +821 -0
  97. package/extensions/ublocklite/js/scripting/css-procedural.js +62 -718
  98. package/extensions/ublocklite/{rulesets/scripting/declarative/ubol-tests.js → js/scripting/css-user-terminate.js} +16 -13
  99. package/extensions/ublocklite/js/scripting/css-user.js +12 -1
  100. package/extensions/ublocklite/js/scripting/picker.js +46 -13
  101. package/extensions/ublocklite/js/scripting/tool-overlay.js +14 -8
  102. package/extensions/ublocklite/js/scripting/unpicker.js +5 -9
  103. package/extensions/ublocklite/js/scripting/zapper.js +1 -1
  104. package/extensions/ublocklite/js/scripting-manager.js +4 -75
  105. package/extensions/ublocklite/js/settings.js +3 -5
  106. package/extensions/ublocklite/js/static-filtering-parser.js +3 -3
  107. package/extensions/ublocklite/js/tool-overlay-ui.js +20 -24
  108. package/extensions/ublocklite/js/troubleshooting.js +11 -19
  109. package/extensions/ublocklite/js/ubo-parser.js +1 -1
  110. package/extensions/ublocklite/js/unpicker-ui.js +16 -9
  111. package/extensions/ublocklite/js/zapper-ui.js +3 -2
  112. package/extensions/ublocklite/manifest.json +12 -2
  113. package/extensions/ublocklite/picker-ui.html +1 -1
  114. package/extensions/ublocklite/report.html +0 -1
  115. package/extensions/ublocklite/rulesets/generic-details.json +28 -16
  116. package/extensions/ublocklite/rulesets/main/adguard-mobile.json +5 -2
  117. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +27 -15
  118. package/extensions/ublocklite/rulesets/main/annoyances-notifications.json +276 -0
  119. package/extensions/ublocklite/rulesets/main/annoyances-others.json +4 -3
  120. package/extensions/ublocklite/rulesets/main/annoyances-overlays.json +4 -4
  121. package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +3 -2
  122. package/extensions/ublocklite/rulesets/main/bgr-0.json +54 -68
  123. package/extensions/ublocklite/rulesets/main/block-lan.json +3 -2
  124. package/extensions/ublocklite/rulesets/main/chn-0.json +28 -21
  125. package/extensions/ublocklite/rulesets/main/deu-0.json +7 -6
  126. package/extensions/ublocklite/rulesets/main/dpollock-0.json +8 -41
  127. package/extensions/ublocklite/rulesets/main/easylist.json +68 -42
  128. package/extensions/ublocklite/rulesets/main/easyprivacy.json +89 -12
  129. package/extensions/ublocklite/rulesets/main/fra-0.json +19 -19
  130. package/extensions/ublocklite/rulesets/main/hrv-0.json +5 -5
  131. package/extensions/ublocklite/rulesets/main/hun-0.json +5 -3
  132. package/extensions/ublocklite/rulesets/main/idn-0.json +13 -2
  133. package/extensions/ublocklite/rulesets/main/ind-0.json +34 -26
  134. package/extensions/ublocklite/rulesets/main/irn-0.json +676 -635
  135. package/extensions/ublocklite/rulesets/main/isr-0.json +1 -0
  136. package/extensions/ublocklite/rulesets/main/jpn-1.json +55 -31
  137. package/extensions/ublocklite/rulesets/main/kor-1.json +9 -4
  138. package/extensions/ublocklite/rulesets/main/mkd-0.json +1 -1
  139. package/extensions/ublocklite/rulesets/main/nld-0.json +2 -1
  140. package/extensions/ublocklite/rulesets/main/nor-0.json +35 -13
  141. package/extensions/ublocklite/rulesets/main/pgl.json +36 -15
  142. package/extensions/ublocklite/rulesets/main/pol-0.json +3 -2
  143. package/extensions/ublocklite/rulesets/main/rus-0.json +37 -37
  144. package/extensions/ublocklite/rulesets/main/rus-1.json +7 -3
  145. package/extensions/ublocklite/rulesets/main/spa-1.json +15 -33
  146. package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +15675 -15915
  147. package/extensions/ublocklite/rulesets/main/swe-1.json +46 -34
  148. package/extensions/ublocklite/rulesets/main/tur-0.json +56 -32
  149. package/extensions/ublocklite/rulesets/main/ublock-badware.json +87 -89
  150. package/extensions/ublocklite/rulesets/main/ublock-experimental.json +3 -0
  151. package/extensions/ublocklite/rulesets/main/ublock-filters.json +139 -69
  152. package/extensions/ublocklite/rulesets/main/ukr-0.json +5 -7
  153. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +546 -1235
  154. package/extensions/ublocklite/rulesets/main/vie-1.json +55 -57
  155. package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +4 -2
  156. package/extensions/ublocklite/rulesets/modify-headers/fra-0.json +2 -1
  157. package/extensions/ublocklite/rulesets/modify-headers/irn-0.json +14 -14
  158. package/extensions/ublocklite/rulesets/modify-headers/ublock-filters.json +4 -8
  159. package/extensions/ublocklite/rulesets/modify-headers/vie-1.json +1 -1
  160. package/extensions/ublocklite/rulesets/redirect/annoyances-overlays.json +1 -1
  161. package/extensions/ublocklite/rulesets/redirect/easyprivacy.json +35 -0
  162. package/extensions/ublocklite/rulesets/redirect/irn-0.json +23 -23
  163. package/extensions/ublocklite/rulesets/redirect/kor-1.json +1 -1
  164. package/extensions/ublocklite/rulesets/redirect/rus-0.json +2 -1
  165. package/extensions/ublocklite/rulesets/redirect/spa-1.json +1 -2
  166. package/extensions/ublocklite/rulesets/redirect/tur-0.json +2 -3
  167. package/extensions/ublocklite/rulesets/redirect/ublock-badware.json +18 -0
  168. package/extensions/ublocklite/rulesets/redirect/ublock-filters.json +20 -15
  169. package/extensions/ublocklite/rulesets/redirect/vie-1.json +5 -22
  170. package/extensions/ublocklite/rulesets/regex/chn-0.json +1 -1
  171. package/extensions/ublocklite/rulesets/regex/ita-0.json +1 -0
  172. package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
  173. package/extensions/ublocklite/rulesets/regex/tur-0.json +4 -1
  174. package/extensions/ublocklite/rulesets/regex/ublock-badware.json +3 -8
  175. package/extensions/ublocklite/rulesets/regex/ublock-filters.json +14 -9
  176. package/extensions/ublocklite/rulesets/regex/ukr-0.json +3 -5
  177. package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +26 -11
  178. package/extensions/ublocklite/rulesets/removeparam/irn-0.json +16 -15
  179. package/extensions/ublocklite/rulesets/removeparam/rus-1.json +3 -2
  180. package/extensions/ublocklite/rulesets/removeparam/ublock-filters.json +6 -5
  181. package/extensions/ublocklite/rulesets/ruleset-details.json +332 -324
  182. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
  183. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +87 -0
  184. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +2 -2
  185. package/extensions/ublocklite/rulesets/scripting/generic/bgr-0.js +3 -3
  186. package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +2 -2
  187. package/extensions/ublocklite/rulesets/scripting/generic/deu-0.js +1 -1
  188. package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
  189. package/extensions/ublocklite/rulesets/scripting/generic/est-0.js +1 -1
  190. package/extensions/ublocklite/rulesets/scripting/generic/fra-0.js +2 -2
  191. package/extensions/ublocklite/rulesets/scripting/generic/hrv-0.js +1 -1
  192. package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +2 -2
  193. package/extensions/ublocklite/rulesets/scripting/generic/ind-0.js +2 -2
  194. package/extensions/ublocklite/rulesets/scripting/generic/irn-0.js +3 -3
  195. package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +3 -3
  196. package/extensions/ublocklite/rulesets/scripting/generic/kor-1.js +2 -2
  197. package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +1 -1
  198. package/extensions/ublocklite/rulesets/scripting/generic/pol-0.js +1 -1
  199. package/extensions/ublocklite/rulesets/scripting/generic/rou-1.js +2 -2
  200. package/extensions/ublocklite/rulesets/scripting/generic/rus-0.js +1 -1
  201. package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +1 -1
  202. package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +1 -1
  203. package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
  204. package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +3 -3
  205. package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +1 -1
  206. package/extensions/ublocklite/rulesets/scripting/{declarative/isr-0.js → generichigh/annoyances-notifications.css} +15 -21
  207. package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +14 -0
  208. package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +3 -0
  209. package/extensions/ublocklite/rulesets/scripting/generichigh/est-0.css +1 -0
  210. package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +34 -0
  211. package/extensions/ublocklite/rulesets/scripting/generichigh/irn-0.css +27 -0
  212. package/extensions/ublocklite/rulesets/scripting/generichigh/nor-0.css +17 -0
  213. package/extensions/ublocklite/rulesets/scripting/generichigh/pol-0.css +8 -0
  214. package/extensions/ublocklite/rulesets/scripting/generichigh/rou-1.css +1 -0
  215. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +107 -0
  216. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-1.css +3 -0
  217. package/extensions/ublocklite/rulesets/scripting/generichigh/swe-1.css +1 -0
  218. package/extensions/ublocklite/rulesets/scripting/generichigh/tur-0.css +1 -0
  219. package/extensions/ublocklite/rulesets/scripting/generichigh/ublock-filters.css +6 -2
  220. package/extensions/ublocklite/rulesets/scripting/generichigh/vie-1.css +1 -0
  221. package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +3 -3
  222. package/extensions/ublocklite/rulesets/scripting/procedural/alb-0.js +4 -4
  223. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +4 -4
  224. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-notifications.js +42 -0
  225. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +3 -3
  226. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
  227. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-social.js +3 -3
  228. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +3 -3
  229. package/extensions/ublocklite/rulesets/scripting/procedural/cze-0.js +3 -3
  230. package/extensions/ublocklite/rulesets/scripting/procedural/deu-0.js +1 -1
  231. package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
  232. package/extensions/ublocklite/rulesets/scripting/{declarative → procedural}/easyprivacy.js +5 -5
  233. package/extensions/ublocklite/rulesets/scripting/procedural/est-0.js +3 -3
  234. package/extensions/ublocklite/rulesets/scripting/procedural/fin-0.js +3 -3
  235. package/extensions/ublocklite/rulesets/scripting/procedural/fra-0.js +4 -4
  236. package/extensions/ublocklite/rulesets/scripting/procedural/grc-0.js +3 -3
  237. package/extensions/ublocklite/rulesets/scripting/procedural/hrv-0.js +3 -3
  238. package/extensions/ublocklite/rulesets/scripting/procedural/hun-0.js +3 -3
  239. package/extensions/ublocklite/rulesets/scripting/procedural/idn-0.js +3 -3
  240. package/extensions/ublocklite/rulesets/scripting/procedural/ind-0.js +3 -3
  241. package/extensions/ublocklite/rulesets/scripting/procedural/irn-0.js +3 -3
  242. package/extensions/ublocklite/rulesets/scripting/procedural/isl-0.js +1 -1
  243. package/extensions/ublocklite/rulesets/scripting/procedural/isr-0.js +3 -3
  244. package/extensions/ublocklite/rulesets/scripting/procedural/ita-0.js +3 -3
  245. package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
  246. package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +3 -3
  247. package/extensions/ublocklite/rulesets/scripting/procedural/ltu-0.js +3 -3
  248. package/extensions/ublocklite/rulesets/scripting/procedural/lva-0.js +1 -1
  249. package/extensions/ublocklite/rulesets/scripting/{declarative → procedural}/mkd-0.js +4 -4
  250. package/extensions/ublocklite/rulesets/scripting/procedural/nld-0.js +3 -3
  251. package/extensions/ublocklite/rulesets/scripting/procedural/nor-0.js +4 -4
  252. package/extensions/ublocklite/rulesets/scripting/procedural/pol-0.js +3 -3
  253. package/extensions/ublocklite/rulesets/scripting/procedural/rou-1.js +3 -3
  254. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  255. package/extensions/ublocklite/rulesets/scripting/procedural/rus-1.js +3 -3
  256. package/extensions/ublocklite/rulesets/scripting/procedural/spa-0.js +1 -1
  257. package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +4 -4
  258. package/extensions/ublocklite/rulesets/scripting/procedural/svn-0.js +1 -1
  259. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
  260. package/extensions/ublocklite/rulesets/scripting/procedural/tha-0.js +1 -1
  261. package/extensions/ublocklite/rulesets/scripting/procedural/tur-0.js +4 -4
  262. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-badware.js +3 -3
  263. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
  264. package/extensions/ublocklite/rulesets/scripting/procedural/ubol-tests.js +1 -1
  265. package/extensions/ublocklite/rulesets/scripting/procedural/ukr-0.js +3 -3
  266. package/extensions/ublocklite/rulesets/scripting/procedural/vie-1.js +3 -3
  267. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-current-script.js +6 -5
  268. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.abort-current-script.js +4 -3
  269. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-constant.js +2 -2
  270. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie-reload.js +446 -0
  271. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  272. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  273. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-session-storage-item.js +2 -2
  274. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
  275. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  276. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-local-storage-item.js +2 -2
  277. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.abort-current-script.js +452 -0
  278. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.abort-on-property-write.js +347 -0
  279. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.addEventListener-defuser.js +498 -0
  280. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.remove-attr.js +405 -0
  281. package/extensions/ublocklite/rulesets/scripting/scriptlet/{tur-0.set-attr.js → annoyances-notifications.remove-class.js} +90 -119
  282. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-constant.js +541 -0
  283. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-cookie.js +442 -0
  284. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-local-storage-item.js +399 -0
  285. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-session-storage-item.js +399 -0
  286. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +5 -4
  287. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-property-read.js +1 -1
  288. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +2 -2
  289. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +2 -2
  290. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-window-open.js +1 -1
  291. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-node-text.js +2 -2
  292. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +2 -2
  293. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-cookie.js +2 -2
  294. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-current-script.js +6 -5
  295. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +1 -1
  296. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.adjust-setTimeout.js +1 -1
  297. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.json-prune.js +3 -3
  298. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +2 -2
  299. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +2 -2
  300. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +2 -2
  301. package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.abort-current-script.js +4 -3
  302. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.abort-current-script.js +5 -4
  303. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-constant.js +1 -1
  304. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-local-storage-item.js +1 -1
  305. package/extensions/ublocklite/rulesets/scripting/scriptlet/fin-0.abort-current-script.js +4 -3
  306. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.abort-current-script.js +4 -3
  307. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-requestAnimationFrame.js +407 -0
  308. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setTimeout.js +2 -2
  309. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-window-open.js +1 -1
  310. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.remove-node-text.js +449 -0
  311. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.abort-current-script.js +6 -5
  312. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.set-local-storage-item.js +399 -0
  313. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.abort-current-script.js +7 -6
  314. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.abort-on-property-read.js +3 -3
  315. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.addEventListener-defuser.js +2 -2
  316. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-current-script.js +4 -3
  317. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-local-storage-item.js +2 -2
  318. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-session-storage-item.js +2 -2
  319. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.abort-current-script.js +4 -3
  320. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.abort-current-script.js +6 -5
  321. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.abort-on-property-write.js +2 -2
  322. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.addEventListener-defuser.js +2 -2
  323. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.adjust-setTimeout.js +1 -1
  324. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.href-sanitizer.js +2 -2
  325. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.remove-attr.js +2 -2
  326. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.remove-node-text.js +2 -2
  327. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.set-constant.js +2 -2
  328. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.abort-current-script.js +4 -3
  329. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-constant.js +2 -2
  330. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.spoof-css.js +422 -0
  331. package/extensions/ublocklite/rulesets/scripting/scriptlet/ltu-0.abort-current-script.js +4 -3
  332. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.abort-current-script.js +4 -3
  333. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-setTimeout.js +2 -2
  334. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-xhr.js +584 -0
  335. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.abort-current-script.js +4 -3
  336. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.abort-current-script.js +4 -3
  337. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.abort-current-script.js +4 -3
  338. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setInterval.js +2 -2
  339. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setTimeout.js +2 -2
  340. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-window-open.js +2 -2
  341. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-current-script.js +5 -4
  342. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-read.js +2 -2
  343. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +3 -3
  344. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.adjust-setInterval.js +1 -1
  345. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.href-sanitizer.js +2 -2
  346. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.json-prune-fetch-response.js +2 -2
  347. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +3 -3
  348. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +2 -2
  349. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
  350. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-cookie.js +2 -2
  351. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-xhr.js +1 -1
  352. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +3 -3
  353. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-current-script.js +6 -5
  354. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-read.js +2 -2
  355. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-write.js +2 -2
  356. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +3 -3
  357. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.adjust-setTimeout.js +2 -2
  358. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +3 -3
  359. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +2 -2
  360. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.js +2 -2
  361. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +1 -1
  362. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.remove-attr.js +2 -2
  363. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-constant.js +2 -2
  364. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-local-storage-item.js +1 -1
  365. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.abort-current-script.js +5 -4
  366. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.noeval-if.js +1 -1
  367. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-xhr.js +1 -1
  368. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.set-constant.js +1 -1
  369. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-current-script.js +4 -3
  370. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +1 -1
  371. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-write.js +2 -2
  372. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.adjust-setInterval.js +2 -2
  373. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.adjust-setTimeout.js +332 -0
  374. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.m3u-prune.js +2 -2
  375. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +1 -1
  376. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-attr.js +2 -2
  377. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
  378. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-local-storage-item.js +3 -3
  379. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.abort-current-script.js +4 -3
  380. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +7 -6
  381. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +2 -2
  382. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +2 -2
  383. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
  384. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +3 -3
  385. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +3 -3
  386. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +3 -3
  387. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.close-window.js +3 -3
  388. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.href-sanitizer.js +2 -2
  389. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit.js +69 -29
  390. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
  391. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +2 -2
  392. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.jsonl-edit-xhr-response.js +70 -30
  393. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +2 -2
  394. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.nowebrtc.js +1 -1
  395. package/extensions/ublocklite/rulesets/scripting/scriptlet/{irn-0.close-window.js → ublock-filters.prevent-canvas.js} +14 -21
  396. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +2 -2
  397. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +2 -2
  398. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +3 -3
  399. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +2 -2
  400. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +2 -2
  401. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
  402. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-attr.js +2 -2
  403. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
  404. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +3 -3
  405. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +3 -3
  406. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
  407. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-local-storage-item.js +2 -2
  408. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-session-storage-item.js +2 -2
  409. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-click-element.js +2 -2
  410. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-create-html.js +2 -2
  411. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-response.js +927 -0
  412. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-override-element-method.js +3 -3
  413. package/extensions/ublocklite/rulesets/scripting/scriptlet/{hun-0.prevent-fetch.js → ublock-filters.trusted-prevent-fetch.js} +7 -7
  414. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +2 -2
  415. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-fetch-response.js +2 -2
  416. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +3 -3
  417. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +3 -3
  418. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-attr.js +2 -2
  419. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +4 -4
  420. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-cookie.js +3 -3
  421. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-local-storage-item.js +1 -1
  422. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +2 -2
  423. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-fetch-response.js +68 -28
  424. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-xhr-response.js +68 -28
  425. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.abort-current-script.js +4 -3
  426. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.abort-on-property-read.js +1 -1
  427. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +6 -5
  428. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +2 -2
  429. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.set-constant.js +1 -1
  430. package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
  431. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  432. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +42 -0
  433. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  434. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  435. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  436. package/extensions/ublocklite/rulesets/scripting/specific/bgr-0.js +3 -3
  437. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  438. package/extensions/ublocklite/rulesets/scripting/specific/cze-0.js +1 -1
  439. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  440. package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
  441. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  442. package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
  443. package/extensions/ublocklite/rulesets/scripting/specific/hrv-0.js +3 -3
  444. package/extensions/ublocklite/rulesets/scripting/specific/hun-0.js +3 -3
  445. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  446. package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
  447. package/extensions/ublocklite/rulesets/scripting/specific/irn-0.js +3 -3
  448. package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +3 -3
  449. package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
  450. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  451. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
  452. package/extensions/ublocklite/rulesets/scripting/specific/nld-0.js +3 -3
  453. package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +3 -3
  454. package/extensions/ublocklite/rulesets/scripting/specific/pol-0.js +3 -3
  455. package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
  456. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  457. package/extensions/ublocklite/rulesets/scripting/specific/rus-1.js +3 -3
  458. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  459. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  460. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  461. package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
  462. package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +3 -3
  463. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  464. package/extensions/ublocklite/rulesets/scriptlet-details.json +408 -341
  465. package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +13 -1
  466. package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +0 -1
  467. package/extensions/ublocklite/rulesets/strictblock/annoyances-notifications.json +41 -0
  468. package/extensions/ublocklite/rulesets/strictblock/bgr-0.json +1 -2
  469. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +278 -1
  470. package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +8 -41
  471. package/extensions/ublocklite/rulesets/strictblock/easylist.json +13 -14
  472. package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +74 -3
  473. package/extensions/ublocklite/rulesets/strictblock/fra-0.json +500 -41
  474. package/extensions/ublocklite/rulesets/strictblock/hun-0.json +2 -0
  475. package/extensions/ublocklite/rulesets/strictblock/irn-0.json +6 -2
  476. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +182 -171
  477. package/extensions/ublocklite/rulesets/strictblock/kor-1.json +5 -0
  478. package/extensions/ublocklite/rulesets/strictblock/mkd-0.json +1 -0
  479. package/extensions/ublocklite/rulesets/strictblock/nor-0.json +6 -4
  480. package/extensions/ublocklite/rulesets/strictblock/pgl.json +36 -15
  481. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +1 -0
  482. package/extensions/ublocklite/rulesets/strictblock/rus-1.json +1 -0
  483. package/extensions/ublocklite/rulesets/strictblock/spa-1.json +1 -0
  484. package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +15675 -15915
  485. package/extensions/ublocklite/rulesets/strictblock/swe-1.json +6 -55
  486. package/extensions/ublocklite/rulesets/strictblock/tur-0.json +0 -1
  487. package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +677 -670
  488. package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +1 -1
  489. package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +1 -4
  490. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +546 -1235
  491. package/extensions/ublocklite/rulesets/strictblock/vie-1.json +2 -2
  492. package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +97 -14
  493. package/extensions/ublocklite/ublock.zip +0 -0
  494. package/extensions/ublocklite/web_accessible_resources/fingerprint2.js +1 -1
  495. package/package.json +12 -12
  496. package/src/config.ts +1 -1
  497. package/src/http.ts +5 -0
  498. package/src/limiter.spec.ts +1 -1
  499. package/src/routes/chrome/tests/content.spec.ts +12 -12
  500. package/src/routes/chrome/tests/page-websocket.spec.ts +3 -3
  501. package/src/routes/chrome/tests/pdf.spec.ts +13 -13
  502. package/src/routes/chrome/tests/performance.spec.ts +4 -4
  503. package/src/routes/chrome/tests/scrape.spec.ts +13 -13
  504. package/src/routes/chrome/tests/screenshot.spec.ts +14 -14
  505. package/src/routes/chromium/tests/content.spec.ts +13 -13
  506. package/src/routes/chromium/tests/page-websocket.spec.ts +3 -3
  507. package/src/routes/chromium/tests/pdf.spec.ts +13 -13
  508. package/src/routes/chromium/tests/performance.spec.ts +4 -4
  509. package/src/routes/chromium/tests/scrape.spec.ts +13 -13
  510. package/src/routes/chromium/tests/screenshot.spec.ts +14 -14
  511. package/src/routes/edge/tests/content.spec.ts +12 -12
  512. package/src/routes/edge/tests/page-websocket.spec.ts +3 -3
  513. package/src/routes/edge/tests/pdf.spec.ts +13 -13
  514. package/src/routes/edge/tests/performance.spec.ts +4 -4
  515. package/src/routes/edge/tests/scrape.spec.ts +13 -13
  516. package/src/routes/edge/tests/screenshot.spec.ts +14 -14
  517. package/src/routes/management/http/kill.get.ts +1 -1
  518. package/src/routes/management/http/pressure.get.ts +15 -3
  519. package/src/routes/management/http/sessions.get.ts +1 -1
  520. package/src/routes/management/tests/management.spec.ts +13 -13
  521. package/src/server.ts +17 -3
  522. package/src/shared/content.http.ts +9 -1
  523. package/src/shared/pdf.http.ts +9 -1
  524. package/src/shared/scrape.http.ts +9 -1
  525. package/src/shared/screenshot.http.ts +9 -1
  526. package/src/shim.spec.ts +40 -1
  527. package/src/shim.ts +17 -0
  528. package/src/types.ts +32 -1
  529. package/src/utils.ts +5 -3
  530. package/static/docs/swagger.json +455 -150
  531. package/static/docs/swagger.min.json +454 -149
  532. package/static/function/client.js +46 -8
  533. package/static/function/index.html +46 -8
  534. package/extensions/ublocklite/js/scripting/css-declarative.js +0 -116
  535. package/extensions/ublocklite/rulesets/scripting/declarative/adguard-mobile.js +0 -42
  536. package/extensions/ublocklite/rulesets/scripting/declarative/alb-0.js +0 -42
  537. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-cookies.js +0 -42
  538. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-others.js +0 -42
  539. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-overlays.js +0 -42
  540. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-social.js +0 -42
  541. package/extensions/ublocklite/rulesets/scripting/declarative/chn-0.js +0 -42
  542. package/extensions/ublocklite/rulesets/scripting/declarative/cze-0.js +0 -42
  543. package/extensions/ublocklite/rulesets/scripting/declarative/easylist.js +0 -42
  544. package/extensions/ublocklite/rulesets/scripting/declarative/est-0.js +0 -42
  545. package/extensions/ublocklite/rulesets/scripting/declarative/fin-0.js +0 -42
  546. package/extensions/ublocklite/rulesets/scripting/declarative/fra-0.js +0 -42
  547. package/extensions/ublocklite/rulesets/scripting/declarative/grc-0.js +0 -42
  548. package/extensions/ublocklite/rulesets/scripting/declarative/hrv-0.js +0 -42
  549. package/extensions/ublocklite/rulesets/scripting/declarative/hun-0.js +0 -42
  550. package/extensions/ublocklite/rulesets/scripting/declarative/idn-0.js +0 -42
  551. package/extensions/ublocklite/rulesets/scripting/declarative/irn-0.js +0 -42
  552. package/extensions/ublocklite/rulesets/scripting/declarative/jpn-1.js +0 -42
  553. package/extensions/ublocklite/rulesets/scripting/declarative/kor-1.js +0 -42
  554. package/extensions/ublocklite/rulesets/scripting/declarative/ltu-0.js +0 -42
  555. package/extensions/ublocklite/rulesets/scripting/declarative/nld-0.js +0 -42
  556. package/extensions/ublocklite/rulesets/scripting/declarative/nor-0.js +0 -42
  557. package/extensions/ublocklite/rulesets/scripting/declarative/pol-0.js +0 -42
  558. package/extensions/ublocklite/rulesets/scripting/declarative/rou-1.js +0 -42
  559. package/extensions/ublocklite/rulesets/scripting/declarative/rus-0.js +0 -42
  560. package/extensions/ublocklite/rulesets/scripting/declarative/rus-1.js +0 -42
  561. package/extensions/ublocklite/rulesets/scripting/declarative/spa-1.js +0 -42
  562. package/extensions/ublocklite/rulesets/scripting/declarative/swe-1.js +0 -42
  563. package/extensions/ublocklite/rulesets/scripting/declarative/tur-0.js +0 -42
  564. package/extensions/ublocklite/rulesets/scripting/declarative/ublock-badware.js +0 -42
  565. package/extensions/ublocklite/rulesets/scripting/declarative/ublock-filters.js +0 -42
  566. package/extensions/ublocklite/rulesets/scripting/declarative/ukr-0.js +0 -42
  567. package/extensions/ublocklite/rulesets/scripting/declarative/vie-1.js +0 -42
  568. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.overlay-buster.js +0 -165
@@ -15,7 +15,7 @@ describe('/edge/screenshot API', function () {
15
15
  const metrics = new Metrics();
16
16
  await start({ config, metrics });
17
17
  const body = {
18
- url: 'https://example.com',
18
+ url: 'https://one.one.one.one',
19
19
  };
20
20
  await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
21
21
  body: JSON.stringify(body),
@@ -44,7 +44,7 @@ describe('/edge/screenshot API', function () {
44
44
  const metrics = new Metrics();
45
45
  await start({ config, metrics });
46
46
  const body = {
47
- url: 'https://example.com',
47
+ url: 'https://one.one.one.one',
48
48
  viewport: {
49
49
  deviceScaleFactor: 3,
50
50
  height: 100,
@@ -69,7 +69,7 @@ describe('/edge/screenshot API', function () {
69
69
  await start({ config, metrics });
70
70
  const body = {
71
71
  selector: 'h1',
72
- url: 'https://example.com',
72
+ url: 'https://one.one.one.one',
73
73
  };
74
74
  await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
75
75
  body: JSON.stringify(body),
@@ -120,7 +120,7 @@ describe('/edge/screenshot API', function () {
120
120
  },
121
121
  },
122
122
  ],
123
- url: 'https://example.com',
123
+ url: 'https://one.one.one.one',
124
124
  };
125
125
  await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
126
126
  body: JSON.stringify(body),
@@ -139,7 +139,7 @@ describe('/edge/screenshot API', function () {
139
139
  const metrics = new Metrics();
140
140
  await start({ config, metrics });
141
141
  const body = {
142
- url: 'https://example.com',
142
+ url: 'https://one.one.one.one',
143
143
  waitForFunction: {
144
144
  fn: '() => 5 + 5',
145
145
  },
@@ -161,7 +161,7 @@ describe('/edge/screenshot API', function () {
161
161
  const metrics = new Metrics();
162
162
  await start({ config, metrics });
163
163
  const body = {
164
- url: 'https://example.com',
164
+ url: 'https://one.one.one.one',
165
165
  waitForFunction: {
166
166
  fn: 'async () => new Promise(resolve => resolve(5))',
167
167
  },
@@ -183,7 +183,7 @@ describe('/edge/screenshot API', function () {
183
183
  const metrics = new Metrics();
184
184
  await start({ config, metrics });
185
185
  const body = {
186
- url: 'https://example.com',
186
+ url: 'https://one.one.one.one',
187
187
  waitForSelector: {
188
188
  selector: 'h1',
189
189
  },
@@ -205,7 +205,7 @@ describe('/edge/screenshot API', function () {
205
205
  const metrics = new Metrics();
206
206
  await start({ config, metrics });
207
207
  const body = {
208
- url: 'https://example.com',
208
+ url: 'https://one.one.one.one',
209
209
  waitForTimeout: 500,
210
210
  };
211
211
  await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
@@ -250,8 +250,8 @@ describe('/edge/screenshot API', function () {
250
250
  const metrics = new Metrics();
251
251
  await start({ config, metrics });
252
252
  const body = {
253
- cookies: [{ domain: 'example.com', name: 'foo', value: 'bar' }],
254
- url: 'https://example.com',
253
+ cookies: [{ domain: 'one.one.one.one', name: 'foo', value: 'bar' }],
254
+ url: 'https://one.one.one.one',
255
255
  };
256
256
  await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
257
257
  body: JSON.stringify(body),
@@ -270,7 +270,7 @@ describe('/edge/screenshot API', function () {
270
270
  const metrics = new Metrics();
271
271
  await start({ config, metrics });
272
272
  const body = {
273
- url: 'https://example.com',
273
+ url: 'https://one.one.one.one',
274
274
  };
275
275
  await fetch('http://localhost:3000/edge/screenshot?token=browserless&timeout=10', {
276
276
  body: JSON.stringify(body),
@@ -290,7 +290,7 @@ describe('/edge/screenshot API', function () {
290
290
  const metrics = new Metrics();
291
291
  await start({ config, metrics });
292
292
  const body = {
293
- url: 'https://example.com',
293
+ url: 'https://one.one.one.one',
294
294
  };
295
295
  await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
296
296
  body: JSON.stringify(body),
@@ -308,7 +308,7 @@ describe('/edge/screenshot API', function () {
308
308
  const metrics = new Metrics();
309
309
  await start({ config, metrics });
310
310
  const body = {
311
- url: 'https://example.com',
311
+ url: 'https://one.one.one.one',
312
312
  };
313
313
  await fetch('http://localhost:3000/edge/screenshot?token=browserless', {
314
314
  body: JSON.stringify(body),
@@ -323,7 +323,7 @@ describe('/edge/screenshot API', function () {
323
323
  it('allows requests without token when auth token is not set', async () => {
324
324
  await start();
325
325
  const body = {
326
- url: 'https://example.com',
326
+ url: 'https://one.one.one.one',
327
327
  };
328
328
  await fetch('http://localhost:3000/edge/screenshot', {
329
329
  body: JSON.stringify(body),
@@ -2,7 +2,7 @@ import { APITags, HTTPManagementRoutes, HTTPRoute, Methods, Request, SystemQuery
2
2
  import { ServerResponse } from 'http';
3
3
  export type ResponseSchema = string;
4
4
  export interface QuerySchema extends SystemQueryParameters {
5
- token: string;
5
+ token?: string;
6
6
  browserId?: string;
7
7
  trackingId?: string;
8
8
  }
@@ -36,9 +36,6 @@
36
36
  }
37
37
  },
38
38
  "additionalProperties": false,
39
- "required": [
40
- "token"
41
- ],
42
39
  "definitions": {
43
40
  "CDPLaunchOptions": {
44
41
  "type": "object",
@@ -60,5 +60,5 @@ export default class PressureGetRoute extends HTTPRoute {
60
60
  method: Methods;
61
61
  path: HTTPManagementRoutes;
62
62
  tags: APITags[];
63
- handler(_req: Request, res: ServerResponse): Promise<void>;
63
+ handler(req: Request, res: ServerResponse): Promise<void>;
64
64
  }
@@ -1,16 +1,20 @@
1
- import { APITags, BrowserlessRoutes, HTTPManagementRoutes, HTTPRoute, Methods, contentTypes, jsonResponse, } from '@browserless.io/browserless';
1
+ import { APITags, BrowserlessRoutes, HTTPManagementRoutes, HTTPRoute, Methods, contentTypes, dedent, jsonResponse, writeResponse, } from '@browserless.io/browserless';
2
2
  export default class PressureGetRoute extends HTTPRoute {
3
3
  name = BrowserlessRoutes.PressureGetRoute;
4
4
  accepts = [contentTypes.any];
5
5
  auth = true;
6
6
  browser = null;
7
7
  concurrency = false;
8
- contentTypes = [contentTypes.json];
9
- description = `Returns a JSON body of stats related to the pressure being created on the instance.`;
8
+ contentTypes = [contentTypes.json, contentTypes.text];
9
+ description = dedent(`Returns a JSON body of stats related to the pressure being exerted on the instance. This route is dynamic based upon the supplied "Accept" header, and will either return a human-readable message if the "Accept" header is set to "text/plain", or the default JSON body and a 200 HTTP code.
10
+
11
+ When Accept is set to "text/plain" a human-readable message is sent back describing the state of the container, and either a "200" code (indicating "ok") or a "503" code (indicating that the service is unavailable due to load).
12
+
13
+ If the "Accept" header is set to anything else it will return a JSON body with the same information.`);
10
14
  method = Methods.get;
11
15
  path = HTTPManagementRoutes.pressure;
12
16
  tags = [APITags.management];
13
- async handler(_req, res) {
17
+ async handler(req, res) {
14
18
  const monitoring = this.monitoring();
15
19
  const config = this.config();
16
20
  const limiter = this.limiter();
@@ -53,6 +57,10 @@ export default class PressureGetRoute extends HTTPRoute {
53
57
  running,
54
58
  },
55
59
  };
60
+ if (req.headers.accept === contentTypes.text) {
61
+ const code = response.pressure.isAvailable ? 200 : 503;
62
+ return writeResponse(res, code, message);
63
+ }
56
64
  return jsonResponse(res, 200, response);
57
65
  }
58
66
  }
@@ -1,7 +1,7 @@
1
1
  import { APITags, BrowserlessSessionJSON, HTTPManagementRoutes, HTTPRoute, Methods, Request, SystemQueryParameters, contentTypes } from '@browserless.io/browserless';
2
2
  import { ServerResponse } from 'http';
3
3
  export interface QuerySchema extends SystemQueryParameters {
4
- token: string;
4
+ token?: string;
5
5
  trackingId?: string;
6
6
  }
7
7
  export type ResponseSchema = BrowserlessSessionJSON[];
@@ -33,9 +33,6 @@
33
33
  }
34
34
  },
35
35
  "additionalProperties": false,
36
- "required": [
37
- "token"
38
- ],
39
36
  "definitions": {
40
37
  "CDPLaunchOptions": {
41
38
  "type": "object",
@@ -14,16 +14,16 @@ describe('Management APIs', function () {
14
14
  it('allows Single Origin OPTIONS requests', async () => {
15
15
  const config = new Config();
16
16
  config.enableCORS(true);
17
- config.setCORSOrigin('https://example.com');
17
+ config.setCORSOrigin('https://one.one.one.one');
18
18
  await start({ config });
19
19
  const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
20
20
  method: 'OPTIONS',
21
21
  headers: {
22
- Origin: 'https://example.com',
22
+ Origin: 'https://one.one.one.one',
23
23
  },
24
24
  });
25
25
  expect(r.status).to.equal(204);
26
- expect(r.headers.get('access-control-allow-origin')).to.equal('https://example.com');
26
+ expect(r.headers.get('access-control-allow-origin')).to.equal('https://one.one.one.one');
27
27
  });
28
28
  it('allows wildcard orign OPTIONS requests', async () => {
29
29
  const config = new Config();
@@ -33,44 +33,44 @@ describe('Management APIs', function () {
33
33
  const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
34
34
  method: 'OPTIONS',
35
35
  headers: {
36
- Origin: 'https://example.com',
36
+ Origin: 'https://one.one.one.one',
37
37
  },
38
38
  });
39
39
  expect(r.status).to.equal(204);
40
- expect(r.headers.get('access-control-allow-origin')).to.equal('https://example.com');
40
+ expect(r.headers.get('access-control-allow-origin')).to.equal('https://one.one.one.one');
41
41
  });
42
42
  it('allows glob-matched OPTIONS requests', async () => {
43
43
  const config = new Config();
44
44
  config.enableCORS(true);
45
- config.setCORSOrigin('*.example.com');
45
+ config.setCORSOrigin('*.one.one.one.one');
46
46
  await start({ config });
47
47
  const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
48
48
  method: 'OPTIONS',
49
49
  headers: {
50
- Origin: 'https://subdomain.example.com',
50
+ Origin: 'https://subdomain.one.one.one.one',
51
51
  },
52
52
  });
53
53
  expect(r.status).to.equal(204);
54
- expect(r.headers.get('access-control-allow-origin')).to.equal('https://subdomain.example.com');
54
+ expect(r.headers.get('access-control-allow-origin')).to.equal('https://subdomain.one.one.one.one');
55
55
  });
56
56
  it('allows glob-matched OPTIONS requests with OR patterns', async () => {
57
57
  const config = new Config();
58
58
  config.enableCORS(true);
59
- config.setCORSOrigin('https://(abc|xyz).example.com');
59
+ config.setCORSOrigin('https://(abc|xyz).one.one.one.one');
60
60
  await start({ config });
61
61
  const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
62
62
  method: 'OPTIONS',
63
63
  headers: {
64
- Origin: 'https://abc.example.com',
64
+ Origin: 'https://abc.one.one.one.one',
65
65
  },
66
66
  });
67
67
  expect(r.status).to.equal(204);
68
- expect(r.headers.get('access-control-allow-origin')).to.equal('https://abc.example.com');
68
+ expect(r.headers.get('access-control-allow-origin')).to.equal('https://abc.one.one.one.one');
69
69
  });
70
70
  it('allows glob-matched OPTIONS requests with OR patterns across two domains', async () => {
71
71
  const config = new Config();
72
72
  config.enableCORS(true);
73
- config.setCORSOrigin('(https://(abc|xyz).example.com|https://deploy-preview-*.netlify.app)');
73
+ config.setCORSOrigin('(https://(abc|xyz).one.one.one.one|https://deploy-preview-*.netlify.app)');
74
74
  await start({ config });
75
75
  const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
76
76
  method: 'OPTIONS',
@@ -89,7 +89,7 @@ describe('Management APIs', function () {
89
89
  const r = await fetch('http://localhost:3000/config?token=6R0W53R135510', {
90
90
  method: 'OPTIONS',
91
91
  headers: {
92
- Origin: 'https://subdomain.example.com',
92
+ Origin: 'https://subdomain.one.one.one.one',
93
93
  },
94
94
  });
95
95
  expect(r.status).to.equal(404);
package/build/server.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as http from 'http';
2
- import { BadRequest, Logger as BlessLogger, NotFound, Timeout, TooManyRequests, Unauthorized, contentTypes, convertPathToURL, isMatch, queryParamsToObject, readBody, shimLegacyRequests, writeResponse, } from '@browserless.io/browserless';
2
+ import { BadRequest, Logger as BlessLogger, NotFound, Timeout, TooManyRequests, Unauthorized, contentTypes, convertPathToURL, isMatch, moveTokenToHeader, queryParamsToObject, readBody, shimLegacyRequests, writeResponse, } from '@browserless.io/browserless';
3
3
  import { EventEmitter } from 'events';
4
4
  import EnjoiResolver from './shared/utils/enjoi-resolver.js';
5
5
  export class HTTPServer extends EventEmitter {
@@ -73,7 +73,8 @@ export class HTTPServer extends EventEmitter {
73
73
  });
74
74
  }
75
75
  async handleRequest(request, res) {
76
- this.logger.trace(`Handling inbound HTTP request on "${request.method}: ${request.url}"`);
76
+ request.url = moveTokenToHeader(request);
77
+ this.logger.trace(`Handling inbound HTTP request on "${request.method}: ${request.url || ''}"`);
77
78
  const req = request;
78
79
  const proceed = await this.hooks.before({ req, res });
79
80
  req.parsed = convertPathToURL(request.url || '', this.config);
@@ -114,8 +115,11 @@ export class HTTPServer extends EventEmitter {
114
115
  return Promise.resolve();
115
116
  }
116
117
  this.logger.trace(`Found matching HTTP route handler "${route.path}"`);
118
+ if (route.before && !(await route.before(req, res))) {
119
+ return;
120
+ }
117
121
  if (route?.auth) {
118
- this.logger.trace(`Authorizing HTTP request to "${request.url}"`);
122
+ this.logger.trace(`Authorizing HTTP request to "${request.url || ''}"`);
119
123
  const isPermitted = await this.token.isAuthorized(req, route);
120
124
  if (!isPermitted) {
121
125
  return this.onHTTPUnauthorized(req, res);
@@ -182,7 +186,8 @@ export class HTTPServer extends EventEmitter {
182
186
  .catch((e) => this.handleErrorRequest(e, res));
183
187
  }
184
188
  async handleWebSocket(request, socket, head) {
185
- this.logger.trace(`Handling inbound WebSocket request on "${request.url}"`);
189
+ request.url = moveTokenToHeader(request);
190
+ this.logger.trace(`Handling inbound WebSocket request on "${request.url || ''}"`);
186
191
  const req = request;
187
192
  const proceed = await this.hooks.before({ head, req, socket });
188
193
  req.parsed = convertPathToURL(request.url || '', this.config);
@@ -193,6 +198,9 @@ export class HTTPServer extends EventEmitter {
193
198
  const route = await this.router.getRouteForWebSocketRequest(req);
194
199
  if (route) {
195
200
  this.logger.trace(`Found matching WebSocket route handler "${route.path}"`);
201
+ if (route.before && !(await route.before(req, socket, head))) {
202
+ return;
203
+ }
196
204
  if (route?.auth) {
197
205
  this.logger.trace(`Authorizing WebSocket request to "${req.parsed.href}"`);
198
206
  const isPermitted = await this.token.isAuthorized(req, route);
@@ -1,4 +1,4 @@
1
- import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, writeResponse, } from '@browserless.io/browserless';
1
+ import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, isBase64Encoded, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, writeResponse, } from '@browserless.io/browserless';
2
2
  export default class ChromiumContentPostRoute extends BrowserHTTPRoute {
3
3
  name = BrowserlessRoutes.ChromiumContentPostRoute;
4
4
  accepts = [contentTypes.json];
@@ -59,7 +59,14 @@ export default class ChromiumContentPostRoute extends BrowserHTTPRoute {
59
59
  }
60
60
  const interceptor = requestInterceptors.find((r) => req.url().match(r.pattern));
61
61
  if (interceptor) {
62
- return req.respond(interceptor.response);
62
+ return req.respond({
63
+ ...interceptor.response,
64
+ body: interceptor.response.body
65
+ ? isBase64Encoded(interceptor.response.body)
66
+ ? Buffer.from(interceptor.response.body, 'base64')
67
+ : interceptor.response.body
68
+ : undefined,
69
+ });
63
70
  }
64
71
  return req.continue();
65
72
  });
@@ -1,4 +1,4 @@
1
- import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
1
+ import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, isBase64Encoded, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
2
2
  export default class ChromiumPDFPostRoute extends BrowserHTTPRoute {
3
3
  name = BrowserlessRoutes.ChromiumPDFPostRoute;
4
4
  accepts = [contentTypes.json];
@@ -64,7 +64,14 @@ export default class ChromiumPDFPostRoute extends BrowserHTTPRoute {
64
64
  }
65
65
  const interceptor = requestInterceptors.find((r) => req.url().match(r.pattern));
66
66
  if (interceptor) {
67
- return req.respond(interceptor.response);
67
+ return req.respond({
68
+ ...interceptor.response,
69
+ body: interceptor.response.body
70
+ ? isBase64Encoded(interceptor.response.body)
71
+ ? Buffer.from(interceptor.response.body, 'base64')
72
+ : interceptor.response.body
73
+ : undefined,
74
+ });
68
75
  }
69
76
  return req.continue();
70
77
  });
@@ -1,4 +1,4 @@
1
- import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, Timeout, bestAttemptCatch, contentTypes, debugScreenshotOpts, dedent, jsonResponse, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
1
+ import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, Timeout, bestAttemptCatch, contentTypes, debugScreenshotOpts, dedent, isBase64Encoded, jsonResponse, noop, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
2
2
  const scrape = async (elements) => {
3
3
  const wait = (selector, timeout = 30000) => {
4
4
  return new Promise((resolve, reject) => {
@@ -127,7 +127,14 @@ export default class ChromiumScrapePostRoute extends BrowserHTTPRoute {
127
127
  }
128
128
  const interceptor = requestInterceptors.find((r) => req.url().match(r.pattern));
129
129
  if (interceptor) {
130
- return req.respond(interceptor.response);
130
+ return req.respond({
131
+ ...interceptor.response,
132
+ body: interceptor.response.body
133
+ ? isBase64Encoded(interceptor.response.body)
134
+ ? Buffer.from(interceptor.response.body, 'base64')
135
+ : interceptor.response.body
136
+ : undefined,
137
+ });
131
138
  }
132
139
  return req.continue();
133
140
  });
@@ -1,4 +1,4 @@
1
- import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, noop, scrollThroughPage, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
1
+ import { APITags, BadRequest, BrowserHTTPRoute, BrowserlessRoutes, ChromiumCDP, HTTPRoutes, Methods, bestAttemptCatch, contentTypes, dedent, isBase64Encoded, noop, scrollThroughPage, sleep, waitForEvent as waitForEvt, waitForFunction as waitForFn, } from '@browserless.io/browserless';
2
2
  import Stream from 'stream';
3
3
  export default class ScreenshotPost extends BrowserHTTPRoute {
4
4
  name = BrowserlessRoutes.ChromiumScreenshotPostRoute;
@@ -67,7 +67,14 @@ export default class ScreenshotPost extends BrowserHTTPRoute {
67
67
  }
68
68
  const interceptor = requestInterceptors.find((r) => req.url().match(r.pattern));
69
69
  if (interceptor) {
70
- return req.respond(interceptor.response);
70
+ return req.respond({
71
+ ...interceptor.response,
72
+ body: interceptor.response.body
73
+ ? isBase64Encoded(interceptor.response.body)
74
+ ? Buffer.from(interceptor.response.body, 'base64')
75
+ : interceptor.response.body
76
+ : undefined,
77
+ });
71
78
  }
72
79
  return req.continue();
73
80
  });
package/build/shim.d.ts CHANGED
@@ -1,3 +1,8 @@
1
+ import * as http from 'http';
2
+ /**
3
+ * Obfuscates the ?token parameter by shifting it to a header instead of a query-parameter.
4
+ */
5
+ export declare function moveTokenToHeader(req: http.IncomingMessage): string;
1
6
  /**
2
7
  * Given a legacy connect or API call, this shim will
3
8
  * re-order the arguments to make them valid in the 2.0
package/build/shim.js CHANGED
@@ -1,5 +1,18 @@
1
1
  import { convertIfBase64, safeParse, } from '@browserless.io/browserless';
2
2
  const shimParam = ['headless', 'stealth', 'ignoreDefaultArgs', 'slowMo'];
3
+ /**
4
+ * Obfuscates the ?token parameter by shifting it to a header instead of a query-parameter.
5
+ */
6
+ export function moveTokenToHeader(req) {
7
+ const parsed = new URL(req.url || '', 'http://localhost');
8
+ const token = parsed.searchParams.get('token');
9
+ if (token) {
10
+ parsed.searchParams.delete('token');
11
+ req.headers.authorization = req.headers.authorization ?? `Bearer ${token}`;
12
+ req.url = parsed.pathname + parsed.search;
13
+ }
14
+ return req.url;
15
+ }
3
16
  /**
4
17
  * Given a legacy connect or API call, this shim will
5
18
  * re-order the arguments to make them valid in the 2.0
@@ -1,5 +1,5 @@
1
1
  import { expect } from 'chai';
2
- import { shimLegacyRequests } from '@browserless.io/browserless';
2
+ import { shimLegacyRequests, moveTokenToHeader, } from '@browserless.io/browserless';
3
3
  describe('Request Shimming', () => {
4
4
  describe('headless', () => {
5
5
  it('converts headless true', () => {
@@ -125,4 +125,31 @@ describe('Request Shimming', () => {
125
125
  expect(decodeURIComponent(shimmed.href)).to.equal(final);
126
126
  });
127
127
  });
128
+ describe('token shimming', () => {
129
+ it('converts token query parameters to an authorization header', () => {
130
+ const url = 'wss://localhost?token=12345';
131
+ const shimmed = moveTokenToHeader({
132
+ url,
133
+ headers: {},
134
+ });
135
+ expect(shimmed).not.to.include('?token=');
136
+ });
137
+ it('converts the token to a proper header', () => {
138
+ const url = 'wss://localhost?token=12345';
139
+ const request = { url, headers: {} };
140
+ moveTokenToHeader(request);
141
+ expect(request.headers.authorization).to.eql('Bearer 12345');
142
+ });
143
+ it('does no conversion if an authorization header is already present', () => {
144
+ const oldAuth = 'Bearer foo-bar';
145
+ const url = 'wss://localhost?token=12345';
146
+ const request = {
147
+ url,
148
+ headers: { authorization: oldAuth },
149
+ };
150
+ const shimmed = moveTokenToHeader(request);
151
+ expect(shimmed).not.to.include('?token=');
152
+ expect(request.headers.authorization).to.eql(oldAuth);
153
+ });
154
+ });
128
155
  });
package/build/types.d.ts CHANGED
@@ -171,6 +171,12 @@ declare abstract class BasicHTTPRoute extends Route {
171
171
  * The allowed methods ("GET", "POST", etc) this route can utilize and match against.
172
172
  */
173
173
  abstract method: Methods;
174
+ /**
175
+ * A function that can run before the requests is parsed and any query or body validation is run.
176
+ * Useful if you need to alter something about the request to conform it or otherwise. This
177
+ * hook is ran after any "global" hooks have run.
178
+ */
179
+ before?: (req: Request, res: http.ServerResponse) => Promise<boolean>;
174
180
  }
175
181
  /**
176
182
  * A HTTP-based route, with a handler, that can fulfill requests without
@@ -211,6 +217,10 @@ export declare abstract class WebSocketRoute extends Route {
211
217
  * Handles an inbound Websocket request, and handles the connection
212
218
  */
213
219
  abstract handler(req: Request, socket: stream.Duplex, head: Buffer, logger: Logger): Promise<unknown>;
220
+ /**
221
+ * Handles an inbound HTTP request, and supplies the Request and Response objects from node's HTTP request event
222
+ */
223
+ before?: (req: Request, socket: stream.Duplex, head: Buffer) => Promise<boolean>;
214
224
  }
215
225
  /**
216
226
  * A WebSocket-based route, with a handler, that can fulfill requests
@@ -230,6 +240,10 @@ export declare abstract class BrowserWebsocketRoute extends Route {
230
240
  * creation. Useful for injecting behaviors or other functionality.
231
241
  */
232
242
  onNewPage?: (url: URL, page: Page) => Promise<void>;
243
+ /**
244
+ * Handles an inbound HTTP request, and supplies the Request and Response objects from node's HTTP request event
245
+ */
246
+ before?: (req: Request, socket: stream.Duplex, head: Buffer) => Promise<boolean>;
233
247
  }
234
248
  interface BrowserlessLaunch {
235
249
  stealth?: boolean;
@@ -392,7 +406,13 @@ export type requestInterceptors = {
392
406
  * corresponding responses to use in order to fulfill those requests.
393
407
  */
394
408
  pattern: string;
395
- response: Partial<ResponseForRequest>;
409
+ response: Partial<Omit<ResponseForRequest, 'body'>> & {
410
+ /**
411
+ * A string representation of the body to return. Can be a base64-encoded
412
+ * string but please omit any leading content-type data (eg "data:image/png;base64,").
413
+ */
414
+ body?: string;
415
+ };
396
416
  };
397
417
  export interface IResourceLoad {
398
418
  cpu: number | null;
package/build/types.js CHANGED
@@ -101,6 +101,12 @@ class Route {
101
101
  * and WebSocketRoute
102
102
  */
103
103
  class BasicHTTPRoute extends Route {
104
+ /**
105
+ * A function that can run before the requests is parsed and any query or body validation is run.
106
+ * Useful if you need to alter something about the request to conform it or otherwise. This
107
+ * hook is ran after any "global" hooks have run.
108
+ */
109
+ before;
104
110
  }
105
111
  /**
106
112
  * A HTTP-based route, with a handler, that can fulfill requests without
@@ -127,6 +133,10 @@ export class BrowserHTTPRoute extends BasicHTTPRoute {
127
133
  */
128
134
  export class WebSocketRoute extends Route {
129
135
  browser = null;
136
+ /**
137
+ * Handles an inbound HTTP request, and supplies the Request and Response objects from node's HTTP request event
138
+ */
139
+ before;
130
140
  }
131
141
  /**
132
142
  * A WebSocket-based route, with a handler, that can fulfill requests
@@ -140,6 +150,10 @@ export class BrowserWebsocketRoute extends Route {
140
150
  * creation. Useful for injecting behaviors or other functionality.
141
151
  */
142
152
  onNewPage;
153
+ /**
154
+ * Handles an inbound HTTP request, and supplies the Request and Response objects from node's HTTP request event
155
+ */
156
+ before;
143
157
  }
144
158
  export const debugScreenshotOpts = {
145
159
  encoding: 'base64',
package/build/utils.d.ts CHANGED
@@ -80,6 +80,7 @@ export declare const exists: (path: string) => Promise<boolean>;
80
80
  * @returns {boolean}
81
81
  */
82
82
  export declare const fileExists: (path: string) => Promise<boolean>;
83
+ export declare const isBase64Encoded: (item: string) => boolean;
83
84
  export declare const convertIfBase64: (item: string) => string;
84
85
  export declare const availableBrowsers: Promise<(typeof ChromiumCDP | typeof ChromiumPlaywright | typeof FirefoxPlaywright | typeof WebKitPlaywright)[]>;
85
86
  export declare const queryParamsToObject: (params: URLSearchParams) => Record<string, unknown>;
package/build/utils.js CHANGED
@@ -156,7 +156,7 @@ export const fetchJson = (url, init) => fetch(url, init).then((res) => {
156
156
  return res.json();
157
157
  });
158
158
  export const getTokenFromRequest = (req) => {
159
- const authHeader = req.headers['authorization'];
159
+ const authHeader = req.headers.authorization;
160
160
  const tokenParam = req.parsed.searchParams.get('token');
161
161
  return tokenParam ?? getAuthHeaderToken(authHeader || '');
162
162
  };
@@ -233,7 +233,7 @@ export const generateDataDir = async (sessionId = id(), config) => {
233
233
  };
234
234
  export const readBody = async (req, maxSize = 10485760) => {
235
235
  if (typeof req.body === 'string' &&
236
- (isBase64.test(req.body) || req.body.startsWith('{'))) {
236
+ (isBase64Encoded(req.body) || req.body.startsWith('{'))) {
237
237
  return safeParse(convertIfBase64(req.body));
238
238
  }
239
239
  const body = await readRequestBody(req, maxSize);
@@ -352,7 +352,8 @@ export const fileExists = async (path) => fs
352
352
  .then((stat) => stat.isFile())
353
353
  .catch(() => false);
354
354
  const isBase64 = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
355
- export const convertIfBase64 = (item) => isBase64.test(item) ? Buffer.from(item, 'base64').toString() : item;
355
+ export const isBase64Encoded = (item) => isBase64.test(item);
356
+ export const convertIfBase64 = (item) => isBase64Encoded(item) ? Buffer.from(item, 'base64').toString() : item;
356
357
  export const availableBrowsers = Promise.all([
357
358
  exists(playwright.chromium.executablePath()),
358
359
  exists(playwright.firefox.executablePath()),