@browserless.io/browserless 2.29.0 → 2.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/CHANGELOG.md +14 -2
  2. package/build/limiter.js +3 -0
  3. package/build/routes/chrome/http/content.post.body.json +8 -8
  4. package/build/routes/chrome/http/pdf.post.body.json +8 -8
  5. package/build/routes/chrome/http/scrape.post.body.json +8 -8
  6. package/build/routes/chrome/http/screenshot.post.body.json +8 -8
  7. package/build/routes/chromium/http/content.post.body.json +8 -8
  8. package/build/routes/chromium/http/pdf.post.body.json +8 -8
  9. package/build/routes/chromium/http/scrape.post.body.json +8 -8
  10. package/build/routes/chromium/http/screenshot.post.body.json +8 -8
  11. package/build/routes/edge/http/content.post.body.json +8 -8
  12. package/build/routes/edge/http/pdf.post.body.json +8 -8
  13. package/build/routes/edge/http/scrape.post.body.json +8 -8
  14. package/build/routes/edge/http/screenshot.post.body.json +8 -8
  15. package/build/types.d.ts +1 -0
  16. package/extensions/ublocklite/_locales/es/messages.json +1 -1
  17. package/extensions/ublocklite/_locales/sv/messages.json +1 -1
  18. package/extensions/ublocklite/_locales/vi/messages.json +3 -3
  19. package/extensions/ublocklite/css/filtering-mode.css +3 -2
  20. package/extensions/ublocklite/css/popup.css +8 -2
  21. package/extensions/ublocklite/dashboard.html +1 -0
  22. package/extensions/ublocklite/js/action.js +22 -32
  23. package/extensions/ublocklite/js/background.js +9 -10
  24. package/extensions/ublocklite/js/popup.js +6 -3
  25. package/extensions/ublocklite/js/ruleset-manager.js +13 -5
  26. package/extensions/ublocklite/js/scripting/css-declarative.js +5 -9
  27. package/extensions/ublocklite/js/scripting/css-generic.js +5 -5
  28. package/extensions/ublocklite/js/scripting/css-procedural.js +5 -5
  29. package/extensions/ublocklite/js/scripting/css-specific.js +5 -11
  30. package/extensions/ublocklite/{rulesets/scripting/generichigh/irn-0.css → js/scripting/toolbar-icon.js} +7 -7
  31. package/extensions/ublocklite/js/scripting-manager.js +22 -33
  32. package/extensions/ublocklite/js/utils.js +14 -0
  33. package/extensions/ublocklite/manifest.json +2 -9
  34. package/extensions/ublocklite/matched-rules.html +1 -0
  35. package/extensions/ublocklite/popup.html +13 -7
  36. package/extensions/ublocklite/report.html +1 -0
  37. package/extensions/ublocklite/rulesets/generic-details.json +16 -8
  38. package/extensions/ublocklite/rulesets/main/annoyances-cookies.json +30 -16
  39. package/extensions/ublocklite/rulesets/main/annoyances-others.json +1 -0
  40. package/extensions/ublocklite/rulesets/main/annoyances-overlays.json +4 -3
  41. package/extensions/ublocklite/rulesets/main/chn-0.json +37 -31
  42. package/extensions/ublocklite/rulesets/main/cze-0.json +1 -2
  43. package/extensions/ublocklite/rulesets/main/deu-0.json +8 -4
  44. package/extensions/ublocklite/rulesets/main/dpollock-0.json +42 -1
  45. package/extensions/ublocklite/rulesets/main/easylist.json +39 -24
  46. package/extensions/ublocklite/rulesets/main/easyprivacy.json +152 -13
  47. package/extensions/ublocklite/rulesets/main/fin-0.json +1 -2
  48. package/extensions/ublocklite/rulesets/main/fra-0.json +4 -6
  49. package/extensions/ublocklite/rulesets/main/hun-0.json +46 -29
  50. package/extensions/ublocklite/rulesets/main/idn-0.json +92 -27
  51. package/extensions/ublocklite/rulesets/main/irn-0.json +0 -1
  52. package/extensions/ublocklite/rulesets/main/isr-0.json +0 -10
  53. package/extensions/ublocklite/rulesets/main/ita-0.json +2 -1
  54. package/extensions/ublocklite/rulesets/main/jpn-1.json +26 -21
  55. package/extensions/ublocklite/rulesets/main/kor-1.json +7 -18
  56. package/extensions/ublocklite/rulesets/main/mkd-0.json +1 -1
  57. package/extensions/ublocklite/rulesets/main/nld-0.json +0 -2
  58. package/extensions/ublocklite/rulesets/main/nor-0.json +8 -42
  59. package/extensions/ublocklite/rulesets/main/pgl.json +7 -14
  60. package/extensions/ublocklite/rulesets/main/pol-0.json +2 -7
  61. package/extensions/ublocklite/rulesets/main/pol-3.json +6962 -3617
  62. package/extensions/ublocklite/rulesets/main/rus-0.json +15 -12
  63. package/extensions/ublocklite/rulesets/main/rus-1.json +5 -4
  64. package/extensions/ublocklite/rulesets/main/spa-0.json +3 -1
  65. package/extensions/ublocklite/rulesets/main/spa-1.json +4 -5
  66. package/extensions/ublocklite/rulesets/main/stevenblack-hosts.json +9359 -3524
  67. package/extensions/ublocklite/rulesets/main/swe-1.json +41 -52
  68. package/extensions/ublocklite/rulesets/main/tur-0.json +23 -9
  69. package/extensions/ublocklite/rulesets/main/ublock-badware.json +42 -37
  70. package/extensions/ublocklite/rulesets/main/ublock-filters.json +90 -182
  71. package/extensions/ublocklite/rulesets/main/ukr-0.json +1420 -372
  72. package/extensions/ublocklite/rulesets/main/urlhaus-full.json +540 -508
  73. package/extensions/ublocklite/rulesets/main/vie-1.json +22 -20
  74. package/extensions/ublocklite/rulesets/modify-headers/chn-0.json +51 -2
  75. package/extensions/ublocklite/rulesets/modify-headers/rus-0.json +2 -1
  76. package/extensions/ublocklite/rulesets/modify-headers/ublock-filters.json +1 -2
  77. package/extensions/ublocklite/rulesets/redirect/annoyances-overlays.json +0 -1
  78. package/extensions/ublocklite/rulesets/redirect/chn-0.json +18 -11
  79. package/extensions/ublocklite/rulesets/redirect/easyprivacy.json +3 -3
  80. package/extensions/ublocklite/rulesets/redirect/fra-0.json +20 -17
  81. package/extensions/ublocklite/rulesets/redirect/hun-0.json +17 -0
  82. package/extensions/ublocklite/rulesets/redirect/isr-0.json +4 -4
  83. package/extensions/ublocklite/rulesets/redirect/jpn-1.json +9 -7
  84. package/extensions/ublocklite/rulesets/redirect/kor-1.json +1 -1
  85. package/extensions/ublocklite/rulesets/redirect/nor-0.json +2 -2
  86. package/extensions/ublocklite/rulesets/redirect/pol-0.json +4 -4
  87. package/extensions/ublocklite/rulesets/redirect/rou-1.json +20 -2
  88. package/extensions/ublocklite/rulesets/redirect/rus-0.json +6 -5
  89. package/extensions/ublocklite/rulesets/redirect/spa-1.json +12 -8
  90. package/extensions/ublocklite/rulesets/redirect/swe-1.json +19 -19
  91. package/extensions/ublocklite/rulesets/redirect/tha-0.json +1 -1
  92. package/extensions/ublocklite/rulesets/redirect/tur-0.json +11 -7
  93. package/extensions/ublocklite/rulesets/redirect/ublock-filters.json +102 -87
  94. package/extensions/ublocklite/rulesets/redirect/ukr-0.json +18 -0
  95. package/extensions/ublocklite/rulesets/redirect/vie-1.json +4 -4
  96. package/extensions/ublocklite/rulesets/regex/chn-0.json +5 -2
  97. package/extensions/ublocklite/rulesets/regex/easylist.json +2 -16
  98. package/extensions/ublocklite/rulesets/regex/isr-0.json +10 -10
  99. package/extensions/ublocklite/rulesets/regex/jpn-1.json +1 -1
  100. package/extensions/ublocklite/rulesets/regex/kor-1.json +77 -89
  101. package/extensions/ublocklite/rulesets/regex/ublock-badware.json +1 -1
  102. package/extensions/ublocklite/rulesets/regex/ublock-filters.json +4 -3
  103. package/extensions/ublocklite/rulesets/regex/ukr-0.json +21 -13
  104. package/extensions/ublocklite/rulesets/removeparam/adguard-spyware-url.json +13 -7
  105. package/extensions/ublocklite/rulesets/removeparam/ukr-0.json +6 -7
  106. package/extensions/ublocklite/rulesets/ruleset-details.json +242 -274
  107. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-cookies.js +3 -3
  108. package/extensions/ublocklite/rulesets/scripting/declarative/annoyances-overlays.js +3 -3
  109. package/extensions/ublocklite/rulesets/scripting/declarative/chn-0.js +1 -1
  110. package/extensions/ublocklite/rulesets/scripting/declarative/hrv-0.js +3 -3
  111. package/extensions/ublocklite/rulesets/scripting/declarative/hun-0.js +1 -1
  112. package/extensions/ublocklite/rulesets/scripting/declarative/irn-0.js +1 -1
  113. package/extensions/ublocklite/rulesets/scripting/declarative/jpn-1.js +3 -3
  114. package/extensions/ublocklite/rulesets/scripting/declarative/kor-1.js +3 -3
  115. package/extensions/ublocklite/rulesets/scripting/declarative/rus-0.js +3 -3
  116. package/extensions/ublocklite/rulesets/scripting/declarative/rus-1.js +1 -1
  117. package/extensions/ublocklite/rulesets/scripting/declarative/spa-1.js +3 -3
  118. package/extensions/ublocklite/rulesets/scripting/declarative/swe-1.js +1 -1
  119. package/extensions/ublocklite/rulesets/scripting/declarative/tur-0.js +3 -3
  120. package/extensions/ublocklite/rulesets/scripting/declarative/ublock-filters.js +3 -3
  121. package/extensions/ublocklite/rulesets/scripting/declarative/ukr-0.js +3 -3
  122. package/extensions/ublocklite/rulesets/scripting/declarative/vie-1.js +3 -3
  123. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-cookies.js +3 -3
  124. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-overlays.js +2 -2
  125. package/extensions/ublocklite/rulesets/scripting/generic/annoyances-social.js +3 -3
  126. package/extensions/ublocklite/rulesets/scripting/generic/bgr-0.js +1 -1
  127. package/extensions/ublocklite/rulesets/scripting/generic/chn-0.js +1 -1
  128. package/extensions/ublocklite/rulesets/scripting/generic/easylist.js +3 -3
  129. package/extensions/ublocklite/rulesets/scripting/generic/est-0.js +1 -1
  130. package/extensions/ublocklite/rulesets/scripting/generic/hun-0.js +2 -2
  131. package/extensions/ublocklite/rulesets/scripting/generic/idn-0.js +2 -2
  132. package/extensions/ublocklite/rulesets/scripting/generic/jpn-1.js +3 -3
  133. package/extensions/ublocklite/rulesets/scripting/generic/kor-1.js +3 -3
  134. package/extensions/ublocklite/rulesets/scripting/generic/nor-0.js +1 -1
  135. package/extensions/ublocklite/rulesets/scripting/generic/pol-0.js +1 -1
  136. package/extensions/ublocklite/rulesets/scripting/generic/rus-0.js +3 -3
  137. package/extensions/ublocklite/rulesets/scripting/generic/spa-0.js +1 -1
  138. package/extensions/ublocklite/rulesets/scripting/generic/swe-1.js +1 -1
  139. package/extensions/ublocklite/rulesets/scripting/generic/tur-0.js +1 -1
  140. package/extensions/ublocklite/rulesets/scripting/generic/ublock-filters.js +3 -3
  141. package/extensions/ublocklite/rulesets/scripting/generic/ukr-0.js +3 -3
  142. package/extensions/ublocklite/rulesets/scripting/generic/vie-1.js +3 -3
  143. package/extensions/ublocklite/rulesets/scripting/generichigh/chn-0.css +2 -18
  144. package/extensions/ublocklite/rulesets/scripting/generichigh/easylist.css +3 -0
  145. package/extensions/ublocklite/rulesets/scripting/generichigh/est-0.css +0 -1
  146. package/extensions/ublocklite/rulesets/scripting/generichigh/idn-0.css +1 -15
  147. package/extensions/ublocklite/rulesets/scripting/generichigh/jpn-1.css +0 -1
  148. package/extensions/ublocklite/rulesets/scripting/generichigh/kor-1.css +1 -2
  149. package/extensions/ublocklite/rulesets/scripting/generichigh/nor-0.css +0 -17
  150. package/extensions/ublocklite/rulesets/scripting/generichigh/pol-0.css +0 -8
  151. package/extensions/ublocklite/rulesets/scripting/generichigh/rou-1.css +0 -1
  152. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-0.css +0 -103
  153. package/extensions/ublocklite/rulesets/scripting/generichigh/rus-1.css +0 -3
  154. package/extensions/ublocklite/rulesets/scripting/generichigh/swe-1.css +0 -1
  155. package/extensions/ublocklite/rulesets/scripting/generichigh/tur-0.css +0 -7
  156. package/extensions/ublocklite/rulesets/scripting/generichigh/ublock-filters.css +1 -6
  157. package/extensions/ublocklite/rulesets/scripting/generichigh/ukr-0.css +25 -7
  158. package/extensions/ublocklite/rulesets/scripting/generichigh/vie-1.css +0 -1
  159. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-cookies.js +3 -3
  160. package/extensions/ublocklite/rulesets/scripting/procedural/annoyances-overlays.js +1 -1
  161. package/extensions/ublocklite/rulesets/scripting/procedural/chn-0.js +1 -1
  162. package/extensions/ublocklite/rulesets/scripting/procedural/easylist.js +3 -3
  163. package/extensions/ublocklite/rulesets/scripting/procedural/hrv-0.js +1 -1
  164. package/extensions/ublocklite/rulesets/scripting/procedural/jpn-1.js +3 -3
  165. package/extensions/ublocklite/rulesets/scripting/procedural/kor-1.js +1 -1
  166. package/extensions/ublocklite/rulesets/scripting/procedural/rus-0.js +3 -3
  167. package/extensions/ublocklite/rulesets/scripting/procedural/swe-1.js +3 -3
  168. package/extensions/ublocklite/rulesets/scripting/procedural/ublock-filters.js +3 -3
  169. package/extensions/ublocklite/rulesets/scripting/procedural/ukr-0.js +3 -3
  170. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.addEventListener-defuser.js +2 -2
  171. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-constant.js +1 -1
  172. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-cookie.js +2 -2
  173. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-local-storage-item.js +2 -2
  174. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.set-session-storage-item.js +2 -2
  175. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-click-element.js +2 -2
  176. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-cookie.js +2 -2
  177. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-cookies.trusted-set-local-storage-item.js +2 -2
  178. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-others.remove-cookie.js +2 -2
  179. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-current-script.js +2 -2
  180. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.abort-on-property-read.js +2 -2
  181. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.addEventListener-defuser.js +2 -2
  182. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.prevent-setTimeout.js +2 -2
  183. package/extensions/ublocklite/rulesets/scripting/scriptlet/annoyances-overlays.set-constant.js +1 -1
  184. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.abort-on-stack-trace.js +2 -2
  185. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.adjust-setInterval.js +2 -2
  186. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.prevent-setTimeout.js +1 -1
  187. package/extensions/ublocklite/rulesets/scripting/scriptlet/chn-0.set-constant.js +2 -2
  188. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.abort-current-script.js +2 -2
  189. package/extensions/ublocklite/rulesets/scripting/scriptlet/easyprivacy.abort-on-stack-trace.js +421 -0
  190. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.prevent-fetch.js +2 -2
  191. package/extensions/ublocklite/rulesets/scripting/scriptlet/hun-0.set-constant.js +2 -2
  192. package/extensions/ublocklite/rulesets/scripting/scriptlet/jpn-1.remove-node-text.js +2 -2
  193. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.remove-node-text.js +449 -0
  194. package/extensions/ublocklite/rulesets/scripting/scriptlet/kor-1.set-constant.js +2 -2
  195. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.addEventListener-defuser.js +2 -2
  196. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-attr.js +2 -2
  197. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-0.set-constant.js +2 -2
  198. package/extensions/ublocklite/rulesets/scripting/scriptlet/rus-1.set-constant.js +1 -1
  199. package/extensions/ublocklite/rulesets/scripting/scriptlet/spa-1.prevent-xhr.js +2 -2
  200. package/extensions/ublocklite/rulesets/scripting/scriptlet/swe-1.href-sanitizer.js +1 -1
  201. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-read.js +1 -1
  202. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.abort-on-property-write.js +2 -2
  203. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.prevent-fetch.js +1 -1
  204. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.remove-attr.js +2 -2
  205. package/extensions/ublocklite/rulesets/scripting/scriptlet/tur-0.set-constant.js +1 -1
  206. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-current-script.js +3 -3
  207. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-read.js +3 -3
  208. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-property-write.js +2 -2
  209. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.abort-on-stack-trace.js +3 -3
  210. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.addEventListener-defuser.js +2 -2
  211. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setInterval.js +2 -2
  212. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.adjust-setTimeout.js +1 -1
  213. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune-fetch-response.js +1 -1
  214. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.json-prune.js +3 -3
  215. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.noeval-if.js +2 -2
  216. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.nowebrtc.js +1 -1
  217. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-fetch.js +2 -2
  218. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-requestAnimationFrame.js +2 -2
  219. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setInterval.js +2 -2
  220. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-setTimeout.js +3 -3
  221. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-window-open.js +3 -3
  222. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.prevent-xhr.js +3 -3
  223. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-cookie.js +2 -2
  224. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.remove-node-text.js +2 -2
  225. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-constant.js +3 -3
  226. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-cookie.js +2 -2
  227. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-local-storage-item.js +2 -2
  228. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.set-session-storage-item.js +2 -2
  229. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-prevent-dom-bypass.js +2 -2
  230. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-node-text.js +3 -3
  231. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-replace-xhr-response.js +2 -2
  232. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-set-constant.js +2 -2
  233. package/extensions/ublocklite/rulesets/scripting/scriptlet/ublock-filters.trusted-suppress-native-method.js +2 -2
  234. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.abort-current-script.js +451 -0
  235. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.abort-on-property-read.js +369 -0
  236. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.abort-on-property-write.js +347 -0
  237. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.json-prune.js +506 -0
  238. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-fetch.js +553 -0
  239. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.prevent-window-open.js +471 -0
  240. package/extensions/ublocklite/rulesets/scripting/scriptlet/{vie-1.set-cookie.js → ukr-0.remove-attr.js} +99 -127
  241. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.remove-class.js +396 -0
  242. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.remove-node-text.js +2 -2
  243. package/extensions/ublocklite/rulesets/scripting/scriptlet/ukr-0.set-constant.js +541 -0
  244. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-current-script.js +2 -2
  245. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.abort-on-property-read.js +1 -1
  246. package/extensions/ublocklite/rulesets/scripting/scriptlet/vie-1.set-constant.js +2 -2
  247. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-cookies.js +3 -3
  248. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-others.js +3 -3
  249. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-overlays.js +3 -3
  250. package/extensions/ublocklite/rulesets/scripting/specific/annoyances-social.js +3 -3
  251. package/extensions/ublocklite/rulesets/scripting/specific/chn-0.js +3 -3
  252. package/extensions/ublocklite/rulesets/scripting/specific/deu-0.js +3 -3
  253. package/extensions/ublocklite/rulesets/scripting/specific/easylist.js +3 -3
  254. package/extensions/ublocklite/rulesets/scripting/specific/fin-0.js +3 -3
  255. package/extensions/ublocklite/rulesets/scripting/specific/fra-0.js +3 -3
  256. package/extensions/ublocklite/rulesets/scripting/specific/hrv-0.js +3 -3
  257. package/extensions/ublocklite/rulesets/scripting/specific/hun-0.js +3 -3
  258. package/extensions/ublocklite/rulesets/scripting/specific/idn-0.js +3 -3
  259. package/extensions/ublocklite/rulesets/scripting/specific/ita-0.js +3 -3
  260. package/extensions/ublocklite/rulesets/scripting/specific/jpn-1.js +3 -3
  261. package/extensions/ublocklite/rulesets/scripting/specific/kor-1.js +3 -3
  262. package/extensions/ublocklite/rulesets/scripting/specific/lva-0.js +3 -3
  263. package/extensions/ublocklite/rulesets/scripting/specific/nld-0.js +3 -3
  264. package/extensions/ublocklite/rulesets/scripting/specific/nor-0.js +3 -3
  265. package/extensions/ublocklite/rulesets/scripting/specific/pol-0.js +3 -3
  266. package/extensions/ublocklite/rulesets/scripting/specific/rou-1.js +3 -3
  267. package/extensions/ublocklite/rulesets/scripting/specific/rus-0.js +3 -3
  268. package/extensions/ublocklite/rulesets/scripting/specific/spa-0.js +3 -3
  269. package/extensions/ublocklite/rulesets/scripting/specific/spa-1.js +3 -3
  270. package/extensions/ublocklite/rulesets/scripting/specific/swe-1.js +3 -3
  271. package/extensions/ublocklite/rulesets/scripting/specific/tur-0.js +3 -3
  272. package/extensions/ublocklite/rulesets/scripting/specific/ublock-filters.js +3 -3
  273. package/extensions/ublocklite/rulesets/scripting/specific/ukr-0.js +4 -4
  274. package/extensions/ublocklite/rulesets/scripting/specific/vie-1.js +3 -3
  275. package/extensions/ublocklite/rulesets/scriptlet-details.json +450 -190
  276. package/extensions/ublocklite/rulesets/strictblock/annoyances-cookies.json +6 -0
  277. package/extensions/ublocklite/rulesets/strictblock/chn-0.json +153 -367
  278. package/extensions/ublocklite/rulesets/strictblock/dpollock-0.json +42 -1
  279. package/extensions/ublocklite/rulesets/strictblock/easylist.json +1 -1
  280. package/extensions/ublocklite/rulesets/strictblock/easyprivacy.json +366 -3
  281. package/extensions/ublocklite/rulesets/strictblock/fra-0.json +6 -0
  282. package/extensions/ublocklite/rulesets/strictblock/hun-0.json +36 -2
  283. package/extensions/ublocklite/rulesets/strictblock/idn-0.json +0 -1
  284. package/extensions/ublocklite/rulesets/strictblock/jpn-1.json +152 -147
  285. package/extensions/ublocklite/rulesets/strictblock/mkd-0.json +0 -1
  286. package/extensions/ublocklite/rulesets/strictblock/nor-0.json +6 -4
  287. package/extensions/ublocklite/rulesets/strictblock/pgl.json +7 -14
  288. package/extensions/ublocklite/rulesets/strictblock/pol-0.json +1 -1
  289. package/extensions/ublocklite/rulesets/strictblock/pol-3.json +6962 -3617
  290. package/extensions/ublocklite/rulesets/strictblock/spa-0.json +1 -0
  291. package/extensions/ublocklite/rulesets/strictblock/stevenblack-hosts.json +9359 -3524
  292. package/extensions/ublocklite/rulesets/strictblock/swe-1.json +3 -6
  293. package/extensions/ublocklite/rulesets/strictblock/ublock-badware.json +640 -628
  294. package/extensions/ublocklite/rulesets/strictblock/ublock-filters.json +1 -1
  295. package/extensions/ublocklite/rulesets/strictblock/ukr-0.json +467 -103
  296. package/extensions/ublocklite/rulesets/strictblock/urlhaus-full.json +540 -508
  297. package/extensions/ublocklite/rulesets/urlskip/ublock-filters.json +6 -0
  298. package/extensions/ublocklite/strictblock.html +1 -0
  299. package/extensions/ublocklite/ublock.zip +0 -0
  300. package/package.json +10 -10
  301. package/scripts/build-open-api.js +16 -5
  302. package/src/limiter.ts +7 -1
  303. package/src/types.ts +1 -0
  304. package/static/docs/swagger.json +1318 -1318
  305. package/static/docs/swagger.min.json +1317 -1317
  306. package/static/function/client.js +10 -3
  307. package/static/function/index.html +10 -3
  308. package/extensions/ublocklite/rulesets/main/openphish-domains.json +0 -36928
  309. package/extensions/ublocklite/rulesets/strictblock/openphish-domains.json +0 -36943
