@browserless.io/browserless 2.34.1 → 2.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/CHANGELOG.md +25 -3
  2. package/build/limiter.js +1 -1
  3. package/build/routes/chrome/http/content.post.body.json +90 -1
  4. package/build/routes/chrome/http/pdf.post.body.json +90 -1
  5. package/build/routes/chrome/http/scrape.post.body.json +90 -1
  6. package/build/routes/chrome/http/scrape.post.response.json +21 -22
  7. package/build/routes/chrome/http/screenshot.post.body.json +90 -1
  8. package/build/routes/chromium/http/content.post.body.json +90 -1
  9. package/build/routes/chromium/http/pdf.post.body.json +90 -1
  10. package/build/routes/chromium/http/scrape.post.body.json +90 -1
  11. package/build/routes/chromium/http/scrape.post.response.json +21 -22
  12. package/build/routes/chromium/http/screenshot.post.body.json +90 -1
  13. package/build/routes/chromium/tests/scrape.spec.js +41 -0
  14. package/build/routes/edge/http/content.post.body.json +90 -1
  15. package/build/routes/edge/http/pdf.post.body.json +90 -1
  16. package/build/routes/edge/http/scrape.post.body.json +90 -1
  17. package/build/routes/edge/http/scrape.post.response.json +21 -22
  18. package/build/routes/edge/http/screenshot.post.body.json +90 -1
  19. package/build/sdk-utils.js +1 -1
  20. package/build/shared/scrape.http.js +13 -3
  21. package/docker/base/Dockerfile +8 -8
  22. package/docker/chrome/Dockerfile +2 -2
  23. package/docker/chromium/Dockerfile +2 -2
  24. package/docker/edge/Dockerfile +2 -2
  25. package/docker/firefox/Dockerfile +2 -2
  26. package/docker/multi/Dockerfile +2 -2
  27. package/docker/sdk/Dockerfile +1 -1
  28. package/docker/webkit/Dockerfile +2 -2
  29. package/extensions/ublocklite/_locales/br_FR/messages.json +1 -1
  30. package/extensions/ublocklite/_locales/he/messages.json +2 -2
  31. package/extensions/ublocklite/_locales/hu/messages.json +1 -1
  32. package/extensions/ublocklite/_locales/pt_BR/messages.json +1 -1
  33. package/extensions/ublocklite/_locales/pt_PT/messages.json +1 -1
  34. package/extensions/ublocklite/_locales/sk/messages.json +6 -6
  35. package/extensions/ublocklite/_locales/sq/messages.json +17 -17
  36. package/extensions/ublocklite/_locales/th/messages.json +1 -1
  37. package/extensions/ublocklite/_locales/tr/messages.json +1 -1
  38. package/extensions/ublocklite/_locales/vi/messages.json +1 -1
  39. package/extensions/ublocklite/css/common.css +5 -3
  40. package/extensions/ublocklite/css/default.css +10 -0
  41. package/extensions/ublocklite/js/dnr-parser.js +1 -1
  42. package/extensions/ublocklite/js/filter-lists.js +1 -4
  43. package/extensions/ublocklite/js/popup.js +2 -2
  44. package/extensions/ublocklite/js/ruleset-manager.js +5 -121
  45. package/extensions/ublocklite/js/rw-dnr-editor.js +8 -4
  46. package/extensions/ublocklite/js/scripting/tool-overlay.js +1 -0
  47. package/extensions/ublocklite/js/settings.js +2 -1
  48. package/extensions/ublocklite/js/static-filtering-parser.js +8 -8
  49. package/extensions/ublocklite/js/ubo-parser.js +181 -65
  50. package/extensions/ublocklite/manifest.json +3 -3
  51. package/extensions/ublocklite/rulesets/generic-details.json +6 -16
  52. package/extensions/ublocklite/rulesets/main/adguard-mobile.json +25 -4
  53. package/extensions/ublocklite/rulesets/main/adguard-spyware-url.json +615 -1
  54. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +19 -7
  55. package/extensions/ublocklite/rulesets/main/annoyances-others.json +4 -2
  56. package/extensions/ublocklite/rulesets/main/annoyances-overlays.json +22 -2
  57. package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +1 -1
  58. package/extensions/ublocklite/rulesets/main/chn-0.json +93 -28
  59. package/extensions/ublocklite/rulesets/main/cze-0.json +6 -1
  60. package/extensions/ublocklite/rulesets/main/deu-0.json +11 -5
  61. package/extensions/ublocklite/rulesets/main/dpollock-0.json +2 -0
  62. package/extensions/ublocklite/rulesets/main/easylist.json +135 -29
  63. package/extensions/ublocklite/rulesets/main/easyprivacy.json +132 -27
  64. package/extensions/ublocklite/rulesets/main/est-0.json +1 -1
  65. package/extensions/ublocklite/rulesets/main/fin-0.json +9 -0
  66. package/extensions/ublocklite/rulesets/main/fra-0.json +48 -10
  67. package/extensions/ublocklite/rulesets/main/hun-0.json +4 -1
  68. package/extensions/ublocklite/rulesets/main/idn-0.json +1 -1
  69. package/extensions/ublocklite/rulesets/main/ind-0.json +93 -150
  70. package/extensions/ublocklite/rulesets/main/irn-0.json +33 -7
  71. package/extensions/ublocklite/rulesets/main/isr-0.json +20 -2
  72. package/extensions/ublocklite/rulesets/main/ita-0.json +3 -1
  73. package/extensions/ublocklite/rulesets/main/jpn-1.json +60 -13
  74. package/extensions/ublocklite/rulesets/main/kor-1.json +38 -6
  75. package/extensions/ublocklite/rulesets/main/ltu-0.json +3 -1
  76. package/extensions/ublocklite/rulesets/main/lva-0.json +2 -1
  77. package/extensions/ublocklite/rulesets/main/nld-0.json +6 -1
  78. package/extensions/ublocklite/rulesets/main/nor-0.json +13 -4
  79. package/extensions/ublocklite/rulesets/main/pgl.json +8 -9
  80. package/extensions/ublocklite/rulesets/main/pol-0.json +13 -1
  81. package/extensions/ublocklite/rulesets/main/rou-1.json +17 -1
  82. package/extensions/ublocklite/rulesets/main/rus-0.json +101 -24
  83. package/extensions/ublocklite/rulesets/main/rus-1.json +112 -4
  84. package/extensions/ublocklite/rulesets/main/spa-1.json +38 -14
  85. package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +13076 -6934
  86. package/extensions/ublocklite/rulesets/main/swe-1.json +77 -43
  87. package/extensions/ublocklite/rulesets/main/tha-0.json +7 -1
  88. package/extensions/ublocklite/rulesets/main/tur-0.json +45 -5
  89. package/extensions/ublocklite/rulesets/main/ublock-badware.json +76 -102
  90. package/extensions/ublocklite/rulesets/main/ublock-filters.json +770 -99
  91. package/extensions/ublocklite/rulesets/main/ubol-tests.json +43 -0
  92. package/extensions/ublocklite/rulesets/main/ukr-0.json +20 -1
  93. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +503 -614
  94. package/extensions/ublocklite/rulesets/main/vie-1.json +61 -52
  95. package/extensions/ublocklite/rulesets/regex/chn-0.json +6 -3
  96. package/extensions/ublocklite/rulesets/regex/deu-0.json +0 -1
  97. package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
  98. package/extensions/ublocklite/rulesets/regex/kor-1.json +1 -0
  99. package/extensions/ublocklite/rulesets/regex/pol-0.json +1 -0
  100. package/extensions/ublocklite/rulesets/regex/rus-0.json +1 -0
  101. package/extensions/ublocklite/rulesets/regex/rus-1.json +24 -0
  102. package/extensions/ublocklite/rulesets/regex/tur-0.json +2 -1
  103. package/extensions/ublocklite/rulesets/regex/ublock-badware.json +10 -8
  104. package/extensions/ublocklite/rulesets/regex/ublock-filters.json +26 -9
  105. package/extensions/ublocklite/rulesets/ruleset-details.json +238 -458
  106. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
  107. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-notifications.js +1 -1
  108. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-overlays.js +1 -1
  109. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +1 -1
  110. package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +3 -3
  111. package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
  112. package/extensions/ublocklite/rulesets/scripting/generic/fra-0.js +1 -1
  113. package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +1 -1
  114. package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +1 -1
  115. package/extensions/ublocklite/rulesets/scripting/generic/nld-0.js +1 -1
  116. package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +1 -1
  117. package/extensions/ublocklite/rulesets/scripting/generic/spa-1.js +3 -3
  118. package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +1 -1
  119. package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +3 -3
  120. package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
  121. package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +1 -1
  122. package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +2 -2
  123. package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +2 -9
  124. package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +1 -1
  125. package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +1 -0
  126. package/extensions/ublocklite/rulesets/scripting/generichigh/ublock-filters.css +0 -2
  127. package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +3 -3
  128. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
  129. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-notifications.js +3 -3
  130. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +3 -3
  131. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
  132. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-social.js +3 -3
  133. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +1 -1
  134. package/extensions/ublocklite/rulesets/scripting/procedural/deu-0.js +3 -3
  135. package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
  136. package/extensions/ublocklite/rulesets/scripting/procedural/fra-0.js +3 -3
  137. package/extensions/ublocklite/rulesets/scripting/procedural/idn-0.js +3 -3
  138. package/extensions/ublocklite/rulesets/scripting/procedural/irn-0.js +3 -3
  139. package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
  140. package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +3 -3
  141. package/extensions/ublocklite/rulesets/scripting/procedural/nld-0.js +3 -3
  142. package/extensions/ublocklite/rulesets/scripting/procedural/rou-1.js +3 -3
  143. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  144. package/extensions/ublocklite/rulesets/scripting/procedural/rus-1.js +3 -3
  145. package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
  146. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
  147. package/extensions/ublocklite/rulesets/scripting/procedural/tur-0.js +3 -3
  148. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
  149. package/extensions/ublocklite/rulesets/scripting/procedural/vie-1.js +2 -2
  150. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-on-property-read.js +2 -2
  151. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-constant.js +2 -2
  152. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-cookie.js +2 -2
  153. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.trusted-replace-node-text.js +450 -0
  154. package/extensions/ublocklite/rulesets/scripting/scriptlet/{jpn-1.abort-on-property-write.js → adguard-mobile.trusted-set-attr.js} +107 -41
  155. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.prevent-requestAnimationFrame.js +407 -0
  156. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.remove-node-text.js +1 -1
  157. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  158. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  159. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
  160. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-replace-node-text.js +2 -2
  161. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  162. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-local-storage-item.js +2 -2
  163. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.addEventListener-defuser.js +1 -1
  164. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +1 -1
  165. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-stack-trace.js +2 -2
  166. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +2 -2
  167. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-fetch.js +9 -2
  168. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setInterval.js +2 -2
  169. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +2 -2
  170. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-xhr.js +2 -2
  171. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-cookie.js +2 -2
  172. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +2 -2
  173. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-current-script.js +2 -2
  174. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.addEventListener-defuser.js +2 -2
  175. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.adjust-setTimeout.js +2 -2
  176. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.json-prune.js +1 -1
  177. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +9 -2
  178. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +2 -2
  179. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-window-open.js +1 -1
  180. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +2 -2
  181. package/extensions/ublocklite/rulesets/scripting/scriptlet/{vie-1.m3u-prune.js → chn-0.spoof-css.js} +109 -148
  182. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.abort-current-script.js +1 -1
  183. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.prevent-fetch.js +7 -0
  184. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-constant.js +1 -1
  185. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.addEventListener-defuser.js +2 -2
  186. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.adjust-setTimeout.js +2 -2
  187. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-fetch.js +7 -0
  188. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-setTimeout.js +2 -2
  189. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.set-constant.js +1 -1
  190. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.set-local-storage-item.js +2 -2
  191. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-fetch.js +7 -0
  192. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.abort-current-script.js +2 -2
  193. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +7 -0
  194. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-constant.js +2 -2
  195. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.set-session-storage-item.js +2 -2
  196. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +7 -0
  197. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.json-prune.js +2 -2
  198. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +7 -0
  199. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.remove-attr.js +1 -1
  200. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.set-cookie.js +442 -0
  201. package/extensions/ublocklite/rulesets/scripting/scriptlet/{chn-0.json-prune-fetch-response.js → kor-1.json-prune-xhr-response.js} +71 -62
  202. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.json-prune.js +2 -2
  203. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +7 -0
  204. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-setTimeout.js +2 -2
  205. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-constant.js +2 -2
  206. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-fetch.js +7 -0
  207. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-fetch.js +7 -0
  208. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.abort-current-script.js +2 -2
  209. package/extensions/ublocklite/rulesets/scripting/scriptlet/rou-1.remove-node-text.js +1 -1
  210. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-read.js +2 -2
  211. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +3 -3
  212. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +10 -3
  213. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setTimeout.js +2 -2
  214. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-xhr.js +1 -1
  215. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-cookie.js +3 -3
  216. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +3 -3
  217. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +2 -2
  218. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
  219. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-local-storage-item.js +2 -2
  220. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.abort-on-property-read.js +3 -3
  221. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.addEventListener-defuser.js +1 -1
  222. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.json-prune.js +2 -2
  223. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-fetch.js +7 -0
  224. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.remove-cookie.js +4 -4
  225. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +3 -3
  226. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-current-script.js +2 -2
  227. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-read.js +1 -1
  228. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +1 -1
  229. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.adjust-setInterval.js +1 -1
  230. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.json-prune.js +2 -2
  231. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +1 -1
  232. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +9 -2
  233. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-requestAnimationFrame.js +2 -2
  234. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.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.set-constant.js +2 -2
  237. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.addEventListener-defuser.js +2 -2
  238. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.href-sanitizer.js +2 -2
  239. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.prevent-setTimeout.js +2 -2
  240. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +2 -2
  241. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-write.js +1 -1
  242. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +2 -2
  243. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +7 -0
  244. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-setTimeout.js +2 -2
  245. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +1 -1
  246. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-attr.js +2 -2
  247. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-node-text.js +2 -2
  248. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
  249. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-cookie.js +2 -2
  250. package/extensions/ublocklite/rulesets/scripting/scriptlet/{ublock-filters.evaldata-prune.js → ublock-badware.addEventListener-defuser.js} +103 -173
  251. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-experimental.trusted-replace-node-text.js +450 -0
  252. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
  253. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +3 -3
  254. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +2 -2
  255. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
  256. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +3 -3
  257. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +2 -2
  258. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +2 -2
  259. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.disable-newtab-links.js +1 -1
  260. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.href-sanitizer.js +2 -2
  261. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit-xhr-response.js +851 -0
  262. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
  263. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-xhr-response.js +3 -3
  264. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +3 -3
  265. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.m3u-prune.js +2 -2
  266. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +2 -2
  267. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.nowebrtc.js +2 -2
  268. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +9 -2
  269. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +2 -2
  270. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +2 -2
  271. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +3 -3
  272. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +2 -2
  273. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
  274. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-attr.js +2 -2
  275. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
  276. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +2 -2
  277. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-attr.js +2 -2
  278. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +3 -3
  279. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
  280. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-local-storage-item.js +2 -2
  281. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.spoof-css.js +2 -2
  282. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-click-element.js +1 -1
  283. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-create-html.js +2 -2
  284. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-override-element-method.js +1 -1
  285. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-fetch.js +7 -0
  286. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-xhr.js +1 -1
  287. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-argument.js +2 -2
  288. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +3 -3
  289. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-outbound-text.js +2 -2
  290. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-xhr-response.js +1 -1
  291. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +1 -1
  292. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-cookie.js +3 -3
  293. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-local-storage-item.js +2 -2
  294. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +1 -1
  295. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.xml-prune.js +2 -2
  296. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-fetch.js +7 -0
  297. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
  298. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +2 -2
  299. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.json-prune.js +1 -1
  300. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-fetch.js +7 -0
  301. package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +3 -3
  302. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  303. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-notifications.js +3 -3
  304. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  305. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  306. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  307. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  308. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  309. package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
  310. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  311. package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
  312. package/extensions/ublocklite/rulesets/scripting/specific/hun-0.js +3 -3
  313. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  314. package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
  315. package/extensions/ublocklite/rulesets/scripting/specific/irn-0.js +3 -3
  316. package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +3 -3
  317. package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
  318. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  319. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
  320. package/extensions/ublocklite/rulesets/scripting/specific/nld-0.js +3 -3
  321. package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +3 -3
  322. package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
  323. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  324. package/extensions/ublocklite/rulesets/scripting/specific/rus-1.js +3 -3
  325. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  326. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  327. package/extensions/ublocklite/rulesets/scripting/specific/tha-0.js +3 -3
  328. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  329. package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
  330. package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +3 -3
  331. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  332. package/extensions/ublocklite/rulesets/scriptlet-details.json +271 -174
  333. package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +3 -2
  334. package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +1 -0
  335. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +329 -791
  336. package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +2 -0
  337. package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
  338. package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +62 -4
  339. package/extensions/ublocklite/rulesets/strictblock/fra-0.json +429 -49
  340. package/extensions/ublocklite/rulesets/strictblock/irn-0.json +2 -0
  341. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +183 -176
  342. package/extensions/ublocklite/rulesets/strictblock/kor-1.json +6 -1
  343. package/extensions/ublocklite/rulesets/strictblock/nor-0.json +1 -1
  344. package/extensions/ublocklite/rulesets/strictblock/pgl.json +8 -9
  345. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +1 -0
  346. package/extensions/ublocklite/rulesets/strictblock/rus-1.json +1 -0
  347. package/extensions/ublocklite/rulesets/strictblock/spa-1.json +0 -2
  348. package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +13076 -6934
  349. package/extensions/ublocklite/rulesets/strictblock/swe-1.json +2 -0
  350. package/extensions/ublocklite/rulesets/strictblock/tur-0.json +4 -0
  351. package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +580 -577
  352. package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +3 -2
  353. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +503 -614
  354. package/extensions/ublocklite/rulesets/strictblock/vie-1.json +6 -7
  355. package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +30 -0
  356. package/extensions/ublocklite/ublock.zip +0 -0
  357. package/package.json +23 -21
  358. package/scripts/install-adblock.js +25 -4
  359. package/scripts/start.sh +1 -1
  360. package/scripts/test.sh +2 -2
  361. package/src/limiter.ts +1 -1
  362. package/src/routes/chromium/tests/scrape.spec.ts +48 -0
  363. package/src/sdk-utils.ts +1 -1
  364. package/src/shared/scrape.http.ts +17 -5
  365. package/static/docs/swagger.json +330 -102
  366. package/static/docs/swagger.min.json +329 -101
  367. package/static/function/client.js +203 -104
  368. package/static/function/index.html +203 -104
  369. package/extensions/ublocklite/rulesets/modify-headers/annoyances-overlays.json +0 -108
  370. package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +0 -316
  371. package/extensions/ublocklite/rulesets/modify-headers/cze-0.json +0 -25
  372. package/extensions/ublocklite/rulesets/modify-headers/deu-0.json +0 -24
  373. package/extensions/ublocklite/rulesets/modify-headers/easylist.json +0 -14
  374. package/extensions/ublocklite/rulesets/modify-headers/easyprivacy.json +0 -48
  375. package/extensions/ublocklite/rulesets/modify-headers/fra-0.json +0 -215
  376. package/extensions/ublocklite/rulesets/modify-headers/irn-0.json +0 -45
  377. package/extensions/ublocklite/rulesets/modify-headers/isr-0.json +0 -50
  378. package/extensions/ublocklite/rulesets/modify-headers/rus-0.json +0 -40
  379. package/extensions/ublocklite/rulesets/modify-headers/rus-1.json +0 -22
  380. package/extensions/ublocklite/rulesets/modify-headers/swe-1.json +0 -46
  381. package/extensions/ublocklite/rulesets/modify-headers/ublock-filters.json +0 -54
  382. package/extensions/ublocklite/rulesets/modify-headers/ubol-tests.json +0 -25
  383. package/extensions/ublocklite/rulesets/modify-headers/vie-1.json +0 -162
  384. package/extensions/ublocklite/rulesets/redirect/adguard-mobile.json +0 -20
  385. package/extensions/ublocklite/rulesets/redirect/annoyances-overlays.json +0 -15
  386. package/extensions/ublocklite/rulesets/redirect/chn-0.json +0 -40
  387. package/extensions/ublocklite/rulesets/redirect/cze-0.json +0 -76
  388. package/extensions/ublocklite/rulesets/redirect/deu-0.json +0 -79
  389. package/extensions/ublocklite/rulesets/redirect/easylist.json +0 -103
  390. package/extensions/ublocklite/rulesets/redirect/easyprivacy.json +0 -137
  391. package/extensions/ublocklite/rulesets/redirect/fin-0.json +0 -121
  392. package/extensions/ublocklite/rulesets/redirect/fra-0.json +0 -35
  393. package/extensions/ublocklite/rulesets/redirect/hun-0.json +0 -38
  394. package/extensions/ublocklite/rulesets/redirect/irn-0.json +0 -73
  395. package/extensions/ublocklite/rulesets/redirect/isr-0.json +0 -17
  396. package/extensions/ublocklite/rulesets/redirect/jpn-1.json +0 -29
  397. package/extensions/ublocklite/rulesets/redirect/kor-1.json +0 -25
  398. package/extensions/ublocklite/rulesets/redirect/ltu-0.json +0 -33
  399. package/extensions/ublocklite/rulesets/redirect/nld-0.json +0 -79
  400. package/extensions/ublocklite/rulesets/redirect/nor-0.json +0 -132
  401. package/extensions/ublocklite/rulesets/redirect/pol-0.json +0 -15
  402. package/extensions/ublocklite/rulesets/redirect/rou-1.json +0 -53
  403. package/extensions/ublocklite/rulesets/redirect/rus-0.json +0 -21
  404. package/extensions/ublocklite/rulesets/redirect/rus-1.json +0 -118
  405. package/extensions/ublocklite/rulesets/redirect/spa-1.json +0 -27
  406. package/extensions/ublocklite/rulesets/redirect/swe-1.json +0 -14
  407. package/extensions/ublocklite/rulesets/redirect/tha-0.json +0 -78
  408. package/extensions/ublocklite/rulesets/redirect/tur-0.json +0 -24
  409. package/extensions/ublocklite/rulesets/redirect/ublock-badware.json +0 -18
  410. package/extensions/ublocklite/rulesets/redirect/ublock-filters.json +0 -548
  411. package/extensions/ublocklite/rulesets/redirect/ubol-tests.json +0 -22
  412. package/extensions/ublocklite/rulesets/redirect/ukr-0.json +0 -18
  413. package/extensions/ublocklite/rulesets/redirect/vie-1.json +0 -117
  414. package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +0 -612
  415. package/extensions/ublocklite/rulesets/removeparam/annoyances-overlays.json +0 -27
  416. package/extensions/ublocklite/rulesets/removeparam/chn-0.json +0 -48
  417. package/extensions/ublocklite/rulesets/removeparam/est-0.json +0 -26
  418. package/extensions/ublocklite/rulesets/removeparam/fin-0.json +0 -52
  419. package/extensions/ublocklite/rulesets/removeparam/irn-0.json +0 -18
  420. package/extensions/ublocklite/rulesets/removeparam/kor-1.json +0 -26
  421. package/extensions/ublocklite/rulesets/removeparam/rus-0.json +0 -19
  422. package/extensions/ublocklite/rulesets/removeparam/rus-1.json +0 -99
  423. package/extensions/ublocklite/rulesets/removeparam/swe-1.json +0 -125
  424. package/extensions/ublocklite/rulesets/removeparam/ublock-filters.json +0 -64
  425. package/extensions/ublocklite/rulesets/removeparam/ukr-0.json +0 -49
