@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,449 @@
1
+ /*******************************************************************************
2
+
3
+ uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
4
+ Copyright (C) 2014-present Raymond Hill
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program. If not, see {http://www.gnu.org/licenses/}.
18
+
19
+ Home: https://github.com/gorhill/uBlock
20
+
21
+ */
22
+
23
+ // ruleset: fin-0
24
+
25
+ // Important!
26
+ // Isolate from global scope
27
+
28
+ // Start of local scope
29
+ (function uBOL_removeNodeText() {
30
+
31
+ /******************************************************************************/
32
+
33
+ function removeNodeText(
34
+ nodeName,
35
+ includes,
36
+ ...extraArgs
37
+ ) {
38
+ replaceNodeTextFn(nodeName, '', '', 'includes', includes || '', ...extraArgs);
39
+ }
40
+
41
+ function replaceNodeTextFn(
42
+ nodeName = '',
43
+ pattern = '',
44
+ replacement = ''
45
+ ) {
46
+ const safe = safeSelf();
47
+ const logPrefix = safe.makeLogPrefix('replace-node-text.fn', ...Array.from(arguments));
48
+ const reNodeName = safe.patternToRegex(nodeName, 'i', true);
49
+ const rePattern = safe.patternToRegex(pattern, 'gms');
50
+ const extraArgs = safe.getExtraArgs(Array.from(arguments), 3);
51
+ const reIncludes = extraArgs.includes || extraArgs.condition
52
+ ? safe.patternToRegex(extraArgs.includes || extraArgs.condition, 'ms')
53
+ : null;
54
+ const reExcludes = extraArgs.excludes
55
+ ? safe.patternToRegex(extraArgs.excludes, 'ms')
56
+ : null;
57
+ const stop = (takeRecord = true) => {
58
+ if ( takeRecord ) {
59
+ handleMutations(observer.takeRecords());
60
+ }
61
+ observer.disconnect();
62
+ if ( safe.logLevel > 1 ) {
63
+ safe.uboLog(logPrefix, 'Quitting');
64
+ }
65
+ };
66
+ const textContentFactory = (( ) => {
67
+ const out = { createScript: s => s };
68
+ const { trustedTypes: tt } = self;
69
+ if ( tt instanceof Object ) {
70
+ if ( typeof tt.getPropertyType === 'function' ) {
71
+ if ( tt.getPropertyType('script', 'textContent') === 'TrustedScript' ) {
72
+ return tt.createPolicy(getRandomTokenFn(), out);
73
+ }
74
+ }
75
+ }
76
+ return out;
77
+ })();
78
+ let sedCount = extraArgs.sedCount || 0;
79
+ const handleNode = node => {
80
+ const before = node.textContent;
81
+ if ( reIncludes ) {
82
+ reIncludes.lastIndex = 0;
83
+ if ( safe.RegExp_test.call(reIncludes, before) === false ) { return true; }
84
+ }
85
+ if ( reExcludes ) {
86
+ reExcludes.lastIndex = 0;
87
+ if ( safe.RegExp_test.call(reExcludes, before) ) { return true; }
88
+ }
89
+ rePattern.lastIndex = 0;
90
+ if ( safe.RegExp_test.call(rePattern, before) === false ) { return true; }
91
+ rePattern.lastIndex = 0;
92
+ const after = pattern !== ''
93
+ ? before.replace(rePattern, replacement)
94
+ : replacement;
95
+ node.textContent = node.nodeName === 'SCRIPT'
96
+ ? textContentFactory.createScript(after)
97
+ : after;
98
+ if ( safe.logLevel > 1 ) {
99
+ safe.uboLog(logPrefix, `Text before:\n${before.trim()}`);
100
+ }
101
+ safe.uboLog(logPrefix, `Text after:\n${after.trim()}`);
102
+ return sedCount === 0 || (sedCount -= 1) !== 0;
103
+ };
104
+ const handleMutations = mutations => {
105
+ for ( const mutation of mutations ) {
106
+ for ( const node of mutation.addedNodes ) {
107
+ if ( reNodeName.test(node.nodeName) === false ) { continue; }
108
+ if ( handleNode(node) ) { continue; }
109
+ stop(false); return;
110
+ }
111
+ }
112
+ };
113
+ const observer = new MutationObserver(handleMutations);
114
+ observer.observe(document, { childList: true, subtree: true });
115
+ if ( document.documentElement ) {
116
+ const treeWalker = document.createTreeWalker(
117
+ document.documentElement,
118
+ NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT
119
+ );
120
+ let count = 0;
121
+ for (;;) {
122
+ const node = treeWalker.nextNode();
123
+ count += 1;
124
+ if ( node === null ) { break; }
125
+ if ( reNodeName.test(node.nodeName) === false ) { continue; }
126
+ if ( node === document.currentScript ) { continue; }
127
+ if ( handleNode(node) ) { continue; }
128
+ stop(); break;
129
+ }
130
+ safe.uboLog(logPrefix, `${count} nodes present before installing mutation observer`);
131
+ }
132
+ if ( extraArgs.stay ) { return; }
133
+ runAt(( ) => {
134
+ const quitAfter = extraArgs.quitAfter || 0;
135
+ if ( quitAfter !== 0 ) {
136
+ setTimeout(( ) => { stop(); }, quitAfter);
137
+ } else {
138
+ stop();
139
+ }
140
+ }, 'interactive');
141
+ }
142
+
143
+ function getRandomTokenFn() {
144
+ const safe = safeSelf();
145
+ return safe.String_fromCharCode(Date.now() % 26 + 97) +
146
+ safe.Math_floor(safe.Math_random() * 982451653 + 982451653).toString(36);
147
+ }
148
+
149
+ function runAt(fn, when) {
150
+ const intFromReadyState = state => {
151
+ const targets = {
152
+ 'loading': 1, 'asap': 1,
153
+ 'interactive': 2, 'end': 2, '2': 2,
154
+ 'complete': 3, 'idle': 3, '3': 3,
155
+ };
156
+ const tokens = Array.isArray(state) ? state : [ state ];
157
+ for ( const token of tokens ) {
158
+ const prop = `${token}`;
159
+ if ( Object.hasOwn(targets, prop) === false ) { continue; }
160
+ return targets[prop];
161
+ }
162
+ return 0;
163
+ };
164
+ const runAt = intFromReadyState(when);
165
+ if ( intFromReadyState(document.readyState) >= runAt ) {
166
+ fn(); return;
167
+ }
168
+ const onStateChange = ( ) => {
169
+ if ( intFromReadyState(document.readyState) < runAt ) { return; }
170
+ fn();
171
+ safe.removeEventListener.apply(document, args);
172
+ };
173
+ const safe = safeSelf();
174
+ const args = [ 'readystatechange', onStateChange, { capture: true } ];
175
+ safe.addEventListener.apply(document, args);
176
+ }
177
+
178
+ function safeSelf() {
179
+ if ( scriptletGlobals.safeSelf ) {
180
+ return scriptletGlobals.safeSelf;
181
+ }
182
+ const self = globalThis;
183
+ const safe = {
184
+ 'Array_from': Array.from,
185
+ 'Error': self.Error,
186
+ 'Function_toStringFn': self.Function.prototype.toString,
187
+ 'Function_toString': thisArg => safe.Function_toStringFn.call(thisArg),
188
+ 'Math_floor': Math.floor,
189
+ 'Math_max': Math.max,
190
+ 'Math_min': Math.min,
191
+ 'Math_random': Math.random,
192
+ 'Object': Object,
193
+ 'Object_defineProperty': Object.defineProperty.bind(Object),
194
+ 'Object_defineProperties': Object.defineProperties.bind(Object),
195
+ 'Object_fromEntries': Object.fromEntries.bind(Object),
196
+ 'Object_getOwnPropertyDescriptor': Object.getOwnPropertyDescriptor.bind(Object),
197
+ 'Object_hasOwn': Object.hasOwn.bind(Object),
198
+ 'RegExp': self.RegExp,
199
+ 'RegExp_test': self.RegExp.prototype.test,
200
+ 'RegExp_exec': self.RegExp.prototype.exec,
201
+ 'Request_clone': self.Request.prototype.clone,
202
+ 'String': self.String,
203
+ 'String_fromCharCode': String.fromCharCode,
204
+ 'String_split': String.prototype.split,
205
+ 'XMLHttpRequest': self.XMLHttpRequest,
206
+ 'addEventListener': self.EventTarget.prototype.addEventListener,
207
+ 'removeEventListener': self.EventTarget.prototype.removeEventListener,
208
+ 'fetch': self.fetch,
209
+ 'JSON': self.JSON,
210
+ 'JSON_parseFn': self.JSON.parse,
211
+ 'JSON_stringifyFn': self.JSON.stringify,
212
+ 'JSON_parse': (...args) => safe.JSON_parseFn.call(safe.JSON, ...args),
213
+ 'JSON_stringify': (...args) => safe.JSON_stringifyFn.call(safe.JSON, ...args),
214
+ 'log': console.log.bind(console),
215
+ // Properties
216
+ logLevel: 0,
217
+ // Methods
218
+ makeLogPrefix(...args) {
219
+ return this.sendToLogger && `[${args.join(' \u205D ')}]` || '';
220
+ },
221
+ uboLog(...args) {
222
+ if ( this.sendToLogger === undefined ) { return; }
223
+ if ( args === undefined || args[0] === '' ) { return; }
224
+ return this.sendToLogger('info', ...args);
225
+
226
+ },
227
+ uboErr(...args) {
228
+ if ( this.sendToLogger === undefined ) { return; }
229
+ if ( args === undefined || args[0] === '' ) { return; }
230
+ return this.sendToLogger('error', ...args);
231
+ },
232
+ escapeRegexChars(s) {
233
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
234
+ },
235
+ initPattern(pattern, options = {}) {
236
+ if ( pattern === '' ) {
237
+ return { matchAll: true, expect: true };
238
+ }
239
+ const expect = (options.canNegate !== true || pattern.startsWith('!') === false);
240
+ if ( expect === false ) {
241
+ pattern = pattern.slice(1);
242
+ }
243
+ const match = /^\/(.+)\/([gimsu]*)$/.exec(pattern);
244
+ if ( match !== null ) {
245
+ return {
246
+ re: new this.RegExp(
247
+ match[1],
248
+ match[2] || options.flags
249
+ ),
250
+ expect,
251
+ };
252
+ }
253
+ if ( options.flags !== undefined ) {
254
+ return {
255
+ re: new this.RegExp(this.escapeRegexChars(pattern),
256
+ options.flags
257
+ ),
258
+ expect,
259
+ };
260
+ }
261
+ return { pattern, expect };
262
+ },
263
+ testPattern(details, haystack) {
264
+ if ( details.matchAll ) { return true; }
265
+ if ( details.re ) {
266
+ return this.RegExp_test.call(details.re, haystack) === details.expect;
267
+ }
268
+ return haystack.includes(details.pattern) === details.expect;
269
+ },
270
+ patternToRegex(pattern, flags = undefined, verbatim = false) {
271
+ if ( pattern === '' ) { return /^/; }
272
+ const match = /^\/(.+)\/([gimsu]*)$/.exec(pattern);
273
+ if ( match === null ) {
274
+ const reStr = this.escapeRegexChars(pattern);
275
+ return new RegExp(verbatim ? `^${reStr}$` : reStr, flags);
276
+ }
277
+ try {
278
+ return new RegExp(match[1], match[2] || undefined);
279
+ }
280
+ catch {
281
+ }
282
+ return /^/;
283
+ },
284
+ getExtraArgs(args, offset = 0) {
285
+ const entries = args.slice(offset).reduce((out, v, i, a) => {
286
+ if ( (i & 1) === 0 ) {
287
+ const rawValue = a[i+1];
288
+ const value = /^\d+$/.test(rawValue)
289
+ ? parseInt(rawValue, 10)
290
+ : rawValue;
291
+ out.push([ a[i], value ]);
292
+ }
293
+ return out;
294
+ }, []);
295
+ return this.Object_fromEntries(entries);
296
+ },
297
+ onIdle(fn, options) {
298
+ if ( self.requestIdleCallback ) {
299
+ return self.requestIdleCallback(fn, options);
300
+ }
301
+ return self.requestAnimationFrame(fn);
302
+ },
303
+ offIdle(id) {
304
+ if ( self.requestIdleCallback ) {
305
+ return self.cancelIdleCallback(id);
306
+ }
307
+ return self.cancelAnimationFrame(id);
308
+ }
309
+ };
310
+ scriptletGlobals.safeSelf = safe;
311
+ if ( scriptletGlobals.bcSecret === undefined ) { return safe; }
312
+ // This is executed only when the logger is opened
313
+ safe.logLevel = scriptletGlobals.logLevel || 1;
314
+ let lastLogType = '';
315
+ let lastLogText = '';
316
+ let lastLogTime = 0;
317
+ safe.toLogText = (type, ...args) => {
318
+ if ( args.length === 0 ) { return; }
319
+ const text = `[${document.location.hostname || document.location.href}]${args.join(' ')}`;
320
+ if ( text === lastLogText && type === lastLogType ) {
321
+ if ( (Date.now() - lastLogTime) < 5000 ) { return; }
322
+ }
323
+ lastLogType = type;
324
+ lastLogText = text;
325
+ lastLogTime = Date.now();
326
+ return text;
327
+ };
328
+ try {
329
+ const bc = new self.BroadcastChannel(scriptletGlobals.bcSecret);
330
+ let bcBuffer = [];
331
+ safe.sendToLogger = (type, ...args) => {
332
+ const text = safe.toLogText(type, ...args);
333
+ if ( text === undefined ) { return; }
334
+ if ( bcBuffer === undefined ) {
335
+ return bc.postMessage({ what: 'messageToLogger', type, text });
336
+ }
337
+ bcBuffer.push({ type, text });
338
+ };
339
+ bc.onmessage = ev => {
340
+ const msg = ev.data;
341
+ switch ( msg ) {
342
+ case 'iamready!':
343
+ if ( bcBuffer === undefined ) { break; }
344
+ bcBuffer.forEach(({ type, text }) =>
345
+ bc.postMessage({ what: 'messageToLogger', type, text })
346
+ );
347
+ bcBuffer = undefined;
348
+ break;
349
+ case 'setScriptletLogLevelToOne':
350
+ safe.logLevel = 1;
351
+ break;
352
+ case 'setScriptletLogLevelToTwo':
353
+ safe.logLevel = 2;
354
+ break;
355
+ }
356
+ };
357
+ bc.postMessage('areyouready?');
358
+ } catch {
359
+ safe.sendToLogger = (type, ...args) => {
360
+ const text = safe.toLogText(type, ...args);
361
+ if ( text === undefined ) { return; }
362
+ safe.log(`uBO ${text}`);
363
+ };
364
+ }
365
+ return safe;
366
+ }
367
+
368
+ /******************************************************************************/
369
+
370
+ const scriptletGlobals = {}; // eslint-disable-line
371
+ const argsList = [["script","async-hide"]];
372
+ const hostnamesMap = new Map([["vauva.fi",0]]);
373
+ const exceptionsMap = new Map([]);
374
+ const hasEntities = false;
375
+ const hasAncestors = false;
376
+
377
+ const collectArgIndices = (hn, map, out) => {
378
+ let argsIndices = map.get(hn);
379
+ if ( argsIndices === undefined ) { return; }
380
+ if ( typeof argsIndices !== 'number' ) {
381
+ for ( const argsIndex of argsIndices ) {
382
+ out.add(argsIndex);
383
+ }
384
+ } else {
385
+ out.add(argsIndices);
386
+ }
387
+ };
388
+
389
+ const indicesFromHostname = (hostname, suffix = '') => {
390
+ const hnParts = hostname.split('.');
391
+ const hnpartslen = hnParts.length;
392
+ if ( hnpartslen === 0 ) { return; }
393
+ for ( let i = 0; i < hnpartslen; i++ ) {
394
+ const hn = `${hnParts.slice(i).join('.')}${suffix}`;
395
+ collectArgIndices(hn, hostnamesMap, todoIndices);
396
+ collectArgIndices(hn, exceptionsMap, tonotdoIndices);
397
+ }
398
+ if ( hasEntities ) {
399
+ const n = hnpartslen - 1;
400
+ for ( let i = 0; i < n; i++ ) {
401
+ for ( let j = n; j > i; j-- ) {
402
+ const en = `${hnParts.slice(i,j).join('.')}.*${suffix}`;
403
+ collectArgIndices(en, hostnamesMap, todoIndices);
404
+ collectArgIndices(en, exceptionsMap, tonotdoIndices);
405
+ }
406
+ }
407
+ }
408
+ };
409
+
410
+ const entries = (( ) => {
411
+ const docloc = document.location;
412
+ const origins = [ docloc.origin ];
413
+ if ( docloc.ancestorOrigins ) {
414
+ origins.push(...docloc.ancestorOrigins);
415
+ }
416
+ return origins.map((origin, i) => {
417
+ const beg = origin.lastIndexOf('://');
418
+ if ( beg === -1 ) { return; }
419
+ const hn = origin.slice(beg+3)
420
+ const end = hn.indexOf(':');
421
+ return { hn: end === -1 ? hn : hn.slice(0, end), i };
422
+ }).filter(a => a !== undefined);
423
+ })();
424
+ if ( entries.length === 0 ) { return; }
425
+
426
+ const todoIndices = new Set();
427
+ const tonotdoIndices = new Set();
428
+
429
+ indicesFromHostname(entries[0].hn);
430
+ if ( hasAncestors ) {
431
+ for ( const entry of entries ) {
432
+ if ( entry.i === 0 ) { continue; }
433
+ indicesFromHostname(entry.hn, '>>');
434
+ }
435
+ }
436
+
437
+ // Apply scriplets
438
+ for ( const i of todoIndices ) {
439
+ if ( tonotdoIndices.has(i) ) { continue; }
440
+ try { removeNodeText(...argsList[i]); }
441
+ catch { }
442
+ }
443
+
444
+ /******************************************************************************/
445
+
446
+ // End of local scope
447
+ })();
448
+
449
+ void 0;
@@ -170,6 +170,10 @@ function proxyApplyFn(
170
170
  : new proxyApplyFn.ApplyContext(...args);
171
171
  }