@@ -553,14 +553,14 @@
553
553
  "length": {
554
554
  "type": "number"
555
555
  },
556
- "__@toStringTag@475223": {
556
+ "__@toStringTag@447075": {
557
557
  "type": "string",
558
558
  "const": "Uint8Array"
559
559
  }
560
560
  },
561
561
  "required": [
562
562
  "BYTES_PER_ELEMENT",
563
- "__@toStringTag@475223",
563
+ "__@toStringTag@447075",
564
564
  "buffer",
565
565
  "byteLength",
566
566
  "byteOffset",
@@ -595,13 +595,13 @@
595
595
  "byteLength": {
596
596
  "type": "number"
597
597
  },
598
- "__@toStringTag@475223": {
598
+ "__@toStringTag@447075": {
599
599
  "type": "string"
600
600
  }
601
601
  },
602
602
  "additionalProperties": false,
603
603
  "required": [
604
- "__@toStringTag@475223",
604
+ "__@toStringTag@447075",
605
605
  "byteLength"
606
606
  ]
607
607
  },
@@ -611,18 +611,18 @@
611
611
  "byteLength": {
612
612
  "type": "number"
613
613
  },
614
- "__@species@475261": {
614
+ "__@species@447113": {
615
615
  "$ref": "#/definitions/SharedArrayBuffer"
616
616
  },
617
- "__@toStringTag@475223": {
617
+ "__@toStringTag@447075": {
618
618
  "type": "string",
619
619
  "const": "SharedArrayBuffer"
620
620
  }
621
621
  },
622
622
  "additionalProperties": false,
623
623
  "required": [
624
- "__@species@475261",
625
- "__@toStringTag@475223",
624
+ "__@species@447113",
625
+ "__@toStringTag@447075",
626
626
  "byteLength"
627
627
  ]
628
628
  },
