@browserless.io/browserless 2.34.0-beta-0 → 2.34.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 (351) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/build/routes/chrome/http/content.post.body.json +18 -109
  3. package/build/routes/chrome/http/pdf.post.body.json +18 -109
  4. package/build/routes/chrome/http/scrape.post.body.json +18 -109
  5. package/build/routes/chrome/http/screenshot.post.body.json +18 -109
  6. package/build/routes/chromium/http/content.post.body.json +18 -109
  7. package/build/routes/chromium/http/pdf.post.body.json +18 -109
  8. package/build/routes/chromium/http/scrape.post.body.json +18 -109
  9. package/build/routes/chromium/http/screenshot.post.body.json +18 -109
  10. package/build/routes/edge/http/content.post.body.json +18 -109
  11. package/build/routes/edge/http/pdf.post.body.json +18 -109
  12. package/build/routes/edge/http/scrape.post.body.json +18 -109
  13. package/build/routes/edge/http/screenshot.post.body.json +18 -109
  14. package/build/shared/content.http.js +9 -2
  15. package/build/shared/pdf.http.js +9 -2
  16. package/build/shared/scrape.http.js +9 -2
  17. package/build/shared/screenshot.http.js +9 -2
  18. package/build/types.d.ts +7 -1
  19. package/build/utils.d.ts +1 -0
  20. package/build/utils.js +3 -2
  21. package/extensions/ublocklite/README.md +1 -1
  22. package/extensions/ublocklite/_locales/bs/messages.json +58 -58
  23. package/extensions/ublocklite/_locales/ro/messages.json +1 -1
  24. package/extensions/ublocklite/_locales/ru/messages.json +1 -1
  25. package/extensions/ublocklite/_locales/sr/messages.json +28 -28
  26. package/extensions/ublocklite/css/dashboard.css +9 -4
  27. package/extensions/ublocklite/css/settings.css +17 -13
  28. package/extensions/ublocklite/css/unpicker-ui.css +1 -0
  29. package/extensions/ublocklite/dashboard.html +16 -12
  30. package/extensions/ublocklite/js/background.js +48 -14
  31. package/extensions/ublocklite/js/config.js +2 -1
  32. package/extensions/ublocklite/js/dashboard.js +9 -5
  33. package/extensions/ublocklite/js/debug.js +62 -3
  34. package/extensions/ublocklite/js/ext.js +6 -0
  35. package/extensions/ublocklite/js/fetch.js +3 -1
  36. package/extensions/ublocklite/js/filter-lists.js +16 -7
  37. package/extensions/ublocklite/js/filter-manager.js +63 -9
  38. package/extensions/ublocklite/js/jsonpath.js +65 -26
  39. package/extensions/ublocklite/js/mode-manager.js +5 -1
  40. package/extensions/ublocklite/js/popup.js +1 -1
  41. package/extensions/ublocklite/js/report.js +4 -2
  42. package/extensions/ublocklite/js/ruleset-manager.js +38 -13
  43. package/extensions/ublocklite/js/scripting/css-generic.js +0 -1
  44. package/extensions/ublocklite/js/scripting/css-procedural.js +2 -0
  45. package/extensions/ublocklite/js/scripting/css-specific.js +2 -0
  46. package/extensions/ublocklite/js/scripting-manager.js +4 -10
  47. package/extensions/ublocklite/js/settings.js +3 -5
  48. package/extensions/ublocklite/js/static-filtering-parser.js +18 -11
  49. package/extensions/ublocklite/js/tool-overlay-ui.js +19 -23
  50. package/extensions/ublocklite/js/troubleshooting.js +11 -19
  51. package/extensions/ublocklite/js/ubo-parser.js +1 -1
  52. package/extensions/ublocklite/manifest.json +7 -2
  53. package/extensions/ublocklite/rulesets/generic-details.json +19 -3
  54. package/extensions/ublocklite/rulesets/main/adguard-mobile.json +3 -1
  55. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +15 -11
  56. package/extensions/ublocklite/rulesets/main/annoyances-notifications.json +276 -0
  57. package/extensions/ublocklite/rulesets/main/annoyances-others.json +2 -1
  58. package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +2 -1
  59. package/extensions/ublocklite/rulesets/main/bgr-0.json +54 -68
  60. package/extensions/ublocklite/rulesets/main/block-lan.json +1 -1
  61. package/extensions/ublocklite/rulesets/main/chn-0.json +22 -12
  62. package/extensions/ublocklite/rulesets/main/deu-0.json +5 -7
  63. package/extensions/ublocklite/rulesets/main/dpollock-0.json +5 -0
  64. package/extensions/ublocklite/rulesets/main/easylist.json +29 -85
  65. package/extensions/ublocklite/rulesets/main/easyprivacy.json +44 -8
  66. package/extensions/ublocklite/rulesets/main/fra-0.json +15 -11
  67. package/extensions/ublocklite/rulesets/main/hun-0.json +5 -3
  68. package/extensions/ublocklite/rulesets/main/idn-0.json +6 -1
  69. package/extensions/ublocklite/rulesets/main/ind-0.json +14 -9
  70. package/extensions/ublocklite/rulesets/main/irn-0.json +632 -3
  71. package/extensions/ublocklite/rulesets/main/jpn-1.json +26 -18
  72. package/extensions/ublocklite/rulesets/main/kor-1.json +4 -2
  73. package/extensions/ublocklite/rulesets/main/nld-0.json +1 -1
  74. package/extensions/ublocklite/rulesets/main/nor-0.json +24 -4
  75. package/extensions/ublocklite/rulesets/main/pgl.json +8 -6
  76. package/extensions/ublocklite/rulesets/main/pol-0.json +3 -3
  77. package/extensions/ublocklite/rulesets/main/rus-0.json +18 -11
  78. package/extensions/ublocklite/rulesets/main/rus-1.json +6 -2
  79. package/extensions/ublocklite/rulesets/main/spa-1.json +11 -2
  80. package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +5438 -4232
  81. package/extensions/ublocklite/rulesets/main/swe-1.json +29 -24
  82. package/extensions/ublocklite/rulesets/main/tur-0.json +30 -10
  83. package/extensions/ublocklite/rulesets/main/ublock-badware.json +29 -30
  84. package/extensions/ublocklite/rulesets/main/ublock-filters.json +73 -49
  85. package/extensions/ublocklite/rulesets/main/ubol-tests.json +17 -0
  86. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +326 -356
  87. package/extensions/ublocklite/rulesets/main/vie-1.json +30 -26
  88. package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +1 -2
  89. package/extensions/ublocklite/rulesets/modify-headers/fra-0.json +1 -0
  90. package/extensions/ublocklite/rulesets/modify-headers/irn-0.json +45 -0
  91. package/extensions/ublocklite/rulesets/modify-headers/rus-0.json +0 -1
  92. package/extensions/ublocklite/rulesets/modify-headers/ublock-filters.json +4 -3
  93. package/extensions/ublocklite/rulesets/redirect/annoyances-overlays.json +1 -2
  94. package/extensions/ublocklite/rulesets/redirect/easyprivacy.json +19 -0
  95. package/extensions/ublocklite/rulesets/redirect/irn-0.json +73 -0
  96. package/extensions/ublocklite/rulesets/redirect/jpn-1.json +0 -1
  97. package/extensions/ublocklite/rulesets/redirect/kor-1.json +1 -1
  98. package/extensions/ublocklite/rulesets/redirect/tur-0.json +2 -1
  99. package/extensions/ublocklite/rulesets/redirect/ublock-badware.json +18 -0
  100. package/extensions/ublocklite/rulesets/redirect/ublock-filters.json +18 -28
  101. package/extensions/ublocklite/rulesets/redirect/vie-1.json +34 -2
  102. package/extensions/ublocklite/rulesets/regex/chn-0.json +3 -1
  103. package/extensions/ublocklite/rulesets/regex/easylist.json +0 -2
  104. package/extensions/ublocklite/rulesets/regex/irn-0.json +22 -0
  105. package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
  106. package/extensions/ublocklite/rulesets/regex/tur-0.json +2 -1
  107. package/extensions/ublocklite/rulesets/regex/ublock-badware.json +2 -4
  108. package/extensions/ublocklite/rulesets/regex/ublock-filters.json +10 -9
  109. package/extensions/ublocklite/rulesets/regex/ukr-0.json +1 -3
  110. package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +9 -5
  111. package/extensions/ublocklite/rulesets/removeparam/irn-0.json +16 -27
  112. package/extensions/ublocklite/rulesets/removeparam/rus-1.json +3 -1
  113. package/extensions/ublocklite/rulesets/removeparam/ublock-filters.json +6 -3
  114. package/extensions/ublocklite/rulesets/ruleset-details.json +264 -233
  115. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
  116. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +87 -0
  117. package/extensions/ublocklite/rulesets/scripting/generic/bgr-0.js +3 -3
  118. package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +1 -1
  119. package/extensions/ublocklite/rulesets/scripting/generic/deu-0.js +2 -2
  120. package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
  121. package/extensions/ublocklite/rulesets/scripting/generic/est-0.js +1 -1
  122. package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +1 -1
  123. package/extensions/ublocklite/rulesets/scripting/generic/irn-0.js +3 -3
  124. package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +3 -3
  125. package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +1 -1
  126. package/extensions/ublocklite/rulesets/scripting/generic/pol-0.js +1 -1
  127. package/extensions/ublocklite/rulesets/scripting/generic/rus-0.js +1 -1
  128. package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +1 -1
  129. package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
  130. package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +1 -1
  131. package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +1 -1
  132. package/extensions/ublocklite/rulesets/scripting/generichigh/annoyances-notifications.css +36 -0
  133. package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +12 -0
  134. package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +1 -12
  135. package/extensions/ublocklite/rulesets/scripting/generichigh/est-0.css +1 -0
  136. package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +11 -0
  137. package/extensions/ublocklite/rulesets/scripting/generichigh/irn-0.css +27 -0
  138. package/extensions/ublocklite/rulesets/scripting/generichigh/nor-0.css +17 -0
  139. package/extensions/ublocklite/rulesets/scripting/generichigh/pol-0.css +8 -0
  140. package/extensions/ublocklite/rulesets/scripting/generichigh/rou-1.css +1 -0
  141. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +106 -0
  142. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-1.css +3 -0
  143. package/extensions/ublocklite/rulesets/scripting/generichigh/swe-1.css +1 -0
  144. package/extensions/ublocklite/rulesets/scripting/generichigh/ublock-filters.css +8 -2
  145. package/extensions/ublocklite/rulesets/scripting/generichigh/vie-1.css +1 -0
  146. package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +3 -3
  147. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
  148. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-notifications.js +42 -0
  149. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +3 -3
  150. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
  151. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-social.js +3 -3
  152. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +3 -3
  153. package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
  154. package/extensions/ublocklite/rulesets/scripting/procedural/ind-0.js +1 -1
  155. package/extensions/ublocklite/rulesets/scripting/procedural/irn-0.js +3 -3
  156. package/extensions/ublocklite/rulesets/scripting/procedural/ita-0.js +3 -3
  157. package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
  158. package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +1 -1
  159. package/extensions/ublocklite/rulesets/scripting/procedural/rou-1.js +3 -3
  160. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  161. package/extensions/ublocklite/rulesets/scripting/procedural/rus-1.js +1 -1
  162. package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
  163. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
  164. package/extensions/ublocklite/rulesets/scripting/procedural/tur-0.js +3 -3
  165. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
  166. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-current-script.js +2 -2
  167. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-cookie-reload.js +1 -1
  168. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-constant.js +2 -2
  169. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  170. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  171. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-session-storage-item.js +2 -2
  172. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
  173. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  174. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.abort-current-script.js +452 -0
  175. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.abort-on-property-write.js +347 -0
  176. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.addEventListener-defuser.js +498 -0
  177. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.remove-attr.js +405 -0
  178. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.remove-class.js +396 -0
  179. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-constant.js +541 -0
  180. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-cookie.js +442 -0
  181. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-local-storage-item.js +399 -0
  182. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-notifications.set-session-storage-item.js +399 -0
  183. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +1 -1
  184. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-property-read.js +1 -1
  185. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +2 -2
  186. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +2 -2
  187. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-node-text.js +2 -2
  188. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +1 -1
  189. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-cookie.js +2 -2
  190. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-click-element.js +1 -1
  191. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-outbound-text.js +427 -0
  192. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-current-script.js +2 -2
  193. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +1 -1
  194. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.json-prune-fetch-response.js +588 -0
  195. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.json-prune.js +1 -1
  196. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +2 -2
  197. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +2 -2
  198. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-constant.js +1 -1
  199. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.abort-on-property-read.js +2 -2
  200. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-current-script.js +452 -0
  201. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-on-property-read.js +369 -0
  202. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-on-property-write.js +347 -0
  203. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-on-stack-trace.js +421 -0
  204. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.addEventListener-defuser.js +498 -0
  205. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.adjust-setInterval.js +332 -0
  206. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.adjust-setTimeout.js +332 -0
  207. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.href-sanitizer.js +541 -0
  208. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.json-prune.js +506 -0
  209. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +553 -0
  210. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-setTimeout.js +443 -0
  211. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-window-open.js +471 -0
  212. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-xhr.js +584 -0
  213. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.remove-attr.js +405 -0
  214. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.remove-cookie.js +376 -0
  215. package/extensions/ublocklite/rulesets/scripting/scriptlet/{ublock-experimental.trusted-replace-node-text.js → irn-0.remove-node-text.js} +8 -9
  216. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-attr.js +425 -0
  217. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-constant.js +541 -0
  218. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-local-storage-item.js +2 -2
  219. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-session-storage-item.js +2 -2
  220. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.abort-current-script.js +2 -2
  221. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.abort-on-property-write.js +2 -2
  222. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.href-sanitizer.js +2 -2
  223. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.spoof-css.js +2 -2
  224. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-read.js +1 -1
  225. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-write.js +2 -2
  226. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +3 -3
  227. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.href-sanitizer.js +2 -2
  228. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
  229. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-cookie.js +2 -2
  230. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +3 -3
  231. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-read.js +2 -2
  232. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +3 -3
  233. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +3 -3
  234. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +2 -2
  235. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-window-open.js +1 -1
  236. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.remove-attr.js +1 -1
  237. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-constant.js +2 -2
  238. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-xhr.js +1 -1
  239. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +1 -1
  240. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +2 -2
  241. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.adjust-setTimeout.js +1 -1
  242. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +1 -1
  243. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
  244. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-local-storage-item.js +3 -3
  245. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
  246. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +2 -2
  247. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +2 -2
  248. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +2 -2
  249. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +3 -3
  250. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +3 -3
  251. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +2 -2
  252. package/extensions/ublocklite/rulesets/scripting/scriptlet/{ublock-filters.trusted-json-edit-fetch-request.js → ublock-filters.json-edit-fetch-response.js} +109 -66
  253. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit.js +69 -29
  254. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
  255. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +2 -2
  256. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.jsonl-edit-xhr-response.js +68 -28
  257. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +3 -3
  258. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +3 -3
  259. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +3 -3
  260. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +2 -2
  261. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +3 -3
  262. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
  263. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
  264. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +2 -2
  265. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +3 -3
  266. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
  267. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-local-storage-item.js +2 -2
  268. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-create-html.js +2 -2
  269. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-json-edit-fetch-response.js +68 -28
  270. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +2 -2
  271. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +3 -3
  272. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +2 -2
  273. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +2 -2
  274. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-local-storage-item.js +1 -1
  275. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-fetch-response.js +68 -28
  276. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-xhr-response.js +68 -28
  277. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
  278. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +2 -2
  279. package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
  280. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  281. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +42 -0
  282. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  283. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  284. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  285. package/extensions/ublocklite/rulesets/scripting/specific/bgr-0.js +3 -3
  286. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  287. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  288. package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
  289. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  290. package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
  291. package/extensions/ublocklite/rulesets/scripting/specific/hun-0.js +3 -3
  292. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  293. package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
  294. package/extensions/ublocklite/rulesets/scripting/specific/irn-0.js +3 -3
  295. package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +3 -3
  296. package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
  297. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  298. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
  299. package/extensions/ublocklite/rulesets/scripting/specific/nld-0.js +3 -3
  300. package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +1 -1
  301. package/extensions/ublocklite/rulesets/scripting/specific/pol-0.js +3 -3
  302. package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
  303. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  304. package/extensions/ublocklite/rulesets/scripting/specific/rus-1.js +3 -3
  305. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  306. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  307. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  308. package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
  309. package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +3 -3
  310. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  311. package/extensions/ublocklite/rulesets/scriptlet-details.json +521 -135
  312. package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +16 -0
  313. package/extensions/ublocklite/rulesets/strictblock/annoyances-notifications.json +41 -0
  314. package/extensions/ublocklite/rulesets/strictblock/bgr-0.json +1 -2
  315. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +112 -0
  316. package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +5 -0
  317. package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
  318. package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +36 -71
  319. package/extensions/ublocklite/rulesets/strictblock/fra-0.json +270 -16
  320. package/extensions/ublocklite/rulesets/strictblock/hun-0.json +1 -0
  321. package/extensions/ublocklite/rulesets/strictblock/irn-0.json +249 -2
  322. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +182 -177
  323. package/extensions/ublocklite/rulesets/strictblock/kor-1.json +1 -0
  324. package/extensions/ublocklite/rulesets/strictblock/nor-0.json +6 -4
  325. package/extensions/ublocklite/rulesets/strictblock/pgl.json +8 -6
  326. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +1 -0
  327. package/extensions/ublocklite/rulesets/strictblock/rus-1.json +1 -0
  328. package/extensions/ublocklite/rulesets/strictblock/spa-1.json +2 -0
  329. package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +5438 -4232
  330. package/extensions/ublocklite/rulesets/strictblock/swe-1.json +3 -0
  331. package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +679 -675
  332. package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +1 -1
  333. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +326 -356
  334. package/extensions/ublocklite/rulesets/strictblock/vie-1.json +1 -1
  335. package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +37 -12
  336. package/extensions/ublocklite/ublock.zip +0 -0
  337. package/package.json +8 -8
  338. package/scripts/build-open-api.js +15 -1
  339. package/src/shared/content.http.ts +9 -1
  340. package/src/shared/pdf.http.ts +9 -1
  341. package/src/shared/scrape.http.ts +9 -1
  342. package/src/shared/screenshot.http.ts +9 -1
  343. package/src/types.ts +7 -1
  344. package/src/utils.ts +4 -2
  345. package/static/docs/swagger.json +218 -122
  346. package/static/docs/swagger.min.json +217 -121
  347. package/static/function/client.js +71 -68
  348. package/static/function/index.html +71 -68
  349. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-json-edit-xhr-request.js +0 -795
  350. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.overlay-buster.js +0 -165
  351. package/extensions/ublocklite/rulesets/scripting/specific/easyprivacy.js +0 -42