172
172
  };
173
+ proxyApplyFn.isCtor = new Map();
174
+ }
175
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
176
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
173
177
  }
174
178
  const fnStr = fn.toString();
175
179
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -182,7 +186,7 @@ function proxyApplyFn(
182
186
  return Reflect.get(target, prop);
183
187
  },
184
188
  };
185
- if ( fn.prototype?.constructor === fn ) {
189
+ if ( proxyApplyFn.isCtor.get(target) ) {
186
190
  proxyDetails.construct = function(target, args) {
187
191
  return handler(proxyApplyFn.CtorContext.factory(target, args));
188
192
  };
@@ -266,6 +266,10 @@ function proxyApplyFn(
266
266
  : new proxyApplyFn.ApplyContext(...args);
267
267
  }
268
268
  };
269
+ proxyApplyFn.isCtor = new Map();
270
+ }
271
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
272
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
269
273
  }
270
274
  const fnStr = fn.toString();
271
275
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -278,7 +282,7 @@ function proxyApplyFn(
278
282
  return Reflect.get(target, prop);
279
283
  },
280
284
  };
281
- if ( fn.prototype?.constructor === fn ) {
285
+ if ( proxyApplyFn.isCtor.get(target) ) {
282
286
  proxyDetails.construct = function(target, args) {
283
287
  return handler(proxyApplyFn.CtorContext.factory(target, args));
284
288
  };
@@ -113,6 +113,10 @@ function proxyApplyFn(
113
113
  : new proxyApplyFn.ApplyContext(...args);
114
114
  }
115
115
  };
116
+ proxyApplyFn.isCtor = new Map();
117
+ }
118
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
119
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
116
120
  }