package/build/types.d.ts CHANGED
@@ -13,6 +13,7 @@ export interface AfterResponse {
13
13
  req: Request;
14
14
  start: number;
15
15
  status: 'successful' | 'error' | 'timedout';
16
+ error?: Error;
16
17
  }
17
18
  export interface BrowserHook {
18
19
  browser: BrowserInstance;
@@ -4,7 +4,7 @@
4
4
  "description": "extension name."
5
5
  },
6
6
  "extShortDesc": {
7
- "message": "Un bloqueador de contenido con menos permisos. Bloquea anuncios, rastreadores, criptomineros y aún más.",
7
+ "message": "Un bloqueador de contenido eficiente. Bloquea anuncios, rastreadores, criptomineros y aún más.",
8
8
  "description": "this will be in the Chrome web store: must be 132 characters or less"
9
9
  },
10
10
  "perRulesetStats": {
@@ -4,7 +4,7 @@
4
4
  "description": "extension name."
5
5
  },
6
6
  "extShortDesc": {
7
- "message": "En behörighetslös innehållsblockerare. Blockerar annonser, spårare, miners och mer omedelbart efter installationen.",
7
+ "message": "En effektiv innehållsblockerare. Blockerar annonser, spårare, miners och mer direkt efter den har installerats.",
8
8
  "description": "this will be in the Chrome web store: must be 132 characters or less"
9
9
  },