@@ -460,8 +460,8 @@ function validateConstantFn(trusted, raw, extraArgs = {}) {
460
460
  /******************************************************************************/
461
461
 
462
462
  const scriptletGlobals = {}; // eslint-disable-line
463
- const argsList = [["aclib","json:{\"isShowingPop\": false}"],["_omapp.scripts.geolocation","{\"value\": {\"status\":\"loaded\",\"object\":null,\"data\":{\"country\":{\"shortName\":\"\",\"longName\":\"\"},\"administrative_area_level_1\":{\"shortName\":\"\",\"longName\":\"\"},\"administrative_area_level_2\":{\"shortName\":\"\",\"longName\":\"\"},\"locality\":{\"shortName\":\"\",\"longName\":\"\"},\"original\":{\"ip\":\"\",\"ip_decimal\":null,\"country\":\"\",\"country_eu\":false,\"country_iso\":\"\",\"city\":\"\",\"latitude\":null,\"longitude\":null,\"user_agent\":{\"product\":\"\",\"version\":\"\",\"comment\":\"\",\"raw_value\":\"\"},\"zip_code\":\"\",\"time_zone\":\"\"}},\"error\":\"\"}}"],["document.activeElement","json:{\"tagName\": \"IFRAME\"}"],["navigator.userAgent","{\"value\": \"Mozilla/5.0 (iPhone14,3; U; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/19A346 Safari/602.1\"}"],["google_srt","json:0.61234"],["premium","'1'"],["clickAds.banner.urls","json:[{\"url\":{\"limit\":0,\"url\":\"\"}}]"],["asc","json:{\"cmd\": [null], \"que\": [null], \"wrapperVersion\": \"6.19.0\", \"refreshQue\": {\"waitDelay\": 3000, \"que\": []}, \"isLoaded\": true, \"bidderSettings\": {}, \"libLoaded\": true, \"version\": \"v9.20.0\", \"installedModules\": [], \"adUnits\": [], \"aliasRegistry\": {}, \"medianetGlobals\": {}}"],["google_tag_manager","json:{ \"G-Z8CH48V654\": { \"_spx\": false, \"bootstrap\": 1704067200000, \"dataLayer\": { \"name\": \"dataLayer\" } }, \"SANDBOXED_JS_SEMAPHORE\": 0, \"dataLayer\": { \"gtmDom\": true, \"gtmLoad\": true, \"subscribers\": 1 }, \"sequence\": 1 }"],["navigator.userAgent","{\"value\": \"Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1\"}"],["navigator.platform","{\"value\": \"iPhone\"}"],["dtGonza.playeradstime","\"-1\""],["ADS.STATUS_ERROR","json:\"COMPLETE\""],["__NEXT_DATA__.props.pageProps.broadcastData.remainingWatchDuration","json:9999999999"],["document.referrer","json:\"1\""],["premium","json:1"],["dtGonza.playeradstime","json:\"0\""],["libAnalytics","json: {\"status\":{\"dataAvailable\":false},\"data\":{}}"]];
464
- const hostnamesMap = new Map([["japscan.*",0],["seclore.com",1],["catcare.store",2],["upshrink.com",3],["streamelements.com",4],["emturbovid.com",5],["findjav.com",5],["javggvideo.xyz",5],["mmtv01.xyz",5],["stbturbo.xyz",5],["trailerhg.xyz",5],["turboplayers.xyz",5],["savefrom.net",6],["jetpunk.com",[7,8]],["app.blubank.com",9],["mobileweb.bankmellat.ir",[9,10]],["cinemitas.org",11],["cinelatino.net",11],["cineplus123.org",11],["paraveronline.org",11],["pobreflix.vc",11],["verpelis.gratis",11],["littlebigsnake.com",12],["rooter.gg",13],["comdotgame.com",14],["sextb.*>>",15],["idlixku.com",16],["globo.com",17]]);
463
+ const argsList = [["aclib","json:{\"isShowingPop\": false}"],["_omapp.scripts.geolocation","{\"value\": {\"status\":\"loaded\",\"object\":null,\"data\":{\"country\":{\"shortName\":\"\",\"longName\":\"\"},\"administrative_area_level_1\":{\"shortName\":\"\",\"longName\":\"\"},\"administrative_area_level_2\":{\"shortName\":\"\",\"longName\":\"\"},\"locality\":{\"shortName\":\"\",\"longName\":\"\"},\"original\":{\"ip\":\"\",\"ip_decimal\":null,\"country\":\"\",\"country_eu\":false,\"country_iso\":\"\",\"city\":\"\",\"latitude\":null,\"longitude\":null,\"user_agent\":{\"product\":\"\",\"version\":\"\",\"comment\":\"\",\"raw_value\":\"\"},\"zip_code\":\"\",\"time_zone\":\"\"}},\"error\":\"\"}}"],["document.activeElement","json:{\"tagName\": \"IFRAME\"}"],["navigator.userAgent","{\"value\": \"Mozilla/5.0 (iPhone14,3; U; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/19A346 Safari/602.1\"}"],["google_srt","json:0.61234"],["premium","'1'"],["reklamlar","json:[{\"sure\":\"0\"}]"],["clickAds.banner.urls","json:[{\"url\":{\"limit\":0,\"url\":\"\"}}]"],["asc","json:{\"cmd\": [null], \"que\": [null], \"wrapperVersion\": \"6.19.0\", \"refreshQue\": {\"waitDelay\": 3000, \"que\": []}, \"isLoaded\": true, \"bidderSettings\": {}, \"libLoaded\": true, \"version\": \"v9.20.0\", \"installedModules\": [], \"adUnits\": [], \"aliasRegistry\": {}, \"medianetGlobals\": {}}"],["google_tag_manager","json:{ \"G-Z8CH48V654\": { \"_spx\": false, \"bootstrap\": 1704067200000, \"dataLayer\": { \"name\": \"dataLayer\" } }, \"SANDBOXED_JS_SEMAPHORE\": 0, \"dataLayer\": { \"gtmDom\": true, \"gtmLoad\": true, \"subscribers\": 1 }, \"sequence\": 1 }"],["navigator.userAgent","{\"value\": \"Mozilla/5.0 (iPhone; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1\"}"],["navigator.platform","{\"value\": \"iPhone\"}"],["dtGonza.playeradstime","\"-1\""],["ADS.STATUS_ERROR","json:\"COMPLETE\""],["__NEXT_DATA__.props.pageProps.broadcastData.remainingWatchDuration","json:9999999999"],["document.referrer","json:\"1\""],["premium","json:1"],["dtGonza.playeradstime","json:\"0\""],["libAnalytics","json: {\"status\":{\"dataAvailable\":false},\"data\":{}}"]];
464
+ const hostnamesMap = new Map([["japscan.*",0],["seclore.com",1],["procinehub.com",2],["bookmystrip.com",2],["upshrink.com",3],["streamelements.com",4],["emturbovid.com",5],["findjav.com",5],["javggvideo.xyz",5],["mmtv01.xyz",5],["stbturbo.xyz",5],["trailerhg.xyz",5],["turboplayers.xyz",5],["canlikolik.my",6],["savefrom.net",7],["jetpunk.com",[8,9]],["app.blubank.com",10],["mobileweb.bankmellat.ir",[10,11]],["cinemitas.org",12],["cinelatino.net",12],["cineplus123.org",12],["paraveronline.org",12],["pobreflix.vc",12],["verpelis.gratis",12],["littlebigsnake.com",13],["rooter.gg",14],["comdotgame.com",15],["sextb.*>>",16],["idlixku.com",17],["globo.com",18]]);
465
465
  const exceptionsMap = new Map([]);
466
466
  const hasEntities = true;
467
467
  const hasAncestors = true;
@@ -318,7 +318,7 @@ function safeSelf() {
318
318
  /******************************************************************************/
319
319
 
320
320
  const scriptletGlobals = {}; // eslint-disable-line
321
- const argsList = [["google_tg_rep","[\"t\",16000]"],["google_tg_rep_date","2025-08-31T00:00:00"],["google_tg_rep_attr7","[\"a432dca07ed31c98702eb7c134ba7a8bf51430735e2581dc66b0f0f6efe1ca0c\",\"user404957\",\"2025-07-29T20:00:00Z\",9151913]"],["superberb_disable_date","$now$"]];
321
+ const argsList = [["google_tg_rep","[\"t\",16002]"],["google_tg_rep_date","2025-08-29T00:00:00"],["google_tg_rep_attr7","[\"a432dca07ed31c98702eb7c134ba7a8bf51430735e2581dc66b0f0f6efe1ca0c\",\"user404957\",\"2025-07-29T20:00:00Z\",9151913]"],["superberb_disable_date","$now$"]];
322
322
  const hostnamesMap = new Map([["pvpoke-re.com",[0,1,2]],["fapeza.com",3]]);
323
323
  const exceptionsMap = new Map([]);
324
324
  const hasEntities = false;
@@ -127,12 +127,19 @@ class JSONPath {
127
127
  const r = this.#compile(query, 0);
128
128
  if ( r === undefined ) { return; }
129
129
  if ( r.i !== query.length ) {
130
- if ( query.startsWith('+=', r.i) ) {
130
+ let val;
131
+ if ( query.startsWith('=', r.i) ) {
132
+ if ( /^=repl\(.+\)$/.test(query.slice(r.i)) ) {
133
+ r.modify = 'repl';
134
+ val = query.slice(r.i+6, -1);
135
+ } else {
136
+ val = query.slice(r.i+1);
137
+ }
138
+ } else if ( query.startsWith('+=', r.i) ) {
131
139
  r.modify = '+';
132
- r.i += 1;
140
+ val = query.slice(r.i+2);
133
141
  }
134
- if ( query.startsWith('=', r.i) === false ) { return; }
135
- try { r.rval = JSON.parse(query.slice(r.i+1)); }
142
+ try { r.rval = JSON.parse(val); }
136
143
  catch { return; }
137
144
  }
138
145
  this.#compiled = r;
@@ -145,28 +152,25 @@ class JSONPath {
145
152
  return paths;
146
153
  }
147
154
  apply(root) {
148
- if ( this.valid === false ) { return 0; }
149
- const { modify, rval } = this.#compiled;
150
- this.#root = root;
155
+ if ( this.valid === false ) { return; }
156
+ const { rval } = this.#compiled;
157
+ this.#root = { '$': root };
151
158
  const paths = this.#evaluate(this.#compiled.steps, []);
152
- const n = paths.length;
153
- let i = n;
159
+ let i = paths.length
160
+ if ( i === 0 ) { this.#root = null; return; }
154
161
  while ( i-- ) {
155
162
  const { obj, key } = this.#resolvePath(paths[i]);
156
163
  if ( rval !== undefined ) {
157
- if ( modify === '+' ) {
158
- this.#modifyVal(obj, key, rval);
159
- } else {
160
- obj[key] = rval;
161
- }
164
+ this.#modifyVal(obj, key);
162
165
  } else if ( Array.isArray(obj) && typeof key === 'number' ) {
163
166
  obj.splice(key, 1);
164
167
  } else {
165
168
  delete obj[key];
166
169
  }
167
170
  }
171
+ const result = this.#root['$'] ?? null;
168
172
  this.#root = null;
169
- return n;
173
+ return result;
170
174
  }
171
175
  dump() {
172
176
  return JSON.stringify(this.#compiled);
@@ -191,8 +195,15 @@ class JSONPath {
191
195
  if ( query.length === 0 ) { return; }
192
196
  const steps = [];
193
197
  let c = query.charCodeAt(i);
194
- steps.push({ mv: c === 0x24 /* $ */ ? this.#ROOT : this.#CURRENT });
195
- if ( c === 0x24 /* $ */ || c === 0x40 /* @ */ ) { i += 1; }
198
+ if ( c === 0x24 /* $ */ ) {
199
+ steps.push({ mv: this.#ROOT });
200
+ i += 1;
201
+ } else if ( c === 0x40 /* @ */ ) {
202
+ steps.push({ mv: this.#CURRENT });
203
+ i += 1;
204
+ } else {
205
+ steps.push({ mv: i === 0 ? this.#ROOT : this.#CURRENT });
206
+ }
196
207
  let mv = this.#UNDEFINED;
197
208
  for (;;) {
198
209
  if ( i === query.length ) { break; }
@@ -254,7 +265,8 @@ class JSONPath {
254
265
  i = r.i + 1;
255
266
  mv = this.#UNDEFINED;
256
267
  }
257
- if ( steps.length <= 1 ) { return; }
268
+ if ( steps.length === 0 ) { return; }
269
+ if ( mv !== this.#UNDEFINED ) { return; }
258
270
  return { steps, i };
259
271
  }
260
272
  #evaluate(steps, pathin) {
@@ -263,7 +275,7 @@ class JSONPath {
263
275
  for ( const step of steps ) {
264
276
  switch ( step.mv ) {
265
277
  case this.#ROOT:
266
- resultset = [ [] ];
278
+ resultset = [ [ '$' ] ];
267
279
  break;
268
280
  case this.#CURRENT:
269
281
  resultset = [ pathin ];
@@ -486,13 +498,40 @@ class JSONPath {
486
498
  }
487
499
  if ( outcome ) { return k; }
488
500
  }
489
- #modifyVal(obj, key, rval) {
490
- const lval = obj[key];
491
- if ( rval instanceof Object === false ) { return; }
492
- if ( lval instanceof Object === false ) { return; }
493
- if ( Array.isArray(lval) ) { return; }
494
- for ( const [ k, v ] of Object.entries(rval) ) {
495
- lval[k] = v;
501
+ #modifyVal(obj, key) {
502
+ const { modify, rval } = this.#compiled;
503
+ switch ( modify ) {
504
+ case undefined:
505
+ obj[key] = rval;
506
+ break;
507
+ case '+': {
508
+ if ( rval instanceof Object === false ) { return; }
509
+ const lval = obj[key];
510
+ if ( lval instanceof Object === false ) { return; }
511
+ if ( Array.isArray(lval) ) { return; }
512
+ for ( const [ k, v ] of Object.entries(rval) ) {
513
+ lval[k] = v;
514
+ }
515
+ break;
516
+ }
517
+ case 'repl': {
518
+ const lval = obj[key];
519
+ if ( typeof lval !== 'string' ) { return; }
520
+ if ( this.#compiled.re === undefined ) {
521
+ this.#compiled.re = null;
522
+ try {
523
+ this.#compiled.re = rval.regex !== undefined
524
+ ? new RegExp(rval.regex, rval.flags)
525
+ : new RegExp(rval.pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
526
+ } catch {
527
+ }
528
+ }
529
+ if ( this.#compiled.re === null ) { return; }
530
+ obj[key] = lval.replace(this.#compiled.re, rval.replacement);
531
+ break;
532
+ }
533
+ default:
534
+ break;
496
535
  }
497
536
  }
498
537
  }
@@ -509,11 +548,12 @@ function jsonlEditFn(jsonp, text = '') {
509
548
  linesAfter.push(lineBefore);
510
549
  continue;
511
550
  }
512
- if ( jsonp.apply(obj) === 0 ) {
551
+ const objAfter = jsonp.apply(obj);
552
+ if ( objAfter === undefined ) {
513
553
  linesAfter.push(lineBefore);
514
554
  continue;
515
555
  }
516
- const lineAfter = safe.JSON_stringify(obj);
556
+ const lineAfter = safe.JSON_stringify(objAfter);
517
557
  linesAfter.push(lineAfter);
518
558
  }
519
559
  return linesAfter.join(lineSeparator);
@@ -119,12 +119,19 @@ class JSONPath {
119
119
  const r = this.#compile(query, 0);
120
120
  if ( r === undefined ) { return; }
121
121
  if ( r.i !== query.length ) {
122
- if ( query.startsWith('+=', r.i) ) {
122
+ let val;
123
+ if ( query.startsWith('=', r.i) ) {
124
+ if ( /^=repl\(.+\)$/.test(query.slice(r.i)) ) {
125
+ r.modify = 'repl';
126
+ val = query.slice(r.i+6, -1);
127
+ } else {
128
+ val = query.slice(r.i+1);
129
+ }
130
+ } else if ( query.startsWith('+=', r.i) ) {
123
131
  r.modify = '+';
124
- r.i += 1;
132
+ val = query.slice(r.i+2);
125
133
  }
126
- if ( query.startsWith('=', r.i) === false ) { return; }
127
- try { r.rval = JSON.parse(query.slice(r.i+1)); }
134
+ try { r.rval = JSON.parse(val); }
128
135
  catch { return; }
129
136
  }
130
137
  this.#compiled = r;
@@ -137,28 +144,25 @@ class JSONPath {
137
144
  return paths;
138
145
  }
139
146
  apply(root) {
140
- if ( this.valid === false ) { return 0; }
141
- const { modify, rval } = this.#compiled;
142
- this.#root = root;
147
+ if ( this.valid === false ) { return; }
148
+ const { rval } = this.#compiled;
149
+ this.#root = { '$': root };
143
150
  const paths = this.#evaluate(this.#compiled.steps, []);
144
- const n = paths.length;
145
- let i = n;
151
+ let i = paths.length
152
+ if ( i === 0 ) { this.#root = null; return; }
146
153
  while ( i-- ) {
147
154
  const { obj, key } = this.#resolvePath(paths[i]);
148
155
  if ( rval !== undefined ) {
149
- if ( modify === '+' ) {
150
- this.#modifyVal(obj, key, rval);
151
- } else {
152
- obj[key] = rval;
153
- }
156
+ this.#modifyVal(obj, key);
154
157
  } else if ( Array.isArray(obj) && typeof key === 'number' ) {
155
158
  obj.splice(key, 1);
156
159
  } else {
157
160
  delete obj[key];
158
161
  }
159
162
  }
163
+ const result = this.#root['$'] ?? null;
160
164
  this.#root = null;
161
- return n;
165
+ return result;
162
166
  }
163
167
  dump() {
164
168
  return JSON.stringify(this.#compiled);
@@ -183,8 +187,15 @@ class JSONPath {
183
187
  if ( query.length === 0 ) { return; }
184
188
  const steps = [];
185
189
  let c = query.charCodeAt(i);
186
- steps.push({ mv: c === 0x24 /* $ */ ? this.#ROOT : this.#CURRENT });
187
- if ( c === 0x24 /* $ */ || c === 0x40 /* @ */ ) { i += 1; }
190
+ if ( c === 0x24 /* $ */ ) {
191
+ steps.push({ mv: this.#ROOT });
192
+ i += 1;
193
+ } else if ( c === 0x40 /* @ */ ) {
194
+ steps.push({ mv: this.#CURRENT });
195
+ i += 1;
196
+ } else {
197
+ steps.push({ mv: i === 0 ? this.#ROOT : this.#CURRENT });
198
+ }
188
199
  let mv = this.#UNDEFINED;
189
200
  for (;;) {
190
201
  if ( i === query.length ) { break; }
@@ -246,7 +257,8 @@ class JSONPath {
246
257
  i = r.i + 1;
247
258
  mv = this.#UNDEFINED;
248
259
  }
249
- if ( steps.length <= 1 ) { return; }
260
+ if ( steps.length === 0 ) { return; }
261
+ if ( mv !== this.#UNDEFINED ) { return; }
250
262
  return { steps, i };
251
263
  }
252
264
  #evaluate(steps, pathin) {
@@ -255,7 +267,7 @@ class JSONPath {
255
267
  for ( const step of steps ) {
256
268
  switch ( step.mv ) {
257
269
  case this.#ROOT:
258
- resultset = [ [] ];
270
+ resultset = [ [ '$' ] ];
259
271
  break;
260
272
  case this.#CURRENT:
261
273
  resultset = [ pathin ];
@@ -478,13 +490,40 @@ class JSONPath {
478
490
  }
479
491
  if ( outcome ) { return k; }
480
492
  }
481
- #modifyVal(obj, key, rval) {
482
- const lval = obj[key];
483
- if ( rval instanceof Object === false ) { return; }
484
- if ( lval instanceof Object === false ) { return; }
485
- if ( Array.isArray(lval) ) { return; }
486
- for ( const [ k, v ] of Object.entries(rval) ) {
487
- lval[k] = v;
493
+ #modifyVal(obj, key) {
494
+ const { modify, rval } = this.#compiled;
495
+ switch ( modify ) {
496
+ case undefined:
497
+ obj[key] = rval;
498
+ break;
499
+ case '+': {
500
+ if ( rval instanceof Object === false ) { return; }
501
+ const lval = obj[key];
502
+ if ( lval instanceof Object === false ) { return; }
503
+ if ( Array.isArray(lval) ) { return; }
504
+ for ( const [ k, v ] of Object.entries(rval) ) {
505
+ lval[k] = v;
506
+ }
507
+ break;
508
+ }
509
+ case 'repl': {
510
+ const lval = obj[key];
511
+ if ( typeof lval !== 'string' ) { return; }
512
+ if ( this.#compiled.re === undefined ) {
513
+ this.#compiled.re = null;
514
+ try {
515
+ this.#compiled.re = rval.regex !== undefined
516
+ ? new RegExp(rval.regex, rval.flags)
517
+ : new RegExp(rval.pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
518
+ } catch {
519
+ }
520
+ }
521
+ if ( this.#compiled.re === null ) { return; }
522
+ obj[key] = lval.replace(this.#compiled.re, rval.replacement);
523
+ break;
524
+ }
525
+ default:
526
+ break;
488
527
  }
489
528
  }
490
529
  }
@@ -501,11 +540,12 @@ function jsonlEditFn(jsonp, text = '') {
501
540
  linesAfter.push(lineBefore);
502
541
  continue;
503
542
  }
504
- if ( jsonp.apply(obj) === 0 ) {
543
+ const objAfter = jsonp.apply(obj);
544
+ if ( objAfter === undefined ) {
505
545
  linesAfter.push(lineBefore);
506
546
  continue;
507
547
  }
508
- const lineAfter = safe.JSON_stringify(obj);
548
+ const lineAfter = safe.JSON_stringify(objAfter);
509
549
  linesAfter.push(lineAfter);
510
550
  }
511
551
  return linesAfter.join(lineSeparator);
@@ -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"],["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"],["document.querySelectorAll","popMagic"],["document.getElementById","myModal"],["eval"],["Promise","break;case"],["document.addEventListener","popup"],["$","window.open"],["jQuery","window.open"],["document.addEventListener","runAllDetections"],["jQuery","open"],["WebAssembly","instantiate"],["document.write","snow"],["document.addEventListener","shopee"],["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],["childish2x2.fun",2],["dualeotruyenpm.com",[3,36]],["m.blogtruyenmoi.com",3],["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],["sexhd88.online",6],["gocmod.com",7],["goctruyentranhvui17.com",8],["nettruyenar.com",8],["sextop1.show",8],["hhvsub1.com",8],["vn5.sexviet88.xyz",[8,36]],["gotphim.com",9],["hh3dhay.life",[10,11,12]],["tram3d.com",11],["tram3d.me",12],["animevietsub.cam",12],["imail.edu.vn",[13,14]],["motchill18.com",14],["trumtruyen.live",14],["ios.codevn.net",[15,16]],["javhd.shop",17],["laophatgia.net",18],["linkneverdie.net",19],["linkneverdie.top",19],["linkneverdie2.com",19],["lrepacks.net",20],["lxmanga.my",21],["motchilltvphim.com",22],["nettruyenvia.com",23],["p.thoctv.com",24],["phimmoi.sale",25],["phimtho.net",26],["rphang.online",27],["misskon.com",27],["saigon24.net",28],["truyen247.pro",29],["truyenqqtto.com",30],["haysex.site",30],["truyensextv.com",31],["www.sieutamphim.org",[31,38]],["tusachmanga.com",32],["vailonxx.vip",33],["vanphatelectric.com",34],["viet69.hot",35],["vlxx.bz",36],["yurineko.my",36],["haysex.ai",36],["cliphot69.shop",36],["doctruyen3qui12.pro",36],["ihentai.cloud",36],["hentaivc.net",36],["buomtv.live",36],["truyenvn.shop",36],["javtiful.com",36],["quatvn.love",36],["vn61phimsexhay.com",36],["phim18hdxx.com",36],["sexmup3x.net",36],["demo.14412882.com",36],["cliphot69.pics",36],["hhtq5.vip",36],["sexdiary.club",36],["vn2.xvideos69.xxx",36],["umetruyenhay.com",36],["damconuong.run",36],["truyenqqgo.com",36],["clipsexsub3x.net",36],["sayhentaii.art",36],["vungoctuan.vn",37],["www.toptruyentv8.com",39],["www.truyen35zz.com",40],["xnxx-sex-videos.com",41]]);
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"],["$","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"],["document.querySelectorAll","popMagic"],["document.getElementById","myModal"],["$","window.open"],["eval"],["Promise","break;case"],["document.addEventListener","popup"],["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],["childish2x2.fun",2],["dualeotruyenpm.com",[3,37]],["m.blogtruyenmoi.com",3],["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],["sexhd88.online",6],["gocmod.com",7],["goctruyentranhvui17.com",8],["nettruyenar.com",8],["sextop1.show",8],["hhvsub1.com",8],["vn5.sexviet88.xyz",[8,37]],["gotphim.com",9],["hh2d.tv",10],["hh3dhay.life",[11,12,13]],["tram3d.com",12],["tram3d.me",13],["animevietsub.cam",13],["imail.edu.vn",[14,15]],["www.motchill20.com",15],["motchill20.com",15],["trumtruyen.live",15],["teamlanhlungday.store",[15,30]],["ios.codevn.net",[16,17]],["javhd.shop",18],["laophatgia.net",19],["linkneverdie.net",20],["linkneverdie.top",20],["linkneverdie2.com",20],["lrepacks.net",21],["lxmanga.my",22],["motchilltvphim.com",23],["nettruyenvia.com",24],["p.thoctv.com",25],["phimmoi.sale",26],["phimtho.net",27],["rphang.online",28],["misskon.com",28],["saigon24.net",29],["tusachmanga.com",30],["truyen247.pro",31],["truyenqqtto.com",32],["haysex.site",32],["truyensextv.com",33],["vailonxx.vip",34],["vanphatelectric.com",35],["viet69.free",36],["vlxx.bz",37],["yurineko.my",37],["heohay.net",37],["cliphot69.shop",37],["doctruyen3qui12.pro",37],["ihentai.cloud",37],["hentaivc.net",37],["buomtv.live",37],["truyenvn.shop",37],["javtiful.com",37],["quatvn.love",37],["vn68phimsexhay.com",37],["phim18hdxx.com",37],["vlsexdam.net",37],["demo.14412882.com",37],["cliphot69.pics",37],["hhtq5.vip",37],["sexdiary.club",37],["vn2.xvideos69.xxx",37],["umetruyenhay.com",37],["damconuong.run",37],["truyenqqgo.com",37],["clipsexsub3x.net",37],["sayhentaii.art",37],["vungoctuan.vn",38],["www.toptruyentv8.com",39],["www.truyen35zz.com",40],["xnxx-sex-videos.com",41]]);
376
376
  const exceptionsMap = new Map([]);
377
377
  const hasEntities = false;
378
378
  const hasAncestors = false;
@@ -288,8 +288,8 @@ function getRandomTokenFn() {
288
288
  /******************************************************************************/
289
289
 
290
290
  const scriptletGlobals = {}; // eslint-disable-line
291
- const argsList = [["_0x3f9b"],["parseInt"],["adpiaListUrl"],["Math.round"],["pushOnPage"],["sessionStorage"],["ads"],["adsPlayer"],["adsPopupPlayer"],["adsTvc"],["keyPlayer"],["Cookies"],["affUrls"],["document.cookie"],["nFNcksmwU"],["open"],["oneClick"],["localStorage"],["sp"],["adsRedirectPopups"],["adtimaConfig"]];
292
- const hostnamesMap = new Map([["animevietsubs.net",0],["aoe.vn",1],["audiotruyenfull.com",2],["javnong.cc",3],["linkneverdie.net",4],["linkneverdie.top",4],["linkneverdie2.com",4],["motchilll.fit",5],["plcdn.xyz",[6,7,8,9,10]],["sexmup3x.net",11],["thichxemphim1.site",12],["truyensieuhay.com",13],["hayhaytv.site",13],["quangcaoyenbai.com",13],["phimchill.life",13],["thuvienhd.biz",13],["tv.tvhayhd.org",13],["thefaplive.com",13],["mv.dailyphimz.com",13],["mv.phimbathu.one",13],["sexhihi.bar",13],["anime47.live",13],["teamlanhlung8.shop",[13,17]],["hdcphim.us",13],["veryfiles.com",14],["viettoons.tv",15],["mv.phimmoiaz.cc",15],["anime11.site",15],["anh.moe",15],["maclife.io",15],["xemphimjav.us",[15,17]],["hoctot.hocmai.vn",15],["bluphim.uk.com",15],["samtruyentranh.com",15],["truyenfull.vision",15],["player.phimapi.com",15],["noitu.site",15],["vinaurl.net",16],["www.motchill18.com",17],["motchill18.com",17],["xnhau.sh",17],["www.nettruyenupp.com",18],["xoilaciik.cc",19],["znews.vn",20]]);
291
+ const argsList = [["_0x3f9b"],["parseInt"],["adpiaListUrl"],["Math.round"],["pushOnPage"],["sessionStorage"],["ads"],["adsPlayer"],["adsPopupPlayer"],["adsTvc"],["keyPlayer"],["affUrls"],["document.cookie"],["nFNcksmwU"],["open"],["oneClick"],["Cookies"],["localStorage"],["sp"],["_$_97df"],["adsRedirectPopups"],["adtimaConfig"]];
292
+ const hostnamesMap = new Map([["animevietsubs.net",0],["aoe.vn",1],["audiotruyenfull.com",2],["javnong.cc",3],["linkneverdie.net",4],["linkneverdie.top",4],["linkneverdie2.com",4],["motchillk.to",5],["plcdn.xyz",[6,7,8,9,10]],["thichxemphim1.site",11],["truyensieuhay.com",12],["hayhaytv.site",12],["quangcaoyenbai.com",12],["phimchill.life",12],["thuvienhd.biz",12],["tv.tvhayhd.org",12],["thefaplive.com",12],["mv.dailyphimz.com",12],["mv.phimbathu.one",12],["sexhihi.bar",12],["anime47.live",12],["teamlanhlung8.shop",[12,17]],["phimhdctv.net",12],["forum.timfshare.com",12],["veryfiles.com",13],["viettoons.tv",14],["mv.phimmoiaz.cc",14],["anime11.site",14],["anh.moe",14],["maclife.io",14],["xemphimjav.us",[14,17]],["hoctot.hocmai.vn",14],["bluphim.uk.com",14],["samtruyentranh.com",14],["truyenfull.vision",14],["player.phimapi.com",14],["noitu.site",14],["vinaurl.net",15],["vlsexdam.net",16],["www.motchill20.com",17],["motchill20.com",17],["xnhau.sh",17],["www.nettruyenupp.com",18],["www.sieutamphim.org",19],["xoilaciii.cc",20],["znews.vn",21]]);
293
293
  const exceptionsMap = new Map([]);
294
294
  const hasEntities = false;
295
295
  const hasAncestors = false;