117
121
  const fnStr = fn.toString();
118
122
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -125,7 +129,7 @@ function proxyApplyFn(
125
129
  return Reflect.get(target, prop);
126
130
  },
127
131
  };
128
- if ( fn.prototype?.constructor === fn ) {
132
+ if ( proxyApplyFn.isCtor.get(target) ) {
129
133
  proxyDetails.construct = function(target, args) {
130
134
  return handler(proxyApplyFn.CtorContext.factory(target, args));
131
135
  };
@@ -118,6 +118,10 @@ function proxyApplyFn(
118
118
  : new proxyApplyFn.ApplyContext(...args);
119
119
  }
120
120
  };
121
+ proxyApplyFn.isCtor = new Map();
122
+ }
123
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
124
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
121
125
  }
122
126
  const fnStr = fn.toString();
123
127
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -130,7 +134,7 @@ function proxyApplyFn(
130
134
  return Reflect.get(target, prop);
131
135
  },
132
136
  };
133
- if ( fn.prototype?.constructor === fn ) {
137
+ if ( proxyApplyFn.isCtor.get(target) ) {
134
138
  proxyDetails.construct = function(target, args) {
135
139
  return handler(proxyApplyFn.CtorContext.factory(target, args));
136
140
  };
@@ -118,6 +118,10 @@ function proxyApplyFn(
118
118
  : new proxyApplyFn.ApplyContext(...args);
119
119
  }
120
120
  };
121
+ proxyApplyFn.isCtor = new Map();
122
+ }
123
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
124
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
121
125
  }