@@ -20,7 +20,7 @@
20
20
  "description": "appears as tab name in dashboard"
21
21
  },
22
22
  "developPageName": {
23
- "message": "Zhvilloni",
23
+ "message": "Zhvillimi",
24
24
  "description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
25
25
  },
26
26
  "aboutPageName": {
@@ -36,11 +36,11 @@
36
36
  "description": "Label in the popup panel for the current filtering mode"
37
37
  },
38
38
  "popupLocalToolsLabel": {
39
- "message": "Në këtë faqe interneti",
39
+ "message": "Në këtë uebsajt",
40
40
  "description": "Label in the popup panel for the local tools section"
41
41
  },
42
42
  "popupTipReport": {
43
- "message": "Raportoj problemin me uebsajtin",
43
+ "message": "Raportoj problemin",
44
44
  "description": "Tooltip used for the 'chat' icon in the panel"
45
45
  },
46
46
  "popupTipDashboard": {
@@ -68,7 +68,7 @@
68
68
  "description": "Header for a ruleset section in 'Filter lists pane'"
69
69
  },
70
70
  "3pGroupMalware": {
71
- "message": "Domenet e dëmshme",
71
+ "message": "Domenet e dëmshme, siguria",
72
72
  "description": "Header for a ruleset section in 'Filter lists pane'"
73
73
  },
