@browserless.io/browserless 2.37.0 → 2.38.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 (492) hide show
  1. package/CHANGELOG.md +25 -1
  2. package/build/browsers/index.js +15 -0
  3. package/build/routes/chrome/http/content.post.query.json +3 -0
  4. package/build/routes/chrome/http/download.post.query.json +3 -0
  5. package/build/routes/chrome/http/function.post.query.json +3 -0
  6. package/build/routes/chrome/http/pdf.post.query.json +3 -0
  7. package/build/routes/chrome/http/performance.post.query.json +3 -0
  8. package/build/routes/chrome/http/scrape.post.query.json +3 -0
  9. package/build/routes/chrome/http/screenshot.post.query.json +3 -0
  10. package/build/routes/chrome/tests/content.spec.js +21 -0
  11. package/build/routes/chrome/tests/json.spec.js +100 -0
  12. package/build/routes/chrome/ws/browser.query.json +3 -0
  13. package/build/routes/chrome/ws/cdp.query.json +3 -0
  14. package/build/routes/chrome/ws/function-connect.query.json +3 -0
  15. package/build/routes/chrome/ws/page.query.json +3 -0
  16. package/build/routes/chromium/http/content.post.query.json +3 -0
  17. package/build/routes/chromium/http/download.post.query.json +3 -0
  18. package/build/routes/chromium/http/function.post.query.json +3 -0
  19. package/build/routes/chromium/http/pdf.post.query.json +3 -0
  20. package/build/routes/chromium/http/performance.post.query.json +3 -0
  21. package/build/routes/chromium/http/scrape.post.query.json +3 -0
  22. package/build/routes/chromium/http/screenshot.post.query.json +3 -0
  23. package/build/routes/chromium/tests/content.spec.js +21 -0
  24. package/build/routes/chromium/tests/function.spec.js +27 -0
  25. package/build/routes/chromium/tests/json.spec.js +100 -0
  26. package/build/routes/chromium/ws/browser.query.json +3 -0
  27. package/build/routes/chromium/ws/cdp.query.json +3 -0
  28. package/build/routes/chromium/ws/function-connect.query.json +3 -0
  29. package/build/routes/chromium/ws/page.query.json +3 -0
  30. package/build/routes/edge/http/content.post.query.json +3 -0
  31. package/build/routes/edge/http/download.post.query.json +3 -0
  32. package/build/routes/edge/http/function.post.query.json +3 -0
  33. package/build/routes/edge/http/pdf.post.query.json +3 -0
  34. package/build/routes/edge/http/performance.post.query.json +3 -0
  35. package/build/routes/edge/http/scrape.post.query.json +3 -0
  36. package/build/routes/edge/http/screenshot.post.query.json +3 -0
  37. package/build/routes/edge/tests/content.spec.js +21 -0
  38. package/build/routes/edge/tests/json.spec.js +100 -0
  39. package/build/routes/edge/ws/browser.query.json +3 -0
  40. package/build/routes/edge/ws/cdp.query.json +3 -0
  41. package/build/routes/edge/ws/function-connect.query.json +3 -0
  42. package/build/routes/edge/ws/page.query.json +3 -0
  43. package/build/routes/management/http/kill.get.query.json +3 -0
  44. package/build/routes/management/http/sessions.get.query.json +3 -0
  45. package/build/routes/management/tests/management.spec.js +44 -0
  46. package/build/server.js +1 -1
  47. package/build/shim.js +11 -1
  48. package/build/shim.spec.js +14 -0
  49. package/build/types.d.ts +2 -0
  50. package/extensions/ublocklite/_locales/ar/messages.json +5 -5
  51. package/extensions/ublocklite/_locales/br_FR/messages.json +2 -2
  52. package/extensions/ublocklite/_locales/cs/messages.json +8 -8
  53. package/extensions/ublocklite/_locales/da/messages.json +5 -5
  54. package/extensions/ublocklite/_locales/de/messages.json +1 -1
  55. package/extensions/ublocklite/_locales/es/messages.json +4 -4
  56. package/extensions/ublocklite/_locales/fa/messages.json +8 -8
  57. package/extensions/ublocklite/_locales/gl/messages.json +5 -5
  58. package/extensions/ublocklite/_locales/hu/messages.json +5 -5
  59. package/extensions/ublocklite/_locales/ka/messages.json +5 -5
  60. package/extensions/ublocklite/_locales/nb/messages.json +7 -7
  61. package/extensions/ublocklite/_locales/pt_PT/messages.json +9 -9
  62. package/extensions/ublocklite/_locales/ro/messages.json +32 -32
  63. package/extensions/ublocklite/_locales/ru/messages.json +3 -3
  64. package/extensions/ublocklite/_locales/sq/messages.json +5 -5
  65. package/extensions/ublocklite/_locales/sv/messages.json +5 -5
  66. package/extensions/ublocklite/_locales/zh_CN/messages.json +5 -5
  67. package/extensions/ublocklite/css/settings.css +6 -0
  68. package/extensions/ublocklite/dashboard.html +1 -1
  69. package/extensions/ublocklite/js/background.js +29 -8
  70. package/extensions/ublocklite/js/dashboard.js +4 -5
  71. package/extensions/ublocklite/js/jsonpath.js +25 -10
  72. package/extensions/ublocklite/js/mode-manager.js +7 -9
  73. package/extensions/ublocklite/js/report.js +2 -4
  74. package/extensions/ublocklite/js/scripting/css-api.js +33 -0
  75. package/extensions/ublocklite/js/scripting/css-generic.js +3 -13
  76. package/extensions/ublocklite/js/scripting/css-procedural-api.js +1 -9
  77. package/extensions/ublocklite/js/scripting/css-procedural.js +1 -5
  78. package/extensions/ublocklite/js/scripting/css-specific.js +1 -5
  79. package/extensions/ublocklite/js/scripting-manager.js +11 -8
  80. package/extensions/ublocklite/js/troubleshooting.js +33 -18
  81. package/extensions/ublocklite/js/utils.js +15 -13
  82. package/extensions/ublocklite/manifest.json +3 -2
  83. package/extensions/ublocklite/rulesets/generic-details.json +4 -2
  84. package/extensions/ublocklite/rulesets/main/adguard-mobile.json +4 -5
  85. package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +13 -8
  86. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +24 -18
  87. package/extensions/ublocklite/rulesets/main/annoyances-notifications.json +2 -1
  88. package/extensions/ublocklite/rulesets/main/annoyances-others.json +3 -2
  89. package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +5 -3
  90. package/extensions/ublocklite/rulesets/main/chn-0.json +26 -16
  91. package/extensions/ublocklite/rulesets/main/deu-0.json +4 -4
  92. package/extensions/ublocklite/rulesets/main/dpollock-0.json +2 -1
  93. package/extensions/ublocklite/rulesets/main/easylist.json +44 -101
  94. package/extensions/ublocklite/rulesets/main/easyprivacy.json +28 -15
  95. package/extensions/ublocklite/rulesets/main/est-0.json +2 -1
  96. package/extensions/ublocklite/rulesets/main/fin-0.json +3 -1
  97. package/extensions/ublocklite/rulesets/main/fra-0.json +6 -4
  98. package/extensions/ublocklite/rulesets/main/hrv-0.json +6 -3
  99. package/extensions/ublocklite/rulesets/main/hun-0.json +5 -2
  100. package/extensions/ublocklite/rulesets/main/idn-0.json +1 -1
  101. package/extensions/ublocklite/rulesets/main/ind-0.json +36 -34
  102. package/extensions/ublocklite/rulesets/main/isr-0.json +1 -1
  103. package/extensions/ublocklite/rulesets/main/ita-0.json +6 -3
  104. package/extensions/ublocklite/rulesets/main/jpn-1.json +31 -24
  105. package/extensions/ublocklite/rulesets/main/kor-1.json +5 -3
  106. package/extensions/ublocklite/rulesets/main/mkd-0.json +2 -1
  107. package/extensions/ublocklite/rulesets/main/nld-0.json +3 -1
  108. package/extensions/ublocklite/rulesets/main/nor-0.json +17 -3
  109. package/extensions/ublocklite/rulesets/main/pgl.json +16 -20
  110. package/extensions/ublocklite/rulesets/main/pol-0.json +1 -1
  111. package/extensions/ublocklite/rulesets/main/rus-0.json +14 -13
  112. package/extensions/ublocklite/rulesets/main/rus-1.json +5 -2
  113. package/extensions/ublocklite/rulesets/main/spa-1.json +13 -3
  114. package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +11287 -12041
  115. package/extensions/ublocklite/rulesets/main/swe-1.json +24 -22
  116. package/extensions/ublocklite/rulesets/main/tur-0.json +15 -6
  117. package/extensions/ublocklite/rulesets/main/ublock-badware.json +30 -3
  118. package/extensions/ublocklite/rulesets/main/ublock-filters.json +91 -88
  119. package/extensions/ublocklite/rulesets/main/ukr-0.json +3 -3
  120. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +4063 -328
  121. package/extensions/ublocklite/rulesets/main/vie-1.json +62 -51
  122. package/extensions/ublocklite/rulesets/regex/block-lan.json +16 -0
  123. package/extensions/ublocklite/rulesets/regex/chn-0.json +3 -2
  124. package/extensions/ublocklite/rulesets/regex/easylist.json +1 -6
  125. package/extensions/ublocklite/rulesets/regex/jpn-1.json +2 -3
  126. package/extensions/ublocklite/rulesets/regex/rus-0.json +2 -1
  127. package/extensions/ublocklite/rulesets/regex/ublock-badware.json +5 -5
  128. package/extensions/ublocklite/rulesets/regex/ublock-filters.json +23 -14
  129. package/extensions/ublocklite/rulesets/ruleset-details.json +239 -239
  130. package/extensions/ublocklite/rulesets/scripting/generic/adguard-mobile.js +2 -2
  131. package/extensions/ublocklite/rulesets/scripting/generic/alb-0.js +1 -1
  132. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
  133. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +2 -2
  134. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-others.js +2 -2
  135. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-overlays.js +2 -2
  136. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +3 -3
  137. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-widgets.js +1 -1
  138. package/extensions/ublocklite/rulesets/scripting/generic/bgr-0.js +2 -2
  139. package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +2 -2
  140. package/extensions/ublocklite/rulesets/scripting/generic/cze-0.js +2 -2
  141. package/extensions/ublocklite/rulesets/scripting/generic/deu-0.js +2 -2
  142. package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
  143. package/extensions/ublocklite/rulesets/scripting/generic/easyprivacy.js +1 -1
  144. package/extensions/ublocklite/rulesets/scripting/generic/est-0.js +2 -2
  145. package/extensions/ublocklite/rulesets/scripting/generic/fin-0.js +2 -2
  146. package/extensions/ublocklite/rulesets/scripting/generic/fra-0.js +2 -2
  147. package/extensions/ublocklite/rulesets/scripting/generic/grc-0.js +2 -2
  148. package/extensions/ublocklite/rulesets/scripting/generic/hrv-0.js +2 -2
  149. package/extensions/ublocklite/rulesets/scripting/generic/hun-0.js +2 -2
  150. package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +2 -2
  151. package/extensions/ublocklite/rulesets/scripting/generic/ind-0.js +1 -1
  152. package/extensions/ublocklite/rulesets/scripting/generic/irn-0.js +2 -2
  153. package/extensions/ublocklite/rulesets/scripting/generic/isr-0.js +2 -2
  154. package/extensions/ublocklite/rulesets/scripting/generic/ita-0.js +2 -2
  155. package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +2 -2
  156. package/extensions/ublocklite/rulesets/scripting/generic/kor-1.js +2 -2
  157. package/extensions/ublocklite/rulesets/scripting/generic/ltu-0.js +1 -1
  158. package/extensions/ublocklite/rulesets/scripting/generic/lva-0.js +1 -1
  159. package/extensions/ublocklite/rulesets/scripting/generic/mkd-0.js +2 -2
  160. package/extensions/ublocklite/rulesets/scripting/generic/nld-0.js +2 -2
  161. package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +2 -2
  162. package/extensions/ublocklite/rulesets/scripting/generic/pol-0.js +2 -2
  163. package/extensions/ublocklite/rulesets/scripting/generic/rou-1.js +2 -2
  164. package/extensions/ublocklite/rulesets/scripting/generic/rus-0.js +2 -2
  165. package/extensions/ublocklite/rulesets/scripting/generic/rus-1.js +2 -2
  166. package/extensions/ublocklite/rulesets/scripting/generic/spa-0.js +2 -2
  167. package/extensions/ublocklite/rulesets/scripting/generic/spa-1.js +2 -2
  168. package/extensions/ublocklite/rulesets/scripting/generic/svn-0.js +1 -1
  169. package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +2 -2
  170. package/extensions/ublocklite/rulesets/scripting/generic/tha-0.js +1 -1
  171. package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +2 -2
  172. package/extensions/ublocklite/rulesets/scripting/generic/ublock-badware.js +1 -1
  173. package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
  174. package/extensions/ublocklite/rulesets/scripting/generic/ubol-tests.js +2 -2
  175. package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +3 -3
  176. package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +3 -3
  177. package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +3 -5
  178. package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +4 -0
  179. package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +4 -0
  180. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +1 -1
  181. package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +3 -3
  182. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
  183. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +2 -2
  184. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
  185. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +3 -3
  186. package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
  187. package/extensions/ublocklite/rulesets/scripting/procedural/fin-0.js +1 -1
  188. package/extensions/ublocklite/rulesets/scripting/procedural/fra-0.js +1 -1
  189. package/extensions/ublocklite/rulesets/scripting/procedural/grc-0.js +3 -3
  190. package/extensions/ublocklite/rulesets/scripting/procedural/ind-0.js +3 -3
  191. package/extensions/ublocklite/rulesets/scripting/procedural/irn-0.js +3 -3
  192. package/extensions/ublocklite/rulesets/scripting/procedural/isr-0.js +3 -3
  193. package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
  194. package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +3 -3
  195. package/extensions/ublocklite/rulesets/scripting/procedural/rou-1.js +3 -3
  196. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  197. package/extensions/ublocklite/rulesets/scripting/procedural/rus-1.js +3 -3
  198. package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
  199. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
  200. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-experimental.js +42 -0
  201. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
  202. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.addEventListener-defuser.js +7 -3
  203. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.prevent-setTimeout.js +5 -1
  204. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.addEventListener-defuser.js +5 -1
  205. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-requestAnimationFrame.js +5 -1
  206. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-setTimeout.js +5 -1
  207. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.remove-node-text.js +1 -1
  208. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  209. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  210. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-session-storage-item.js +2 -2
  211. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +5 -2
  212. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-replace-node-text.js +2 -2
  213. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  214. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.addEventListener-defuser.js +5 -1
  215. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-constant.js +2 -2
  216. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.addEventListener-defuser.js +5 -1
  217. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.json-prune.js +2 -2
  218. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.prevent-setInterval.js +5 -1
  219. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.prevent-setTimeout.js +5 -1
  220. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.set-cookie.js +2 -2
  221. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +2 -2
  222. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-stack-trace.js +2 -2
  223. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +6 -2
  224. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.noeval-if.js +5 -1
  225. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-fetch.js +5 -1
  226. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setInterval.js +5 -1
  227. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +6 -2
  228. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-window-open.js +5 -1
  229. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-attr.js +2 -2
  230. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-class.js +2 -2
  231. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-node-text.js +2 -2
  232. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +2 -2
  233. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-click-element.js +3 -0
  234. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-argument.js +19 -8
  235. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-outbound-text.js +5 -1
  236. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-suppress-native-method.js +5 -1
  237. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +5 -1
  238. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.evaldata-prune.js +5 -1
  239. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.noeval-if.js +5 -1
  240. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +7 -3
  241. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setInterval.js +5 -1
  242. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +6 -2
  243. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-window-open.js +5 -1
  244. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +1 -1
  245. package/extensions/ublocklite/rulesets/scripting/scriptlet/{nld-0.json-prune-fetch-response.js → chn-0.set-cookie.js} +120 -266
  246. package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.addEventListener-defuser.js +5 -1
  247. package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.prevent-setInterval.js +5 -1
  248. package/extensions/ublocklite/rulesets/scripting/scriptlet/cze-0.prevent-setTimeout.js +5 -1
  249. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.prevent-fetch.js +5 -1
  250. package/extensions/ublocklite/rulesets/scripting/scriptlet/est-0.addEventListener-defuser.js +5 -1
  251. package/extensions/ublocklite/rulesets/scripting/scriptlet/fin-0.prevent-setTimeout.js +5 -1
  252. package/extensions/ublocklite/rulesets/scripting/scriptlet/{vie-1.addEventListener-defuser.js → fin-0.remove-node-text.js} +105 -154
  253. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.addEventListener-defuser.js +5 -1
  254. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-fetch.js +5 -1
  255. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-requestAnimationFrame.js +5 -1
  256. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setInterval.js +5 -1
  257. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setTimeout.js +5 -1
  258. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-window-open.js +5 -1
  259. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.addEventListener-defuser.js +5 -1
  260. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.prevent-setTimeout.js +5 -1
  261. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.prevent-window-open.js +5 -1
  262. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.set-constant.js +2 -2
  263. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.addEventListener-defuser.js +5 -1
  264. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.noeval-if.js +5 -1
  265. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-fetch.js +5 -1
  266. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-setTimeout.js +5 -1
  267. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-window-open.js +5 -1
  268. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.addEventListener-defuser.js +5 -1
  269. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.href-sanitizer.js +4 -22
  270. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +5 -1
  271. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-setTimeout.js +5 -1
  272. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-window-open.js +5 -1
  273. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.addEventListener-defuser.js +5 -1
  274. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +6 -2
  275. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-setTimeout.js +5 -1
  276. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-window-open.js +5 -1
  277. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.addEventListener-defuser.js +5 -1
  278. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.adjust-setInterval.js +2 -2
  279. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.href-sanitizer.js +6 -24
  280. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.json-prune.js +2 -2
  281. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.noeval-if.js +5 -1
  282. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +5 -1
  283. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-setInterval.js +5 -1
  284. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-setTimeout.js +5 -1
  285. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-window-open.js +5 -1
  286. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.abort-current-script.js +2 -2
  287. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.addEventListener-defuser.js +7 -3
  288. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +7 -3
  289. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setInterval.js +5 -1
  290. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setTimeout.js +7 -3
  291. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-window-open.js +5 -1
  292. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-xhr.js +2 -2
  293. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.remove-cookie.js +2 -2
  294. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.remove-node-text.js +2 -2
  295. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-constant.js +2 -2
  296. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-local-storage-item.js +399 -0
  297. package/extensions/ublocklite/rulesets/scripting/scriptlet/ltu-0.prevent-setTimeout.js +5 -1
  298. package/extensions/ublocklite/rulesets/scripting/scriptlet/ltu-0.prevent-window-open.js +5 -1
  299. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.addEventListener-defuser.js +5 -1
  300. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-fetch.js +5 -1
  301. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-setTimeout.js +5 -1
  302. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.addEventListener-defuser.js +5 -1
  303. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-fetch.js +5 -1
  304. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-setTimeout.js +5 -1
  305. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.addEventListener-defuser.js +5 -1
  306. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.noeval-if.js +5 -1
  307. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-setInterval.js +5 -1
  308. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-setTimeout.js +5 -1
  309. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-window-open.js +5 -1
  310. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.noeval-if.js +5 -1
  311. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setInterval.js +5 -1
  312. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-setTimeout.js +5 -1
  313. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.prevent-window-open.js +5 -1
  314. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-write.js +2 -2
  315. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-stack-trace.js +2 -2
  316. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +8 -4
  317. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.href-sanitizer.js +6 -24
  318. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.noeval-if.js +5 -1
  319. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +5 -1
  320. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setInterval.js +5 -1
  321. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setTimeout.js +5 -1
  322. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-window-open.js +5 -1
  323. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +3 -3
  324. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +2 -2
  325. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
  326. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-cookie.js +2 -2
  327. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.addEventListener-defuser.js +5 -1
  328. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-fetch.js +5 -1
  329. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-setTimeout.js +5 -1
  330. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-local-storage-item.js +399 -0
  331. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +5 -1
  332. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.href-sanitizer.js +4 -22
  333. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.json-prune.js +2 -2
  334. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +6 -2
  335. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +5 -1
  336. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-requestAnimationFrame.js +5 -1
  337. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setInterval.js +5 -1
  338. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.js +7 -3
  339. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +5 -1
  340. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.remove-node-text.js +2 -2
  341. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.addEventListener-defuser.js +5 -1
  342. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.href-sanitizer.js +4 -22
  343. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.noeval-if.js +5 -1
  344. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setInterval.js +5 -1
  345. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setTimeout.js +5 -1
  346. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +5 -1
  347. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +5 -1
  348. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setInterval.js +5 -1
  349. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setTimeout.js +5 -1
  350. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +6 -2
  351. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
  352. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.addEventListener-defuser.js +5 -1
  353. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.noeval-if.js +5 -1
  354. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-badware.trusted-replace-argument.js +19 -8
  355. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-json-edit-xhr-request.js +848 -0
  356. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-replace-node-text.js +1 -1
  357. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
  358. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +1 -1
  359. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +1 -1
  360. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
  361. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +7 -3
  362. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +1 -1
  363. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +2 -2
  364. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.href-sanitizer.js +5 -23
  365. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-fetch-response.js +29 -11
  366. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-xhr-response.js +24 -10
  367. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit.js +29 -11
  368. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
  369. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-xhr-response.js +3 -3
  370. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +2 -2
  371. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.jsonl-edit-xhr-response.js +24 -10
  372. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +7 -3
  373. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +7 -3
  374. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +6 -2
  375. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +8 -4
  376. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +8 -4
  377. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +7 -3
  378. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
  379. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-attr.js +2 -2
  380. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
  381. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +3 -3
  382. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +3 -3
  383. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
  384. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-click-element.js +3 -0
  385. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-create-html.js +2 -2
  386. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-response.js +29 -11
  387. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit.js +29 -11
  388. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-override-element-method.js +5 -1
  389. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-dom-bypass.js +5 -1
  390. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-fetch.js +7 -3
  391. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +21 -10
  392. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +3 -3
  393. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +5 -1
  394. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-attr.js +2 -2
  395. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +7 -3
  396. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-fetch-response.js +29 -11
  397. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-xhr-response.js +24 -10
  398. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.prevent-setTimeout.js +5 -1
  399. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.trusted-prevent-dom-bypass.js +5 -1
  400. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-fetch.js +5 -1
  401. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-window-open.js +5 -1
  402. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
  403. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +2 -2
  404. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-fetch.js +5 -1
  405. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-setTimeout.js +5 -1
  406. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.set-constant.js +2 -2
  407. package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
  408. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  409. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +3 -3
  410. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  411. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  412. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  413. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  414. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  415. package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
  416. package/extensions/ublocklite/rulesets/scripting/specific/est-0.js +3 -3
  417. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  418. package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
  419. package/extensions/ublocklite/rulesets/scripting/specific/grc-0.js +3 -3
  420. package/extensions/ublocklite/rulesets/scripting/specific/hrv-0.js +3 -3
  421. package/extensions/ublocklite/rulesets/scripting/specific/hun-0.js +3 -3
  422. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  423. package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
  424. package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +3 -3
  425. package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
  426. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  427. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
  428. package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +3 -3
  429. package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
  430. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  431. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  432. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  433. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  434. package/extensions/ublocklite/rulesets/scripting/specific/ublock-badware.js +1 -1
  435. package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
  436. package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +3 -3
  437. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  438. package/extensions/ublocklite/rulesets/scriptlet-details.json +205 -117
  439. package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +18 -28
  440. package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +1 -0
  441. package/extensions/ublocklite/rulesets/strictblock/annoyances-widgets.json +1 -0
  442. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +267 -247
  443. package/extensions/ublocklite/rulesets/strictblock/deu-0.json +1 -0
  444. package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +2 -1
  445. package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
  446. package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +47 -3
  447. package/extensions/ublocklite/rulesets/strictblock/fra-0.json +102 -41
  448. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +208 -198
  449. package/extensions/ublocklite/rulesets/strictblock/nor-0.json +1 -1
  450. package/extensions/ublocklite/rulesets/strictblock/pgl.json +16 -20
  451. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +5 -1
  452. package/extensions/ublocklite/rulesets/strictblock/spa-1.json +1 -0
  453. package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +11287 -12041
  454. package/extensions/ublocklite/rulesets/strictblock/swe-1.json +0 -1
  455. package/extensions/ublocklite/rulesets/strictblock/tur-0.json +1 -0
  456. package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +671 -653
  457. package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +23 -19
  458. package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +3 -0
  459. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +4063 -328
  460. package/extensions/ublocklite/rulesets/strictblock/vie-1.json +5 -1
  461. package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +59 -1
  462. package/extensions/ublocklite/ublock.zip +0 -0
  463. package/package.json +23 -22
  464. package/scripts/install-debugger.js +2 -2
  465. package/src/browsers/index.ts +20 -0
  466. package/src/routes/chrome/tests/content.spec.ts +24 -0
  467. package/src/routes/chrome/tests/json.spec.ts +134 -0
  468. package/src/routes/chromium/tests/content.spec.ts +24 -0
  469. package/src/routes/chromium/tests/function.spec.ts +33 -0
  470. package/src/routes/chromium/tests/json.spec.ts +134 -0
  471. package/src/routes/chromium/tests/scrape.spec.ts +3 -1
  472. package/src/routes/edge/tests/content.spec.ts +24 -0
  473. package/src/routes/edge/tests/json.spec.ts +134 -0
  474. package/src/routes/management/tests/management.spec.ts +66 -0
  475. package/src/server.ts +1 -1
  476. package/src/shared/screenshot.http.ts +1 -1
  477. package/src/shim.spec.ts +18 -0
  478. package/src/shim.ts +15 -1
  479. package/src/types.ts +2 -0
  480. package/static/docs/swagger.json +5 -2
  481. package/static/docs/swagger.min.json +4 -1
  482. package/static/function/client.js +143 -105
  483. package/static/function/index.html +143 -105
  484. package/build/routes/chrome/tests/json-version.spec.js +0 -37
  485. package/build/routes/chromium/tests/json-version.spec.js +0 -37
  486. package/build/routes/edge/tests/json-version.spec.js +0 -37
  487. package/src/routes/chrome/tests/json-version.spec.ts +0 -52
  488. package/src/routes/chromium/tests/json-version.spec.ts +0 -52
  489. package/src/routes/edge/tests/json-version.spec.ts +0 -52
  490. /package/build/routes/chrome/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
  491. /package/build/routes/chromium/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
  492. /package/build/routes/edge/tests/{json-version.spec.d.ts → json.spec.d.ts} +0 -0