122
126
  const fnStr = fn.toString();
123
127
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -130,7 +134,7 @@ function proxyApplyFn(
130
134
  return Reflect.get(target, prop);
131
135
  },
132
136
  };
133
- if ( fn.prototype?.constructor === fn ) {
137
+ if ( proxyApplyFn.isCtor.get(target) ) {
134
138
  proxyDetails.construct = function(target, args) {
135
139
  return handler(proxyApplyFn.CtorContext.factory(target, args));
136
140
  };
@@ -177,6 +177,10 @@ function proxyApplyFn(
177
177
  : new proxyApplyFn.ApplyContext(...args);
178
178
  }
179
179
  };
180
+ proxyApplyFn.isCtor = new Map();
181
+ }
182
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
183
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
180
184
  }
181
185
  const fnStr = fn.toString();
182
186
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -189,7 +193,7 @@ function proxyApplyFn(
189
193
  return Reflect.get(target, prop);
190
194
  },
191
195
  };
192
- if ( fn.prototype?.constructor === fn ) {
196
+ if ( proxyApplyFn.isCtor.get(target) ) {
193
197
  proxyDetails.construct = function(target, args) {
194
198
  return handler(proxyApplyFn.CtorContext.factory(target, args));
195
199
  };
@@ -170,6 +170,10 @@ function proxyApplyFn(
170
170
  : new proxyApplyFn.ApplyContext(...args);
171
171
  }
172
172
  };
173
+ proxyApplyFn.isCtor = new Map();
174
+ }
175
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
176
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
173
177
  }