10
10
  "perRulesetStats": {
@@ -112,7 +112,7 @@
112
112
  "description": "First paragraph of 'Filter issues' section in Support pane"
113
113
  },
114
114
  "supportS5H": {
115
- "message": "Troubleshooting information",
115
+ "message": "Thông tin chẩn đoán lỗi",
116
116
  "description": "Label of 'Troubleshooting information' section in 'Report a filter issue' page"
117
117
  },
118
118
  "supportS6P1S1": {
@@ -276,11 +276,11 @@
276
276
  "description": "A button to navigate to the blocked page"
277
277
  },
278
278
  "zapperTipEnter": {
279
- "message": "Enter element zapper mode",
279
+ "message": "Chuyển sang chế độ chặn phần tử tạm thời",
280
280
  "description": "Tooltip for the button used to enter zapper mode"
281
281
  },
282
282
  "zapperTipQuit": {
283
- "message": "Exit element zapper mode",
283
+ "message": "Thoát khỏi chế độ chặn phần tử tạm thời",
284
284
  "description": "Tooltip for the button used to exit zapper mode"
285
285
  }
286
286
  }
@@ -1,5 +1,6 @@
1
1
  .filteringModeSlider {
2
2
  align-items: center;
3
+ container-type: size;
3
4
  display: flex;
4
5
  height: 60px;
5
6
  justify-content: center;
@@ -11,9 +12,9 @@
11
12
  background-color: var(--surface-1);
12
13
  box-sizing: border-box;
13
14
  border-radius: 30% 15% / 15% 30%;
14
- height: 100%;
15
+ height: calc(25cqw + 2px);
15
16
  position: absolute;
16
- width: calc(25% + 2px);
17
+ width: calc(25cqw + 2px);
17
18
  z-index: 10;
18
19
  }
