@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
@@ -204,6 +204,10 @@ function proxyApplyFn(
204
204
  : new proxyApplyFn.ApplyContext(...args);
205
205
  }
206
206
  };
207
+ proxyApplyFn.isCtor = new Map();
208
+ }
209
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
210
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
207
211
  }
208
212
  const fnStr = fn.toString();
209
213
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -216,7 +220,7 @@ function proxyApplyFn(
216
220
  return Reflect.get(target, prop);
217
221
  },
218
222
  };
219
- if ( fn.prototype?.constructor === fn ) {
223
+ if ( proxyApplyFn.isCtor.get(target) ) {
220
224
  proxyDetails.construct = function(target, args) {
221
225
  return handler(proxyApplyFn.CtorContext.factory(target, args));
222
226
  };
@@ -435,7 +439,7 @@ function getRandomTokenFn() {
435
439
  /******************************************************************************/
436
440
 
437
441
  const scriptletGlobals = {}; // eslint-disable-line
438
- const argsList = [["Document.prototype.querySelectorAll","\"/^#/\"","prevent","/nawNA inlineScript/"],["Document.prototype.querySelector","\"/^[.#][A-Za-z]+_[A-Za-z]*$/\"","prevent","/stackDepth:[4-7].+inlineScript/"],["Document.prototype.querySelector","\"/^\\[class~=/\"","prevent","inlineScript"],["Element.prototype.insertAdjacentHTML","\"afterbegin\"","prevent","/\\/[A-Za-z]+\\.min\\.js\\?/"],["Document.prototype.createTextNode","\"/広告/\"","abort"],["Document.prototype.createElement","\"script\"","prevent","litespeed/js"],["eval","\"/chp_?ad/\"","prevent"],["HTMLScriptElement.prototype.setAttribute","\"data-sdk\"","abort"],["eval","\"adsBlocked\""],["Storage.prototype.setItem","searchCount"],["fetch","\"flashtalking\""],["DOMTokenList.prototype.add","\"-\""],["HTMLScriptElement.prototype.setAttribute","\"data-cfasync\"","abort"],["DOMTokenList.prototype.add","\"-\"","prevent","/wp-content\\/uploads\\/[a-z]+\\/[a-z]+\\.js/"]];
442
+ const argsList = [["Document.prototype.querySelectorAll","\"/^#/\"","prevent","/nawNA inlineScript/"],["Document.prototype.querySelector","\"/^[.#][A-Za-z]+_[A-Za-z]*$/\"","prevent","/stackDepth:[4-7].+inlineScript/"],["Document.prototype.querySelector","\"/^\\[class~=/\"","prevent","inlineScript"],["Element.prototype.insertAdjacentHTML","\"afterbegin\"","prevent","/\\/[A-Za-z]+\\.min\\.js\\?/"],["Document.prototype.createTextNode","\"/[\\sA-z亜-熙ぁ-んァ-ヶ]+/\"","abort","/\\/[0-9A-Za-z]{9,11}\\.js\\?v=/"],["Document.prototype.createElement","\"script\"","prevent","litespeed/js"],["eval","\"/chp_?ad/\"","prevent"],["HTMLScriptElement.prototype.setAttribute","\"data-sdk\"","abort"],["eval","\"adsBlocked\""],["Storage.prototype.setItem","searchCount"],["fetch","\"flashtalking\""],["DOMTokenList.prototype.add","\"-\""],["HTMLScriptElement.prototype.setAttribute","\"data-cfasync\"","abort"],["DOMTokenList.prototype.add","\"-\"","prevent","/wp-content\\/uploads\\/[a-z]+\\/[a-z]+\\.js/"]];
439
443
  const hostnamesMap = new Map([["japscan.*",[0,1,2]],["pvpoke-re.com",[3,4]],["yaoimangaonline.com",5],["nxbrew.net",6],["tresdaos.com",6],["cinema.com.my",7],["allcelebspics.com",8],["alttyab.net",8],["an1me.*",8],["androjungle.com",8],["arkadmin.fr",8],["azoranov.com",8],["barranquillaestereo.com",8],["brasilsimulatormods.com",8],["cambrevenements.com",8],["cartoonstvonline.com",8],["comparili.net",8],["diaobe.net",8],["filegajah.com",8],["filmestorrent.tv",8],["franceprefecture.fr",8],["freecricket.net",8],["germanvibes.org",8],["getmaths.co.uk",8],["gewinnspiele-markt.com",8],["hamzag.com",8],["hannibalfm.net",8],["hornyconfessions.com",8],["ilcamminodiluce.it",8],["joguinhosgratis.com",8],["joziporn.com",8],["justpaste.top",8],["mctechsolutions.in",8],["medibok.se",8],["megafire.net",8],["mirrorpoi.my.id",8],["mockuphunts.com",8],["mortaltech.com",8],["multivideodownloader.com",8],["nauci-engleski.com",8],["nauci-njemacki.com",8],["nekopoi.my.id",8],["pa1n.xyz",8],["papafoot.*",8],["playertv.net",8],["programsolve.com",8],["radio-deejay.com",8],["ranaaclanhungary.com",8],["rasoi.me",8],["riprendiamocicatania.com",8],["rsrlink.in",8],["seriesperu.com",8],["shmapp.ca",8],["skillmineopportunities.com",8],["teczpert.com",8],["totalsportek.app",8],["tromcap.com",8],["tv0800.com",8],["tv3monde.com",8],["ustrendynews.com",8],["watchnow.fun",8],["yelitzonpc.com",8],["ymknow.xyz",8],["shomareh-yab.ir",9],["cimanow.cc",10],["freex2line.online",10],["evaki.fun",11],["sportshub.to",11],["sportnews.to",11],["bebasbokep.online",12],["asianboy.fans",13]]);
440
444
  const exceptionsMap = new Map([]);
441
445
  const hasEntities = true;
@@ -404,7 +404,7 @@ class JSONPath {
404
404
  continue;
405
405
  }
406
406
  if ( c0 === 0x27 /* ' */ ) {
407
- const r = this.#consumeQuotedIdentifier(query, i+1);
407
+ const r = this.#untilChar(query, 0x27 /* ' */, i+1)
408
408
  if ( r === undefined ) { return; }
409
409
  keys.push(r.s);
410
410
  i = r.i;
@@ -425,22 +425,27 @@ class JSONPath {
425
425
  }
426
426
  return { s: keys.length === 1 ? keys[0] : keys, i };
427
427
  }
428
- #consumeQuotedIdentifier(query, i) {
428
+ #consumeUnquotedIdentifier(query, i) {
429
+ const match = this.#reUnquotedIdentifier.exec(query.slice(i));
430
+ if ( match === null ) { return; }
431
+ return match[0];
432
+ }
433
+ #untilChar(query, targetCharCode, i) {
429
434
  const len = query.length;
430
435
  const parts = [];
431
436
  let beg = i, end = i;
432
437
  for (;;) {
433
438
  if ( end === len ) { return; }
434
439
  const c = query.charCodeAt(end);
435
- if ( c === 0x27 /* ' */ ) {
440
+ if ( c === targetCharCode ) {
436
441
  parts.push(query.slice(beg, end));
437
442
  end += 1;
438
443
  break;
439
444
  }
440
445
  if ( c === 0x5C /* \ */ && (end+1) < len ) {
441
446
  parts.push(query.slice(beg, end));
442
- const d = query.chatCodeAt(end+1);
443
- if ( d === 0x27 || d === 0x5C ) {
447
+ const d = query.charCodeAt(end+1);
448
+ if ( d === targetCharCode || d === 0x5C ) {
444
449
  end += 1;
445
450
  beg = end;
446
451
  }
@@ -449,12 +454,20 @@ class JSONPath {
449
454
  }
450
455
  return { s: parts.join(''), i: end };
451
456
  }
452
- #consumeUnquotedIdentifier(query, i) {
453
- const match = this.#reUnquotedIdentifier.exec(query.slice(i));
454
- if ( match === null ) { return; }
455
- return match[0];
456
- }
457
457
  #compileExpr(query, step, i) {
458
+ if ( query.startsWith('=/', i) ) {
459
+ const r = this.#untilChar(query, 0x2F /* / */, i+2);
460
+ if ( r === undefined ) { return i; }
461
+ const match = /^[i]/.exec(query.slice(r.i));
462
+ try {
463
+ step.rval = new RegExp(r.s, match && match[0] || undefined);
464
+ } catch {
465
+ return i;
466
+ }
467
+ step.op = 're';
468
+ if ( match ) { r.i += match[0].length; }
469
+ return r.i;
470
+ }
458
471
  const match = this.#reExpr.exec(query.slice(i));
459
472
  if ( match === null ) { return i; }
460
473
  try {
@@ -494,6 +507,7 @@ class JSONPath {
494
507
  case '^=': outcome = `${v}`.startsWith(step.rval) === target; break;
495
508
  case '$=': outcome = `${v}`.endsWith(step.rval) === target; break;
496
509
  case '*=': outcome = `${v}`.includes(step.rval) === target; break;
510
+ case 're': outcome = step.rval.test(`${v}`); break;
497
511
  default: outcome = hasOwn === target; break;
498
512
  }
499
513
  if ( outcome ) { return k; }
@@ -661,6 +675,10 @@ function proxyApplyFn(
661
675
  : new proxyApplyFn.ApplyContext(...args);
662
676
  }
663
677
  };
678
+ proxyApplyFn.isCtor = new Map();
679
+ }
680
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
681
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
664
682
  }
665
683
  const fnStr = fn.toString();
666
684
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -673,7 +691,7 @@ function proxyApplyFn(
673
691
  return Reflect.get(target, prop);
674
692
  },
675
693
  };
676
- if ( fn.prototype?.constructor === fn ) {
694
+ if ( proxyApplyFn.isCtor.get(target) ) {
677
695
  proxyDetails.construct = function(target, args) {
678
696
  return handler(proxyApplyFn.CtorContext.factory(target, args));
679
697
  };
@@ -396,7 +396,7 @@ class JSONPath {
396
396
  continue;
397
397
  }
398
398
  if ( c0 === 0x27 /* ' */ ) {
399
- const r = this.#consumeQuotedIdentifier(query, i+1);
399
+ const r = this.#untilChar(query, 0x27 /* ' */, i+1)
400
400
  if ( r === undefined ) { return; }
401
401
  keys.push(r.s);
402
402
  i = r.i;
@@ -417,22 +417,27 @@ class JSONPath {
417
417
  }
418
418
  return { s: keys.length === 1 ? keys[0] : keys, i };
419
419
  }
420
- #consumeQuotedIdentifier(query, i) {
420
+ #consumeUnquotedIdentifier(query, i) {
421
+ const match = this.#reUnquotedIdentifier.exec(query.slice(i));
422
+ if ( match === null ) { return; }
423
+ return match[0];
424
+ }
425
+ #untilChar(query, targetCharCode, i) {
421
426
  const len = query.length;
422
427
  const parts = [];
423
428
  let beg = i, end = i;
424
429
  for (;;) {
425
430
  if ( end === len ) { return; }
426
431
  const c = query.charCodeAt(end);
427
- if ( c === 0x27 /* ' */ ) {
432
+ if ( c === targetCharCode ) {
428
433
  parts.push(query.slice(beg, end));
429
434
  end += 1;
430
435
  break;
431
436
  }
432
437
  if ( c === 0x5C /* \ */ && (end+1) < len ) {
433
438
  parts.push(query.slice(beg, end));
434
- const d = query.chatCodeAt(end+1);
435
- if ( d === 0x27 || d === 0x5C ) {
439
+ const d = query.charCodeAt(end+1);
440
+ if ( d === targetCharCode || d === 0x5C ) {
436
441
  end += 1;
437
442
  beg = end;
438
443
  }
@@ -441,12 +446,20 @@ class JSONPath {
441
446
  }
442
447
  return { s: parts.join(''), i: end };
443
448
  }
444
- #consumeUnquotedIdentifier(query, i) {
445
- const match = this.#reUnquotedIdentifier.exec(query.slice(i));
446
- if ( match === null ) { return; }
447
- return match[0];
448
- }
449
449
  #compileExpr(query, step, i) {
450
+ if ( query.startsWith('=/', i) ) {
451
+ const r = this.#untilChar(query, 0x2F /* / */, i+2);
452
+ if ( r === undefined ) { return i; }
453
+ const match = /^[i]/.exec(query.slice(r.i));
454
+ try {
455
+ step.rval = new RegExp(r.s, match && match[0] || undefined);
456
+ } catch {
457
+ return i;
458
+ }
459
+ step.op = 're';
460
+ if ( match ) { r.i += match[0].length; }
461
+ return r.i;
462
+ }
450
463
  const match = this.#reExpr.exec(query.slice(i));
451
464
  if ( match === null ) { return i; }
452
465
  try {
@@ -486,6 +499,7 @@ class JSONPath {
486
499
  case '^=': outcome = `${v}`.startsWith(step.rval) === target; break;
487
500
  case '$=': outcome = `${v}`.endsWith(step.rval) === target; break;
488
501
  case '*=': outcome = `${v}`.includes(step.rval) === target; break;
502
+ case 're': outcome = step.rval.test(`${v}`); break;
489
503
  default: outcome = hasOwn === target; break;
490
504
  }
491
505
  if ( outcome ) { return k; }
@@ -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
  };
@@ -132,6 +132,10 @@ function proxyApplyFn(
132
132
  : new proxyApplyFn.ApplyContext(...args);
133
133
  }
134
134
  };
135
+ proxyApplyFn.isCtor = new Map();
136
+ }
137
+ if ( proxyApplyFn.isCtor.has(target) === false ) {
138
+ proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn);
135
139
  }
136
140
  const fnStr = fn.toString();
137
141
  const toString = (function toString() { return fnStr; }).bind(null);
@@ -144,7 +148,7 @@ function proxyApplyFn(
144
148
  return Reflect.get(target, prop);
145
149
  },
146
150
  };