174
178
  const fnStr = fn.toString();
175
179
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -182,7 +186,7 @@ function proxyApplyFn(
182
186
  return Reflect.get(target, prop);
183
187
  },
184
188
  };
185
- if ( fn.prototype?.constructor === fn ) {
189
+ if ( proxyApplyFn.isCtor.get(target) ) {
186
190
  proxyDetails.construct = function(target, args) {
187
191
  return handler(proxyApplyFn.CtorContext.factory(target, args));
188
192
  };
@@ -118,6 +118,10 @@ function proxyApplyFn(
118
118
  : new proxyApplyFn.ApplyContext(...args);
119
119
  }
120
120
  };
121
+ proxyApplyFn.isCtor = new Map();
122
+ }
123
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
124
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
121
125
  }
122
126
  const fnStr = fn.toString();
123
127
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -130,7 +134,7 @@ function proxyApplyFn(
130
134
  return Reflect.get(target, prop);
131
135
  },
132
136
  };
133
- if ( fn.prototype?.constructor === fn ) {
137
+ if ( proxyApplyFn.isCtor.get(target) ) {
134
138
  proxyDetails.construct = function(target, args) {
135
139
  return handler(proxyApplyFn.CtorContext.factory(target, args));
136
140
  };
@@ -177,6 +177,10 @@ function proxyApplyFn(
177
177
  : new proxyApplyFn.ApplyContext(...args);
178
178
  }
179
179
  };
180
+ proxyApplyFn.isCtor = new Map();
181
+ }
182
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
183
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
180
184
  }