74
74
  "3pGroupAnnoyances": {
@@ -244,7 +244,7 @@
244
244
  "description": "Short description for a checkbox in the options page"
245
245
  },
246
246
  "developerModeLabel": {
247
- "message": "Modaliteti i zhvilluesit",
247
+ "message": "Këndi i zhvilluesit",
248
248
  "description": "Label for a checkbox in the options page"
249
249
  },
250
250
  "developerModeLegend": {
@@ -292,7 +292,7 @@
292
292
  "description": "A button to navigate to the blocked page"
293
293
  },
294
294
  "zapperTipEnter": {
295
- "message": "Aktivizoj asgjësuesin e elementeve",
295
+ "message": "Heq elementin",
296
296
  "description": "Tooltip for the button used to enter zapper mode"
297
297
  },
298
298
  "zapperTipQuit": {
@@ -300,11 +300,11 @@
300
300
  "description": "Tooltip for the button used to exit zapper mode"
301
301
  },
302
302
  "pickerTipEnter": {
303
- "message": "Krijo filtër të personalizuar",
303
+ "message": "Krijoj filtër të personalizuar",
304
304
  "description": "Label for the menu entry to create cosmetic filters"
305
305
  },
306
306
  "unpickerTipEnter": {
307
- "message": "Hiq një filtër personalizuar",
307
+ "message": "Heq filtrin e personalizuar",
308
308
  "description": "Label for the menu entry to delete cosmetic filters"
309
309
  },
