@adguard/agtree 3.1.5 → 3.2.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 (424) hide show
  1. package/dist/ast-utils/clone.js +1 -1
  2. package/dist/ast-utils/modifiers.js +1 -1
  3. package/dist/ast-utils/network-rules.js +1 -1
  4. package/dist/ast-utils/scriptlets.js +1 -1
  5. package/dist/common/abp-snippet-injection-body-common.js +1 -1
  6. package/dist/common/agent-common.js +1 -1
  7. package/dist/common/ubo-selector-common.js +1 -1
  8. package/dist/compatibility-tables/base.js +1 -1
  9. package/dist/compatibility-tables/compatibility-table-data.js +1 -1
  10. package/dist/compatibility-tables/modifiers.js +1 -1
  11. package/dist/compatibility-tables/platforms.js +1 -1
  12. package/dist/compatibility-tables/redirects.js +1 -1
  13. package/dist/compatibility-tables/schemas/base.js +1 -1
  14. package/dist/compatibility-tables/schemas/modifier.js +1 -1
  15. package/dist/compatibility-tables/schemas/platform.js +1 -1
  16. package/dist/compatibility-tables/schemas/redirect.js +1 -1
  17. package/dist/compatibility-tables/schemas/resource-type.js +1 -1
  18. package/dist/compatibility-tables/schemas/scriptlet.js +1 -1
  19. package/dist/compatibility-tables/scriptlets.js +1 -1
  20. package/dist/compatibility-tables/utils/platform-helpers.js +1 -1
  21. package/dist/compatibility-tables/utils/resource-type-helpers.js +1 -1
  22. package/dist/compatibility-tables/utils/zod-camelcase.js +1 -1
  23. package/dist/converter/base-interfaces/base-converter.js +1 -1
  24. package/dist/converter/base-interfaces/conversion-result.js +1 -1
  25. package/dist/converter/base-interfaces/rule-converter-base.js +1 -1
  26. package/dist/converter/comment/index.js +1 -1
  27. package/dist/converter/cosmetic/css.js +1 -1
  28. package/dist/converter/cosmetic/element-hiding.js +1 -1
  29. package/dist/converter/cosmetic/header-removal.js +1 -1
  30. package/dist/converter/cosmetic/html.js +162 -2
  31. package/dist/converter/cosmetic/index.js +18 -16
  32. package/dist/converter/cosmetic/rule-modifiers/adg.js +1 -1
  33. package/dist/converter/cosmetic/rule-modifiers/ubo.js +1 -1
  34. package/dist/converter/cosmetic/scriptlet.js +40 -6
  35. package/dist/converter/css/index.js +1 -1
  36. package/dist/converter/data/css.js +1 -1
  37. package/dist/converter/filter-list.js +1 -1
  38. package/dist/converter/index.js +1 -1
  39. package/dist/converter/misc/network-rule-modifier.js +1 -1
  40. package/dist/converter/network/index.js +1 -1
  41. package/dist/converter/raw-filter-list.js +1 -1
  42. package/dist/converter/raw-rule.js +1 -1
  43. package/dist/converter/rule.js +1 -1
  44. package/dist/deserializer/base-deserializer.js +1 -1
  45. package/dist/deserializer/comment/agent-comment-deserializer.js +1 -1
  46. package/dist/deserializer/comment/agent-deserializer.js +1 -1
  47. package/dist/deserializer/comment/comment-rule-deserializer.js +1 -1
  48. package/dist/deserializer/comment/config-comment-deserializer.js +1 -1
  49. package/dist/deserializer/comment/hint-comment-deserializer.js +1 -1
  50. package/dist/deserializer/comment/hint-deserializer.js +1 -1
  51. package/dist/deserializer/comment/metadata-comment-deserializer.js +1 -1
  52. package/dist/deserializer/comment/pre-processor-comment-deserializer.js +1 -1
  53. package/dist/deserializer/comment/simple-comment-deserializer.js +1 -1
  54. package/dist/deserializer/cosmetic/cosmetic-rule-deserializer.js +1 -1
  55. package/dist/deserializer/cosmetic/css-injection-body-deserializer.js +1 -1
  56. package/dist/deserializer/cosmetic/element-hiding-body-deserializer.js +1 -1
  57. package/dist/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +1 -1
  58. package/dist/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +1 -1
  59. package/dist/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +1 -1
  60. package/dist/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +1 -1
  61. package/dist/deserializer/empty-rule-deserializer.js +1 -1
  62. package/dist/deserializer/filterlist-deserializer.js +1 -1
  63. package/dist/deserializer/index.js +1 -1
  64. package/dist/deserializer/invalid-rule-deserializer.js +1 -1
  65. package/dist/deserializer/invalid-rule-error-node-deserializer.js +1 -1
  66. package/dist/deserializer/misc/domain-list-deserializer.js +1 -1
  67. package/dist/deserializer/misc/list-item-deserializer.js +1 -1
  68. package/dist/deserializer/misc/list-items-deserializer.js +1 -1
  69. package/dist/deserializer/misc/logical-expression-deserializer.js +1 -1
  70. package/dist/deserializer/misc/modifier-deserializer.js +1 -1
  71. package/dist/deserializer/misc/modifier-list-deserializer.js +1 -1
  72. package/dist/deserializer/misc/parameter-list-deserializer.js +1 -1
  73. package/dist/deserializer/misc/value-deserializer.js +1 -1
  74. package/dist/deserializer/network/host-rule-deserializer.js +1 -1
  75. package/dist/deserializer/network/hostname-list-deserializer.js +1 -1
  76. package/dist/deserializer/network/network-rule-deserializer.js +1 -1
  77. package/dist/deserializer/rule-deserializer.js +1 -1
  78. package/dist/deserializer/syntax-deserialization-map.js +1 -1
  79. package/dist/errors/adblock-syntax-error.js +1 -1
  80. package/dist/errors/binary-schema-mismatch-error.js +1 -1
  81. package/dist/errors/not-implemented-error.js +1 -1
  82. package/dist/errors/rule-conversion-error.js +1 -1
  83. package/dist/generator/base-generator.js +1 -1
  84. package/dist/generator/comment/agent-comment-generator.js +1 -1
  85. package/dist/generator/comment/agent-generator.js +1 -1
  86. package/dist/generator/comment/comment-rule-generator.js +1 -1
  87. package/dist/generator/comment/config-comment-generator.js +1 -1
  88. package/dist/generator/comment/hint-comment-generator.js +1 -1
  89. package/dist/generator/comment/hint-generator.js +1 -1
  90. package/dist/generator/comment/metadata-comment-generator.js +1 -1
  91. package/dist/generator/comment/pre-processor-comment-generator.js +1 -1
  92. package/dist/generator/comment/simple-comment-generator.js +1 -1
  93. package/dist/generator/cosmetic/body/abp-snippet-injection-body-generator.js +1 -1
  94. package/dist/generator/cosmetic/body/adg-scriptlet-injection-body-generator.js +1 -1
  95. package/dist/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js +1 -1
  96. package/dist/generator/cosmetic/cosmetic-rule-body-generator.js +1 -1
  97. package/dist/generator/cosmetic/cosmetic-rule-generator.js +1 -1
  98. package/dist/generator/cosmetic/cosmetic-rule-pattern-generator.js +1 -1
  99. package/dist/generator/css/adg-css-injection-generator.js +1 -1
  100. package/dist/generator/filterlist-generator.js +1 -1
  101. package/dist/generator/index.js +1 -1
  102. package/dist/generator/misc/domain-list-generator.js +1 -1
  103. package/dist/generator/misc/list-items-generator.js +1 -1
  104. package/dist/generator/misc/logical-expression-generator.js +1 -1
  105. package/dist/generator/misc/modifier-generator.js +1 -1
  106. package/dist/generator/misc/modifier-list-generator.js +1 -1
  107. package/dist/generator/misc/parameter-list-generator.js +1 -1
  108. package/dist/generator/misc/value-generator.js +1 -1
  109. package/dist/generator/network/host-rule-generator.js +1 -1
  110. package/dist/generator/network/network-rule-generator.js +1 -1
  111. package/dist/generator/rule-generator.js +1 -1
  112. package/dist/index.js +1 -1
  113. package/dist/marshalling-utils/comment/agent-comment-common.js +1 -1
  114. package/dist/marshalling-utils/comment/agent-common.js +1 -1
  115. package/dist/marshalling-utils/comment/config-comment-common.js +1 -1
  116. package/dist/marshalling-utils/comment/hint-comment-common.js +1 -1
  117. package/dist/marshalling-utils/comment/hint-common.js +1 -1
  118. package/dist/marshalling-utils/comment/metadata-comment-common.js +1 -1
  119. package/dist/marshalling-utils/comment/pre-processor-comment-common.js +1 -1
  120. package/dist/marshalling-utils/comment/simple-comment-common.js +1 -1
  121. package/dist/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +1 -1
  122. package/dist/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +1 -1
  123. package/dist/marshalling-utils/cosmetic/body/css-injection-body-common.js +1 -1
  124. package/dist/marshalling-utils/cosmetic/body/element-hiding-body-common.js +1 -1
  125. package/dist/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +1 -1
  126. package/dist/marshalling-utils/cosmetic/cosmetic-rule-common.js +1 -1
  127. package/dist/marshalling-utils/empty-rule-common.js +1 -1
  128. package/dist/marshalling-utils/filter-list-common.js +1 -1
  129. package/dist/marshalling-utils/invalid-rule-common.js +1 -1
  130. package/dist/marshalling-utils/invalid-rule-error-node-common.js +1 -1
  131. package/dist/marshalling-utils/misc/binary-type-common.js +1 -1
  132. package/dist/marshalling-utils/misc/domain-list-common.js +1 -1
  133. package/dist/marshalling-utils/misc/host-rule-common.js +1 -1
  134. package/dist/marshalling-utils/misc/hostname-list-common.js +1 -1
  135. package/dist/marshalling-utils/misc/list-item-common.js +1 -1
  136. package/dist/marshalling-utils/misc/logical-expression-common.js +1 -1
  137. package/dist/marshalling-utils/misc/modifier-common.js +1 -1
  138. package/dist/marshalling-utils/misc/modifier-list-common.js +1 -1
  139. package/dist/marshalling-utils/misc/parameter-list-common.js +1 -1
  140. package/dist/marshalling-utils/misc/value-common.js +1 -1
  141. package/dist/marshalling-utils/network/network-rule-common.js +1 -1
  142. package/dist/marshalling-utils/syntax-serialization-map.js +1 -1
  143. package/dist/nodes/index.js +1 -1
  144. package/dist/package.json.js +2 -2
  145. package/dist/parser/base-parser.js +1 -1
  146. package/dist/parser/comment/agent-comment-parser.js +1 -1
  147. package/dist/parser/comment/agent-parser.js +1 -1
  148. package/dist/parser/comment/comment-parser.js +1 -1
  149. package/dist/parser/comment/config-comment-parser.js +1 -1
  150. package/dist/parser/comment/hint-comment-parser.js +1 -1
  151. package/dist/parser/comment/hint-parser.js +1 -1
  152. package/dist/parser/comment/metadata-comment-parser.js +1 -1
  153. package/dist/parser/comment/preprocessor-parser.js +1 -1
  154. package/dist/parser/comment/simple-comment-parser.js +1 -1
  155. package/dist/parser/cosmetic/body/abp-snippet-injection-body-parser.js +1 -1
  156. package/dist/parser/cosmetic/body/adg-scriptlet-injection-body-parser.js +1 -1
  157. package/dist/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js +1 -1
  158. package/dist/parser/cosmetic/cosmetic-rule-parser.js +1 -1
  159. package/dist/parser/css/adg-css-injection-parser.js +1 -1
  160. package/dist/parser/css/balancing.js +1 -1
  161. package/dist/parser/css/constants.js +1 -1
  162. package/dist/parser/css/css-token-stream.js +1 -1
  163. package/dist/parser/css/ubo-selector-parser.js +1 -1
  164. package/dist/parser/filterlist-parser.js +1 -1
  165. package/dist/parser/index.js +1 -1
  166. package/dist/parser/misc/app-list-parser.js +1 -1
  167. package/dist/parser/misc/domain-list-parser.js +1 -1
  168. package/dist/parser/misc/list-items-parser.js +1 -1
  169. package/dist/parser/misc/logical-expression-parser.js +1 -1
  170. package/dist/parser/misc/method-list-parser.js +1 -1
  171. package/dist/parser/misc/modifier-list.js +1 -1
  172. package/dist/parser/misc/modifier-parser.js +1 -1
  173. package/dist/parser/misc/parameter-list-parser.js +1 -1
  174. package/dist/parser/misc/stealth-option-list-parser.js +1 -1
  175. package/dist/parser/misc/ubo-parameter-list-parser.js +1 -1
  176. package/dist/parser/misc/value-parser.js +1 -1
  177. package/dist/parser/network/host-rule-parser.js +1 -1
  178. package/dist/parser/network/network-rule-parser.js +1 -1
  179. package/dist/parser/options.js +1 -1
  180. package/dist/parser/rule-parser.js +1 -1
  181. package/dist/serializer/base-serializer.js +1 -1
  182. package/dist/serializer/comment/agent-comment-serializer.js +1 -1
  183. package/dist/serializer/comment/agent-serializer.js +1 -1
  184. package/dist/serializer/comment/comment-rule-serializer.js +1 -1
  185. package/dist/serializer/comment/config-comment-serializer.js +1 -1
  186. package/dist/serializer/comment/hint-comment-serializer.js +1 -1
  187. package/dist/serializer/comment/hint-serializer.js +1 -1
  188. package/dist/serializer/comment/metadata-comment-serializer.js +1 -1
  189. package/dist/serializer/comment/pre-processor-comment-serializer.js +1 -1
  190. package/dist/serializer/comment/simple-comment-serializer.js +1 -1
  191. package/dist/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +1 -1
  192. package/dist/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +1 -1
  193. package/dist/serializer/cosmetic/body/scriptlet-body-serializer.js +1 -1
  194. package/dist/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +1 -1
  195. package/dist/serializer/cosmetic/cosmetic-rule-serializer.js +1 -1
  196. package/dist/serializer/cosmetic/css-injection-body-serializer.js +1 -1
  197. package/dist/serializer/cosmetic/element-hiding-body-serializer.js +1 -1
  198. package/dist/serializer/empty-rule-serializer.js +1 -1
  199. package/dist/serializer/filterlist-serializer.js +1 -1
  200. package/dist/serializer/index.js +1 -1
  201. package/dist/serializer/invalid-rule-error-node-serializer.js +1 -1
  202. package/dist/serializer/invalid-rule-serializer.js +1 -1
  203. package/dist/serializer/misc/domain-list-serializer.js +1 -1
  204. package/dist/serializer/misc/list-item-serializer.js +1 -1
  205. package/dist/serializer/misc/list-items-serializer.js +1 -1
  206. package/dist/serializer/misc/logical-expression-serializer.js +1 -1
  207. package/dist/serializer/misc/modifier-list-serializer.js +1 -1
  208. package/dist/serializer/misc/modifier-serializer.js +1 -1
  209. package/dist/serializer/misc/parameter-list-serializer.js +1 -1
  210. package/dist/serializer/misc/value-serializer.js +1 -1
  211. package/dist/serializer/network/host-rule-serializer.js +1 -1
  212. package/dist/serializer/network/hostname-list-serializer.js +1 -1
  213. package/dist/serializer/network/network-rule-serializer.js +1 -1
  214. package/dist/serializer/rule-serializer.js +1 -1
  215. package/dist/types/ast-utils/clone.d.ts +1 -1
  216. package/dist/types/ast-utils/filter-list.d.ts +1 -1
  217. package/dist/types/ast-utils/modifiers.d.ts +1 -1
  218. package/dist/types/ast-utils/network-rules.d.ts +2 -2
  219. package/dist/types/ast-utils/scriptlets.d.ts +2 -2
  220. package/dist/types/common/agent-common.d.ts +1 -1
  221. package/dist/types/compatibility-tables/base.d.ts +4 -4
  222. package/dist/types/compatibility-tables/compatibility-table-data.d.ts +1 -1
  223. package/dist/types/compatibility-tables/index.d.ts +10 -10
  224. package/dist/types/compatibility-tables/modifiers.d.ts +3 -3
  225. package/dist/types/compatibility-tables/redirects.d.ts +4 -4
  226. package/dist/types/compatibility-tables/schemas/index.d.ts +5 -5
  227. package/dist/types/compatibility-tables/scriptlets.d.ts +2 -2
  228. package/dist/types/compatibility-tables/utils/platform-helpers.d.ts +1 -1
  229. package/dist/types/compatibility-tables/utils/resource-type-helpers.d.ts +2 -2
  230. package/dist/types/converter/base-interfaces/base-converter.d.ts +1 -1
  231. package/dist/types/converter/base-interfaces/conversion-result.d.ts +1 -1
  232. package/dist/types/converter/base-interfaces/rule-converter-base.d.ts +3 -3
  233. package/dist/types/converter/comment/index.d.ts +3 -3
  234. package/dist/types/converter/cosmetic/css.d.ts +3 -3
  235. package/dist/types/converter/cosmetic/element-hiding.d.ts +3 -3
  236. package/dist/types/converter/cosmetic/header-removal.d.ts +3 -3
  237. package/dist/types/converter/cosmetic/html.d.ts +18 -3
  238. package/dist/types/converter/cosmetic/index.d.ts +3 -3
  239. package/dist/types/converter/cosmetic/rule-modifiers/adg.d.ts +2 -2
  240. package/dist/types/converter/cosmetic/rule-modifiers/ubo.d.ts +2 -2
  241. package/dist/types/converter/cosmetic/scriptlet.d.ts +3 -3
  242. package/dist/types/converter/css/index.d.ts +3 -3
  243. package/dist/types/converter/filter-list.d.ts +3 -3
  244. package/dist/types/converter/index.d.ts +4 -4
  245. package/dist/types/converter/misc/network-rule-modifier.d.ts +3 -3
  246. package/dist/types/converter/network/index.d.ts +3 -3
  247. package/dist/types/converter/raw-filter-list.d.ts +2 -2
  248. package/dist/types/converter/raw-rule.d.ts +2 -2
  249. package/dist/types/converter/rule.d.ts +3 -3
  250. package/dist/types/deserializer/base-deserializer.d.ts +2 -2
  251. package/dist/types/deserializer/comment/agent-comment-deserializer.d.ts +3 -3
  252. package/dist/types/deserializer/comment/agent-deserializer.d.ts +3 -3
  253. package/dist/types/deserializer/comment/comment-rule-deserializer.d.ts +3 -3
  254. package/dist/types/deserializer/comment/config-comment-deserializer.d.ts +3 -3
  255. package/dist/types/deserializer/comment/hint-comment-deserializer.d.ts +3 -3
  256. package/dist/types/deserializer/comment/hint-deserializer.d.ts +3 -3
  257. package/dist/types/deserializer/comment/metadata-comment-deserializer.d.ts +3 -3
  258. package/dist/types/deserializer/comment/pre-processor-comment-deserializer.d.ts +3 -3
  259. package/dist/types/deserializer/comment/simple-comment-deserializer.d.ts +3 -3
  260. package/dist/types/deserializer/cosmetic/cosmetic-rule-deserializer.d.ts +3 -3
  261. package/dist/types/deserializer/cosmetic/css-injection-body-deserializer.d.ts +3 -3
  262. package/dist/types/deserializer/cosmetic/element-hiding-body-deserializer.d.ts +3 -3
  263. package/dist/types/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.d.ts +3 -3
  264. package/dist/types/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.d.ts +3 -3
  265. package/dist/types/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.d.ts +3 -3
  266. package/dist/types/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.d.ts +3 -3
  267. package/dist/types/deserializer/empty-rule-deserializer.d.ts +3 -3
  268. package/dist/types/deserializer/filterlist-deserializer.d.ts +3 -3
  269. package/dist/types/deserializer/index.d.ts +2 -2
  270. package/dist/types/deserializer/invalid-rule-deserializer.d.ts +3 -3
  271. package/dist/types/deserializer/invalid-rule-error-node-deserializer.d.ts +3 -3
  272. package/dist/types/deserializer/misc/domain-list-deserializer.d.ts +3 -3
  273. package/dist/types/deserializer/misc/list-item-deserializer.d.ts +3 -3
  274. package/dist/types/deserializer/misc/list-items-deserializer.d.ts +2 -2
  275. package/dist/types/deserializer/misc/logical-expression-deserializer.d.ts +3 -3
  276. package/dist/types/deserializer/misc/modifier-deserializer.d.ts +3 -3
  277. package/dist/types/deserializer/misc/modifier-list-deserializer.d.ts +3 -3
  278. package/dist/types/deserializer/misc/parameter-list-deserializer.d.ts +3 -3
  279. package/dist/types/deserializer/misc/value-deserializer.d.ts +3 -3
  280. package/dist/types/deserializer/network/host-rule-deserializer.d.ts +3 -3
  281. package/dist/types/deserializer/network/hostname-list-deserializer.d.ts +3 -3
  282. package/dist/types/deserializer/network/network-rule-deserializer.d.ts +3 -3
  283. package/dist/types/deserializer/rule-deserializer.d.ts +3 -3
  284. package/dist/types/deserializer/syntax-deserialization-map.d.ts +1 -1
  285. package/dist/types/generator/base-generator.d.ts +1 -1
  286. package/dist/types/generator/comment/agent-comment-generator.d.ts +2 -2
  287. package/dist/types/generator/comment/agent-generator.d.ts +2 -2
  288. package/dist/types/generator/comment/comment-rule-generator.d.ts +2 -2
  289. package/dist/types/generator/comment/config-comment-generator.d.ts +2 -2
  290. package/dist/types/generator/comment/hint-comment-generator.d.ts +2 -2
  291. package/dist/types/generator/comment/hint-generator.d.ts +2 -2
  292. package/dist/types/generator/comment/index.d.ts +1 -1
  293. package/dist/types/generator/comment/metadata-comment-generator.d.ts +2 -2
  294. package/dist/types/generator/comment/pre-processor-comment-generator.d.ts +2 -2
  295. package/dist/types/generator/comment/simple-comment-generator.d.ts +2 -2
  296. package/dist/types/generator/cosmetic/body/abp-snippet-injection-body-generator.d.ts +2 -2
  297. package/dist/types/generator/cosmetic/body/adg-scriptlet-injection-body-generator.d.ts +2 -2
  298. package/dist/types/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.d.ts +2 -2
  299. package/dist/types/generator/cosmetic/cosmetic-rule-body-generator.d.ts +2 -2
  300. package/dist/types/generator/cosmetic/cosmetic-rule-generator.d.ts +2 -2
  301. package/dist/types/generator/cosmetic/cosmetic-rule-pattern-generator.d.ts +2 -2
  302. package/dist/types/generator/cosmetic/index.d.ts +1 -1
  303. package/dist/types/generator/css/adg-css-injection-generator.d.ts +2 -2
  304. package/dist/types/generator/css/ubo-selector-generator.d.ts +2 -2
  305. package/dist/types/generator/filterlist-generator.d.ts +2 -2
  306. package/dist/types/generator/index.d.ts +4 -4
  307. package/dist/types/generator/misc/domain-list-generator.d.ts +2 -2
  308. package/dist/types/generator/misc/list-items-generator.d.ts +1 -1
  309. package/dist/types/generator/misc/logical-expression-generator.d.ts +2 -2
  310. package/dist/types/generator/misc/modifier-generator.d.ts +2 -2
  311. package/dist/types/generator/misc/modifier-list-generator.d.ts +2 -2
  312. package/dist/types/generator/misc/parameter-list-generator.d.ts +2 -2
  313. package/dist/types/generator/misc/value-generator.d.ts +2 -2
  314. package/dist/types/generator/network/host-rule-generator.d.ts +2 -2
  315. package/dist/types/generator/network/index.d.ts +2 -2
  316. package/dist/types/generator/network/network-rule-generator.d.ts +2 -2
  317. package/dist/types/generator/rule-generator.d.ts +2 -2
  318. package/dist/types/index.d.ts +52 -52
  319. package/dist/types/marshalling-utils/misc/logical-expression-common.d.ts +1 -1
  320. package/dist/types/marshalling-utils/syntax-serialization-map.d.ts +1 -1
  321. package/dist/types/nodes/index.d.ts +2 -2
  322. package/dist/types/parser/base-parser.d.ts +2 -2
  323. package/dist/types/parser/comment/agent-comment-parser.d.ts +3 -3
  324. package/dist/types/parser/comment/agent-parser.d.ts +3 -3
  325. package/dist/types/parser/comment/comment-parser.d.ts +3 -3
  326. package/dist/types/parser/comment/config-comment-parser.d.ts +3 -3
  327. package/dist/types/parser/comment/hint-comment-parser.d.ts +3 -3
  328. package/dist/types/parser/comment/hint-parser.d.ts +3 -3
  329. package/dist/types/parser/comment/metadata-comment-parser.d.ts +3 -3
  330. package/dist/types/parser/comment/preprocessor-parser.d.ts +3 -3
  331. package/dist/types/parser/comment/simple-comment-parser.d.ts +3 -3
  332. package/dist/types/parser/cosmetic/body/abp-snippet-injection-body-parser.d.ts +3 -3
  333. package/dist/types/parser/cosmetic/body/adg-scriptlet-injection-body-parser.d.ts +3 -3
  334. package/dist/types/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.d.ts +3 -3
  335. package/dist/types/parser/cosmetic/cosmetic-rule-parser.d.ts +3 -3
  336. package/dist/types/parser/css/adg-css-injection-parser.d.ts +3 -3
  337. package/dist/types/parser/css/ubo-selector-parser.d.ts +3 -3
  338. package/dist/types/parser/filterlist-parser.d.ts +3 -3
  339. package/dist/types/parser/index.d.ts +6 -6
  340. package/dist/types/parser/misc/app-list-parser.d.ts +3 -3
  341. package/dist/types/parser/misc/domain-list-parser.d.ts +3 -3
  342. package/dist/types/parser/misc/list-items-parser.d.ts +2 -2
  343. package/dist/types/parser/misc/logical-expression-parser.d.ts +3 -3
  344. package/dist/types/parser/misc/method-list-parser.d.ts +3 -3
  345. package/dist/types/parser/misc/modifier-list.d.ts +3 -3
  346. package/dist/types/parser/misc/modifier-parser.d.ts +3 -3
  347. package/dist/types/parser/misc/parameter-list-parser.d.ts +3 -3
  348. package/dist/types/parser/misc/stealth-option-list-parser.d.ts +3 -3
  349. package/dist/types/parser/misc/ubo-parameter-list-parser.d.ts +3 -3
  350. package/dist/types/parser/misc/value-parser.d.ts +3 -3
  351. package/dist/types/parser/network/host-rule-parser.d.ts +3 -3
  352. package/dist/types/parser/network/network-rule-parser.d.ts +3 -3
  353. package/dist/types/parser/rule-parser.d.ts +3 -3
  354. package/dist/types/serializer/base-serializer.d.ts +2 -2
  355. package/dist/types/serializer/comment/agent-comment-serializer.d.ts +3 -3
  356. package/dist/types/serializer/comment/agent-serializer.d.ts +3 -3
  357. package/dist/types/serializer/comment/comment-rule-serializer.d.ts +3 -3
  358. package/dist/types/serializer/comment/config-comment-serializer.d.ts +3 -3
  359. package/dist/types/serializer/comment/hint-comment-serializer.d.ts +3 -3
  360. package/dist/types/serializer/comment/hint-serializer.d.ts +3 -3
  361. package/dist/types/serializer/comment/metadata-comment-serializer.d.ts +3 -3
  362. package/dist/types/serializer/comment/pre-processor-comment-serializer.d.ts +3 -3
  363. package/dist/types/serializer/comment/simple-comment-serializer.d.ts +3 -3
  364. package/dist/types/serializer/cosmetic/body/abp-snippet-injection-body-serializer.d.ts +3 -3
  365. package/dist/types/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.d.ts +3 -3
  366. package/dist/types/serializer/cosmetic/body/scriptlet-body-serializer.d.ts +3 -3
  367. package/dist/types/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.d.ts +3 -3
  368. package/dist/types/serializer/cosmetic/cosmetic-rule-serializer.d.ts +3 -3
  369. package/dist/types/serializer/cosmetic/css-injection-body-serializer.d.ts +3 -3
  370. package/dist/types/serializer/cosmetic/element-hiding-body-serializer.d.ts +3 -3
  371. package/dist/types/serializer/empty-rule-serializer.d.ts +3 -3
  372. package/dist/types/serializer/filterlist-serializer.d.ts +3 -3
  373. package/dist/types/serializer/index.d.ts +1 -1
  374. package/dist/types/serializer/invalid-rule-error-node-serializer.d.ts +3 -3
  375. package/dist/types/serializer/invalid-rule-serializer.d.ts +3 -3
  376. package/dist/types/serializer/misc/domain-list-serializer.d.ts +3 -3
  377. package/dist/types/serializer/misc/list-item-serializer.d.ts +3 -3
  378. package/dist/types/serializer/misc/list-items-serializer.d.ts +2 -2
  379. package/dist/types/serializer/misc/logical-expression-serializer.d.ts +3 -3
  380. package/dist/types/serializer/misc/modifier-list-serializer.d.ts +3 -3
  381. package/dist/types/serializer/misc/modifier-serializer.d.ts +3 -3
  382. package/dist/types/serializer/misc/parameter-list-serializer.d.ts +3 -3
  383. package/dist/types/serializer/misc/value-serializer.d.ts +3 -3
  384. package/dist/types/serializer/network/host-rule-serializer.d.ts +3 -3
  385. package/dist/types/serializer/network/hostname-list-serializer.d.ts +3 -3
  386. package/dist/types/serializer/network/network-rule-serializer.d.ts +3 -3
  387. package/dist/types/serializer/rule-serializer.d.ts +3 -3
  388. package/dist/types/utils/categorizer.d.ts +1 -1
  389. package/dist/types/utils/cosmetic-rule-separator.d.ts +1 -1
  390. package/dist/types/utils/index.d.ts +15 -15
  391. package/dist/types/utils/input-byte-buffer.d.ts +2 -2
  392. package/dist/types/utils/logical-expression.d.ts +1 -1
  393. package/dist/types/utils/output-byte-buffer.d.ts +2 -2
  394. package/dist/types/validator/index.d.ts +3 -3
  395. package/dist/types/validator/value.d.ts +2 -2
  396. package/dist/utils/adblockers.js +1 -1
  397. package/dist/utils/binary-schema-version.js +1 -1
  398. package/dist/utils/byte-buffer.js +1 -1
  399. package/dist/utils/categorizer.js +1 -1
  400. package/dist/utils/clone.js +1 -1
  401. package/dist/utils/constants.js +5 -2
  402. package/dist/utils/cosmetic-rule-separator.js +1 -1
  403. package/dist/utils/deep-freeze.js +1 -1
  404. package/dist/utils/domain.js +1 -1
  405. package/dist/utils/error.js +1 -1
  406. package/dist/utils/index.js +1 -1
  407. package/dist/utils/input-byte-buffer.js +1 -1
  408. package/dist/utils/is-chromium.js +1 -1
  409. package/dist/utils/logical-expression.js +1 -1
  410. package/dist/utils/multi-value-map.js +1 -1
  411. package/dist/utils/output-byte-buffer.js +1 -1
  412. package/dist/utils/position-provider.js +1 -1
  413. package/dist/utils/quotes.js +1 -1
  414. package/dist/utils/regexp.js +1 -1
  415. package/dist/utils/string.js +1 -1
  416. package/dist/utils/text-decoder-polyfill.js +1 -1
  417. package/dist/utils/text-encoder-polyfill.js +1 -1
  418. package/dist/utils/type-guards.js +1 -1
  419. package/dist/validator/constants.js +1 -1
  420. package/dist/validator/helpers.js +1 -1
  421. package/dist/validator/index.js +1 -1
  422. package/dist/validator/value.js +1 -1
  423. package/dist/version.js +1 -1
  424. package/package.json +9 -8
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -14,8 +14,12 @@ import { RegExpUtils } from '../../utils/regexp.js';
14
14
  import { createNodeConversionResult } from '../base-interfaces/conversion-result.js';