181
185
  const fnStr = fn.toString();
182
186
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -189,7 +193,7 @@ function proxyApplyFn(
189
193
  return Reflect.get(target, prop);
190
194
  },
191
195
  };
192
- if ( fn.prototype?.constructor === fn ) {
196
+ if ( proxyApplyFn.isCtor.get(target) ) {
193
197
  proxyDetails.construct = function(target, args) {
194
198
  return handler(proxyApplyFn.CtorContext.factory(target, args));
195
199
  };
@@ -170,6 +170,10 @@ function proxyApplyFn(
170
170
  : new proxyApplyFn.ApplyContext(...args);
171
171
  }
172
172
  };
173
+ proxyApplyFn.isCtor = new Map();
174
+ }
175
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
176
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
173
177
  }
174
178
  const fnStr = fn.toString();
175
179
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -182,7 +186,7 @@ function proxyApplyFn(
182
186
  return Reflect.get(target, prop);
183
187
  },
184
188
  };
185
- if ( fn.prototype?.constructor === fn ) {
189
+ if ( proxyApplyFn.isCtor.get(target) ) {
186
190
  proxyDetails.construct = function(target, args) {
187
191
  return handler(proxyApplyFn.CtorContext.factory(target, args));
188
192
  };
@@ -112,6 +112,10 @@ function proxyApplyFn(
112
112
  : new proxyApplyFn.ApplyContext(...args);
113
113
  }
114
114
  };
115
+ proxyApplyFn.isCtor = new Map();
116
+ }
117
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
118
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
115
119
  }
116
120
  const fnStr = fn.toString();
117
121
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -124,7 +128,7 @@ function proxyApplyFn(
124
128
  return Reflect.get(target, prop);
125
129
  },
126
130
  };
127
- if ( fn.prototype?.constructor === fn ) {
131
+ if ( proxyApplyFn.isCtor.get(target) ) {
128
132
  proxyDetails.construct = function(target, args) {
129
133
  return handler(proxyApplyFn.CtorContext.factory(target, args));
130
134
  };