310
310
  "developDropdownLabel": {
@@ -312,7 +312,7 @@
312
312
  "description": "A label of a dropdown list"
313
313
  },
314
314
  "developOptionFilteringModeDetails": {
315
- "message": "Detalet e mënyrës së filtërimit",
315
+ "message": "Detajet e mënyrës së filtrimit",
316
316
  "description": "An option in a dropdown list"
317
317
  },
318
318
  "developOptionCustomDnrRules": {
@@ -320,7 +320,7 @@
320
320
  "description": "An option in a dropdown list"
321
321
  },
322
322
  "developOptionDnrRulesOf": {
323
- "message": "Rregullat DNR të ...",
323
+ "message": "Rregullat DNR të…",
324
324
  "description": "A section header in a dropdown list"
325
325
  },
326
326
  "developOptionDynamicRuleset": {
@@ -328,11 +328,11 @@
328
328
  "description": "An option in a dropdown list"
329
329
  },
330
330
  "developOptionSessionRuleset": {
331
- "message": "Rregullat e sesionit",
331
+ "message": "Rregullat e seancës",
332
332
  "description": "An option in a dropdown list"
333
333
  },
334
334
  "saveButton": {
335
- "message": "Ruaj",
335
+ "message": "Regjistroj",
336
336
  "description": "Text for buttons used to save changes"
337
337
  },