147
- if ( fn.prototype?.constructor === fn ) {
151
+ if ( proxyApplyFn.isCtor.get(target) ) {
148
152
  proxyDetails.construct = function(target, args) {
149
153
  return handler(proxyApplyFn.CtorContext.factory(target, args));
150
154
  };
@@ -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
  };
@@ -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
  };
@@ -371,8 +371,8 @@ function getRandomTokenFn() {
371
371
  /******************************************************************************/
372
372
 
373
373
  const scriptletGlobals = {}; // eslint-disable-line
374
- const argsList = [["Promise","detectedAdblock"],["Object.defineProperty","ADMStorageFileCDN"],["$","aff"],["document.addEventListener","popunder"],["$","arrDirectLink"],["document.getElementById","openPop"],["document.addEventListener","open"],["jQuery","popup"],["WebAssembly","globalThis"],["navigator","devtoolsDetector"],["document.addEventListener","adx"],["$","adblock"],["Symbol","break;case $"],["document.createElement",";break;case"],["eval","$._Eu"],["setTimeout","ad_block"],["setTimeout","Aff"],["jQuery","Popup"],["setInterval","offsetHeight"],["document.addEventListener","Click"],["document.getElementsByClassName","reading-content"],["document.createElement","optad"],["JSON.parse","break;case $."],["$","PopUnder"],["jQuery","click_time"],["JSON","fromCharCode"],["document.createElement","script"],["addEvent","popu"],["$","p0pUpRandom"],["window.addEventListener","localStorage"],["document.querySelectorAll","popMagic"],["document.getElementById","myModal"],["$","window.open"],["setTimeout","appendChild"],["eval"],["Promise","break;case"],["document.addEventListener","opup"],["jQuery","window.open"],["document.addEventListener","runAllDetections"],["jQuery","open"],["window.addEventListener","Ads"],["WebAssembly","instantiate"],["document.write","snow"],["setTimeout","open"],["jQuery","click_ads"],["setTimeout","window.location"]];
375
- const hostnamesMap = new Map([["10gb.vn",0],["cafef.vn",1],["gamek.vn",1],["genk.vn",1],["kenh14.vn",1],["soha.vn",1],["tuoitre.vn",1],["afamily.vn",1],["thanhnien.vn",1],["childish2x1.fun",2],["childish2x2.fun",2],["dualeotruyenf.com",[3,41]],["economic45882.shop",4],["cdn4.tiptoe34x1.fun",4],["freeplayervideo.com",5],["abysscdn.com",5],["player-cdn.com",5],["playhydrax.com",5],["game8.vn",6],["cunghocvui.com",6],["gocmod.com",7],["goctruyentranhvui17.com",8],["nettruyenar.com",8],["sextop1.show",8],["hhvsub1.com",8],["vn5.sexviet88.xyz",[8,41]],["gotphim.com",9],["haysexvn.life",10],["hh2d.tv",11],["hh3dhay.life",[12,13,14]],["tram3d.com",13],["tram3d.me",14],["animevietsub.show",14],["imail.edu.vn",[15,16]],["www.motchill25.com",16],["trumtruyen.live",16],["teamlanhlungday.store",[16,32]],["ios.codevn.net",[17,18]],["javhd.shop",19],["laophatgia.net",20],["linkneverdie.net",21],["linkneverdie.top",21],["linkneverdie2.com",21],["lrepacks.net",22],["lxmanga.my",23],["motchilltvphim.com",24],["nettruyenvia.com",25],["p.thoctv.com",26],["phimmoi.sale",27],["phimtho.net",28],["quatvn.love",[29,41]],["rphang.online",30],["misskon.com",30],["saigon24.net",31],["tusachmanga99.com",32],["tram3d.vip",33],["truyen247.pro",34],["truyenqqtto.com",35],["phim.haysex.asia",35],["truyensextv.com",36],["yanhh3d.vip",36],["vailonxx.vip",37],["vanphatelectric.com",38],["viet69.my",39],["visitwestberkshire.org.uk",40],["vlxx.bz",41],["yurineko.my",41],["haysexvl.net",41],["cliphot69.shop",41],["doctruyen3qui14.com",41],["ihentai.cloud",41],["hentaivc.net",41],["buomtv.media",41],["truyenvn.shop",41],["javtiful.com",41],["vn82phimsexhay.com",41],["phim18hdxx.com",41],["phim.sexnungvl.pro",41],["demo.14412882.com",41],["cliphot69.pics",41],["hhtq5.vip",41],["sexdiary.club",41],["vn2.xvideos69.xxx",41],["umetruyenz.net",41],["damconuong.skin",41],["truyenqqgo.com",41],["clipsexsub3x.net",41],["sayhentaii.art",41],["vungoctuan.vn",42],["www.toptruyentv10.com",43],["www.truyen35zz.com",44],["xnxx-sex-videos.com",45]]);
374
+ const argsList = [["Promise","detectedAdblock"],["Object.defineProperty","ADMStorageFileCDN"],["$","aff"],["document.addEventListener","popunder"],["$","arrDirectLink"],["document.getElementById","openPop"],["document.addEventListener","open"],["jQuery","popup"],["WebAssembly","globalThis"],["navigator","devtoolsDetector"],["document.addEventListener","adx"],["$","adblock"],["Symbol","break;case $"],["document.createElement",";break;case"],["eval","$._Eu"],["setTimeout","ad_block"],["setTimeout","Aff"],["jQuery","Popup"],["setInterval","offsetHeight"],["document.addEventListener","Click"],["document.getElementsByClassName","reading-content"],["document.createElement","optad"],["JSON.parse","break;case $."],["$","PopUnder"],["jQuery","click_time"],["JSON","fromCharCode"],["document.createElement","script"],["addEvent","popu"],["$","p0pUpRandom"],["window.addEventListener","localStorage"],["document.querySelectorAll","popMagic"],["document.getElementById","myModal"],["$","window.open"],["setTimeout","appendChild"],["eval"],["Promise","break;case"],["document.addEventListener","opup"],["window.addEventListener","Ads"],["jQuery","window.open"],["document.addEventListener","runAllDetections"],["jQuery","open"],["WebAssembly","instantiate"],["document.write","snow"],["setTimeout","open"],["jQuery","click_ads"],["setTimeout","window.location"]];
375
+ const hostnamesMap = new Map([["10gb.vn",0],["cafef.vn",1],["gamek.vn",1],["genk.vn",1],["kenh14.vn",1],["soha.vn",1],["tuoitre.vn",1],["afamily.vn",1],["thanhnien.vn",1],["childish2x1.fun",2],["childish2x2.fun",2],["dualeotruyenf.com",[3,41]],["economic45882.shop",4],["cdn4.tiptoe34x1.fun",4],["freeplayervideo.com",5],["abysscdn.com",5],["player-cdn.com",5],["playhydrax.com",5],["game8.vn",6],["cunghocvui.com",6],["gocmod.com",7],["goctruyentranhvui17.com",8],["nettruyenar.com",8],["sextop1.show",8],["hhvsub1.com",8],["vn5.sexviet88.xyz",[8,41]],["gotphim.com",9],["haysexvnn.com",10],["hh2d.tv",11],["hh3dhay.life",[12,13,14]],["tram3d.com",13],["tram3d.me",14],["animevietsub.show",14],["imail.edu.vn",[15,16]],["www.motchill26.com",16],["trumtruyen.live",16],["teamlanhlungday.store",[16,32]],["ios.codevn.net",[17,18]],["javhd.shop",19],["laophatgia.net",20],["linkneverdie.net",21],["linkneverdie.top",21],["linkneverdie2.com",21],["lrepacks.net",22],["lxmanga.my",23],["motchilltvphim.com",24],["nettruyenvia.com",25],["p.thoctv.com",26],["phimmoi.sale",27],["phimtho.cc",28],["quatvn.love",[29,41]],["rphang.online",30],["misskon.com",30],["saigon24.net",31],["tusachmanga99.com",32],["tram3d.vip",33],["truyen247.pro",34],["truyenqqtto.com",35],["phim.haysex.asia",35],["truyensextv.com",36],["yanhh3d.vip",36],["unitedweconquer.co.uk",37],["vailonxx.vip",38],["vanphatelectric.com",39],["viet69.my",40],["vlxx.bz",41],["yurineko.my",41],["haysexvl.net",41],["cliphot69.shop",41],["doctruyen3qui14.com",41],["ihentai.cloud",41],["hentaivc.net",41],["buomtv.media",41],["truyenvn.shop",41],["javtiful.com",41],["vn82phimsexhay.com",41],["phim18hdxx.com",41],["phim.sexnungvl.pro",41],["demo.14412882.com",41],["cliphot69.pics",41],["hhtq5.vip",41],["sexdiary.club",41],["vn2.xvideos69.xxx",41],["umetruyenz.net",41],["damconuong.skin",41],["truyenqqgo.com",41],["clipsexsub3x.net",41],["sayhentaii.art",41],["vungoctuan.vn",42],["www.toptruyentv10.com",43],["www.truyen35zz.com",44],["xnxx-sex-videos.com",45]]);
376
376
  const exceptionsMap = new Map([]);
377
377
  const hasEntities = false;
378
378
  const hasAncestors = false;
@@ -289,7 +289,7 @@ function getRandomTokenFn() {
289
289
 
290
290
  const scriptletGlobals = {}; // eslint-disable-line
291
291
  const argsList = [["_0x3f9b"],["parseInt"],["adpiaListUrl"],["Math.round"],["pushOnPage"],["sessionStorage"],["open"],["Cookies"],["ads"],["adsPlayer"],["adsPopupPlayer"],["adsTvc"],["keyPlayer"],["adsRedirectPopups"],["affUrls"],["document.cookie"],["oneClick"],["localStorage"],["sp"],["_$_75bd"],["adtimaConfig"]];
292
- const hostnamesMap = new Map([["animevietsub9.com",0],["aoe.vn",1],["audiotruyenfull.com",2],["javnong.cc",3],["linkneverdie.net",4],["linkneverdie.top",4],["linkneverdie2.com",4],["motchillk.so",5],["mv.phimmoiaz.cc",6],["anime12.site",6],["anh.moe",6],["maclife.io",6],["xemphimjav.us",[6,17]],["hoctot.hocmai.vn",6],["bluphim4.com",6],["samtruyentranh.com",6],["truyenfull.vision",6],["player.phimapi.com",6],["noitu.site",6],["sachmoi.net",6],["phim.sexnungvl.pro",7],["plcdn.xyz",[8,9,10,11,12]],["theicec.com",13],["thichxemphim1.site",14],["truyensieuhay.com",15],["hayhaytv.site",15],["quangcaoyenbai.com",15],["phimchill.life",15],["thuvienhd.biz",15],["tv.tvhayhd.org",15],["thefaplive.com",15],["mv.dailyphimz.com",15],["mv.phimbathu.one",15],["sexhihiz.mx",15],["anime47.live",15],["teamlanhlung8.shop",[15,17]],["phimhdctv.net",15],["forum.timfshare.com",15],["ungtycomicshot.com",15],["vinaurl.net",16],["www.motchill25.com",17],["xnhau.sh",17],["www.nettruyenupp.com",18],["www.sieutamphim.me",19],["znews.vn",20]]);
292
+ const hostnamesMap = new Map([["animevietsub9.com",0],["aoe.vn",1],["audiotruyenfull.com",2],["javnong.cc",3],["linkneverdie.net",4],["linkneverdie.top",4],["linkneverdie2.com",4],["motchillk.so",5],["mv.phimmoiaz.cc",6],["anime12.site",6],["anh.moe",6],["maclife.io",6],["xemphimjav.us",[6,17]],["hoctot.hocmai.vn",6],["bluphim4.com",6],["samtruyentranh.com",6],["truyenfull.vision",6],["player.phimapi.com",6],["noitu.site",6],["sachmoi.net",6],["phim.sexnungvl.pro",7],["plcdn.xyz",[8,9,10,11,12]],["theicec.com",13],["thichxemphim1.site",14],["truyensieuhay.com",15],["hayhaytv.site",15],["quangcaoyenbai.com",15],["phimchill.life",15],["thuvienhd.biz",15],["tv.tvhayhd.org",15],["thefaplive.com",15],["mv.dailyphimz.com",15],["mv.phimbathu.one",15],["sexhihiz.mx",15],["anime47.best",15],["teamlanhlung8.shop",[15,17]],["phimhdctv.net",15],["forum.timfshare.com",15],["ungtycomicshot.com",15],["vinaurl.net",16],["www.motchill26.com",17],["xnhau.sh",17],["www.nettruyenupp.com",18],["www.sieutamphim.me",19],["znews.vn",20]]);
293
293
  const exceptionsMap = new Map([]);
294
294
  const hasEntities = false;
295
295
  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
  };
@@ -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
  };