19
20
 
@@ -70,9 +70,14 @@ body[data-forbid~="dashboard"] #gotoDashboard {
70
70
  display: none;
71
71
  }
72
72
 
73
+ .lrspacer {
74
+ padding-left: var(--default-gap-small);
75
+ padding-right: var(--default-gap-small);
76
+ }
77
+
73
78
  #filteringModeText {
74
79
  color: var(--ink-3);
75
- margin: var(--default-gap-small);
80
+ margin-bottom: var(--default-gap-small);
76
81
  margin-top: 0;
77
82
  text-align: center;
78
83
  text-transform: lowercase;
@@ -95,7 +100,8 @@ body[data-forbid~="dashboard"] #gotoDashboard {
95
100
 
96
101
  .filteringModeSlider {
97
102
  align-self: center;
98
- margin: var(--popup-gap);
103
+ margin-bottom: var(--popup-gap);
104
+ margin-top: var(--popup-gap);
99
105
  width: calc(var(--popup-main-min-width) - 1em);
100
106
  }
101
107
 
@@ -3,6 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
6
+ <meta name="color-scheme" content="light dark" />
6
7
  <title data-i18n="dashboardName"></title>
7
8
  <link rel="stylesheet" href="css/default.css">
8
9
  <link rel="stylesheet" href="css/common.css">
@@ -19,8 +19,8 @@
19
19
  Home: https://github.com/gorhill/uBlock
20
20
  */
21
21
 
22
+ import { matchesFromHostnames, strArrayEq } from './utils.js';
22
23
  import { browser } from './ext.js';
23
- import { getFilteringModeDetails } from './mode-manager.js';
24
24
 
25
25
  /******************************************************************************/
26
26
 
@@ -28,14 +28,6 @@ let reverseMode = false;
28
28
 
29
29
  /******************************************************************************/
30
30
 