338
338
  "revertButton": {
@@ -348,7 +348,7 @@
348
348
  "description": "Text for buttons used to export content"
349
349
  },
350
350
  "dnrRulesWarning": {
351
- "message": "Mos shtoni filtra nga burime të pabesueshme.",
351
+ "message": "Mos shtoni materiale nga burime të pabesueshme",
352
352
  "description": "Short description of the DNR rules editor pane"
353
353
  },
354
354
  "dnrRulesCountInfo": {
@@ -356,15 +356,15 @@
356
356
  "description": "Short sentence to report the number of currently registered DNR rules"
357
357
  },
358
358
  "pickerSliderLabel": {
359
- "message": "Lëvizni rrëshqitësin për të zgjedhur përputhjen më të mirë",
359
+ "message": "Lëvizeni për të zgjedhur pikën më të përshtatshme",
360
360
  "description": "Label to describe the purpose of the slider"
361
361
  },
362
362
  "pickerPick": {
363
- "message": "Përzgjedh",
363
+ "message": "Zgjedh",
364
364
  "description": "Text for the button to re-enter element-picking mode"
365
365
  },
366
366
  "pickerPreview": {
367
- "message": "Parapamje",
367
+ "message": "Parashikoj",
368
368
  "description": "Text for the button to activate preview mode"
369
369
  },
370
370
  "pickerCreate": {
@@ -372,7 +372,7 @@
372
372
  "description": "Text for the button to create the filter"
373
373
  },
374
374
  "unpickerUsage": {
375
- "message": "Zgjidh një filtër më poshtë për të nxjerrë pah elementët përputhen faqen e internetit. Klikoni te koshi për të hequr një filtër.",
375
+ "message": "Zgjidhni ndër filtrat më poshtë për të parë elementin i korrespondonfaqe. Filtrat hiqen duke klikuar koshin.",
376
376
  "description": "Summary description on how to use the tool to remove custom filters"
377
377
  }
378
378
  }
@@ -68,7 +68,7 @@
68
68
  "description": "Header for a ruleset section in 'Filter lists pane'"
69
69
  },
70
70
  "3pGroupMalware": {
71
- "message": "Malware protection, security",
71
+ "message": "การป้องกันมัลแวร์ ความปลอดภัย",
72
72
  "description": "Header for a ruleset section in 'Filter lists pane'"
73
73
  },