@@ -20,174 +20,130 @@
20
20
 
21
21
  */
22
22
 
23
- // ruleset: vie-1
23
+ // ruleset: fin-0
24
24
 
25
25
  // Important!
26
26
  // Isolate from global scope
27
27
 
28
28
  // Start of local scope
29
- (function uBOL_addEventListenerDefuser() {
29
+ (function uBOL_removeNodeText() {
30
30
 
31
31
  /******************************************************************************/
32
32
 
33
- function addEventListenerDefuser(
34
- type = '',
35
- pattern = ''
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 = ''
36
45
  ) {
37
46
  const safe = safeSelf();
38
- const extraArgs = safe.getExtraArgs(Array.from(arguments), 2);
39
- const logPrefix = safe.makeLogPrefix('prevent-addEventListener', type, pattern);
40
- const reType = safe.patternToRegex(type, undefined, true);
41
- const rePattern = safe.patternToRegex(pattern);
42
- const debug = shouldDebug(extraArgs);
43
- const targetSelector = extraArgs.elements || undefined;
44
- const elementMatches = elem => {
45
- if ( targetSelector === 'window' ) { return elem === window; }
46
- if ( targetSelector === 'document' ) { return elem === document; }
47
- if ( elem && elem.matches && elem.matches(targetSelector) ) { return true; }
48
- const elems = Array.from(document.querySelectorAll(targetSelector));
49
- return elems.includes(elem);
50
- };
51
- const elementDetails = elem => {
52
- if ( elem instanceof Window ) { return 'window'; }
53
- if ( elem instanceof Document ) { return 'document'; }
54
- if ( elem instanceof Element === false ) { return '?'; }
55
- const parts = [];
56
- // https://github.com/uBlockOrigin/uAssets/discussions/17907#discussioncomment-9871079
57
- const id = String(elem.id);
58
- if ( id !== '' ) { parts.push(`#${CSS.escape(id)}`); }
59
- for ( let i = 0; i < elem.classList.length; i++ ) {
60
- parts.push(`.${CSS.escape(elem.classList.item(i))}`);
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());
61
60
  }
62
- for ( let i = 0; i < elem.attributes.length; i++ ) {
63
- const attr = elem.attributes.item(i);
64
- if ( attr.name === 'id' ) { continue; }
65
- if ( attr.name === 'class' ) { continue; }
66
- parts.push(`[${CSS.escape(attr.name)}="${attr.value}"]`);
61
+ observer.disconnect();
62
+ if ( safe.logLevel > 1 ) {
63
+ safe.uboLog(logPrefix, 'Quitting');
67
64
  }
68
- return parts.join('');
69
65
  };
70
- const shouldPrevent = (thisArg, type, handler) => {
71
- const matchesType = safe.RegExp_test.call(reType, type);
72
- const matchesHandler = safe.RegExp_test.call(rePattern, handler);
73
- const matchesEither = matchesType || matchesHandler;
74
- const matchesBoth = matchesType && matchesHandler;
75
- if ( debug === 1 && matchesBoth || debug === 2 && matchesEither ) {
76
- debugger; // eslint-disable-line no-debugger
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; }
77
84
  }
78
- if ( matchesBoth && targetSelector !== undefined ) {
79
- if ( elementMatches(thisArg) === false ) { return false; }
85
+ if ( reExcludes ) {
86
+ reExcludes.lastIndex = 0;
87
+ if ( safe.RegExp_test.call(reExcludes, before) ) { return true; }
80
88
  }
81
- return matchesBoth;
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;
82
103
  };
83
- const proxyFn = function(context) {
84
- const { callArgs, thisArg } = context;
85
- let t, h;
86
- try {
87
- t = String(callArgs[0]);
88
- if ( typeof callArgs[1] === 'function' ) {
89
- h = String(safe.Function_toString(callArgs[1]));
90
- } else if ( typeof callArgs[1] === 'object' && callArgs[1] !== null ) {
91
- if ( typeof callArgs[1].handleEvent === 'function' ) {
92
- h = String(safe.Function_toString(callArgs[1].handleEvent));
93
- }
94
- } else {
95
- h = String(callArgs[1]);
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;
96
110
  }
97
- } catch {
98
111
  }
99
- if ( type === '' && pattern === '' ) {
100
- safe.uboLog(logPrefix, `Called: ${t}\n${h}\n${elementDetails(thisArg)}`);
101
- } else if ( shouldPrevent(thisArg, t, h) ) {
102
- return safe.uboLog(logPrefix, `Prevented: ${t}\n${h}\n${elementDetails(thisArg)}`);
103
- }
104
- return context.reflect();
105
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; }
106
133
  runAt(( ) => {
107
- proxyApplyFn('EventTarget.prototype.addEventListener', proxyFn);
108
- proxyApplyFn('document.addEventListener', proxyFn);
109
- }, extraArgs.runAt);
134
+ const quitAfter = extraArgs.quitAfter || 0;
135
+ if ( quitAfter !== 0 ) {
136
+ setTimeout(( ) => { stop(); }, quitAfter);
137
+ } else {
138
+ stop();
139
+ }
140
+ }, 'interactive');
110
141
  }
111
142
 
112
- function proxyApplyFn(
113
- target = '',
114
- handler = ''
115
- ) {
116
- let context = globalThis;
117
- let prop = target;
118
- for (;;) {
119
- const pos = prop.indexOf('.');
120
- if ( pos === -1 ) { break; }
121
- context = context[prop.slice(0, pos)];
122
- if ( context instanceof Object === false ) { return; }
123
- prop = prop.slice(pos+1);
124
- }
125
- const fn = context[prop];
126
- if ( typeof fn !== 'function' ) { return; }
127
- if ( proxyApplyFn.CtorContext === undefined ) {
128
- proxyApplyFn.ctorContexts = [];
129
- proxyApplyFn.CtorContext = class {
130
- constructor(...args) {
131
- this.init(...args);
132
- }
133
- init(callFn, callArgs) {
134
- this.callFn = callFn;
135
- this.callArgs = callArgs;
136
- return this;
137
- }
138
- reflect() {
139
- const r = Reflect.construct(this.callFn, this.callArgs);
140
- this.callFn = this.callArgs = this.private = undefined;
141
- proxyApplyFn.ctorContexts.push(this);
142
- return r;
143
- }
144
- static factory(...args) {
145
- return proxyApplyFn.ctorContexts.length !== 0
146
- ? proxyApplyFn.ctorContexts.pop().init(...args)
147
- : new proxyApplyFn.CtorContext(...args);
148
- }
149
- };
150
- proxyApplyFn.applyContexts = [];
151
- proxyApplyFn.ApplyContext = class {
152
- constructor(...args) {
153
- this.init(...args);
154
- }
155
- init(callFn, thisArg, callArgs) {
156
- this.callFn = callFn;
157
- this.thisArg = thisArg;
158
- this.callArgs = callArgs;
159
- return this;
160
- }
161
- reflect() {
162
- const r = Reflect.apply(this.callFn, this.thisArg, this.callArgs);
163
- this.callFn = this.thisArg = this.callArgs = this.private = undefined;
164
- proxyApplyFn.applyContexts.push(this);
165
- return r;
166
- }
167
- static factory(...args) {
168
- return proxyApplyFn.applyContexts.length !== 0
169
- ? proxyApplyFn.applyContexts.pop().init(...args)
170
- : new proxyApplyFn.ApplyContext(...args);
171
- }
172
- };
173
- }
174
- const fnStr = fn.toString();
175
- const toString = (function toString() { return fnStr; }).bind(null);
176
- const proxyDetails = {
177
- apply(target, thisArg, args) {
178
- return handler(proxyApplyFn.ApplyContext.factory(target, thisArg, args));
179
- },
180
- get(target, prop) {
181
- if ( prop === 'toString' ) { return toString; }
182
- return Reflect.get(target, prop);
183
- },
184
- };
185
- if ( fn.prototype?.constructor === fn ) {
186
- proxyDetails.construct = function(target, args) {
187
- return handler(proxyApplyFn.CtorContext.factory(target, args));
188
- };
189
- }
190
- context[prop] = new Proxy(fn, proxyDetails);
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);
191
147
  }
192
148
 
193
149
  function runAt(fn, when) {
@@ -409,16 +365,11 @@ function safeSelf() {
409
365
  return safe;
410
366
  }
411
367
 
412
- function shouldDebug(details) {
413
- if ( details instanceof Object === false ) { return false; }
414
- return scriptletGlobals.canDebug && details.debug;
415
- }
416
-
417
368
  /******************************************************************************/
418
369
 
419
370
  const scriptletGlobals = {}; // eslint-disable-line
420
- const argsList = [["click","open"]];
421
- const hostnamesMap = new Map([["survey-smiles.com",0]]);
371
+ const argsList = [["script","async-hide"]];
372
+ const hostnamesMap = new Map([["vauva.fi",0]]);
422
373
  const exceptionsMap = new Map([]);
423
374
  const hasEntities = false;
424
375
  const hasAncestors = false;
@@ -486,7 +437,7 @@ if ( hasAncestors ) {
486
437
  // Apply scriplets
487
438
  for ( const i of todoIndices ) {
488
439
  if ( tonotdoIndices.has(i) ) { continue; }
489
- try { addEventListenerDefuser(...argsList[i]); }
440
+ try { removeNodeText(...argsList[i]); }
490
441
  catch { }
491
442
  }
492
443
 
@@ -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
  };
@@ -460,8 +460,8 @@ function validateConstantFn(trusted, raw, extraArgs = {}) {
460
460
  /******************************************************************************/
461
461
 
462
462
  const scriptletGlobals = {}; // eslint-disable-line
463
- const argsList = [["cookie_alert_overlay","noopFunc"],["adblock","false"],["AdHandler.adblocked","0"],["AdHandler.adBlockEnabled","0"],["AdHandler.checkAdblock","noopFunc"],["tie.ad_blocker_detector","undefined"],["ENABLE_PAGE_LEVEL_ADS","true"],["gemiusStream","{}"],["gemiusStream.event","noopFunc"],["gemiusStream.init","noopFunc"],["window.ado","null"]];
464
- const hostnamesMap = new Map([["laptophardware.hu",0],["milestone66.hu",0],["reformsziget.hu",0],["paplanvilag.hu",0],["foodker.hu",0],["angol-magyar-szotar.hu",1],["embed.indavideo.hu",[2,3,4]],["huaweiblog.hu",5],["myonlineradio.hu",6],["player.rtl.hu",[7,8,9]],["femina.hu",10]]);
463
+ const argsList = [["show_modal","noopFunc"],["cookie_alert_overlay","noopFunc"],["adblock","false"],["AdHandler.adblocked","0"],["AdHandler.adBlockEnabled","0"],["AdHandler.checkAdblock","noopFunc"],["tie.ad_blocker_detector","undefined"],["ENABLE_PAGE_LEVEL_ADS","true"],["gemiusStream","{}"],["gemiusStream.event","noopFunc"],["gemiusStream.init","noopFunc"],["window.ado","null"]];
464
+ const hostnamesMap = new Map([["arcanum.com",0],["laptophardware.hu",1],["milestone66.hu",1],["reformsziget.hu",1],["paplanvilag.hu",1],["foodker.hu",1],["angol-magyar-szotar.hu",2],["embed.indavideo.hu",[3,4,5]],["huaweiblog.hu",6],["myonlineradio.hu",7],["player.rtl.hu",[8,9,10]],["femina.hu",11]]);
465
465
  const exceptionsMap = new Map([]);
466
466
  const hasEntities = false;
467
467
  const hasAncestors = false;
@@ -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
  };
@@ -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
  };
@@ -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
  };