@browserless.io/browserless 2.27.0 → 2.28.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 (357) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/bin/browserless.js +6 -6
  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 +8 -8
  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 +8 -8
  12. package/build/routes/edge/http/content.post.body.json +8 -8
  13. package/build/routes/edge/http/pdf.post.body.json +8 -8
  14. package/build/routes/edge/http/scrape.post.body.json +8 -8
  15. package/build/routes/edge/http/screenshot.post.body.json +8 -8
  16. package/build/sdk-utils.js +6 -1
  17. package/extensions/ublocklite/_locales/ar/messages.json +0 -8
  18. package/extensions/ublocklite/_locales/az/messages.json +0 -8
  19. package/extensions/ublocklite/_locales/be/messages.json +0 -8
  20. package/extensions/ublocklite/_locales/bg/messages.json +0 -8
  21. package/extensions/ublocklite/_locales/bn/messages.json +0 -8
  22. package/extensions/ublocklite/_locales/br_FR/messages.json +0 -8
  23. package/extensions/ublocklite/_locales/bs/messages.json +0 -8
  24. package/extensions/ublocklite/_locales/ca/messages.json +0 -8
  25. package/extensions/ublocklite/_locales/cs/messages.json +0 -8
  26. package/extensions/ublocklite/_locales/cv/messages.json +1 -9
  27. package/extensions/ublocklite/_locales/cy/messages.json +0 -8
  28. package/extensions/ublocklite/_locales/da/messages.json +0 -8
  29. package/extensions/ublocklite/_locales/de/messages.json +0 -8
  30. package/extensions/ublocklite/_locales/el/messages.json +0 -8
  31. package/extensions/ublocklite/_locales/en/messages.json +1 -9
  32. package/extensions/ublocklite/_locales/en_GB/messages.json +0 -8
  33. package/extensions/ublocklite/_locales/eo/messages.json +1 -9
  34. package/extensions/ublocklite/_locales/es/messages.json +0 -8
  35. package/extensions/ublocklite/_locales/et/messages.json +0 -8
  36. package/extensions/ublocklite/_locales/eu/messages.json +0 -8
  37. package/extensions/ublocklite/_locales/fa/messages.json +0 -8
  38. package/extensions/ublocklite/_locales/fi/messages.json +0 -8
  39. package/extensions/ublocklite/_locales/fil/messages.json +0 -8
  40. package/extensions/ublocklite/_locales/fr/messages.json +0 -8
  41. package/extensions/ublocklite/_locales/fy/messages.json +0 -8
  42. package/extensions/ublocklite/_locales/gl/messages.json +0 -8
  43. package/extensions/ublocklite/_locales/gu/messages.json +1 -9
  44. package/extensions/ublocklite/_locales/he/messages.json +0 -8
  45. package/extensions/ublocklite/_locales/hi/messages.json +0 -8
  46. package/extensions/ublocklite/_locales/hr/messages.json +0 -8
  47. package/extensions/ublocklite/_locales/hu/messages.json +0 -8
  48. package/extensions/ublocklite/_locales/hy/messages.json +0 -8
  49. package/extensions/ublocklite/_locales/id/messages.json +0 -8
  50. package/extensions/ublocklite/_locales/it/messages.json +27 -35
  51. package/extensions/ublocklite/_locales/ja/messages.json +0 -8
  52. package/extensions/ublocklite/_locales/ka/messages.json +0 -8
  53. package/extensions/ublocklite/_locales/kk/messages.json +1 -9
  54. package/extensions/ublocklite/_locales/kn/messages.json +0 -8
  55. package/extensions/ublocklite/_locales/ko/messages.json +0 -8
  56. package/extensions/ublocklite/_locales/lt/messages.json +1 -9
  57. package/extensions/ublocklite/_locales/lv/messages.json +0 -8
  58. package/extensions/ublocklite/_locales/mk/messages.json +0 -8
  59. package/extensions/ublocklite/_locales/ml/messages.json +0 -8
  60. package/extensions/ublocklite/_locales/mr/messages.json +1 -9
  61. package/extensions/ublocklite/_locales/ms/messages.json +0 -8
  62. package/extensions/ublocklite/_locales/nb/messages.json +0 -8
  63. package/extensions/ublocklite/_locales/nl/messages.json +0 -8
  64. package/extensions/ublocklite/_locales/oc/messages.json +1 -9
  65. package/extensions/ublocklite/_locales/pa/messages.json +0 -8
  66. package/extensions/ublocklite/_locales/pl/messages.json +0 -8
  67. package/extensions/ublocklite/_locales/pt_BR/messages.json +1 -9
  68. package/extensions/ublocklite/_locales/pt_PT/messages.json +3 -11
  69. package/extensions/ublocklite/_locales/ro/messages.json +0 -8
  70. package/extensions/ublocklite/_locales/ru/messages.json +0 -8
  71. package/extensions/ublocklite/_locales/si/messages.json +0 -8
  72. package/extensions/ublocklite/_locales/sk/messages.json +0 -8
  73. package/extensions/ublocklite/_locales/sl/messages.json +1 -9
  74. package/extensions/ublocklite/_locales/so/messages.json +1 -9
  75. package/extensions/ublocklite/_locales/sq/messages.json +0 -8
  76. package/extensions/ublocklite/_locales/sr/messages.json +0 -8
  77. package/extensions/ublocklite/_locales/sv/messages.json +0 -8
  78. package/extensions/ublocklite/_locales/sw/messages.json +1 -9
  79. package/extensions/ublocklite/_locales/ta/messages.json +1 -9
  80. package/extensions/ublocklite/_locales/te/messages.json +1 -9
  81. package/extensions/ublocklite/_locales/th/messages.json +0 -8
  82. package/extensions/ublocklite/_locales/tr/messages.json +8 -16
  83. package/extensions/ublocklite/_locales/uk/messages.json +0 -8
  84. package/extensions/ublocklite/_locales/ur/messages.json +0 -8
  85. package/extensions/ublocklite/_locales/vi/messages.json +0 -8
  86. package/extensions/ublocklite/_locales/zh_CN/messages.json +3 -11
  87. package/extensions/ublocklite/_locales/zh_TW/messages.json +0 -8
  88. package/extensions/ublocklite/css/default.css +1 -3
  89. package/extensions/ublocklite/css/settings.css +0 -14
  90. package/extensions/ublocklite/dashboard.html +0 -5
  91. package/extensions/ublocklite/js/background.js +37 -54
  92. package/extensions/ublocklite/js/filter-lists.js +1 -2
  93. package/extensions/ublocklite/js/mode-manager.js +8 -2
  94. package/extensions/ublocklite/js/ruleset-manager.js +17 -42
  95. package/extensions/ublocklite/js/settings.js +16 -7
  96. package/extensions/ublocklite/js/utils.js +13 -0
  97. package/extensions/ublocklite/manifest.json +5 -5
  98. package/extensions/ublocklite/rulesets/generic-details.json +9 -114
  99. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +15 -11
  100. package/extensions/ublocklite/rulesets/main/annoyances-others.json +5 -2
  101. package/extensions/ublocklite/rulesets/main/annoyances-overlays.json +9 -5
  102. package/extensions/ublocklite/rulesets/main/annoyances-social.json +0 -1
  103. package/extensions/ublocklite/rulesets/main/annoyances-widgets.json +1 -1
  104. package/extensions/ublocklite/rulesets/main/badware.json +25 -16
  105. package/extensions/ublocklite/rulesets/main/chn-0.json +32 -20
  106. package/extensions/ublocklite/rulesets/main/cze-0.json +2 -3
  107. package/extensions/ublocklite/rulesets/main/default.json +87 -84
  108. package/extensions/ublocklite/rulesets/main/deu-0.json +2 -3
  109. package/extensions/ublocklite/rulesets/main/fra-0.json +27 -31
  110. package/extensions/ublocklite/rulesets/main/idn-0.json +3 -3
  111. package/extensions/ublocklite/rulesets/main/ind-0.json +25 -33
  112. package/extensions/ublocklite/rulesets/main/irn-0.json +1 -1
  113. package/extensions/ublocklite/rulesets/main/isr-0.json +5 -2
  114. package/extensions/ublocklite/rulesets/main/jpn-1.json +7 -2
  115. package/extensions/ublocklite/rulesets/main/nor-0.json +1 -2
  116. package/extensions/ublocklite/rulesets/main/openphish-domains.json +3661 -3691
  117. package/extensions/ublocklite/rulesets/main/pol-0.json +9 -202
  118. package/extensions/ublocklite/rulesets/main/rus-0.json +20 -13
  119. package/extensions/ublocklite/rulesets/main/rus-1.json +3 -2
  120. package/extensions/ublocklite/rulesets/main/spa-0.json +1 -0
  121. package/extensions/ublocklite/rulesets/main/spa-1.json +3 -2
  122. package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +4270 -2524
  123. package/extensions/ublocklite/rulesets/main/swe-1.json +30 -33
  124. package/extensions/ublocklite/rulesets/main/tha-0.json +3 -2
  125. package/extensions/ublocklite/rulesets/main/tur-0.json +9 -10
  126. package/extensions/ublocklite/rulesets/main/ukr-0.json +25 -7
  127. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +472 -360
  128. package/extensions/ublocklite/rulesets/main/vie-1.json +49 -49
  129. package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +8 -0
  130. package/extensions/ublocklite/rulesets/modify-headers/default.json +5 -5
  131. package/extensions/ublocklite/rulesets/modify-headers/fra-0.json +1 -0
  132. package/extensions/ublocklite/rulesets/modify-headers/vie-1.json +1 -1
  133. package/extensions/ublocklite/rulesets/redirect/chn-0.json +1 -1
  134. package/extensions/ublocklite/rulesets/redirect/default.json +11 -14
  135. package/extensions/ublocklite/rulesets/redirect/pol-0.json +0 -16
  136. package/extensions/ublocklite/rulesets/redirect/swe-1.json +158 -11
  137. package/extensions/ublocklite/rulesets/redirect/tur-0.json +4 -2
  138. package/extensions/ublocklite/rulesets/redirect/vie-1.json +3 -3
  139. package/extensions/ublocklite/rulesets/regex/badware.json +6 -2
  140. package/extensions/ublocklite/rulesets/regex/chn-0.json +4 -2
  141. package/extensions/ublocklite/rulesets/regex/default.json +7 -0
  142. package/extensions/ublocklite/rulesets/regex/pol-0.json +1 -5
  143. package/extensions/ublocklite/rulesets/regex/swe-1.json +0 -1
  144. package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +6 -3
  145. package/extensions/ublocklite/rulesets/removeparam/rus-1.json +1 -1
  146. package/extensions/ublocklite/rulesets/ruleset-details.json +201 -201
  147. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-cookies.js +1 -1
  148. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-others.js +3 -3
  149. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-overlays.js +3 -3
  150. package/extensions/ublocklite/rulesets/scripting/declarative/chn-0.js +1 -1
  151. package/extensions/ublocklite/rulesets/scripting/declarative/default.js +3 -3
  152. package/extensions/ublocklite/rulesets/scripting/declarative/irn-0.js +1 -1
  153. package/extensions/ublocklite/rulesets/scripting/declarative/jpn-1.js +3 -3
  154. package/extensions/ublocklite/rulesets/scripting/declarative/kor-1.js +3 -3
  155. package/extensions/ublocklite/rulesets/scripting/declarative/pol-0.js +3 -3
  156. package/extensions/ublocklite/rulesets/scripting/declarative/rus-0.js +3 -3
  157. package/extensions/ublocklite/rulesets/scripting/declarative/rus-1.js +1 -1
  158. package/extensions/ublocklite/rulesets/scripting/declarative/spa-1.js +4 -4
  159. package/extensions/ublocklite/rulesets/scripting/declarative/swe-1.js +3 -3
  160. package/extensions/ublocklite/rulesets/scripting/declarative/tur-0.js +3 -3
  161. package/extensions/ublocklite/rulesets/scripting/declarative/ukr-0.js +3 -3
  162. package/extensions/ublocklite/rulesets/scripting/declarative/vie-1.js +1 -1
  163. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
  164. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-others.js +1 -1
  165. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-overlays.js +3 -3
  166. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +3 -3
  167. package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +1 -1
  168. package/extensions/ublocklite/rulesets/scripting/generic/default.js +2 -2
  169. package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +2 -2
  170. package/extensions/ublocklite/rulesets/scripting/generic/isr-0.js +2 -2
  171. package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +3 -3
  172. package/extensions/ublocklite/rulesets/scripting/generic/kor-1.js +1 -1
  173. package/extensions/ublocklite/rulesets/scripting/generic/pol-0.js +3 -3
  174. package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +1 -1
  175. package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +1 -1
  176. package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +1 -1
  177. package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +0 -4
  178. package/extensions/ublocklite/rulesets/scripting/generichigh/default.css +6 -3
  179. package/extensions/ublocklite/rulesets/scripting/generichigh/fra-0.css +3 -0
  180. package/extensions/ublocklite/rulesets/scripting/generichigh/kor-1.css +2 -1
  181. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +1 -0
  182. package/extensions/ublocklite/rulesets/scripting/generichigh/swe-1.css +3 -0
  183. package/extensions/ublocklite/rulesets/scripting/generichigh/tur-0.css +7 -0
  184. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
  185. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-others.js +3 -3
  186. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +3 -3
  187. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +1 -1
  188. package/extensions/ublocklite/rulesets/scripting/procedural/cze-0.js +1 -1
  189. package/extensions/ublocklite/rulesets/scripting/procedural/default.js +3 -3
  190. package/extensions/ublocklite/rulesets/scripting/procedural/deu-0.js +3 -3
  191. package/extensions/ublocklite/rulesets/scripting/procedural/fin-0.js +1 -1
  192. package/extensions/ublocklite/rulesets/scripting/procedural/fra-0.js +1 -1
  193. package/extensions/ublocklite/rulesets/scripting/procedural/ind-0.js +3 -3
  194. package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +1 -1
  195. package/extensions/ublocklite/rulesets/scripting/procedural/nor-0.js +1 -1
  196. package/extensions/ublocklite/rulesets/scripting/procedural/pol-0.js +3 -3
  197. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  198. package/extensions/ublocklite/rulesets/scripting/procedural/rus-1.js +1 -1
  199. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
  200. package/extensions/ublocklite/rulesets/scripting/procedural/ukr-0.js +3 -3
  201. package/extensions/ublocklite/rulesets/scripting/procedural/vie-1.js +1 -1
  202. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-constant.js +1 -1
  203. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  204. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  205. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
  206. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie-reload.js +2 -2
  207. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  208. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-local-storage-item.js +2 -2
  209. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.remove-cookie.js +2 -2
  210. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +2 -2
  211. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-property-read.js +2 -2
  212. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-property-write.js +2 -2
  213. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-stack-trace.js +2 -2
  214. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +2 -2
  215. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.href-sanitizer.js +541 -0
  216. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.noeval-if.js +2 -2
  217. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-fetch.js +18 -7
  218. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setInterval.js +2 -2
  219. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +2 -2
  220. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-xhr.js +2 -2
  221. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.remove-node-text.js +2 -2
  222. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +2 -2
  223. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-local-storage-item.js +2 -2
  224. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-click-element.js +2 -2
  225. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.trusted-replace-node-text.js +2 -2
  226. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-fetch.js +16 -5
  227. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.abort-current-script.js +3 -3
  228. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.abort-on-property-read.js +3 -3
  229. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.abort-on-property-write.js +2 -2
  230. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.abort-on-stack-trace.js +3 -3
  231. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.addEventListener-defuser.js +3 -3
  232. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.adjust-setInterval.js +3 -3
  233. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.adjust-setTimeout.js +1 -1
  234. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.json-prune.js +2 -2
  235. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.noeval-if.js +3 -3
  236. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.nowebrtc.js +1 -1
  237. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.prevent-fetch.js +18 -7
  238. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.prevent-requestAnimationFrame.js +2 -2
  239. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.prevent-setInterval.js +2 -2
  240. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.prevent-setTimeout.js +2 -2
  241. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.prevent-window-open.js +2 -2
  242. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.prevent-xhr.js +3 -3
  243. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.remove-attr.js +2 -2
  244. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.remove-cookie.js +2 -2
  245. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.remove-node-text.js +2 -2
  246. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.set-constant.js +3 -3
  247. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.set-cookie.js +1 -1
  248. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.set-local-storage-item.js +1 -1
  249. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.trusted-replace-argument.js +2 -2
  250. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.trusted-replace-node-text.js +3 -3
  251. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.trusted-replace-outbound-text.js +1 -1
  252. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.trusted-set-constant.js +1 -1
  253. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.trusted-set-cookie.js +3 -3
  254. package/extensions/ublocklite/rulesets/scripting/scriptlet/default.trusted-suppress-native-method.js +2 -2
  255. package/extensions/ublocklite/rulesets/scripting/scriptlet/fra-0.prevent-fetch.js +16 -5
  256. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.prevent-fetch.js +16 -5
  257. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-fetch.js +16 -5
  258. package/extensions/ublocklite/rulesets/scripting/scriptlet/idn-0.prevent-window-open.js +1 -1
  259. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.json-prune.js +2 -2
  260. package/extensions/ublocklite/rulesets/scripting/scriptlet/irn-0.prevent-fetch.js +16 -5
  261. package/extensions/ublocklite/rulesets/scripting/scriptlet/isr-0.prevent-fetch.js +16 -5
  262. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.href-sanitizer.js +541 -0
  263. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-fetch.js +16 -5
  264. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.prevent-setTimeout.js +2 -2
  265. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.prevent-fetch.js +16 -5
  266. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.abort-on-property-read.js +1 -1
  267. package/extensions/ublocklite/rulesets/scripting/scriptlet/nld-0.prevent-fetch.js +16 -5
  268. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.prevent-fetch.js +16 -5
  269. package/extensions/ublocklite/rulesets/scripting/scriptlet/nor-0.remove-attr.js +1 -1
  270. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.abort-current-script.js +2 -2
  271. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.abort-on-property-read.js +2 -2
  272. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.abort-on-property-write.js +2 -2
  273. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.addEventListener-defuser.js +2 -2
  274. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.noeval-if.js +2 -2
  275. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-setInterval.js +2 -2
  276. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.prevent-setTimeout.js +2 -2
  277. package/extensions/ublocklite/rulesets/scripting/scriptlet/pol-0.set-constant.js +3 -3
  278. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.abort-on-property-read.js +2 -2
  279. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +4 -4
  280. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.adjust-setTimeout.js +1 -1
  281. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.href-sanitizer.js +2 -2
  282. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-fetch.js +16 -5
  283. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setInterval.js +3 -3
  284. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.prevent-setTimeout.js +1 -1
  285. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.remove-node-text.js +3 -3
  286. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +3 -3
  287. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.addEventListener-defuser.js +2 -2
  288. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.prevent-fetch.js +16 -5
  289. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.remove-cookie.js +2 -2
  290. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +1 -1
  291. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.abort-on-property-read.js +2 -2
  292. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.addEventListener-defuser.js +3 -3
  293. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-fetch.js +18 -7
  294. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.set-constant.js +2 -2
  295. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.set-cookie.js +2 -2
  296. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +2 -2
  297. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-write.js +2 -2
  298. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.adjust-setInterval.js +2 -2
  299. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +16 -5
  300. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-attr.js +2 -2
  301. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +2 -2
  302. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.remove-node-text.js +2 -2
  303. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +1 -1
  304. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +1 -1
  305. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.prevent-fetch.js +16 -5
  306. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.set-constant.js +2 -2
  307. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  308. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  309. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  310. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  311. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  312. package/extensions/ublocklite/rulesets/scripting/specific/cze-0.js +3 -3
  313. package/extensions/ublocklite/rulesets/scripting/specific/default.js +3 -3
  314. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  315. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  316. package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
  317. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  318. package/extensions/ublocklite/rulesets/scripting/specific/ind-0.js +3 -3
  319. package/extensions/ublocklite/rulesets/scripting/specific/isr-0.js +3 -3
  320. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  321. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
  322. package/extensions/ublocklite/rulesets/scripting/specific/nld-0.js +3 -3
  323. package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +3 -3
  324. package/extensions/ublocklite/rulesets/scripting/specific/pol-0.js +3 -3
  325. package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
  326. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  327. package/extensions/ublocklite/rulesets/scripting/specific/spa-0.js +3 -3
  328. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  329. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  330. package/extensions/ublocklite/rulesets/scripting/specific/tha-0.js +3 -3
  331. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  332. package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +3 -3
  333. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  334. package/extensions/ublocklite/rulesets/scriptlet-details.json +209 -337
  335. package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +0 -1
  336. package/extensions/ublocklite/rulesets/strictblock/annoyances-others.json +1 -0
  337. package/extensions/ublocklite/rulesets/strictblock/badware.json +394 -385
  338. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +126 -185
  339. package/extensions/ublocklite/rulesets/strictblock/default.json +28 -25
  340. package/extensions/ublocklite/rulesets/strictblock/fra-0.json +344 -42
  341. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +155 -153
  342. package/extensions/ublocklite/rulesets/strictblock/openphish-domains.json +37645 -0
  343. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +42653 -1
  344. package/extensions/ublocklite/rulesets/strictblock/spa-1.json +2 -0
  345. package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +4270 -2524
  346. package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +64 -60
  347. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +472 -360
  348. package/extensions/ublocklite/rulesets/urlskip/annoyances-overlays.json +6 -0
  349. package/extensions/ublocklite/rulesets/urlskip/default.json +51 -0
  350. package/extensions/ublocklite/ublock.zip +0 -0
  351. package/package.json +8 -8
  352. package/src/limiter.ts +3 -1
  353. package/src/sdk-utils.ts +16 -12
  354. package/static/docs/swagger.json +10 -10
  355. package/static/docs/swagger.min.json +9 -9
  356. package/static/function/client.js +22 -18
  357. package/static/function/index.html +22 -18