31
- function toggleToolbarIcon(tabId) {
32
- if ( reverseMode ) {
33
- enableToolbarIcon(tabId);
34
- } else {
35
- disableToolbarIcon(tabId);
36
- }
37
- }
38
-
39
31
  function disableToolbarIcon(tabId) {
40
32
  const details = {
41
33
  path: {
@@ -68,9 +60,12 @@ function enableToolbarIcon(tabId) {
68
60
 
69
61
  /******************************************************************************/
70
62
 
71
- function toolbarIconListener(details) {
72
- if ( details.frameId !== 0 ) { return; }
73
- toggleToolbarIcon(details.tabId);
63
+ export function toggleToolbarIcon(tabId) {
64
+ if ( reverseMode ) {
65
+ enableToolbarIcon(tabId);
66
+ } else {
67
+ disableToolbarIcon(tabId);
68
+ }
74
69
  }
75
70
 
76
71
  /******************************************************************************/
@@ -78,13 +73,8 @@ function toolbarIconListener(details) {
78
73
  // https://github.com/uBlockOrigin/uBOL-home/issues/198
79
74
  // Ensure the toolbar icon reflects the no-filtering mode of "trusted sites"
80
75
 
81
- export async function syncToolbarIcon(wakeup) {
82
- const { webNavigation } = browser;
83
- if ( typeof webNavigation !== 'object' ) { return; }
84
-
85
- webNavigation.onCommitted.removeListener(toolbarIconListener);
86
-
87
- const { none, basic, optimal, complete } = await getFilteringModeDetails();
76
+ export async function registerToolbarIconToggler(context) {
77
+ const { none, basic, optimal, complete } = context.filteringModeDetails;
88
78
  const reverseModeAfter = none.delete('all-urls');
89
79
  const toToggle = reverseModeAfter ?
90
80
  new Set([ ...basic, ...optimal, ...complete ])
@@ -101,20 +91,20 @@ export async function syncToolbarIcon(wakeup) {
101
91
 
102
92
  if ( toToggle.size === 0 ) { return; }
103
93
 
104
- webNavigation.onCommitted.addListener(toolbarIconListener, {
105
- url: Array.from(toToggle).map(a => ({
106
- originAndPathMatches: `^https?://([^.].*\\.)?${a.replaceAll('.', '\\.')}/`
107
- })),
108
- });
94
+ const registered = context.before.get('toolbar-icon');
95
+ context.before.delete('toolbar-icon'); // Important!
109
96
 
110
- if ( wakeup === undefined ) { return; }
111
-
112
- // If waking up, update icon for existing tabs
113
- const tabs = await browser.tabs.query({
114
- url: Array.from(toToggle).map(a => `*://*.${a}/*`)
115
- }).catch(( ) => ([]));
97
+ const directive = {
98
+ id: 'toolbar-icon',
99
+ js: [ '/js/scripting/toolbar-icon.js' ],
100
+ matches: matchesFromHostnames(toToggle),
101
+ runAt: 'document_start',
102
+ };
116
103
 
117
- for ( const tab of tabs ) {
118
- toggleToolbarIcon(tab.id);
104
+ if ( registered === undefined ) {
105
+ context.toAdd.push(directive);
106
+ } else if ( strArrayEq(registered.matches, directive.matches) === false ) {
107
+ context.toRemove.push('toolbar-icon');
108
+ context.toAdd.push(directive);
119
109
  }
120
110
  }
@@ -21,7 +21,6 @@
21
21
 
22
22
  import {
23
23
  MODE_BASIC,
24
- MODE_NONE,
25
24
  MODE_OPTIMAL,
26
25
  getDefaultFilteringMode,
27
26
  getFilteringMode,
@@ -78,7 +77,7 @@ import {
78
77
 
79
78
  import { dnr } from './ext-compat.js';
80
79
  import { registerInjectables } from './scripting-manager.js';
81
- import { syncToolbarIcon } from './action.js';
80
+ import { toggleToolbarIcon } from './action.js';
82
81
 
83
82
  /******************************************************************************/
84
83
 
@@ -170,6 +169,14 @@ function onMessage(request, sender, callback) {
170
169
  return false;
171
170
  }
172
171
 
172
+ case 'toggleToolbarIcon': {
173
+ const tabId = sender?.tab?.id ?? false;
174
+ if ( tabId ) {
175
+ toggleToolbarIcon(tabId);
176
+ }
177
+ return false;
178
+ }
179
+
173
180
  default:
174
181
  break;
175
182
  }
@@ -313,17 +320,11 @@ function onMessage(request, sender, callback) {
313
320
  break;
314
321
 
315
322
  case 'setFilteringMode': {
316
- let trustedSitesChanged = false;
317
323
  getFilteringMode(request.hostname).then(beforeLevel => {
318
324
  if ( request.level === beforeLevel ) { return beforeLevel; }
319
- trustedSitesChanged = beforeLevel === MODE_NONE;
320
325
  return setFilteringMode(request.hostname, request.level);
321
326
  }).then(afterLevel => {
322
327
  registerInjectables();
323
- trustedSitesChanged ||= afterLevel === MODE_NONE;
324
- if ( trustedSitesChanged ) {
325
- syncToolbarIcon();
326
- }
327
328
  callback(afterLevel);
328
329
  });
329
330
  return true;
@@ -357,7 +358,6 @@ function onMessage(request, sender, callback) {
357
358
  case 'setTrustedSites':
358
359
  setTrustedSites(request.hostnames).then(( ) => {
359
360
  registerInjectables();
360
- syncToolbarIcon(true);
361
361
  return Promise.all([
362
362
  getDefaultFilteringMode(),
363
363
  getTrustedSites(),
@@ -485,7 +485,6 @@ async function start() {
485
485
  await startSession();
486
486
  }
487
487
 
488
- syncToolbarIcon(process.wakeupRun);
489
488
  toggleDeveloperMode(rulesetConfig.developerMode);
490
489
  }
491
490
 
@@ -109,10 +109,13 @@ async function commitFilteringMode() {
109
109
  setFilteringMode(actualLevel);
110
110
  }
111
111
  if ( actualLevel !== beforeLevel && popupPanelData.autoReload ) {
112
+ const justReload = tabURL.href === currentTab.url;
112
113
  self.setTimeout(( ) => {
113
- browser.tabs.update(currentTab.id, {
114
- url: tabURL.href,
115
- });
114
+ if ( justReload ) {
115
+ browser.tabs.reload(currentTab.id);
116
+ } else {
117
+ browser.tabs.update(currentTab.id, { url: tabURL.href });
118
+ }
116
119
  }, 437);
117
120
  }
118
121
  }
@@ -49,10 +49,18 @@ let sessionRegexCount = 0;
49
49
 
50
50
  const isStrictBlockRule = rule => {
51
51
  if ( rule.priority !== STRICTBLOCK_PRIORITY ) { return false; }
52
- if ( rule.action.type !== 'redirect' ) { return false; }
53
- const substitution = rule.action.redirect.regexSubstitution;
54
- return substitution !== undefined &&
55
- substitution.includes('/strictblock.');
52
+ if ( rule.condition?.resourceTypes === undefined ) { return false; }
53
+ if ( rule.condition.resourceTypes.length !== 1 ) { return false; }
54
+ if ( rule.condition.resourceTypes[0] !== 'main_frame' ) { return false; }
55
+ if ( rule.action.type === 'redirect' ) {
56
+ const substitution = rule.action.redirect.regexSubstitution;
57
+ return substitution !== undefined &&
58
+ substitution.includes('/strictblock.');
59
+ }
60
+ if ( rule.action.type === 'allow' ) {
61
+ return Array.isArray(rule.condition?.requestDomains);
62
+ }
63
+ return false;
56
64
  };
57
65
 
58
66
  /******************************************************************************/
@@ -365,7 +373,7 @@ async function updateStrictBlockRules(currentRules, addRules, removeRuleIds) {
365
373
 
366
374
  const allExcluded = permanentlyExcluded.concat(temporarilyExcluded);
367
375
  if ( allExcluded.length === 0 ) { return; }
368
- addRules.push({
376
+ addRules.unshift({
369
377
  action: { type: 'allow' },
370
378
  condition: {
371
379
  requestDomains: allExcluded,
@@ -103,18 +103,14 @@ for ( const selector of exceptedSelectors ) {
103
103
 
104
104
  if ( sheetText.length === 0 ) { return; }
105
105
 
106
- (function uBOL_injectCSS(css, count = 10) {
107
- chrome.runtime.sendMessage({ what: 'insertCSS', css }).catch(( ) => {
108
- count -= 1;
109
- if ( count === 0 ) { return; }
110
- uBOL_injectCSS(css, count);
111
- });
112
- })(sheetText.join('\n'));
106
+ chrome.runtime.sendMessage({
107
+ what: 'insertCSS',
108
+ css: sheetText.join('\n'),
109
+ }).catch(( ) => {
110
+ });
113
111
 
114
112
  /******************************************************************************/
115
113
 
116
114
  })();
117
115
 
118
- /******************************************************************************/
119
-
120
116
  void 0;
@@ -214,11 +214,11 @@ const uBOL_processChanges = mutations => {
214
214
 
215
215
  /******************************************************************************/
216
216
 
217
- const uBOL_injectCSS = (css, count = 10) => {
218
- chrome.runtime.sendMessage({ what: 'insertCSS', css }).catch(( ) => {
219
- count -= 1;
220
- if ( count === 0 ) { return; }
221
- uBOL_injectCSS(css, count);
217
+ const uBOL_injectCSS = css => {
218
+ chrome.runtime.sendMessage({
219
+ what: 'insertCSS',
220
+ css,
221
+ }).catch(( ) => {
222
222
  });
223
223
  };
224
224
 
@@ -65,11 +65,11 @@ if ( exceptedSelectors.length === 0 ) { return; }
65
65
 
66
66
  /******************************************************************************/
67
67
 
68
- const uBOL_injectCSS = (css, count = 10) => {
69
- chrome.runtime.sendMessage({ what: 'insertCSS', css }).catch(( ) => {
70
- count -= 1;
71
- if ( count === 0 ) { return; }
72
- uBOL_injectCSS(css, count);
68
+ const uBOL_injectCSS = css => {
69
+ chrome.runtime.sendMessage({
70
+ what: 'insertCSS',
71
+ css,
72
+ }).catch(( ) => {
73
73
  });
74
74
  };
75
75
 
@@ -63,20 +63,14 @@ const exceptedSelectors = exceptions.length !== 0
63
63
  : selectors;
64
64
  if ( exceptedSelectors.length === 0 ) { return; }
65
65
 
66
- /******************************************************************************/
67
-
68
- (function uBOL_injectCSS(css, count = 10) {
69
- chrome.runtime.sendMessage({ what: 'insertCSS', css }).catch(( ) => {
70
- count -= 1;
71
- if ( count === 0 ) { return; }
72
- uBOL_injectCSS(css, count);
73
- });
74
- })(`${exceptedSelectors.join(',')}{display:none!important;}`);
66
+ chrome.runtime.sendMessage({
67
+ what: 'insertCSS',
68
+ css: `${exceptedSelectors.join(',')}{display:none!important;}`,
69
+ }).catch(( ) => {
70
+ });
75
71
 
76
72
  /******************************************************************************/
77
73
 
78
74
  })();
79
75
 
80
- /******************************************************************************/
81
-
82
76
  void 0;
@@ -1,7 +1,7 @@
1
1
  /*******************************************************************************
2
2
 
3
3
  uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
4
- Copyright (C) 2014-present Raymond Hill
4
+ Copyright (C) 2025-present Raymond Hill
5
5
 
6
6
  This program is free software: you can redistribute it and/or modify
7
7
  it under the terms of the GNU General Public License as published by
@@ -19,9 +19,9 @@
19
19
  Home: https://github.com/gorhill/uBlock
20
20
  */
21
21
 
22
- /* irn-0 */
23
-
24
- a[href^="https://arongroups.co/"],
25
- a[href^="https://arongroups.site/"] {
26
- display: none !important;
27
- }
22
+ (function uBOL_toggleToolbarIcon() {
23
+ chrome.runtime.sendMessage({
24
+ what: 'toggleToolbarIcon',
25
+ }).catch(( ) => {
26
+ });
27
+ })();
@@ -25,6 +25,7 @@ import { browser } from './ext.js';
25
25
  import { fetchJSON } from './fetch.js';
26
26
  import { getEnabledRulesetsDetails } from './ruleset-manager.js';
27
27
  import { getFilteringModeDetails } from './mode-manager.js';
28
+ import { registerToolbarIconToggler } from './action.js';
28
29
  import { ubolLog } from './debug.js';
29
30
 
30
31
  /******************************************************************************/
@@ -53,19 +54,6 @@ function getGenericDetails() {
53
54
 
54
55
  /******************************************************************************/
55
56
 
56
- // Important: We need to sort the arrays for fast comparison
57
- const arrayEq = (a = [], b = [], sort = true) => {
58
- const alen = a.length;
59
- if ( alen !== b.length ) { return false; }
60
- if ( sort ) { a.sort(); b.sort(); }
61
- for ( let i = 0; i < alen; i++ ) {
62
- if ( a[i] !== b[i] ) { return false; }
63
- }
64
- return true;
65
- };
66
-
67
- /******************************************************************************/
68
-
69
57
  const normalizeMatches = matches => {
70
58
  if ( matches.length <= 1 ) { return; }
71
59
  if ( matches.includes('<all_urls>') === false ) {
@@ -168,9 +156,9 @@ function registerHighGeneric(context, genericDetails) {
168
156
 
169
157
  // update
170
158
  if (
171
- arrayEq(registered.css, css, false) === false ||
172
- arrayEq(registered.matches, matches) === false ||
173
- arrayEq(registered.excludeMatches, excludeMatches) === false
159
+ ut.strArrayEq(registered.css, css, false) === false ||
160
+ ut.strArrayEq(registered.matches, matches) === false ||
161
+ ut.strArrayEq(registered.excludeMatches, excludeMatches) === false
174
162
  ) {
175
163
  context.toRemove.push('css-generichigh');
176
164
  context.toAdd.push(directive);
@@ -231,8 +219,8 @@ function registerGeneric(context, genericDetails) {
231
219
  if ( registered === undefined ) { // register
232
220
  context.toAdd.push(directive);
233
221
  } else if ( // update
234
- arrayEq(registered.js, js, false) === false ||
235
- arrayEq(registered.matches, directive.matches) === false
222
+ ut.strArrayEq(registered.js, js, false) === false ||
223
+ ut.strArrayEq(registered.matches, directive.matches) === false
236
224
  ) {
237
225
  context.toRemove.push('css-generic-some');
238
226
  context.toAdd.push(directive);
@@ -257,8 +245,8 @@ function registerGeneric(context, genericDetails) {
257
245
  if ( registeredAll === undefined ) { // register
258
246
  context.toAdd.push(directiveAll);
259
247
  } else if ( // update
260
- arrayEq(registeredAll.js, js, false) === false ||
261
- arrayEq(registeredAll.excludeMatches, directiveAll.excludeMatches) === false
248
+ ut.strArrayEq(registeredAll.js, js, false) === false ||
249
+ ut.strArrayEq(registeredAll.excludeMatches, directiveAll.excludeMatches) === false
262
250
  ) {
263
251
  context.toRemove.push('css-generic-all');
264
252
  context.toAdd.push(directiveAll);
@@ -281,8 +269,8 @@ function registerGeneric(context, genericDetails) {
281
269
  if ( registeredSome === undefined ) { // register
282
270
  context.toAdd.push(directiveSome);
283
271
  } else if ( // update
284
- arrayEq(registeredSome.js, js, false) === false ||
285
- arrayEq(registeredSome.matches, directiveSome.matches) === false
272
+ ut.strArrayEq(registeredSome.js, js, false) === false ||
273
+ ut.strArrayEq(registeredSome.matches, directiveSome.matches) === false
286
274
  ) {
287
275
  context.toRemove.push('css-generic-some');
288
276
  context.toAdd.push(directiveSome);
@@ -342,9 +330,9 @@ function registerProcedural(context) {
342
330
 
343
331
  // update
344
332
  if (
345
- arrayEq(registered.js, js, false) === false ||
346
- arrayEq(registered.matches, matches) === false ||
347
- arrayEq(registered.excludeMatches, excludeMatches) === false
333
+ ut.strArrayEq(registered.js, js, false) === false ||
334
+ ut.strArrayEq(registered.matches, matches) === false ||
335
+ ut.strArrayEq(registered.excludeMatches, excludeMatches) === false
348
336
  ) {
349
337
  context.toRemove.push('css-procedural');
350
338
  context.toAdd.push(directive);
@@ -404,9 +392,9 @@ function registerDeclarative(context) {
404
392
 
405
393
  // update
406
394
  if (
407
- arrayEq(registered.js, js, false) === false ||
408
- arrayEq(registered.matches, matches) === false ||
409
- arrayEq(registered.excludeMatches, excludeMatches) === false
395
+ ut.strArrayEq(registered.js, js, false) === false ||
396
+ ut.strArrayEq(registered.matches, matches) === false ||
397
+ ut.strArrayEq(registered.excludeMatches, excludeMatches) === false
410
398
  ) {
411
399
  context.toRemove.push('css-declarative');
412
400
  context.toAdd.push(directive);
@@ -466,9 +454,9 @@ function registerSpecific(context) {
466
454
 
467
455
  // update
468
456
  if (
469
- arrayEq(registered.js, js, false) === false ||
470
- arrayEq(registered.matches, matches) === false ||
471
- arrayEq(registered.excludeMatches, excludeMatches) === false
457
+ ut.strArrayEq(registered.js, js, false) === false ||
458
+ ut.strArrayEq(registered.matches, matches) === false ||
459
+ ut.strArrayEq(registered.excludeMatches, excludeMatches) === false
472
460
  ) {
473
461
  context.toRemove.push('css-specific');
474
462
  context.toAdd.push(directive);
@@ -545,8 +533,8 @@ function registerScriptlet(context, scriptletDetails) {
545
533
 
546
534
  // update
547
535
  if (
548
- arrayEq(registered.matches, matches) === false ||
549
- arrayEq(registered.excludeMatches, excludeMatches) === false
536
+ ut.strArrayEq(registered.matches, matches) === false ||
537
+ ut.strArrayEq(registered.excludeMatches, excludeMatches) === false
550
538
  ) {
551
539
  context.toRemove.push(id);
552
540
  context.toAdd.push(directive);
@@ -599,6 +587,7 @@ async function registerInjectables() {
599
587
  registerSpecific(context);
600
588
  registerGeneric(context, genericDetails);
601
589
  registerHighGeneric(context, genericDetails);
590
+ registerToolbarIconToggler(context);
602
591
 
603
592
  toRemove.push(...Array.from(before.keys()));
604
593
 
@@ -182,6 +182,19 @@ async function gotoURL(url, type) {
182
182
 
183
183
  /******************************************************************************/
184
184
 
185
+ // Important: We need to sort the arrays for fast comparison
186
+ const strArrayEq = (a = [], b = [], sort = true) => {
187
+ const alen = a.length;
188
+ if ( alen !== b.length ) { return false; }
189
+ if ( sort ) { a.sort(); b.sort(); }
190
+ for ( let i = 0; i < alen; i++ ) {
191
+ if ( a[i] !== b[i] ) { return false; }
192
+ }
193
+ return true;
194
+ };
195
+
196
+ /******************************************************************************/
197
+
185
198
  export {
186
199
  broadcastMessage,
187
200
  parsedURLromOrigin,
@@ -195,4 +208,5 @@ export {
195
208
  hostnamesFromMatches,
196
209
  hasBroadHostPermissions,
197
210
  gotoURL,
211
+ strArrayEq,
198
212
  };