@browserless.io/browserless 2.30.0 → 2.31.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 (429) hide show
  1. package/CHANGELOG.md +16 -3
  2. package/build/browsers/index.js +3 -0
  3. package/build/limiter.js +3 -1
  4. package/build/routes/chrome/http/content.post.body.json +8 -8
  5. package/build/routes/chrome/http/pdf.post.body.json +8 -8
  6. package/build/routes/chrome/http/scrape.post.body.json +8 -8
  7. package/build/routes/chrome/http/screenshot.post.body.json +22 -9
  8. package/build/routes/chromium/http/content.post.body.json +8 -8
  9. package/build/routes/chromium/http/pdf.post.body.json +8 -8
  10. package/build/routes/chromium/http/scrape.post.body.json +8 -8
  11. package/build/routes/chromium/http/screenshot.post.body.json +22 -9
  12. package/build/routes/chromium/tests/websocket.spec.js +1 -1
  13. package/build/routes/edge/http/content.post.body.json +8 -8
  14. package/build/routes/edge/http/pdf.post.body.json +8 -8
  15. package/build/routes/edge/http/scrape.post.body.json +8 -8
  16. package/build/routes/edge/http/screenshot.post.body.json +22 -9
  17. package/extensions/ublocklite/README.md +5 -4
  18. package/extensions/ublocklite/_locales/ar/messages.json +36 -0
  19. package/extensions/ublocklite/_locales/az/messages.json +36 -0
  20. package/extensions/ublocklite/_locales/be/messages.json +36 -0
  21. package/extensions/ublocklite/_locales/bg/messages.json +36 -0
  22. package/extensions/ublocklite/_locales/bn/messages.json +38 -2
  23. package/extensions/ublocklite/_locales/br_FR/messages.json +39 -3
  24. package/extensions/ublocklite/_locales/bs/messages.json +36 -0
  25. package/extensions/ublocklite/_locales/ca/messages.json +36 -0
  26. package/extensions/ublocklite/_locales/cs/messages.json +36 -0
  27. package/extensions/ublocklite/_locales/cv/messages.json +36 -0
  28. package/extensions/ublocklite/_locales/cy/messages.json +36 -0
  29. package/extensions/ublocklite/_locales/da/messages.json +37 -1
  30. package/extensions/ublocklite/_locales/de/messages.json +36 -0
  31. package/extensions/ublocklite/_locales/el/messages.json +36 -0
  32. package/extensions/ublocklite/_locales/en/messages.json +36 -0
  33. package/extensions/ublocklite/_locales/en_GB/messages.json +36 -0
  34. package/extensions/ublocklite/_locales/eo/messages.json +36 -0
  35. package/extensions/ublocklite/_locales/es/messages.json +36 -0
  36. package/extensions/ublocklite/_locales/et/messages.json +36 -0
  37. package/extensions/ublocklite/_locales/eu/messages.json +36 -0
  38. package/extensions/ublocklite/_locales/fa/messages.json +36 -0
  39. package/extensions/ublocklite/_locales/fi/messages.json +41 -5
  40. package/extensions/ublocklite/_locales/fil/messages.json +36 -0
  41. package/extensions/ublocklite/_locales/fr/messages.json +36 -0
  42. package/extensions/ublocklite/_locales/fy/messages.json +36 -0
  43. package/extensions/ublocklite/_locales/gl/messages.json +36 -0
  44. package/extensions/ublocklite/_locales/gu/messages.json +36 -0
  45. package/extensions/ublocklite/_locales/he/messages.json +36 -0
  46. package/extensions/ublocklite/_locales/hi/messages.json +36 -0
  47. package/extensions/ublocklite/_locales/hr/messages.json +37 -1
  48. package/extensions/ublocklite/_locales/hu/messages.json +36 -0
  49. package/extensions/ublocklite/_locales/hy/messages.json +36 -0
  50. package/extensions/ublocklite/_locales/id/messages.json +36 -0
  51. package/extensions/ublocklite/_locales/it/messages.json +36 -0
  52. package/extensions/ublocklite/_locales/ja/messages.json +36 -0
  53. package/extensions/ublocklite/_locales/ka/messages.json +36 -0
  54. package/extensions/ublocklite/_locales/kk/messages.json +36 -0
  55. package/extensions/ublocklite/_locales/kn/messages.json +36 -0
  56. package/extensions/ublocklite/_locales/ko/messages.json +37 -1
  57. package/extensions/ublocklite/_locales/lt/messages.json +36 -0
  58. package/extensions/ublocklite/_locales/lv/messages.json +36 -0
  59. package/extensions/ublocklite/_locales/mk/messages.json +36 -0
  60. package/extensions/ublocklite/_locales/ml/messages.json +36 -0
  61. package/extensions/ublocklite/_locales/mr/messages.json +36 -0
  62. package/extensions/ublocklite/_locales/ms/messages.json +36 -0
  63. package/extensions/ublocklite/_locales/nb/messages.json +40 -4
  64. package/extensions/ublocklite/_locales/nl/messages.json +40 -4
  65. package/extensions/ublocklite/_locales/oc/messages.json +36 -0
  66. package/extensions/ublocklite/_locales/pa/messages.json +36 -0
  67. package/extensions/ublocklite/_locales/pl/messages.json +36 -0
  68. package/extensions/ublocklite/_locales/pt_BR/messages.json +36 -0
  69. package/extensions/ublocklite/_locales/pt_PT/messages.json +38 -2
  70. package/extensions/ublocklite/_locales/ro/messages.json +36 -0
  71. package/extensions/ublocklite/_locales/ru/messages.json +36 -0
  72. package/extensions/ublocklite/_locales/si/messages.json +63 -27
  73. package/extensions/ublocklite/_locales/sk/messages.json +36 -0
  74. package/extensions/ublocklite/_locales/sl/messages.json +36 -0
  75. package/extensions/ublocklite/_locales/so/messages.json +36 -0
  76. package/extensions/ublocklite/_locales/sq/messages.json +37 -1
  77. package/extensions/ublocklite/_locales/sr/messages.json +36 -0
  78. package/extensions/ublocklite/_locales/sv/messages.json +36 -0
  79. package/extensions/ublocklite/_locales/sw/messages.json +36 -0
  80. package/extensions/ublocklite/_locales/ta/messages.json +36 -0
  81. package/extensions/ublocklite/_locales/te/messages.json +36 -0
  82. package/extensions/ublocklite/_locales/th/messages.json +36 -0
  83. package/extensions/ublocklite/_locales/tr/messages.json +37 -1
  84. package/extensions/ublocklite/_locales/uk/messages.json +36 -0
  85. package/extensions/ublocklite/_locales/ur/messages.json +36 -0
  86. package/extensions/ublocklite/_locales/vi/messages.json +36 -0
  87. package/extensions/ublocklite/_locales/zh_CN/messages.json +36 -0
  88. package/extensions/ublocklite/_locales/zh_TW/messages.json +36 -0
  89. package/extensions/ublocklite/css/common.css +2 -1
  90. package/extensions/ublocklite/css/dashboard-common.css +6 -1
  91. package/extensions/ublocklite/css/dashboard.css +15 -8
  92. package/extensions/ublocklite/css/default.css +1 -1
  93. package/extensions/ublocklite/css/develop.css +112 -0
  94. package/extensions/ublocklite/css/filtering-mode.css +29 -20
  95. package/extensions/ublocklite/css/popup.css +14 -16
  96. package/extensions/ublocklite/css/report.css +11 -0
  97. package/extensions/ublocklite/css/settings.css +11 -6
  98. package/extensions/ublocklite/css/zapper-ui.css +15 -10
  99. package/extensions/ublocklite/dashboard.html +39 -6
  100. package/extensions/ublocklite/img/icon_512.png +0 -0
  101. package/extensions/ublocklite/js/background.js +28 -5
  102. package/extensions/ublocklite/js/dashboard.js +18 -1
  103. package/extensions/ublocklite/js/develop.js +889 -0
  104. package/extensions/ublocklite/js/dnr-parser.js +561 -0
  105. package/extensions/ublocklite/js/ext-compat.js +3 -3
  106. package/extensions/ublocklite/js/filter-lists.js +6 -1
  107. package/extensions/ublocklite/js/report.js +48 -3
  108. package/extensions/ublocklite/js/ruleset-manager.js +121 -22
  109. package/extensions/ublocklite/js/scripting-manager.js +45 -16
  110. package/extensions/ublocklite/js/settings.js +33 -19
  111. package/extensions/ublocklite/js/theme.js +3 -1
  112. package/extensions/ublocklite/js/zapper-ui.js +11 -0
  113. package/extensions/ublocklite/lib/codemirror/LICENSE +21 -0
  114. package/extensions/ublocklite/lib/codemirror/README.md +9 -0
  115. package/extensions/ublocklite/lib/codemirror/cm6.bundle.ubol.min.js +1 -0
  116. package/extensions/ublocklite/manifest.json +6 -6
  117. package/extensions/ublocklite/popup.html +7 -11
  118. package/extensions/ublocklite/report.html +4 -2
  119. package/extensions/ublocklite/rulesets/generic-details.json +16 -5
  120. package/extensions/ublocklite/rulesets/main/adguard-mobile.json +533 -0
  121. package/extensions/ublocklite/rulesets/main/alb-0.json +23 -23
  122. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +29 -14
  123. package/extensions/ublocklite/rulesets/main/annoyances-others.json +3 -1
  124. package/extensions/ublocklite/rulesets/main/annoyances-overlays.json +10 -4
  125. package/extensions/ublocklite/rulesets/main/annoyances-social.json +1 -0
  126. package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +3 -2
  127. package/extensions/ublocklite/rulesets/main/chn-0.json +59 -39
  128. package/extensions/ublocklite/rulesets/main/deu-0.json +11 -3
  129. package/extensions/ublocklite/rulesets/main/easylist.json +28 -36
  130. package/extensions/ublocklite/rulesets/main/easyprivacy.json +44 -12
  131. package/extensions/ublocklite/rulesets/main/fin-0.json +168 -168
  132. package/extensions/ublocklite/rulesets/main/fra-0.json +10 -11
  133. package/extensions/ublocklite/rulesets/main/hun-0.json +17 -6
  134. package/extensions/ublocklite/rulesets/main/idn-0.json +16 -4
  135. package/extensions/ublocklite/rulesets/main/ind-0.json +112 -77
  136. package/extensions/ublocklite/rulesets/main/isr-0.json +7 -19
  137. package/extensions/ublocklite/rulesets/main/ita-0.json +3 -2
  138. package/extensions/ublocklite/rulesets/main/jpn-1.json +26 -15
  139. package/extensions/ublocklite/rulesets/main/kor-1.json +7 -1
  140. package/extensions/ublocklite/rulesets/main/nor-0.json +38 -2
  141. package/extensions/ublocklite/rulesets/main/pgl.json +6 -18
  142. package/extensions/ublocklite/rulesets/main/pol-0.json +1 -1
  143. package/extensions/ublocklite/rulesets/main/rou-1.json +1 -1
  144. package/extensions/ublocklite/rulesets/main/rus-0.json +25 -16
  145. package/extensions/ublocklite/rulesets/main/rus-1.json +11 -13
  146. package/extensions/ublocklite/rulesets/main/spa-0.json +9 -2
  147. package/extensions/ublocklite/rulesets/main/spa-1.json +9 -6
  148. package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +14117 -4504
  149. package/extensions/ublocklite/rulesets/main/swe-1.json +35 -30
  150. package/extensions/ublocklite/rulesets/main/tur-0.json +31 -9
  151. package/extensions/ublocklite/rulesets/main/ublock-badware.json +49 -115
  152. package/extensions/ublocklite/rulesets/main/ublock-filters.json +72 -37
  153. package/extensions/ublocklite/rulesets/main/ukr-0.json +6 -2
  154. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +439 -846
  155. package/extensions/ublocklite/rulesets/main/vie-1.json +80 -69
  156. package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +46 -2
  157. package/extensions/ublocklite/rulesets/modify-headers/vie-1.json +1 -1
  158. package/extensions/ublocklite/rulesets/redirect/adguard-mobile.json +20 -0
  159. package/extensions/ublocklite/rulesets/redirect/annoyances-overlays.json +0 -1
  160. package/extensions/ublocklite/rulesets/redirect/easylist.json +19 -0
  161. package/extensions/ublocklite/rulesets/redirect/fin-0.json +25 -25
  162. package/extensions/ublocklite/rulesets/redirect/isr-0.json +2 -1
  163. package/extensions/ublocklite/rulesets/redirect/rou-1.json +1 -0
  164. package/extensions/ublocklite/rulesets/redirect/rus-1.json +33 -17
  165. package/extensions/ublocklite/rulesets/redirect/swe-1.json +11 -156
  166. package/extensions/ublocklite/rulesets/redirect/tur-0.json +0 -1
  167. package/extensions/ublocklite/rulesets/redirect/ublock-filters.json +14 -9
  168. package/extensions/ublocklite/rulesets/redirect/vie-1.json +20 -4
  169. package/extensions/ublocklite/rulesets/regex/adguard-mobile.json +101 -0
  170. package/extensions/ublocklite/rulesets/regex/chn-0.json +3 -3
  171. package/extensions/ublocklite/rulesets/regex/jpn-1.json +3 -5
  172. package/extensions/ublocklite/rulesets/regex/kor-1.json +2 -1
  173. package/extensions/ublocklite/rulesets/regex/nor-0.json +1 -1
  174. package/extensions/ublocklite/rulesets/regex/swe-1.json +1 -0
  175. package/extensions/ublocklite/rulesets/regex/tur-0.json +1 -0
  176. package/extensions/ublocklite/rulesets/regex/ublock-badware.json +5 -4
  177. package/extensions/ublocklite/rulesets/regex/ublock-filters.json +17 -4
  178. package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +13 -6
  179. package/extensions/ublocklite/rulesets/removeparam/fin-0.json +12 -12
  180. package/extensions/ublocklite/rulesets/removeparam/rus-1.json +2 -2
  181. package/extensions/ublocklite/rulesets/removeparam/swe-1.json +25 -0
  182. package/extensions/ublocklite/rulesets/removeparam/ublock-filters.json +2 -2
  183. package/extensions/ublocklite/rulesets/ruleset-details.json +259 -262
  184. package/extensions/ublocklite/rulesets/scripting/declarative/adguard-mobile.js +42 -0
  185. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-cookies.js +3 -3
  186. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-overlays.js +3 -3
  187. package/extensions/ublocklite/rulesets/scripting/declarative/chn-0.js +3 -3
  188. package/extensions/ublocklite/rulesets/scripting/declarative/isr-0.js +3 -3
  189. package/extensions/ublocklite/rulesets/scripting/declarative/jpn-1.js +2 -2
  190. package/extensions/ublocklite/rulesets/scripting/declarative/nor-0.js +3 -3
  191. package/extensions/ublocklite/rulesets/scripting/declarative/rou-1.js +3 -3
  192. package/extensions/ublocklite/rulesets/scripting/declarative/rus-0.js +3 -3
  193. package/extensions/ublocklite/rulesets/scripting/declarative/rus-1.js +1 -1
  194. package/extensions/ublocklite/rulesets/scripting/declarative/spa-1.js +3 -3
  195. package/extensions/ublocklite/rulesets/scripting/declarative/swe-1.js +3 -3
  196. package/extensions/ublocklite/rulesets/scripting/declarative/tur-0.js +3 -3
  197. package/extensions/ublocklite/rulesets/scripting/declarative/ublock-filters.js +3 -3
  198. package/extensions/ublocklite/rulesets/scripting/declarative/vie-1.js +1 -1
  199. package/extensions/ublocklite/rulesets/scripting/generic/adguard-mobile.js +87 -0
  200. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
  201. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-others.js +3 -3
  202. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +3 -3
  203. package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +3 -3
  204. package/extensions/ublocklite/rulesets/scripting/generic/deu-0.js +2 -2
  205. package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
  206. package/extensions/ublocklite/rulesets/scripting/generic/fin-0.js +1 -1
  207. package/extensions/ublocklite/rulesets/scripting/generic/fra-0.js +2 -2
  208. package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +3 -3
  209. package/extensions/ublocklite/rulesets/scripting/generic/isr-0.js +1 -1
  210. package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +3 -3
  211. package/extensions/ublocklite/rulesets/scripting/generic/rus-0.js +3 -3
  212. package/extensions/ublocklite/rulesets/scripting/generic/spa-0.js +2 -2
  213. package/extensions/ublocklite/rulesets/scripting/generic/spa-1.js +2 -2
  214. package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +1 -1
  215. package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +1 -1
  216. package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
  217. package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +3 -3
  218. package/extensions/ublocklite/rulesets/scripting/generichigh/adguard-mobile.css +39 -0
  219. package/extensions/ublocklite/rulesets/scripting/generichigh/annoyances-cookies.css +0 -2
  220. package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +1 -1
  221. package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +3 -14
  222. package/extensions/ublocklite/rulesets/scripting/generichigh/fra-0.css +0 -2
  223. package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +129 -139
  224. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +1 -0
  225. package/extensions/ublocklite/rulesets/scripting/generichigh/tur-0.css +1 -0
  226. package/extensions/ublocklite/rulesets/scripting/generichigh/ublock-filters.css +1 -0
  227. package/extensions/ublocklite/rulesets/scripting/procedural/adguard-mobile.js +42 -0
  228. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
  229. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +3 -3
  230. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
  231. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +1 -1
  232. package/extensions/ublocklite/rulesets/scripting/procedural/deu-0.js +3 -3
  233. package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
  234. package/extensions/ublocklite/rulesets/scripting/procedural/hun-0.js +3 -3
  235. package/extensions/ublocklite/rulesets/scripting/procedural/idn-0.js +2 -2
  236. package/extensions/ublocklite/rulesets/scripting/procedural/ind-0.js +3 -3
  237. package/extensions/ublocklite/rulesets/scripting/procedural/ita-0.js +3 -3
  238. package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
  239. package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +1 -1
  240. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  241. package/extensions/ublocklite/rulesets/scripting/procedural/spa-0.js +3 -3
  242. package/extensions/ublocklite/rulesets/scripting/procedural/spa-1.js +3 -3
  243. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
  244. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
  245. package/extensions/ublocklite/rulesets/scripting/procedural/ukr-0.js +3 -3
  246. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-current-script.js +451 -0
  247. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-on-property-read.js +369 -0
  248. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.abort-on-property-write.js +347 -0
  249. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.addEventListener-defuser.js +498 -0
  250. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.adjust-setInterval.js +332 -0
  251. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.prevent-setTimeout.js +443 -0
  252. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.remove-attr.js +405 -0
  253. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.remove-class.js +396 -0
  254. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.remove-node-text.js +449 -0
  255. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-constant.js +541 -0
  256. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-cookie-reload.js +437 -0
  257. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-cookie.js +433 -0
  258. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-local-storage-item.js +399 -0
  259. package/extensions/ublocklite/rulesets/scripting/scriptlet/adguard-mobile.set-session-storage-item.js +399 -0
  260. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.remove-class.js +2 -2
  261. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-constant.js +1 -1
  262. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  263. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  264. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
  265. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie-reload.js +2 -2
  266. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  267. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-local-storage-item.js +2 -2
  268. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +2 -2
  269. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-property-read.js +1 -1
  270. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +1 -1
  271. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-cookie.js +2 -2
  272. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-node-text.js +2 -2
  273. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +1 -1
  274. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-cookie.js +2 -2
  275. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-set-local-storage-item.js +1 -1
  276. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-current-script.js +2 -2
  277. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +1 -1
  278. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.remove-attr.js +1 -1
  279. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.set-constant.js +2 -2
  280. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.addEventListener-defuser.js +2 -2
  281. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.addEventListener-defuser.js +2 -2
  282. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +2 -2
  283. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-refresh.js +330 -0
  284. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.remove-attr.js +1 -1
  285. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.set-constant.js +2 -2
  286. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.abort-current-script.js +2 -2
  287. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.adjust-setTimeout.js +2 -2
  288. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-read.js +2 -2
  289. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +3 -3
  290. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.json-prune-fetch-response.js +2 -2
  291. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +3 -3
  292. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
  293. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-cookie.js +2 -2
  294. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.json-prune.js +1 -1
  295. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +1 -1
  296. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-read.js +2 -2
  297. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.adjust-setInterval.js +2 -2
  298. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.adjust-setTimeout.js +2 -2
  299. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.noeval-if.js +2 -2
  300. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +1 -1
  301. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-setTimeout.js +3 -3
  302. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-constant.js +2 -2
  303. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-cookie.js +3 -3
  304. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-local-storage-item.js +3 -3
  305. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-session-storage-item.js +399 -0
  306. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.addEventListener-defuser.js +1 -1
  307. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.href-sanitizer.js +2 -2
  308. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.remove-cookie.js +2 -2
  309. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.remove-node-text.js +2 -2
  310. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-current-script.js +2 -2
  311. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +2 -2
  312. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-stack-trace.js +421 -0
  313. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.addEventListener-defuser.js +2 -2
  314. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-window-open.js +2 -2
  315. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-xhr.js +2 -2
  316. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-node-text.js +3 -3
  317. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
  318. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-local-storage-item.js +2 -2
  319. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
  320. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +1 -1
  321. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +2 -2
  322. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
  323. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +3 -3
  324. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +1 -1
  325. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.disable-newtab-links.js +1 -1
  326. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.href-sanitizer.js +2 -2
  327. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-edit.js +788 -0
  328. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +2 -2
  329. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-xhr-response.js +3 -3
  330. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +3 -3
  331. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.jsonl-edit-xhr-response.js +809 -0
  332. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +1 -1
  333. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.nowebrtc.js +1 -1
  334. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +2 -2
  335. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +2 -2
  336. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +2 -2
  337. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +3 -3
  338. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +3 -3
  339. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +2 -2
  340. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-attr.js +2 -2
  341. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
  342. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +4 -4
  343. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +3 -3
  344. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
  345. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-local-storage-item.js +2 -2
  346. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-session-storage-item.js +2 -2
  347. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.spoof-css.js +2 -2
  348. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +3 -3
  349. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-xhr-response.js +2 -2
  350. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +1 -1
  351. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +2 -2
  352. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-fetch-response.js +5 -3
  353. package/extensions/ublocklite/rulesets/scripting/scriptlet/ubol-tests.jsonl-edit-xhr-response.js +5 -3
  354. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
  355. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +2 -2
  356. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.m3u-prune.js +1 -1
  357. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.set-constant.js +2 -2
  358. package/extensions/ublocklite/rulesets/scripting/specific/adguard-mobile.js +42 -0
  359. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  360. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  361. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  362. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  363. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  364. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  365. package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
  366. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  367. package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
  368. package/extensions/ublocklite/rulesets/scripting/specific/grc-0.js +3 -3
  369. package/extensions/ublocklite/rulesets/scripting/specific/hun-0.js +3 -3
  370. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  371. package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
  372. package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +3 -3
  373. package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
  374. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  375. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
  376. package/extensions/ublocklite/rulesets/scripting/specific/nld-0.js +3 -3
  377. package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +3 -3
  378. package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
  379. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  380. package/extensions/ublocklite/rulesets/scripting/specific/spa-0.js +3 -3
  381. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  382. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  383. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  384. package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
  385. package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +3 -3
  386. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  387. package/extensions/ublocklite/rulesets/scriptlet-details.json +431 -273
  388. package/extensions/ublocklite/rulesets/strictblock/adguard-mobile.json +891 -0
  389. package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +8 -1
  390. package/extensions/ublocklite/rulesets/strictblock/annoyances-widgets.json +1 -0
  391. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +257 -4
  392. package/extensions/ublocklite/rulesets/strictblock/deu-0.json +1 -0
  393. package/extensions/ublocklite/rulesets/strictblock/easylist.json +15 -13
  394. package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +137 -695
  395. package/extensions/ublocklite/rulesets/strictblock/fra-0.json +245 -78
  396. package/extensions/ublocklite/rulesets/strictblock/hun-0.json +1 -1
  397. package/extensions/ublocklite/rulesets/strictblock/isr-0.json +0 -12
  398. package/extensions/ublocklite/rulesets/strictblock/ita-0.json +1 -1
  399. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +157 -152
  400. package/extensions/ublocklite/rulesets/strictblock/kor-1.json +2 -0
  401. package/extensions/ublocklite/rulesets/strictblock/pgl.json +6 -18
  402. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +1 -0
  403. package/extensions/ublocklite/rulesets/strictblock/rou-1.json +1 -0
  404. package/extensions/ublocklite/rulesets/strictblock/rus-0.json +0 -1
  405. package/extensions/ublocklite/rulesets/strictblock/rus-1.json +1 -0
  406. package/extensions/ublocklite/rulesets/strictblock/spa-0.json +2 -0
  407. package/extensions/ublocklite/rulesets/strictblock/spa-1.json +1 -0
  408. package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +14117 -4504
  409. package/extensions/ublocklite/rulesets/strictblock/swe-1.json +0 -2
  410. package/extensions/ublocklite/rulesets/strictblock/tur-0.json +3 -0
  411. package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +584 -614
  412. package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +1 -1
  413. package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +2 -0
  414. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +439 -846
  415. package/extensions/ublocklite/rulesets/strictblock/vie-1.json +2 -9
  416. package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +61 -1
  417. package/extensions/ublocklite/ublock.zip +0 -0
  418. package/extensions/ublocklite/zapper-ui.html +7 -1
  419. package/package.json +14 -14
  420. package/scripts/build-open-api.js +16 -4
  421. package/src/browsers/index.ts +6 -0
  422. package/src/limiter.ts +7 -2
  423. package/src/routes/chromium/tests/websocket.spec.ts +1 -1
  424. package/static/docs/swagger.json +57 -44
  425. package/static/docs/swagger.min.json +56 -43
  426. package/static/function/client.js +8 -5
  427. package/static/function/index.html +8 -5
  428. package/extensions/ublocklite/rulesets/main/pol-3.json +0 -56707
  429. package/extensions/ublocklite/rulesets/strictblock/pol-3.json +0 -56714
@@ -0,0 +1,561 @@
1
+ /*******************************************************************************
2
+
3
+ uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
4
+ Copyright (C) 2014-present Raymond Hill
5
+
6
+ This program is free software: you can redistribute it and/or modify
7
+ it under the terms of the GNU General Public License as published by
8
+ the Free Software Foundation, either version 3 of the License, or
9
+ (at your option) any later version.
10
+
11
+ This program is distributed in the hope that it will be useful,
12
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ GNU General Public License for more details.
15
+
16
+ You should have received a copy of the GNU General Public License
17
+ along with this program. If not, see {http://www.gnu.org/licenses/}.
18
+
19
+ Home: https://github.com/gorhill/uBlock
20
+ */
21
+
22
+ /******************************************************************************/
23
+
24
+ const validActionValues = [
25
+ 'block',
26
+ 'redirect',
27
+ 'allow',
28
+ 'upgradeScheme',
29
+ 'modifyHeaders',
30
+ 'allowAllRequests',
31
+ ];
32
+
33
+ const validBoolValues = [
34
+ 'false',
35
+ 'true',
36
+ ];
37
+
38
+ const validHeaderOpValues = [
39
+ 'append',
40
+ 'remove',
41
+ 'set',
42
+ ];
43
+
44
+ const validDomainTypeValues = [
45
+ 'firstParty',
46
+ 'thirdParty',
47
+ ];
48
+
49
+ const validRequestMethodValues = [
50
+ 'connect',
51
+ 'delete',
52
+ 'get',
53
+ 'head',
54
+ 'options',
55
+ 'patch',
56
+ 'post',
57
+ 'put',
58
+ 'other',
59
+ ];
60
+
61
+ const validResourceTypeValues = [
62
+ 'main_frame',
63
+ 'sub_frame',
64
+ 'stylesheet',
65
+ 'script',
66
+ 'image',
67
+ 'font',
68
+ 'object',
69
+ 'xmlhttprequest',
70
+ 'ping',
71
+ 'csp_report',
72
+ 'media',
73
+ 'websocket',
74
+ 'webtransport',
75
+ 'webbundle',
76
+ 'other',
77
+ ];
78
+
79
+ /******************************************************************************/
80
+
81
+ function selectParser(scope, rule, node) {
82
+ const parser = perScopeParsers[scope.join('.')];
83
+ if ( parser === undefined ) { return false; }
84
+ return parser(scope, rule, node);
85
+ }
86
+
87
+ const perScopeParsers = {
88
+ '': function(scope, rule, node) {
89
+ const { key, val } = node;
90
+ switch ( key ) {
91
+ case 'action':
92
+ case 'condition':
93
+ if ( val !== undefined ) { return false; }
94
+ rule[key] = {};
95
+ scope.push(key);
96
+ break;
97
+ case 'priority': {
98
+ const n = parseInt(val, 10);
99
+ if ( isNaN(n) || n <= 1 ) { return false; }
100
+ rule.priority = n;
101
+ break;
102
+ }
103
+ default:
104
+ return false;
105
+ }
106
+ return true;
107
+ },
108
+ 'action': function(scope, rule, node) {
109
+ const { key, val } = node;
110
+ switch ( key ) {
111
+ case 'type':
112
+ if ( validActionValues.includes(val) === false ) { return false; }
113
+ rule.action.type = val;
114
+ break;
115
+ case 'redirect':
116
+ rule.action.redirect = {};
117
+ scope.push('redirect');
118
+ break;
119
+ case 'requestHeaders':
120
+ case 'responseHeaders':
121
+ rule.action[key] = [];
122
+ scope.push(key);
123
+ break;
124
+ default:
125
+ return false;
126
+ }
127
+ return true;
128
+ },
129
+ 'action.redirect': function(scope, rule, node) {
130
+ const { key, val } = node;
131
+ switch ( key ) {
132
+ case 'extensionPath':
133
+ case 'regexSubstitution':
134
+ case 'url':
135
+ rule.action.redirect[key] = val;
136
+ break;
137
+ case 'transform':
138
+ rule.action.redirect.transform = {};
139
+ scope.push('transform');
140
+ break;
141
+ default:
142
+ return false;
143
+ }
144
+ return true;
145
+ },
146
+ 'action.redirect.transform': function(scope, rule, node) {
147
+ const { key, val } = node;
148
+ switch ( key ) {
149
+ case 'fragment':
150
+ case 'host':
151
+ case 'path':
152
+ case 'port':
153
+ case 'query':
154
+ case 'scheme': {
155
+ if ( val === undefined ) { return false; }
156
+ rule.action.redirect.transform[key] = val;
157
+ break;
158
+ }
159
+ case 'queryTransform':
160
+ rule.action.redirect.transform.queryTransform = {};
161
+ scope.push('queryTransform');
162
+ break;
163
+ default:
164
+ return false;
165
+ }
166
+ return true;
167
+ },
168
+ 'action.redirect.transform.queryTransform': function(scope, rule, node) {
169
+ const { key, val } = node;
170
+ if ( val !== undefined ) { return false; }
171
+ switch ( key ) {
172
+ case 'addOrReplaceParams':
173
+ case 'removeParams':
174
+ rule.action.redirect.transform.queryTransform[key] = [];
175
+ scope.push(key);
176
+ break;
177
+ default:
178
+ return false;
179
+ }
180
+ return true;
181
+ },
182
+ 'action.redirect.transform.queryTransform.addOrReplaceParams': function(scope, rule, node) {
183
+ if ( node.list !== true ) { return false; }
184
+ rule.action.redirect.transform.queryTransform.addOrReplaceParams.push({});
185
+ scope.push('@');
186
+ return selectParser(scope, rule, node);
187
+ },
188
+ 'action.redirect.transform.queryTransform.addOrReplaceParams.@': function(scope, rule, node) {
189
+ const { key, val } = node;
190
+ if ( val === undefined ) { return false; }
191
+ const item = rule.action.redirect.transform.queryTransform.addOrReplaceParams.at(-1);
192
+ switch ( key ) {
193
+ case 'key':
194
+ case 'value':
195
+ item[key] = val;
196
+ break;
197
+ case 'replaceOnly':
198
+ if ( validBoolValues.includes(val) === false ) { return false; }
199
+ item.replaceOnly = val === 'true';
200
+ break;
201
+ default:
202
+ return false;
203
+ }
204
+ return true;
205
+ },
206
+ 'action.redirect.transform.queryTransform.removeParams': function(scope, rule, node) {
207
+ if ( node.list !== true ) { return false; }
208
+ rule.action.redirect.transform.queryTransform.removeParams.push(node.val);
209
+ return true;
210
+ },
211
+ 'action.requestHeaders': function(scope, rule, node) {
212
+ if ( node.list !== true ) { return false; }
213
+ rule.action.requestHeaders.push({});
214
+ scope.push('@');
215
+ return selectParser(scope, rule, node);
216
+ },
217
+ 'action.requestHeaders.@': function(scope, rule, node) {
218
+ const { key, val } = node;
219
+ const item = rule.action.requestHeaders.at(-1);
220
+ switch ( key ) {
221
+ case 'header':
222
+ case 'value':
223
+ item[key] = val;
224
+ break;
225
+ case 'operation':
226
+ if ( validHeaderOpValues.includes(val) === false ) { return false; }
227
+ item.operation = val;
228
+ break;
229
+ default:
230
+ return false;
231
+ }
232
+ return true;
233
+ },
234
+ 'action.responseHeaders': function(scope, rule, node) {
235
+ if ( node.list !== true ) { return false; }
236
+ rule.action.responseHeaders.push({});
237
+ scope.push('@');
238
+ return selectParser(scope, rule, node);
239
+ },
240
+ 'action.responseHeaders.@': function(scope, rule, node) {
241
+ const { key, val } = node;
242
+ const item = rule.action.responseHeaders.at(-1);
243
+ switch ( key ) {
244
+ case 'header':
245
+ case 'value':
246
+ item[key] = val;
247
+ break;
248
+ case 'operation':
249
+ if ( validHeaderOpValues.includes(val) === false ) { return false; }
250
+ item.operation = val;
251
+ break;
252
+ default:
253
+ return false;
254
+ }
255
+ return true;
256
+ },
257
+ 'condition': function(scope, rule, node) {
258
+ const { key, val } = node;
259
+ switch ( key ) {
260
+ case 'domainType':
261
+ if ( validDomainTypeValues.includes(val) === false ) { return false; }
262
+ rule.condition.domainType = val;
263
+ break;
264
+ case 'isUrlFilterCaseSensitive':
265
+ if ( validBoolValues.includes(val) === false ) { return false; }
266
+ rule.condition.isUrlFilterCaseSensitive = val === 'true';
267
+ break;
268
+ case 'regexFilter':
269
+ case 'urlFilter':
270
+ if ( val === undefined ) { return false; }
271
+ rule.condition[key] = val;
272
+ break;
273
+ case 'initiatorDomains':
274
+ case 'excludedInitiatorDomains':
275
+ case 'requestDomains':
276
+ case 'excludedRequestDomains':
277
+ case 'resourceTypes':
278
+ case 'excludedResourceTypes':
279
+ case 'requestMethods':
280
+ case 'excludedRequestMethods':
281
+ case 'responseHeaders':
282
+ case 'excludedResponseHeaders':
283
+ rule.condition[key] = [];
284
+ scope.push(key);
285
+ break;
286
+ default:
287
+ return false;
288
+ }
289
+ return true;
290
+ },
291
+ 'condition.initiatorDomains': function(scope, rule, node) {
292
+ if ( node.list !== true ) { return false; }
293
+ rule.condition.initiatorDomains.push(node.val);
294
+ return true;
295
+ },
296
+ 'condition.excludedInitiatorDomains': function(scope, rule, node) {
297
+ if ( node.list !== true ) { return false; }
298
+ rule.condition.excludedInitiatorDomains.push(node.val);
299
+ return true;
300
+ },
301
+ 'condition.domains': function(scope, rule, node) {
302
+ if ( node.list !== true ) { return false; }
303
+ rule.condition.domains.push(node.val);
304
+ return true;
305
+ },
306
+ 'condition.excludedDomains': function(scope, rule, node) {
307
+ if ( node.list !== true ) { return false; }
308
+ rule.condition.excludedDomains.push(node.val);
309
+ return true;
310
+ },
311
+ 'condition.requestDomains': function(scope, rule, node) {
312
+ if ( node.list !== true ) { return false; }
313
+ rule.condition.requestDomains.push(node.val);
314
+ return true;
315
+ },
316
+ 'condition.excludedRequestDomains': function(scope, rule, node) {
317
+ if ( node.list !== true ) { return false; }
318
+ rule.condition.excludedRequestDomains.push(node.val);
319
+ return true;
320
+ },
321
+ 'condition.resourceTypes': function(scope, rule, node) {
322
+ if ( node.list !== true ) { return false; }
323
+ if ( validResourceTypeValues.includes(node.val) === false ) { return false; }
324
+ rule.condition.resourceTypes.push(node.val);
325
+ return true;
326
+ },
327
+ 'condition.excludedResourceTypes': function(scope, rule, node) {
328
+ if ( node.list !== true ) { return false; }
329
+ if ( validResourceTypeValues.includes(node.val) === false ) { return false; }
330
+ rule.condition.excludedResourceTypes.push(node.val);
331
+ return true;
332
+ },
333
+ 'condition.requestMethods': function(scope, rule, node) {
334
+ if ( node.list !== true ) { return false; }
335
+ if ( validRequestMethodValues.includes(node.val) === false ) { return false; }
336
+ rule.condition.requestMethods.push(node.val);
337
+ return true;
338
+ },
339
+ 'condition.excludedRequestMethods': function(scope, rule, node) {
340
+ if ( node.list !== true ) { return false; }
341
+ if ( validRequestMethodValues.includes(node.val) === false ) { return false; }
342
+ rule.condition.excludedRequestMethods.push(node.val);
343
+ return true;
344
+ },
345
+ 'condition.responseHeaders': function(scope, rule, node) {
346
+ if ( node.list !== true ) { return false; }
347
+ rule.condition.responseHeaders.push({});
348
+ scope.push('@');
349
+ return selectParser(scope, rule, node);
350
+ },
351
+ 'condition.responseHeaders.@': function(scope, rule, node) {
352
+ const item = rule.condition.responseHeaders.at(-1);
353
+ switch ( node.key ) {
354
+ case 'header':
355
+ if ( node.val === undefined ) { return false; }
356
+ item.header = node.val;
357
+ break;
358
+ case 'values':
359
+ case 'excludedValues':
360
+ item[node.key] = [];
361
+ scope.push(node.key);
362
+ break;
363
+ default:
364
+ return false;
365
+ }
366
+ return true;
367
+ },
368
+ 'condition.responseHeaders.@.values': function(scope, rule, node) {
369
+ if ( node.list !== true ) { return false; }
370
+ const item = rule.condition.responseHeaders.at(-1);
371
+ item.values.push(node.val);
372
+ return true;
373
+ },
374
+ 'condition.responseHeaders.@.excludedValues': function(scope, rule, node) {
375
+ if ( node.list !== true ) { return false; }
376
+ const item = rule.condition.responseHeaders.at(-1);
377
+ item.excludedValues.push(node.val);
378
+ return true;
379
+ },
380
+ 'condition.excludedResponseHeaders': function(scope, rule, node) {
381
+ if ( node.list !== true ) { return false; }
382
+ rule.condition.excludedResponseHeaders.push({});
383
+ scope.push('@');
384
+ return selectParser(scope, rule, node);
385
+ },
386
+ 'condition.excludedResponseHeaders.@': function(scope, rule, node) {
387
+ const item = rule.condition.excludedResponseHeaders.at(-1);
388
+ switch ( node.key ) {
389
+ case 'header':
390
+ if ( node.val === undefined ) { return false; }
391
+ item.header = node.val;
392
+ break;
393
+ case 'values':
394
+ case 'excludedValues':
395
+ item[node.key] = [];
396
+ scope.push(node.key);
397
+ break;
398
+ default:
399
+ return false;
400
+ }
401
+ return true;
402
+ },
403
+ 'condition.excludedResponseHeaders.@.values': function(scope, rule, node) {
404
+ if ( node.list !== true ) { return false; }
405
+ const item = rule.condition.excludedResponseHeaders.at(-1);
406
+ item.values.push(node.val);
407
+ return true;
408
+ },
409
+ 'condition.excludedResponseHeaders.@.excludedValues': function(scope, rule, node) {
410
+ if ( node.list !== true ) { return false; }
411
+ const item = rule.condition.excludedResponseHeaders.at(-1);
412
+ item.excludedValues.push(node.val);
413
+ return true;
414
+ },
415
+ };
416
+
417
+ /******************************************************************************/
418
+
419
+ function depthFromIndent(line) {
420
+ const match = /^\s*/.exec(line);
421
+ const count = match[0].length;
422
+ if ( (count & 1) !== 0 ) { return -1; }
423
+ return count / 2;
424
+ }
425
+
426
+ /******************************************************************************/
427
+
428
+ function nodeFromLine(line) {
429
+ const match = reNodeParser.exec(line);
430
+ const out = {};
431
+ if ( match === null ) { return out; }
432
+ if ( match[1] ) {
433
+ out.list = true;
434
+ }
435
+ if ( match[4] ) {
436
+ out.val = match[4].trim();
437
+ } else if ( match[3] ) {
438
+ out.key = match[2];
439
+ out.val = match[3].trim();
440
+ if ( out.val === "''" ) { out.val = '' };
441
+ } else {
442
+ out.key = match[2];
443
+ }
444
+ return out;
445
+ }
446
+
447
+ const reNodeParser = /^\s*(- )?(?:(\S+):( \S.*)?|(\S.*))$/;
448
+
449
+ /******************************************************************************/
450
+
451
+ function ruleFromLines(lines, indices) {
452
+ const rule = {};
453
+ const bad = [];
454
+ const scope = [];
455
+ for ( const i of indices ) {
456
+ const line = lines[i];
457
+ const depth = depthFromIndent(line);
458
+ if ( depth < 0 ) {
459
+ bad.push(i);
460
+ continue;
461
+ }
462
+ scope.length = depth;
463
+ const node = nodeFromLine(line);
464
+ const result = selectParser(scope, rule, node);
465
+ if ( result === false ) {
466
+ bad.push(i);
467
+ }
468
+ }
469
+ if ( bad.length !== 0 ) { return { bad }; }
470
+ return { rule };
471
+ }
472
+
473
+ /******************************************************************************/
474
+
475
+ export function rulesFromText(text) {
476
+ const rules = [];
477
+ const bad = [];
478
+ const lines = [ ...text.split(/\n\r|\r\n|\n|\r/), '---' ];
479
+ const indices = [];
480
+ for ( let i = 0; i < lines.length; i++ ) {
481
+ const line = lines[i].trimEnd();
482
+ const trimmed = line.trimStart();
483
+ if ( trimmed.startsWith('#') ) { continue; }
484
+ // Discard leading empty lines
485
+ if ( trimmed === '' ) {
486
+ if ( indices.length === 0 ) { continue; }
487
+ }
488
+ if ( line !== '---' && line !== '...' ) {
489
+ indices.push(i);
490
+ continue;
491
+ }
492
+ // Discard trailing empty lines
493
+ while ( indices.length !== 0 ) {
494
+ const s = lines[indices.at(-1)].trim();
495
+ if ( s.length !== 0 ) { break; }
496
+ indices.pop();
497
+ }
498
+ if ( indices.length === 0 ) { continue; }
499
+ const result = ruleFromLines(lines, indices);
500
+ if ( result.bad ) {
501
+ bad.push(...result.bad);
502
+ } else if ( result.rule ) {
503
+ rules.push(result.rule);
504
+ }
505
+ indices.length = 0;
506
+ }
507
+ return { rules, bad };
508
+ }
509
+
510
+ /******************************************************************************/
511
+
512
+ function textFromValue(val, depth) {
513
+ const indent = ' '.repeat(depth);
514
+ switch ( typeof val ) {
515
+ case 'boolean':
516
+ case 'number':
517
+ return `${val}`;
518
+ case 'string':
519
+ if ( val === '' ) { return "''"; }
520
+ return val;
521
+ }
522
+ const out = [];
523
+ if ( Array.isArray(val) ) {
524
+ for ( const a of val ) {
525
+ const s = textFromValue(a, depth+1);
526
+ if ( s === undefined ) { continue; }
527
+ out.push(`${indent}- ${s.trimStart()}`);
528
+ }
529
+ return out.join('\n');
530
+ }
531
+ if ( val instanceof Object ) {
532
+ for ( const [ a, b ] of Object.entries(val) ) {
533
+ const s = textFromValue(b, depth+1);
534
+ if ( s === undefined ) { continue; }
535
+ if ( b instanceof Object ) {
536
+ out.push(`${indent}${a}:\n${s}`);
537
+ } else {
538
+ out.push(`${indent}${a}: ${s}`);
539
+ }
540
+ }
541
+ return out.join('\n');
542
+ }
543
+ }
544
+
545
+ /******************************************************************************/
546
+
547
+ export function textFromRules(rules) {
548
+ if ( Array.isArray(rules) === false ) {
549
+ if ( rules instanceof Object === false ) { return; }
550
+ rules = [ rules ];
551
+ }
552
+ const out = [];
553
+ for ( const rule of rules ) {
554
+ if ( rule.id ) { rule.id = undefined };
555
+ const text = textFromValue(rule, 0);
556
+ if ( text === undefined ) { continue; }
557
+ out.push(text, '---' );
558
+ }
559
+ out.push('');
560
+ return out.join('\n');
561
+ }
@@ -36,7 +36,7 @@ const isSameRules = (a, b) => {
36
36
 
37
37
  /******************************************************************************/
38
38
 
39
- dnr.setAllowAllRules = async function(id, allowed, notAllowed, reverse) {
39
+ dnr.setAllowAllRules = async function(id, allowed, notAllowed, reverse, priority) {
40
40
  const [
41
41
  beforeDynamicRules,
42
42
  beforeSessionRules,
@@ -53,7 +53,7 @@ dnr.setAllowAllRules = async function(id, allowed, notAllowed, reverse) {
53
53
  condition: {
54
54
  resourceTypes: [ 'main_frame' ],
55
55
  },
56
- priority: 1000000,
56
+ priority,
57
57
  };
58
58
  if ( allowed.length ) {
59
59
  rule0.condition.requestDomains = allowed.slice();
@@ -69,7 +69,7 @@ dnr.setAllowAllRules = async function(id, allowed, notAllowed, reverse) {
69
69
  condition: {
70
70
  tabIds: [ webext.tabs.TAB_ID_NONE ],
71
71
  },
72
- priority: 1000000,
72
+ priority,
73
73
  };
74
74
  if ( allowed.length ) {
75
75
  rule1.condition.initiatorDomains = allowed.slice();
@@ -29,7 +29,7 @@ import { hashFromIterable } from './dashboard.js';
29
29
  export const rulesetMap = new Map();
30
30
 
31
31
  let cachedRulesetData = {};
32
- let hideUnusedSet = new Set([ 'regions' ]);
32
+ let hideUnusedSet = new Set([ 'ads', 'regions' ]);
33
33
 
34
34
  /******************************************************************************/
35
35
 
@@ -218,6 +218,11 @@ export function renderFilterLists(rulesetData) {
218
218
  rulesetDetails.filter(ruleset =>
219
219
  ruleset.group === 'default'
220
220
  ),
221
+ ], [
222
+ 'ads',
223
+ rulesetDetails.filter(ruleset =>
224
+ ruleset.group === 'ads'
225
+ ),
221
226
  ], [
222
227
  'privacy',
223
228
  rulesetDetails.filter(ruleset =>
@@ -19,10 +19,18 @@
19
19
  Home: https://github.com/gorhill/uBlock
20
20
  */
21
21
 
22
- import { dom, qs$ } from './dom.js';
22
+ import {
23
+ dom,
24
+ qs$,
25
+ } from './dom.js';
26
+
27
+ import {
28
+ localRead,
29
+ runtime,
30
+ sendMessage,
31
+ } from './ext.js';
32
+
23
33
  import { dnr } from './ext-compat.js';
24
- import { runtime } from './ext.js';
25
- import { sendMessage } from './ext.js';
26
34
 
27
35
  /******************************************************************************/
28
36
 
@@ -95,22 +103,59 @@ function renderData(data, depth = 0) {
95
103
  async function getConfigData() {
96
104
  const manifest = runtime.getManifest();
97
105
  const [
106
+ platformInfo,
98
107
  rulesets,
99
108
  defaultMode,
109
+ registerContentScriptsReason,
110
+ unregisterContentScriptsReason,
100
111
  ] = await Promise.all([
112
+ runtime.getPlatformInfo(),
101
113
  dnr.getEnabledRulesets(),
102
114
  sendMessage({ what: 'getDefaultFilteringMode' }),
115
+ localRead('$scripting.registerContentScripts'),
116
+ localRead('$scripting.unregisterContentScripts'),
103
117
  ]);
118
+ const browser = (( ) => {
119
+ const extURL = runtime.getURL('');
120
+ let agent = '';
121
+ if ( extURL.startsWith('moz-extension:') ) {
122
+ agent = 'Firefox';
123
+ } else if ( extURL.startsWith('safari-web-extension:') ) {
124
+ agent = 'Safari';
125
+ } else if ( /\bEdg\/\b/.test(navigator.userAgent) ) {
126
+ agent = 'Edge';
127
+ } else {
128
+ agent = 'Chrome';
129
+ }
130
+ dom.cl.add('html', agent.toLowerCase());
131
+ if ( /\bMobile\b/.test(navigator.userAgent) ) {
132
+ agent += ' Mobile';
133
+ }
134
+ const reVersion = new RegExp(`\\b${agent.slice(0,3)}[^/]*/(\\d+)`);
135
+ const match = reVersion.exec(navigator.userAgent);
136
+ if ( match ) {
137
+ agent += ` ${match[1]}`;
138
+ }
139
+ agent += ` (${platformInfo.os})`
140
+ return agent;
141
+ })();
104
142
  const modes = [ 'no filtering', 'basic', 'optimal', 'complete' ];
105
143
  const config = {
106
144
  name: manifest.name,
107
145
  version: manifest.version,
146
+ browser,
108
147
  filtering: {
109
148
  'site': `${modes[reportedPage.mode]}`,
110
149
  'default': `${modes[defaultMode]}`,
111
150
  },
112
151
  rulesets,
113
152
  };
153
+ if ( registerContentScriptsReason !== undefined ) {
154
+ config.registerContentScripts = registerContentScriptsReason;
155
+ }
156
+ if ( unregisterContentScriptsReason !== undefined ) {
157
+ config.unregisterContentScripts = unregisterContentScriptsReason;
158
+ }
114
159
  return renderData(config);
115
160
  }
116
161