@@ -31,15 +31,6 @@ import {
31
31
  syncWithBrowserPermissions,
32
32
  } from './mode-manager.js';
33
33
 
34
- import {
35
- adminRead,
36
- browser,
37
- dnr,
38
- localRead, localRemove, localWrite,
39
- runtime,
40
- windows,
41
- } from './ext.js';
42
-
43
34
  import {
44
35
  adminReadEx,
45
36
  getAdminRulesets,
@@ -47,9 +38,18 @@ import {
47
38
 
48
39
  import {
49
40
  broadcastMessage,
41
+ hasBroadHostPermissions,
50
42
  hostnamesFromMatches,
51
43
  } from './utils.js';
52
44
 
45
+ import {
46
+ browser,
47
+ dnr,
48
+ localRead, localRemove, localWrite,
49
+ runtime,
50
+ windows,
51
+ } from './ext.js';
52
+
53
53
  import {
54
54
  enableRulesets,
55
55
  excludeFromStrictBlock,
@@ -93,31 +93,9 @@ function getCurrentVersion() {
93
93
 
94
94
  /******************************************************************************/
95
95
 
96
- async function hasGreatPowers(origin) {
97
- if ( /^https?:\/\//.test(origin) === false ) { return false; }
98
- return browser.permissions.contains({
99
- origins: [ `${origin}/*` ],
100
- });
101
- }
102
-
103
- async function hasOmnipotence() {
104
- const manifest = runtime.getManifest();
105
- const hasOmnipotence = Array.isArray(manifest.host_permissions) &&
106
- manifest.host_permissions.includes('<all_urls>');
107
- if ( hasOmnipotence ) { return true; }
108
- return browser.permissions.contains({
109
- origins: [ '<all_urls>' ],
110
- });
111
- }
112
-
113
96
  async function onPermissionsRemoved() {
114
- const beforeMode = await getDefaultFilteringMode();
115
97
  const modified = await syncWithBrowserPermissions();
116
98
  if ( modified === false ) { return false; }
117
- const afterMode = await getDefaultFilteringMode();
118
- if ( beforeMode > MODE_BASIC && afterMode <= MODE_BASIC ) {
119
- updateDynamicRules();
120
- }
121
99
  registerInjectables();
122
100
  return true;
123
101
  }
@@ -126,7 +104,14 @@ async function onPermissionsRemoved() {
126
104
  async function onPermissionsAdded(permissions) {
127
105
  const details = pendingPermissionRequest;
128
106
  pendingPermissionRequest = undefined;
129
- if ( details === undefined ) { return; }
107
+ if ( details === undefined ) {
108
+ const modified = await syncWithBrowserPermissions();
109
+ if ( modified === false ) { return; }
110
+ return Promise.all([
111
+ updateSessionRules(),
112
+ registerInjectables(),
113
+ ]);
114
+ }
130
115
  const defaultMode = await getDefaultFilteringMode();
131
116
  if ( defaultMode >= MODE_OPTIMAL ) { return; }
132
117
  if ( Array.isArray(permissions.origins) === false ) { return; }
@@ -240,6 +225,7 @@ function onMessage(request, sender, callback) {
240
225
 
241
226
  case 'getOptionsPageData': {
242
227
  Promise.all([
228
+ hasBroadHostPermissions(),
243
229
  getDefaultFilteringMode(),
244
230
  getTrustedSites(),
245
231
  getRulesetDetails(),
@@ -248,6 +234,7 @@ function onMessage(request, sender, callback) {
248
234
  adminReadEx('disabledFeatures'),
249
235
  ]).then(results => {
250
236
  const [
237
+ hasOmnipotence,
251
238
  defaultFilteringMode,
252
239
  trustedSites,
253
240
  rulesetDetails,
@@ -256,6 +243,7 @@ function onMessage(request, sender, callback) {
256
243
  disabledFeatures,
257
244
  ] = results;
258
245
  callback({
246
+ hasOmnipotence,
259
247
  defaultFilteringMode,
260
248
  trustedSites: Array.from(trustedSites),
261
249
  enabledRulesets,
@@ -314,21 +302,25 @@ function onMessage(request, sender, callback) {
314
302
 
315
303
  case 'popupPanelData': {
316
304
  Promise.all([
305
+ hasBroadHostPermissions(),
317
306
  getFilteringMode(request.hostname),
318
- hasOmnipotence(),
319
- hasGreatPowers(request.origin),
320
307
  getEnabledRulesetsDetails(),
321
308
  adminReadEx('disabledFeatures'),
322
309
  ]).then(results => {
310
+ const [
311
+ hasOmnipotence,
312
+ level,
313
+ rulesetDetails,
314
+ disabledFeatures,
315
+ ] = results;
323
316
  callback({
324
- level: results[0],
317
+ hasOmnipotence,
318
+ level,
325
319
  autoReload: rulesetConfig.autoReload,
326
- hasOmnipotence: results[1],
327
- hasGreatPowers: results[2],
328
- rulesetDetails: results[3],
320
+ rulesetDetails,
329
321
  isSideloaded,
330
322
  developerMode: rulesetConfig.developerMode,
331
- disabledFeatures: results[4],
323
+ disabledFeatures,
332
324
  });
333
325
  });
334
326
  return true;
@@ -373,9 +365,6 @@ function onMessage(request, sender, callback) {
373
365
  ({ beforeLevel, afterLevel })
374
366
  )
375
367
  ).then(({ beforeLevel, afterLevel }) => {
376
- if ( beforeLevel === 1 || afterLevel === 1 ) {
377
- updateDynamicRules();
378
- }
379
368
  if ( afterLevel !== beforeLevel ) {
380
369
  registerInjectables();
381
370
  }
@@ -497,22 +486,16 @@ async function start() {
497
486
  });
498
487
  }
499
488
 
489
+ // Switch to basic filtering if uBOL doesn't have broad permissions at
490
+ // install time.
500
491
  if ( process.firstRun ) {
501
- const enableOptimal = await hasOmnipotence();
502
- if ( enableOptimal ) {
503
- const afterLevel = await setDefaultFilteringMode(MODE_OPTIMAL);
504
- if ( afterLevel === MODE_OPTIMAL ) {
505
- updateDynamicRules();
492
+ const enableOptimal = await hasBroadHostPermissions();
493
+ if ( enableOptimal === false ) {
494
+ const afterLevel = await setDefaultFilteringMode(MODE_BASIC);
495
+ if ( afterLevel === MODE_BASIC ) {
506
496
  registerInjectables();
507
497
  process.firstRun = false;
508
498
  }
509
- } else {
510
- const disableFirstRunPage = await adminRead('disableFirstRunPage');
511
- if ( disableFirstRunPage !== true ) {
512
- runtime.openOptionsPage();
513
- } else {
514
- process.firstRun = false;
515
- }
516
499
  }
517
500
  }
518
501
 
@@ -90,12 +90,11 @@ function updateNodes(listEntries) {
90
90
  /******************************************************************************/
91
91
 
92
92
  function rulesetStats(rulesetId) {
93
- const hasOmnipotence = cachedRulesetData.defaultFilteringMode > 1;
94
93
  const rulesetDetails = rulesetMap.get(rulesetId);
95
94
  if ( rulesetDetails === undefined ) { return; }
96
95
  const { rules, filters } = rulesetDetails;
97
96
  let ruleCount = rules.plain + rules.regex;
98
- if ( hasOmnipotence ) {
97
+ if ( cachedRulesetData.hasOmnipotence ) {
99
98
  ruleCount += rules.removeparam + rules.redirect + rules.modifyHeaders;
100
99
  }
101
100
  const filterCount = filters.accepted;
@@ -21,6 +21,7 @@
21
21
 
22
22
  import {
23
23
  broadcastMessage,
24
+ hasBroadHostPermissions,
24
25
  hostnamesFromMatches,
25
26
  isDescendantHostnameOfIter,
26
27
  toBroaderHostname,
@@ -223,7 +224,7 @@ export async function readFilteringModeDetails(bypassCache = false) {
223
224
  adminReadEx('noFiltering'),
224
225
  ]);
225
226
  if ( userModes === undefined ) {
226
- userModes = { basic: [ 'all-urls' ] };
227
+ userModes = { optimal: [ 'all-urls' ] };
227
228
  }
228
229
  userModes = unserializeModeDetails(userModes);
229
230
  if ( Array.isArray(adminNoFiltering) ) {
@@ -255,12 +256,14 @@ async function writeFilteringModeDetails(afterDetails) {
255
256
  return Promise.all([
256
257
  getDefaultFilteringMode(),
257
258
  getTrustedSites(),
259
+ hasBroadHostPermissions(),
258
260
  localWrite('filteringModeDetails', data),
259
261
  sessionWrite('filteringModeDetails', data),
260
262
  ]).then(results => {
261
263
  broadcastMessage({
262
264
  defaultFilteringMode: results[0],
263
265
  trustedSites: Array.from(results[1]),
266
+ hasOmnipotence: results[2],
264
267
  });
265
268
  });
266
269
  }
@@ -347,9 +350,12 @@ export async function syncWithBrowserPermissions() {
347
350
  if ( beforeMode > MODE_BASIC && allowedHostnames.has('all-urls') === false ) {
348
351
  await setDefaultFilteringMode(MODE_BASIC);
349
352
  modified = true;
353
+ } else if ( beforeMode === MODE_BASIC && allowedHostnames.has('all-urls') ) {
354
+ await setDefaultFilteringMode(MODE_OPTIMAL);
355
+ modified = true;
350
356
  }
351
357
  const afterMode = await getDefaultFilteringMode();
352
- if ( afterMode > MODE_BASIC ) { return false; }
358
+ if ( afterMode > MODE_BASIC ) { return afterMode !== beforeMode; }
353
359
  const filteringModes = await getFilteringModeDetails();
354
360
  const { optimal, complete } = filteringModes;
355
361
  for ( const hn of optimal ) {
@@ -21,7 +21,6 @@
21
21
 
22
22
  import {
23
23
  TAB_ID_NONE,
24
- browser,
25
24
  dnr,
26
25
  i18n,
27
26
  localRead, localRemove, localWrite,
@@ -34,9 +33,9 @@ import {
34
33
  saveRulesetConfig,
35
34
  } from './config.js';
36
35
 
37
-
38
36
  import { fetchJSON } from './fetch.js';
39
37
  import { getAdminRulesets } from './admin.js';
38
+ import { hasBroadHostPermissions } from './utils.js';
40
39
  import { ubolLog } from './debug.js';
41
40
 
42
41
  /******************************************************************************/
@@ -160,13 +159,7 @@ async function updateRemoveparamRules(currentRules, addRules, removeRuleIds) {
160
159
  removeRuleIds.push(rule.id);
161
160
  }
162
161
 
163
- const [
164
- hasOmnipotence,
165
- rulesetDetails,
166
- ] = await Promise.all([
167
- browser.permissions.contains({ origins: [ '<all_urls>' ] }),
168
- getEnabledRulesetsDetails(),
169
- ]);
162
+ const rulesetDetails = await getEnabledRulesetsDetails();
170
163
 
171
164
  // Fetch removeparam rules for all enabled rulesets
172
165
  const toFetch = [];
@@ -178,12 +171,10 @@ async function updateRemoveparamRules(currentRules, addRules, removeRuleIds) {
178
171
 
179
172
  // Removeparam rules can only be enforced with omnipotence
180
173
  const allRules = [];
181
- if ( hasOmnipotence ) {
182
- for ( const rules of removeparamRulesets ) {
183
- if ( Array.isArray(rules) === false ) { continue; }
184
- for ( const rule of rules ) {
185
- allRules.push(rule);
186
- }
174
+ for ( const rules of removeparamRulesets ) {
175
+ if ( Array.isArray(rules) === false ) { continue; }
176
+ for ( const rule of rules ) {
177
+ allRules.push(rule);
187
178
  }
188
179
  }
189
180
  if ( allRules.length === 0 ) { return; }
@@ -205,13 +196,7 @@ async function updateRedirectRules(currentRules, addRules, removeRuleIds) {
205
196
  removeRuleIds.push(rule.id);
206
197
  }
207
198
 
208
- const [
209
- hasOmnipotence,
210
- rulesetDetails,
211
- ] = await Promise.all([
212
- browser.permissions.contains({ origins: [ '<all_urls>' ] }),
213
- getEnabledRulesetsDetails(),
214
- ]);
199
+ const rulesetDetails = await getEnabledRulesetsDetails();
215
200
 
216
201
  // Fetch redirect rules for all enabled rulesets
217
202
  const toFetch = [];
@@ -223,12 +208,10 @@ async function updateRedirectRules(currentRules, addRules, removeRuleIds) {
223
208
 
224
209
  // Redirect rules can only be enforced with omnipotence
225
210
  const allRules = [];
226
- if ( hasOmnipotence ) {
227
- for ( const rules of redirectRulesets ) {
228
- if ( Array.isArray(rules) === false ) { continue; }
229
- for ( const rule of rules ) {
230
- allRules.push(rule);
231
- }
211
+ for ( const rules of redirectRulesets ) {
212
+ if ( Array.isArray(rules) === false ) { continue; }
213
+ for ( const rule of rules ) {
214
+ allRules.push(rule);
232
215
  }
233
216
  }
234
217
  if ( allRules.length === 0 ) { return; }
@@ -249,13 +232,7 @@ async function updateModifyHeadersRules(currentRules, addRules, removeRuleIds) {
249
232
  removeRuleIds.push(rule.id);
250
233
  }
251
234
 
252
- const [
253
- hasOmnipotence,
254
- rulesetDetails,
255
- ] = await Promise.all([
256
- browser.permissions.contains({ origins: [ '<all_urls>' ] }),
257
- getEnabledRulesetsDetails(),
258
- ]);
235
+ const rulesetDetails = await getEnabledRulesetsDetails();
259
236
 
260
237
  // Fetch modifyHeaders rules for all enabled rulesets
261
238
  const toFetch = [];
@@ -267,12 +244,10 @@ async function updateModifyHeadersRules(currentRules, addRules, removeRuleIds) {
267
244
 
268
245
  // Redirect rules can only be enforced with omnipotence
269
246
  const allRules = [];
270
- if ( hasOmnipotence ) {
271
- for ( const rules of rulesets ) {
272
- if ( Array.isArray(rules) === false ) { continue; }
273
- for ( const rule of rules ) {
274
- allRules.push(rule);
275
- }
247
+ for ( const rules of rulesets ) {
248
+ if ( Array.isArray(rules) === false ) { continue; }
249
+ for ( const rule of rules ) {
250
+ allRules.push(rule);
276
251
  }
277
252
  }
278
253
  if ( allRules.length === 0 ) { return; }
@@ -348,7 +323,7 @@ async function updateStrictBlockRules(currentRules, addRules, removeRuleIds) {
348
323
  permanentlyExcluded = [],
349
324
  temporarilyExcluded = [],
350
325
  ] = await Promise.all([
351
- browser.permissions.contains({ origins: [ '<all_urls>' ] }),
326
+ hasBroadHostPermissions(),
352
327
  getEnabledRulesetsDetails(),
353
328
  localRead('excludedStrictBlockHostnames'),
354
329
  sessionRead('excludedStrictBlockHostnames'),
@@ -69,7 +69,7 @@ function renderWidgets() {
69
69
 
70
70
  {
71
71
  const input = qs$('#strictBlockMode input[type="checkbox"]');
72
- const canStrictBlock = cachedRulesetData.defaultFilteringMode > 1;
72
+ const canStrictBlock = cachedRulesetData.hasOmnipotence;
73
73
  input.checked = canStrictBlock && cachedRulesetData.strictBlockMode;
74
74
  dom.attr(input, 'disabled', canStrictBlock ? null : '');
75
75
  }
@@ -102,17 +102,18 @@ async function onFilteringModeChange(ev) {
102
102
  const newLevel = parseInt(input.value, 10);
103
103
 
104
104
  switch ( newLevel ) {
105
- case 1: { // Revoke broad permissions
106
- await browser.permissions.remove({
107
- origins: [ '<all_urls>' ]
105
+ case 1: {
106
+ const actualLevel = await sendMessage({
107
+ what: 'setDefaultFilteringMode',
108
+ level: newLevel,
108
109
  });
109
- cachedRulesetData.defaultFilteringMode = 1;
110
+ cachedRulesetData.defaultFilteringMode = actualLevel;
110
111
  break;
111
112
  }
112
113
  case 2:
113
- case 3: { // Request broad permissions
114
+ case 3: {
114
115
  const granted = await browser.permissions.request({
115
- origins: [ '<all_urls>' ]
116
+ origins: [ '<all_urls>' ],
116
117
  });
117
118
  if ( granted ) {
118
119
  const actualLevel = await sendMessage({
@@ -120,6 +121,7 @@ async function onFilteringModeChange(ev) {
120
121
  level: newLevel,
121
122
  });
122
123
  cachedRulesetData.defaultFilteringMode = actualLevel;
124
+ cachedRulesetData.hasOmnipotence = true;
123
125
  }
124
126
  break;
125
127
  }
@@ -233,6 +235,13 @@ listen.onmessage = ev => {
233
235
  }
234
236
  }
235
237
 
238
+ if ( message.hasOmnipotence !== undefined ) {
239
+ if ( message.hasOmnipotence !== local.hasOmnipotence ) {
240
+ local.hasOmnipotence = message.hasOmnipotence;
241
+ render = true;
242
+ }
243
+ }
244
+
236
245
  if ( message.defaultFilteringMode !== undefined ) {
237
246
  if ( message.defaultFilteringMode !== local.defaultFilteringMode ) {
238
247
  local.defaultFilteringMode = message.defaultFilteringMode;
@@ -19,6 +19,8 @@
19
19
  Home: https://github.com/gorhill/uBlock
20
20
  */
21
21
 
22
+ import { browser } from './ext.js';
23
+
22
24
  /******************************************************************************/
23
25
 
24
26
  function parsedURLromOrigin(origin) {
@@ -134,6 +136,16 @@ const broadcastMessage = message => {
134
136
 
135
137
  /******************************************************************************/
136
138
 
139
+ // https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/manifest.json/host_permissions#requested_permissions_and_user_prompts
140
+ // "Users can grant or revoke host permissions on an ad hoc basis. Therefore,
141
+ // most browsers treat host_permissions as optional."
142
+
143
+ async function hasBroadHostPermissions() {
144
+ return browser.permissions.contains({ origins: [ '<all_urls>' ] });
145
+ }
146
+
147
+ /******************************************************************************/
148
+
137
149
  export {
138
150
  broadcastMessage,
139
151
  parsedURLromOrigin,
@@ -145,4 +157,5 @@ export {
145
157
  matchFromHostname,
146
158
  matchesFromHostnames,
147
159
  hostnamesFromMatches,
160
+ hasBroadHostPermissions,
148
161
  };
@@ -273,6 +273,9 @@
273
273
  },
274
274
  "default_locale": "en",
275
275
  "description": "__MSG_extShortDesc__",
276
+ "host_permissions": [
277
+ "<all_urls>"
278
+ ],
276
279
  "icons": {
277
280
  "16": "img/icon_16.png",
278
281
  "32": "img/icon_32.png",
@@ -283,9 +286,6 @@
283
286
  "minimum_chrome_version": "122.0",
284
287
  "name": "__MSG_extName__",
285
288
  "options_page": "dashboard.html",
286
- "optional_host_permissions": [
287
- "<all_urls>"
288
- ],
289
289
  "permissions": [
290
290
  "activeTab",
291
291
  "declarativeNetRequest",
@@ -296,7 +296,7 @@
296
296
  "storage": {
297
297
  "managed_schema": "managed_storage.json"
298
298
  },
299
- "version": "2025.4.1.700",
299
+ "version": "2025.4.13.1188",
300
300
  "web_accessible_resources": [
301
301
  {
302
302
  "resources": [
@@ -321,6 +321,7 @@
321
321
  "/web_accessible_resources/noop.js",
322
322
  "/web_accessible_resources/google-ima.js",
323
323
  "/web_accessible_resources/noop.txt",
324
+ "/web_accessible_resources/amazon_apstag.js",
324
325
  "/web_accessible_resources/noop-1s.mp4",
325
326
  "/web_accessible_resources/noop.css",
326
327
  "/web_accessible_resources/2x2.png",
@@ -334,7 +335,6 @@
334
335
  "/web_accessible_resources/googlesyndication_adsbygoogle.js",
335
336
  "/web_accessible_resources/google-analytics_analytics.js",
336
337
  "/web_accessible_resources/prebid-ads.js",
337
- "/web_accessible_resources/amazon_apstag.js",
338
338
  "/web_accessible_resources/doubleclick_instream_ad_status.js",
339
339
  "/web_accessible_resources/google-analytics_cx_api.js",
340
340
  "/web_accessible_resources/googletagservices_gpt.js",