15
15
  import { cloneDomainListNode } from '../../ast-utils/clone.js';
16
16
  import { CssTokenStream } from '../../parser/css/css-token-stream.js';
17
- import { UBO_HTML_MASK, EQUALS, EMPTY, ESCAPE_CHARACTER, OPEN_SQUARE_BRACKET, CLOSE_SQUARE_BRACKET } from '../../utils/constants.js';
17
+ import { UBO_HTML_MASK, EQUALS, EMPTY, ESCAPE_CHARACTER, CSS_PSEUDO_MARKER, CSS_PSEUDO_OPEN, CSS_PSEUDO_CLOSE, OPEN_SQUARE_BRACKET, CLOSE_SQUARE_BRACKET } from '../../utils/constants.js';
18
18
  import { StringUtils, DOUBLE_QUOTE_MARKER } from '../../utils/string.js';
19
+ import 'tldts';
20
+ import { QuoteUtils } from '../../utils/quotes.js';
21
+ import 'json5';
22
+ import '../../parser/css/balancing.js';
19
23
 
20
24
  /**
21
25
  * @file HTML filtering rule converter
@@ -37,6 +41,16 @@ const PseudoClasses = {
37
41
  HasText: 'has-text',
38
42
  MinTextLength: 'min-text-length',
39
43
  };
44
+ /**
45
+ * Constructs a pseudo-class string with a specified value for use in CSS selectors.
46
+ *
47
+ * @param pseudo - The pseudo-class name.
48
+ * @param value - The value of the pseudo-class.
49
+ * @returns pseudo-class string, including pseudo-class name, value and delimiters.
50
+ */
51
+ const addPseudoClassWithValue = (pseudo, value) => {
52
+ return `${CSS_PSEUDO_MARKER}${pseudo}${CSS_PSEUDO_OPEN}${value}${CSS_PSEUDO_CLOSE}`;
53
+ };
40
54
  const AttributeSelectors = {
41
55
  MaxLength: 'max-length',
42
56
  MinLength: 'min-length',
@@ -59,6 +73,7 @@ const ERROR_MESSAGES = {
59
73
  REGEXP_NOT_SUPPORTED: "Cannot convert RegExp parameter '%s' from '%s' pseudo class, because converting RegExp patterns are not supported yet",
60
74
  ATTRIBUTE_SELECTOR_REQUIRES_VALUE: "Attribute selector '%s' requires a value",
61
75
  VALUE_SHOULD_BE_SPECIFIED: 'Value should be specified if operator is specified',
76
+ VALUE_SHOULD_BE_POSITIVE: 'Value should be positive',
62
77
  UNEXPECTED_TOKEN_WITH_VALUE: "Unexpected token '%s' with value '%s'",
63
78
  FLAGS_NOT_SUPPORTED: 'Flags are not supported for attribute selectors',
64
79
  };
@@ -94,6 +109,25 @@ function escapeDoubleQuotes(selector) {
94
109
  }
95
110
  return buffer.join(EMPTY);
96
111
  }