74
74
  "3pGroupAnnoyances": {
@@ -248,7 +248,7 @@
248
248
  "description": "Label for a checkbox in the options page"
249
249
  },
250
250
  "developerModeLegend": {
251
- "message": "Teknik kullanıcılara uygun özelliklere erişime izin ver",
251
+ "message": "Teknik kullanıcılara uygun özelliklere erişime izin ver.",
252
252
  "description": "Short description for a checkbox in the options page"
253
253
  },
254
254
  "findListsPlaceholder": {
@@ -344,7 +344,7 @@
344
344
  "description": "Text for buttons used to import and append content"
345
345
  },
346
346
  "exportButton": {
347
- "message": "Xuất...",
347
+ "message": "Xuất",
348
348
  "description": "Text for buttons used to export content"
349
349
  },
350
350
  "dnrRulesWarning": {
@@ -80,7 +80,7 @@ button {
80
80
  appearance: none;
81
81
  -moz-appearance: none;
82
82
  -webkit-appearance: none;
83
- border: 0;
83
+ border: var(--button-border-size) solid var(--ink-1);
84
84
  border-radius: var(--button-border-radius);
85
85
  background-color: var(--button-surface);
86
86
  color: var(--button-ink);
@@ -193,7 +193,7 @@ label:hover .checkbox:not([disabled]) {
193
193
  height: 100%;
194
194
  margin: 0;
195
195
  min-width: var(--checkbox-size);
196
- opacity: 0;
196
+ opacity: var(--native-control-opacity);
197
197
  position: absolute;
198
198
  width: 100%;
199
199
  }
@@ -204,6 +204,7 @@ label:hover .checkbox:not([disabled]) {
204
204
  box-sizing: border-box;
205
205
  fill: none;
206
206
  height: 100%;
207
+ opacity: calc(1 - var(--native-control-opacity));
207
208
  pointer-events: none;
208
209
  position: absolute;
209
210
  stroke: none;
@@ -242,7 +243,7 @@ label:hover .checkbox:not([disabled]) {
242
243
  height: 100%;
243
244
  margin: 0;
244
245
  min-width: var(--checkbox-size);
245
- opacity: 0;
246
+ opacity: var(--native-control-opacity);
246
247
  position: absolute;
247
248
  width: 100%;
248
249
  }
@@ -250,6 +251,7 @@ label:hover .checkbox:not([disabled]) {
250
251
  background-color: transparent;
251
252
  box-sizing: border-box;
252
253
  height: 100%;
254
+ opacity: calc(1 - var(--native-control-opacity));
253
255
  pointer-events: none;
254
256
  position: absolute;
255
257
  width: 100%;
@@ -408,8 +408,11 @@
408
408
  --fieldset-header-surface: transparent;
409
409
  --fieldset-header-ink: var(--ink-2);
410
410
 
411
+ --native-control-opacity: 0;
412
+
411
413
  --button-ink: var(--ink-1);
412
414
  --button-surface: rgb(var(--button-surface-rgb));
415
+ --button-border-size: 0;
413
416
  --button-border-radius: 5px;
414
417
  --button-preferred-ink: var(--accent-ink-1);
415
418
  --button-preferred-surface: var(--accent-surface-1);
@@ -460,6 +463,13 @@
460
463
  --popup-ruleset-tool-shadow: transparent;
461
464
  }
462
465
 
466
+ @media (prefers-contrast: more) {
467
+ :root {
468
+ --native-control-opacity: 1;
469
+ --button-border-size: 1px;
470
+ }
471
+ }
472
+
463
473
  /*
464
474
  * Rule colors
465
475
  * */
@@ -515,7 +515,7 @@ export function rulesFromText(text) {
515
515
  if ( indices.length === 0 ) { continue; }
516
516
  const result = ruleFromLines(lines, indices);
517
517
  if ( result.bad ) {
518
- bad.push(...result.bad);
518
+ bad.push(...result.bad.slice(4));
519
519
  } else if ( result.rule ) {
520
520
  rules.push(result.rule);
521
521
  }
@@ -94,10 +94,7 @@ function rulesetStats(rulesetId) {
94
94
  const rulesetDetails = rulesetMap.get(rulesetId);
95
95
  if ( rulesetDetails === undefined ) { return; }
96
96
  const { rules, filters } = rulesetDetails;
97
- let ruleCount = rules.plain + rules.regex;
98
- if ( cachedRulesetData.hasOmnipotence ) {
99
- ruleCount += rules.removeparam + rules.redirect + rules.modifyHeaders;
100
- }
97
+ const ruleCount = rules.plain + rules.regex;
101
98
  const filterCount = filters.accepted;
102
99
  return { ruleCount, filterCount };
103
100
  }
@@ -340,8 +340,6 @@ async function init() {
340
340
 
341
341
  dom.cl.toggle('#gotoUnpicker', 'enabled', popupPanelData.hasCustomFilters);
342
342
 
343
- dom.cl.remove(dom.body, 'loading');
344
-
345
343
  return true;
346
344
  }
347
345
 
@@ -350,6 +348,8 @@ async function tryInit() {
350
348
  await init();
351
349
  } catch {
352
350
  setTimeout(tryInit, 100);
351
+ } finally {
352
+ dom.cl.remove(dom.body, 'loading');
353
353
  }
354
354
  }
355
355
 
@@ -30,13 +30,13 @@ import {
30
30
  rulesetConfig,
31
31
  saveRulesetConfig,
32
32
  } from './config.js';
33
+ import { ubolErr, ubolLog } from './debug.js';
33
34
 
34
35
  import { dnr } from './ext-compat.js';
35
36
  import { fetchJSON } from './fetch.js';
36
37
  import { getAdminRulesets } from './admin.js';
37
38
  import { hasBroadHostPermissions } from './utils.js';
38
39
  import { rulesFromText } from './dnr-parser.js';
39
- import { ubolErr, ubolLog } from './debug.js';
40
40
 
41
41
  /******************************************************************************/
42
42
 
@@ -131,9 +131,8 @@ pruneInvalidRegexRules.validated = new Map();
131
131
  async function updateRegexRules(currentRules, addRules, removeRuleIds) {
132
132
  // Remove existing regex-related block rules
133
133
  for ( const rule of currentRules ) {
134
+ if ( rule.id === 0 ) { continue; }
134
135
  if ( rule.id >= SPECIAL_RULES_REALM ) { continue; }
135
- const { type } = rule.action;
136
- if ( type !== 'block' && type !== 'allow' ) { continue; }
137
136
  if ( rule.condition.regexFilter === undefined ) { continue; }
138
137
  removeRuleIds.push(rule.id);
139
138
  }
@@ -167,134 +166,19 @@ async function updateRegexRules(currentRules, addRules, removeRuleIds) {
167
166
 
168
167
  /******************************************************************************/
169
168
 
170
- async function updateRemoveparamRules(currentRules, addRules, removeRuleIds) {
171
- // Remove existing removeparam-related rules
172
- for ( const rule of currentRules ) {
173
- if ( rule.id >= SPECIAL_RULES_REALM ) { continue; }
174
- if ( rule.action.type !== 'redirect' ) { continue; }
175
- if ( rule.action.redirect.transform === undefined ) { continue; }
176
- removeRuleIds.push(rule.id);
177
- }
178
-
179
- const rulesetDetails = await getEnabledRulesetsDetails();
180
-
181
- // Fetch removeparam rules for all enabled rulesets
182
- const toFetch = [];
183
- for ( const details of rulesetDetails ) {
184
- if ( details.rules.removeparam === 0 ) { continue; }
185
- toFetch.push(fetchJSON(`/rulesets/removeparam/${details.id}`));
186
- }
187
- const removeparamRulesets = await Promise.all(toFetch);
188
-
189
- const allRules = [];
190
- for ( const rules of removeparamRulesets ) {
191
- if ( Array.isArray(rules) === false ) { continue; }
192
- for ( const rule of rules ) {
193
- allRules.push(rule);
194
- }
195
- }
196
- if ( allRules.length === 0 ) { return; }
197
-
198
- const validRules = await pruneInvalidRegexRules('removeparam', allRules);
199
- if ( validRules.length === 0 ) { return; }
200
-
201
- ubolLog(`Add ${validRules.length} DNR removeparam rules`);
202
- addRules.push(...validRules);
203
- }
204
-
205
- /******************************************************************************/
206
-
207
- async function updateRedirectRules(currentRules, addRules, removeRuleIds) {
208
- // Remove existing redirect-related rules
209
- for ( const rule of currentRules ) {
210
- if ( rule.id >= SPECIAL_RULES_REALM ) { continue; }
211
- if ( rule.action.type !== 'redirect' ) { continue; }
212
- if ( rule.action.redirect.extensionPath === undefined ) { continue; }
213
- removeRuleIds.push(rule.id);
214
- }
215
-
216
- const rulesetDetails = await getEnabledRulesetsDetails();
217
-
218
- // Fetch redirect rules for all enabled rulesets
219
- const toFetch = [];
220
- for ( const details of rulesetDetails ) {
221
- if ( details.rules.redirect === 0 ) { continue; }
222
- toFetch.push(fetchJSON(`/rulesets/redirect/${details.id}`));
223
- }
224
- const redirectRulesets = await Promise.all(toFetch);
225
-
226
- const allRules = [];
227
- for ( const rules of redirectRulesets ) {
228
- if ( Array.isArray(rules) === false ) { continue; }
229
- for ( const rule of rules ) {
230
- allRules.push(rule);
231
- }
232
- }
233
- if ( allRules.length === 0 ) { return; }
234
-
235
- const validRules = await pruneInvalidRegexRules('redirect', allRules);
236
- if ( validRules.length === 0 ) { return; }
237
-
238
- ubolLog(`Add ${validRules.length} DNR redirect rules`);
239
- addRules.push(...validRules);
240
- }
241
-
242
- /******************************************************************************/
243
-
244
- async function updateModifyHeadersRules(currentRules, addRules, removeRuleIds) {
245
- // Remove existing header modification-related rules
246
- for ( const rule of currentRules ) {
247
- if ( rule.id >= SPECIAL_RULES_REALM ) { continue; }
248
- if ( rule.action.type !== 'modifyHeaders' ) { continue; }
249
- removeRuleIds.push(rule.id);
250
- }
251
-
252
- const rulesetDetails = await getEnabledRulesetsDetails();
253
-
254
- // Fetch modifyHeaders rules for all enabled rulesets
255
- const toFetch = [];
256
- for ( const details of rulesetDetails ) {
257
- if ( details.rules.modifyHeaders === 0 ) { continue; }
258
- toFetch.push(fetchJSON(`/rulesets/modify-headers/${details.id}`));
259
- }
260
- const rulesets = await Promise.all(toFetch);
261
-
262
- const allRules = [];
263
- for ( const rules of rulesets ) {
264
- if ( Array.isArray(rules) === false ) { continue; }
265
- for ( const rule of rules ) {
266
- allRules.push(rule);
267
- }
268
- }
269
- if ( allRules.length === 0 ) { return; }
270
-
271
- const validRules = await pruneInvalidRegexRules('modify-headers', allRules);
272
- if ( validRules.length === 0 ) { return; }
273
-
274
- ubolLog(`Add ${validRules.length} DNR modify-headers rules`);
275
- addRules.push(...validRules);
276
- }
277
-
278
- /******************************************************************************/
279
-
280
169
  async function updateDynamicRules() {
281
170
  const currentRules = await dnr.getDynamicRules();
282
171
  const addRules = [];
283
172
  const removeRuleIds = [];
284
173
 
285
- // Remove potentially left-over strict-block rules from previous version
174
+ // Remove potentially left-over rules from previous version
286
175
  for ( const rule of currentRules ) {
287
176
  if ( rule.id >= SPECIAL_RULES_REALM ) { continue; }
288
- if ( isStrictBlockRule(rule) === false ) { continue; }
289
177
  removeRuleIds.push(rule.id);
178
+ rule.id = 0;
290
179
  }
291
180
 
292
- await Promise.all([
293
- updateRegexRules(currentRules, addRules, removeRuleIds),
294
- updateRemoveparamRules(currentRules, addRules, removeRuleIds),
295
- updateRedirectRules(currentRules, addRules, removeRuleIds),
296
- updateModifyHeadersRules(currentRules, addRules, removeRuleIds),
297
- ]);
181
+ await updateRegexRules(currentRules, addRules, removeRuleIds);
298
182
  if ( addRules.length === 0 && removeRuleIds.length === 0 ) { return; }
299
183
 
300
184
  dynamicRegexCount = 0;
@@ -376,17 +376,21 @@ export class ReadWriteDNREditor extends DNREditor {
376
376
  separatorBefore = true;
377
377
  }
378
378
  const pastedText = newDoc.sliceString(from, to);
379
- let prepend;
379
+ let linesToPrepend;
380
380
  let rules = this.rulesFromJSON(pastedText);
381
381
  if ( Boolean(rules?.length) === false ) {
382
382
  rules = parseFilters(pastedText);
383
383
  if ( Boolean(rules?.length) === false ) { return; }
384
- prepend = pastedText.trim().split(/\n/).map(a => `# ${a}`).join('\n');
384
+ const lines = pastedText.trim().split(/\n/);
385
+ linesToPrepend = lines.slice(0, 10).map(a => `# ${a}`);
386
+ if ( lines.length > linesToPrepend.length ) {
387
+ linesToPrepend.push('# ...');
388
+ }
385
389
  }
386
390
  let yamlText = textFromRules(rules);
387
391
  if ( yamlText === undefined ) { return; }
388
- if ( prepend ) {
389
- yamlText = yamlText.replace('---\n', `---\n${prepend}\n`);
392
+ if ( linesToPrepend ) {
393
+ yamlText = yamlText.replace('---\n', `---\n${linesToPrepend.join('\n')}\n`);
390
394
  }
391
395
  if ( separatorBefore && yamlText.startsWith('---\n') ) {
392
396
  yamlText = yamlText.slice(4);
@@ -262,6 +262,7 @@ self.ubolOverlay = {
262
262
  }
263
263
  return this.proceduralFiltererAPI.qsa(selector);
264
264
  }
265
+ selector = selector.replace(/::[^:]+$/, '');
265
266
  try {
266
267
  const elems = node.querySelectorAll(selector);
267
268
  this.qsa.error = undefined;
@@ -242,9 +242,10 @@ sendMessage({
242
242
  renderAdminRules();
243
243
  renderFilterLists(cachedRulesetData);
244
244
  renderWidgets();
245
- dom.cl.remove(dom.body, 'loading');
246
245
  } catch(reason) {
247
246
  console.error(reason);
247
+ } finally {
248
+ dom.cl.remove(dom.body, 'loading');
248
249
  }
249
250
  listen();
250
251
  }).catch(reason => {
@@ -1245,7 +1245,7 @@ export class AstFilterParser {
1245
1245
  let modifierType = 0;
1246
1246
  let requestTypeCount = 0;
1247
1247
  let unredirectableTypeCount = 0;
1248
- let badfilter = false;
1248
+ let isBadfilter = false;
1249
1249
  for ( let i = 0, n = this.nodeTypeRegisterPtr; i < n; i++ ) {
1250
1250
  const type = this.nodeTypeRegister[i];
1251
1251
  const targetNode = this.nodeTypeLookupTable[type];
@@ -1269,7 +1269,7 @@ export class AstFilterParser {
1269
1269
  realBad = hasValue;
1270
1270
  break;
1271
1271
  case NODE_TYPE_NET_OPTION_NAME_BADFILTER:
1272
- badfilter = true;
1272
+ isBadfilter = true;
1273
1273
  /* falls through */
1274
1274
  case NODE_TYPE_NET_OPTION_NAME_NOOP:
1275
1275
  realBad = isNegated || hasValue;
@@ -1423,9 +1423,6 @@ export class AstFilterParser {
1423
1423
  this.addFlags(AST_FLAG_HAS_ERROR);
1424
1424
  }
1425
1425
  }
1426
- const requiresTrustedSource = ( ) =>
1427
- this.options.trustedSource !== true &&
1428
- isException === false && badfilter === false;
1429
1426
  switch ( modifierType ) {
1430
1427
  case NODE_TYPE_NET_OPTION_NAME_CNAME:
1431
1428
  realBad = abstractTypeCount || behaviorTypeCount || requestTypeCount;
@@ -1453,7 +1450,8 @@ export class AstFilterParser {
1453
1450
  case NODE_TYPE_NET_OPTION_NAME_REPLACE: {
1454
1451
  realBad = abstractTypeCount || behaviorTypeCount || unredirectableTypeCount;
1455
1452
  if ( realBad ) { break; }
1456
- if ( requiresTrustedSource() ) {
1453
+ if ( isException || isBadfilter ) { break; }
1454
+ if ( this.options.trustedSource !== true ) {
1457
1455
  this.astError = AST_ERROR_UNTRUSTED_SOURCE;
1458
1456
  realBad = true;
1459
1457
  break;
@@ -1468,7 +1466,8 @@ export class AstFilterParser {
1468
1466
  case NODE_TYPE_NET_OPTION_NAME_URLSKIP: {
1469
1467
  realBad = abstractTypeCount || behaviorTypeCount || unredirectableTypeCount;
1470
1468
  if ( realBad ) { break; }
1471
- if ( requiresTrustedSource() ) {
1469
+ if ( isException || isBadfilter ) { break; }
1470
+ if ( this.options.trustedSource !== true ) {
1472
1471
  this.astError = AST_ERROR_UNTRUSTED_SOURCE;
1473
1472
  realBad = true;
1474
1473
  break;
@@ -1483,7 +1482,8 @@ export class AstFilterParser {
1483
1482
  case NODE_TYPE_NET_OPTION_NAME_URLTRANSFORM: {
1484
1483
  realBad = abstractTypeCount || behaviorTypeCount || unredirectableTypeCount;
1485
1484
  if ( realBad ) { break; }
1486
- if ( requiresTrustedSource() ) {
1485
+ if ( isException || isBadfilter ) { break; }
1486
+ if ( this.options.trustedSource !== true ) {
1487
1487
  this.astError = AST_ERROR_UNTRUSTED_SOURCE;
1488
1488
  realBad = true;
1489
1489
  break;