112
+ /**
113
+ * Safely parses length values from attribute selectors, like `"262144"` from `[max-length="262144"]`
114
+ *
115
+ * @param value The string value to parse
116
+ * @param attrName The attribute name for error messages
117
+ * @returns Parsed number
118
+ * @throws A {@link RuleConversionError} if parsing fails
119
+ */
120
+ function parseLengthValue(value, attrName) {
121
+ const cleanValue = QuoteUtils.removeQuotes(value);
122
+ const parsed = Number(cleanValue);
123
+ if (Number.isNaN(parsed)) {
124
+ throw new RuleConversionError(sprintf(ERROR_MESSAGES.VALUE_FOR_ATTR_SHOULD_BE_INT, attrName, value));
125
+ }
126
+ if (parsed < 0) {
127
+ throw new RuleConversionError(sprintf(ERROR_MESSAGES.VALUE_SHOULD_BE_POSITIVE, attrName, value));
128
+ }
129
+ return parsed;
130
+ }
97
131
  /**
98
132
  * Convert escaped double quotes `\"` to `""` within strings.
99
133
  *
@@ -367,6 +401,132 @@ class HtmlRuleConverter extends RuleConverterBase {
367
401
  },
368
402
  })), true);
369
403
  }
404
+ /**
405
+ * Converts a HTML rule to uBlock Origin syntax, if possible.
406
+ *
407
+ * @note AdGuard rules are often more specific than uBlock Origin rules, so some information
408
+ * may be lost in conversion. AdGuard's `[max-length]` and `[tag-content]` attributes will be converted to
409
+ * uBlock's `:min-text-length()` and `:has-text()` pseudo-classes when possible.
410
+ *
411
+ * @param rule Rule node to convert
412
+ * @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
413
+ * the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
414
+ * If the rule was not converted, the result array will contain the original node with the same object reference
415
+ * @throws Error if the rule is invalid or cannot be converted
416
+ */
417
+ static convertToUbo(rule) {
418
+ // Ignore uBlock Origin rules
419
+ if (rule.syntax === AdblockSyntax.Ubo) {
420
+ return createNodeConversionResult([rule], false);
421
+ }
422
+ if (rule.syntax === AdblockSyntax.Abp) {
423
+ throw new RuleConversionError(ERROR_MESSAGES.ABP_NOT_SUPPORTED);
424
+ }
425
+ const source = escapeDoubleQuotes(rule.body.value);
426
+ const stream = new CssTokenStream(source);
427
+ const convertedSelector = [];
428
+ let minTextLength;
429
+ // Skip leading whitespace
430
+ stream.skipWhitespace();
431
+ while (!stream.isEof()) {
432
+ const token = stream.getOrFail();
433
+ if (token.type === TokenType.Ident) {
434
+ convertedSelector.push(source.slice(token.start, token.end));
435
+ stream.advance();
436
+ }
437
+ else if (token.type === TokenType.OpenSquareBracket) {
438
+ // Attribute selectors
439
+ const { start } = token;
440
+ let tempToken;
441
+ // Advance opening square bracket
442
+ stream.advance();
443
+ // Skip optional whitespace
444
+ stream.skipWhitespace();
445
+ // Parse attribute name
446
+ tempToken = stream.getOrFail();
447
+ if (tempToken.type !== TokenType.Ident) {
448
+ throw new RuleConversionError(sprintf(ERROR_MESSAGES.INVALID_ATTRIBUTE_NAME, getFormattedTokenName(tempToken.type), source.slice(tempToken.start, tempToken.end)));
449
+ }
450
+ const attr = source.slice(tempToken.start, tempToken.end);
451
+ stream.advance();
452
+ // Skip optional whitespace
453
+ stream.skipWhitespace();
454
+ // Check if this is a standalone attribute (like [disabled])
455
+ tempToken = stream.getOrFail();
456
+ if (tempToken.type === TokenType.CloseSquareBracket) {
457
+ const { end } = tempToken;
458
+ stream.advance();
459
+ convertedSelector.push(source.slice(start, end));
460
+ continue;
461
+ }
462
+ // Expect equals operator
463
+ stream.expect(TokenType.Delim, { value: EQUALS });
464
+ stream.advance();
465
+ // Skip optional whitespace
466
+ stream.skipWhitespace();
467
+ // Parse attribute value
468
+ tempToken = stream.getOrFail();
469
+ if (tempToken.type !== TokenType.Ident && tempToken.type !== TokenType.String) {
470
+ throw new RuleConversionError(sprintf(ERROR_MESSAGES.INVALID_ATTRIBUTE_VALUE, getFormattedTokenName(tempToken.type), source.slice(tempToken.start, tempToken.end)));
471
+ }
472
+ const value = source.slice(tempToken.start, tempToken.end);
473
+ stream.advance();
474
+ // Skip optional whitespace
475
+ stream.skipWhitespace();
476
+ // Check for closing bracket
477
+ tempToken = stream.getOrFail();
478
+ if (tempToken.type !== TokenType.CloseSquareBracket) {
479
+ throw new RuleConversionError(sprintf(ERROR_MESSAGES.FLAGS_NOT_SUPPORTED));
480
+ }
481
+ const { end } = stream.getOrFail();
482
+ stream.advance();
483
+ // Handle special attributes with improved number parsing
484
+ if (attr === AttributeSelectors.MinLength || attr === AttributeSelectors.MaxLength) {
485
+ const parsedValue = parseLengthValue(value, attr);
486
+ if (attr === AttributeSelectors.MinLength) {
487
+ minTextLength = parsedValue;
488
+ }
489
+ }
490
+ else if (attr === AttributeSelectors.TagContent) {
491
+ const unescapedValue = unescapeDoubleQuotes(value);
492
+ const valueWithoutQuotes = QuoteUtils.removeQuotes(unescapedValue);
493
+ convertedSelector.push(addPseudoClassWithValue(PseudoClasses.HasText, valueWithoutQuotes));
494
+ }
495
+ else {
496
+ convertedSelector.push(source.slice(start, end));
497
+ }
498
+ }
499
+ else if (token.type === TokenType.Whitespace) {
500
+ stream.advance();
501
+ }
502
+ else {
503
+ throw new RuleConversionError(sprintf(ERROR_MESSAGES.UNEXPECTED_TOKEN_WITH_VALUE, getFormattedTokenName(token.type), source.slice(token.start, token.end)));
504
+ }
505
+ }
506
+ // Handle min length conversions
507
+ if (minTextLength !== undefined) {
508
+ convertedSelector.push(addPseudoClassWithValue(PseudoClasses.MinTextLength, minTextLength));
509
+ }
510
+ // Combine all selectors
511
+ const uboSelector = `${convertedSelector.join(EMPTY)}`;
512
+ return createNodeConversionResult([{
513
+ category: RuleCategory.Cosmetic,
514
+ type: CosmeticRuleType.HtmlFilteringRule,
515
+ syntax: AdblockSyntax.Ubo,
516
+ exception: rule.exception,
517
+ domains: cloneDomainListNode(rule.domains),
518
+ separator: {
519
+ type: 'Value',
520
+ value: rule.exception
521
+ ? `${CosmeticRuleSeparator.ElementHidingException}${UBO_HTML_MASK}`
522
+ : `${CosmeticRuleSeparator.ElementHiding}${UBO_HTML_MASK}`,
523
+ },
524
+ body: {
525
+ type: 'Value',
526
+ value: unescapeDoubleQuotes(uboSelector),
527
+ },
528
+ }], true);
529
+ }
370
530
  }
371
531
 
372
532
  export { ERROR_MESSAGES, HtmlRuleConverter };
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -110,27 +110,29 @@ class CosmeticRuleConverter extends RuleConverterBase {
110
110
  * If the rule was not converted, the result array will contain the original node with the same object reference
111
111
  * @throws If the rule is invalid or cannot be converted
112
112
  */
113
- // TODO: Add support for other cosmetic rule types
114
113
  static convertToUbo(rule) {
115
114
  // Skip conversation if the rule is already in uBO format
116
115
  if (rule.syntax === AdblockSyntax.Ubo) {
117
116
  return createNodeConversionResult([rule], false);
118
117
  }
119
- // Check if the rule is a simple hiding rule
120
- // TODO: Handle elemhide rules with extended CSS pseudos even if type is not marked explicitly
121
- if (rule.type === CosmeticRuleType.ElementHidingRule
122
- && (rule.separator.value === CosmeticRuleSeparator.ElementHidingException
123
- || rule.separator.value === CosmeticRuleSeparator.ElementHiding)
124
- && !rule.modifiers) {
125
- return createNodeConversionResult([rule], false);
126
- }
127
- // Convert cosmetic rule based on its type
128
- if (rule.type === CosmeticRuleType.ScriptletInjectionRule) {
129
- if (rule.syntax === AdblockSyntax.Adg && rule.modifiers?.children.length) {
130
- // e.g. example.com##+js(set-constant.js, foo, bar):matches-path(/baz)
131
- throw new RuleConversionError('uBO scriptlet injection rules do not support cosmetic rule modifiers');
118
+ // TODO: Add support for other cosmetic rule types
119
+ switch (rule.type) {
120
+ case CosmeticRuleType.HtmlFilteringRule:
121
+ return HtmlRuleConverter.convertToUbo(rule);
122
+ case CosmeticRuleType.ElementHidingRule: {
123
+ // Check if the rule is a simple hiding rule
124
+ // TODO: Handle elemhide rules with extended CSS pseudos even if type is not marked explicitly
125
+ const isElementHidingRule = (rule.separator.value === CosmeticRuleSeparator.ElementHidingException
126
+ || rule.separator.value === CosmeticRuleSeparator.ElementHiding);
127
+ if (isElementHidingRule && !rule.modifiers) {
128
+ return createNodeConversionResult([rule], false);
129
+ }
130
+ break;
132
131
  }
133
- return ScriptletRuleConverter.convertToUbo(rule);
132
+ case CosmeticRuleType.ScriptletInjectionRule:
133
+ return ScriptletRuleConverter.convertToUbo(rule);
134
+ case CosmeticRuleType.JsInjectionRule:
135
+ throw new RuleConversionError('uBO does not support JS injection rules');
134
136
  }
135
137
  let convertedModifiers;
136
138
  // Convert cosmetic rule modifiers, if any
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -8,7 +8,7 @@ import { CosmeticRuleSeparator } from '../../nodes/index.js';
8
8
  import { RuleConverterBase } from '../base-interfaces/rule-converter-base.js';
9
9
  import { AdblockSyntax } from '../../utils/adblockers.js';
10
10
  import { QuoteUtils, QuoteType } from '../../utils/quotes.js';
11
- import { EMPTY, SPACE } from '../../utils/constants.js';
11
+ import { EMPTY, ADG_DOMAINS_MODIFIER, PIPE_MODIFIER_SEPARATOR, SPACE } from '../../utils/constants.js';
12
12
  import { getScriptletName, setScriptletName, transformAllScriptletArguments, setScriptletQuoteType, transformNthScriptletArgument } from '../../ast-utils/scriptlets.js';
13
13
  import { RuleConversionError } from '../../errors/rule-conversion-error.js';
14
14
  import { createNodeConversionResult } from '../base-interfaces/conversion-result.js';
@@ -26,6 +26,14 @@ import '../../compatibility-tables/utils/platform-helpers.js';
26
26
  import '../../compatibility-tables/schemas/resource-type.js';
27
27
  import '../../compatibility-tables/utils/resource-type-helpers.js';
28
28
  import { isUndefined, isNull } from '../../utils/type-guards.js';
29
+ import 'json5';
30
+ import 'sprintf-js';
31
+ import '@adguard/css-tokenizer';
32
+ import { DomainListParser } from '../../parser/misc/domain-list-parser.js';
33
+ import '../../parser/css/balancing.js';
34
+ import '../data/css.js';
35
+ import 'tldts';
36
+ import 'is-ip';
29
37
 
30
38
  /**
31
39
  * @file Scriptlet injection rule converter
@@ -229,6 +237,35 @@ class ScriptletRuleConverter extends RuleConverterBase {
229
237
  if (rule.syntax === AdblockSyntax.Ubo) {
230
238
  return createNodeConversionResult([rule], false);
231
239
  }
240
+ let ruleDomainsList = cloneDomainListNode(rule.domains);
241
+ if (rule.syntax === AdblockSyntax.Adg && rule.modifiers?.children.length) {
242
+ const { modifiers } = rule;
243
+ // Validate modifiers structure
244
+ if (!modifiers || !modifiers.children || modifiers.children.length === 0) {
245
+ throw new RuleConversionError('Invalid modifiers in AdGuard rule.');
246
+ }
247
+ // Check for single domain modifier
248
+ const [domainModifier] = modifiers.children;
249
+ const hasSingleDomainModifier = (modifiers.children.length === 1
250
+ && domainModifier.name?.value === ADG_DOMAINS_MODIFIER
251
+ && domainModifier.value?.value);
252
+ if (!hasSingleDomainModifier) {
253
+ throw new RuleConversionError('uBlock Origin scriptlet injection rules do not support cosmetic rule modifiers.');
254
+ }
255
+ // Validate domain modifier
256
+ if (!domainModifier.value?.value) {
257
+ throw new RuleConversionError('Invalid domain modifier in AdGuard rule.');
258
+ }
259
+ // Parse domain list
260
+ const parsedDomainList = DomainListParser.parse(domainModifier.value.value, {}, domainModifier.start, PIPE_MODIFIER_SEPARATOR);
261
+ // Merge domain lists
262
+ if (ruleDomainsList) {
263
+ ruleDomainsList.children.push(...parsedDomainList.children);
264
+ }
265
+ else {
266
+ ruleDomainsList = parsedDomainList;
267
+ }
268
+ }
232
269
  const separator = rule.separator.value;
233
270
  let convertedSeparator = separator;
234
271
  convertedSeparator = rule.exception
@@ -337,7 +374,7 @@ class ScriptletRuleConverter extends RuleConverterBase {
337
374
  type: rule.type,
338
375
  syntax: AdblockSyntax.Ubo,
339
376
  exception: rule.exception,
340
- domains: cloneDomainListNode(rule.domains),
377
+ domains: ruleDomainsList,
341
378
  separator: {
342
379
  type: 'Value',
343
380
  value: convertedSeparator,
@@ -347,9 +384,6 @@ class ScriptletRuleConverter extends RuleConverterBase {
347
384
  children: [scriptlet],
348
385
  },
349
386
  };
350
- if (rule.modifiers) {
351
- res.modifiers = cloneModifierListNode(rule.modifiers);
352
- }
353
387
  return res;
354
388
  }), true);
355
389
  }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
@@ -1,5 +1,5 @@
1
1
  /*
2
- * AGTree v3.1.5 (build date: Wed, 21 May 2025 00:20:27 GMT)
2
+ * AGTree v3.2.1 (build date: Wed, 28 May 2025 13:36:39 GMT)
3
3
  * (c) 2025 Adguard Software Ltd.
4
4
  * Released under the MIT license
5
5
  * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme