@adguard/agtree 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (628) hide show
  1. package/README.md +1 -1
  2. package/dist/{esm/ast-utils/clone.mjs → ast-utils/clone.js} +3 -3
  3. package/dist/{esm/ast-utils/modifiers.mjs → ast-utils/modifiers.js} +4 -4
  4. package/dist/{esm/ast-utils/network-rules.mjs → ast-utils/network-rules.js} +6 -6
  5. package/dist/{esm/ast-utils/scriptlets.mjs → ast-utils/scriptlets.js} +5 -5
  6. package/dist/{esm/common/abp-snippet-injection-body-common.mjs → common/abp-snippet-injection-body-common.js} +9 -2
  7. package/dist/{esm/common/agent-common.mjs → common/agent-common.js} +3 -3
  8. package/dist/common/ubo-selector-common.js +17 -0
  9. package/dist/{esm/compatibility-tables/base.mjs → compatibility-tables/base.js} +6 -6
  10. package/dist/{esm/compatibility-tables/compatibility-table-data.mjs → compatibility-tables/compatibility-table-data.js} +3 -3
  11. package/dist/{esm/compatibility-tables/modifiers.mjs → compatibility-tables/modifiers.js} +6 -6
  12. package/dist/compatibility-tables/platforms.js +76 -0
  13. package/dist/{esm/compatibility-tables/redirects.mjs → compatibility-tables/redirects.js} +8 -8
  14. package/dist/{esm/compatibility-tables/schemas/base.mjs → compatibility-tables/schemas/base.js} +4 -4
  15. package/dist/{esm/compatibility-tables/schemas/modifier.mjs → compatibility-tables/schemas/modifier.js} +31 -7
  16. package/dist/{esm/compatibility-tables/schemas/platform.mjs → compatibility-tables/schemas/platform.js} +4 -4
  17. package/dist/{esm/compatibility-tables/schemas/redirect.mjs → compatibility-tables/schemas/redirect.js} +5 -5
  18. package/dist/compatibility-tables/schemas/resource-type.js +36 -0
  19. package/dist/{esm/compatibility-tables/schemas/scriptlet.mjs → compatibility-tables/schemas/scriptlet.js} +4 -4
  20. package/dist/{esm/compatibility-tables/scriptlets.mjs → compatibility-tables/scriptlets.js} +5 -5
  21. package/dist/{esm/compatibility-tables/utils/platform-helpers.mjs → compatibility-tables/utils/platform-helpers.js} +3 -3
  22. package/dist/{esm/compatibility-tables/utils/resource-type-helpers.mjs → compatibility-tables/utils/resource-type-helpers.js} +5 -5
  23. package/dist/{esm/compatibility-tables/utils/zod-camelcase.mjs → compatibility-tables/utils/zod-camelcase.js} +2 -2
  24. package/dist/{esm/converter/base-interfaces/base-converter.mjs → converter/base-interfaces/base-converter.js} +3 -3
  25. package/dist/{esm/converter/base-interfaces/conversion-result.mjs → converter/base-interfaces/conversion-result.js} +2 -2
  26. package/dist/{esm/converter/base-interfaces/rule-converter-base.mjs → converter/base-interfaces/rule-converter-base.js} +4 -4
  27. package/dist/{esm/converter/comment/index.mjs → converter/comment/index.js} +7 -7
  28. package/dist/{esm/converter/cosmetic/css.mjs → converter/cosmetic/css.js} +9 -9
  29. package/dist/{esm/converter/cosmetic/element-hiding.mjs → converter/cosmetic/element-hiding.js} +9 -9
  30. package/dist/{esm/converter/cosmetic/header-removal.mjs → converter/cosmetic/header-removal.js} +12 -12
  31. package/dist/{esm/converter/cosmetic/html.mjs → converter/cosmetic/html.js} +21 -30
  32. package/dist/{esm/converter/cosmetic/index.mjs → converter/cosmetic/index.js} +43 -13
  33. package/dist/{esm/converter/cosmetic/rule-modifiers/adg.mjs → converter/cosmetic/rule-modifiers/adg.js} +10 -10
  34. package/dist/converter/cosmetic/rule-modifiers/ubo.js +149 -0
  35. package/dist/{esm/converter/cosmetic/scriptlet.mjs → converter/cosmetic/scriptlet.js} +23 -23
  36. package/dist/{esm/converter/css/index.mjs → converter/css/index.js} +21 -25
  37. package/dist/{esm/converter/data/css.mjs → converter/data/css.js} +2 -2
  38. package/dist/{esm/converter/filter-list.mjs → converter/filter-list.js} +7 -7
  39. package/dist/converter/index.js +8 -0
  40. package/dist/{esm/converter/misc/network-rule-modifier.mjs → converter/misc/network-rule-modifier.js} +22 -22
  41. package/dist/{esm/converter/network/index.mjs → converter/network/index.js} +6 -6
  42. package/dist/{esm/converter/raw-filter-list.mjs → converter/raw-filter-list.js} +9 -9
  43. package/dist/{esm/converter/rule.mjs → converter/rule.js} +9 -9
  44. package/dist/{esm/deserializer/base-deserializer.mjs → deserializer/base-deserializer.js} +4 -4
  45. package/dist/{esm/deserializer/comment/agent-comment-deserializer.mjs → deserializer/comment/agent-comment-deserializer.js} +14 -9
  46. package/dist/{esm/deserializer/comment/agent-deserializer.mjs → deserializer/comment/agent-deserializer.js} +8 -8
  47. package/dist/{esm/deserializer/comment/comment-rule-deserializer.mjs → deserializer/comment/comment-rule-deserializer.js} +11 -64
  48. package/dist/{esm/deserializer/comment/config-comment-deserializer.mjs → deserializer/comment/config-comment-deserializer.js} +10 -10
  49. package/dist/{esm/deserializer/comment/hint-comment-deserializer.mjs → deserializer/comment/hint-comment-deserializer.js} +15 -10
  50. package/dist/{esm/deserializer/comment/hint-deserializer.mjs → deserializer/comment/hint-deserializer.js} +8 -8
  51. package/dist/{esm/deserializer/comment/metadata-comment-deserializer.mjs → deserializer/comment/metadata-comment-deserializer.js} +9 -9
  52. package/dist/{esm/deserializer/comment/pre-processor-comment-deserializer.mjs → deserializer/comment/pre-processor-comment-deserializer.js} +12 -12
  53. package/dist/{esm/deserializer/comment/simple-comment-deserializer.mjs → deserializer/comment/simple-comment-deserializer.js} +9 -9
  54. package/dist/{esm/deserializer/cosmetic/cosmetic-rule-deserializer.mjs → deserializer/cosmetic/cosmetic-rule-deserializer.js} +24 -18
  55. package/dist/{esm/deserializer/cosmetic/css-injection-body-deserializer.mjs → deserializer/cosmetic/css-injection-body-deserializer.js} +10 -7
  56. package/dist/{esm/deserializer/cosmetic/element-hiding-body-deserializer.mjs → deserializer/cosmetic/element-hiding-body-deserializer.js} +11 -7
  57. package/dist/{esm/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.mjs → deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js} +9 -5
  58. package/dist/{esm/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.mjs → deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js} +10 -5
  59. package/dist/{esm/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.mjs → deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js} +11 -7
  60. package/dist/{esm/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.mjs → deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js} +9 -6
  61. package/dist/{esm/deserializer/empty-rule-deserializer.mjs → deserializer/empty-rule-deserializer.js} +12 -8
  62. package/dist/{esm/deserializer/filterlist-deserializer.mjs → deserializer/filterlist-deserializer.js} +11 -7
  63. package/dist/{esm/deserializer/index.mjs → deserializer/index.js} +4 -4
  64. package/dist/{esm/deserializer/invalid-rule-deserializer.mjs → deserializer/invalid-rule-deserializer.js} +12 -8
  65. package/dist/{esm/deserializer/invalid-rule-error-node-deserializer.mjs → deserializer/invalid-rule-error-node-deserializer.js} +10 -6
  66. package/dist/{esm/deserializer/misc/domain-list-deserializer.mjs → deserializer/misc/domain-list-deserializer.js} +8 -8
  67. package/dist/{esm/deserializer/misc/list-item-deserializer.mjs → deserializer/misc/list-item-deserializer.js} +13 -7
  68. package/dist/{esm/deserializer/misc/list-items-deserializer.mjs → deserializer/misc/list-items-deserializer.js} +7 -3
  69. package/dist/{esm/deserializer/misc/logical-expression-deserializer.mjs → deserializer/misc/logical-expression-deserializer.js} +8 -8
  70. package/dist/{esm/deserializer/misc/modifier-deserializer.mjs → deserializer/misc/modifier-deserializer.js} +8 -8
  71. package/dist/{esm/deserializer/misc/modifier-list-deserializer.mjs → deserializer/misc/modifier-list-deserializer.js} +12 -7
  72. package/dist/{esm/deserializer/misc/parameter-list-deserializer.mjs → deserializer/misc/parameter-list-deserializer.js} +11 -7
  73. package/dist/{esm/deserializer/misc/value-deserializer.mjs → deserializer/misc/value-deserializer.js} +6 -6
  74. package/dist/{esm/deserializer/network/host-rule-deserializer.mjs → deserializer/network/host-rule-deserializer.js} +15 -27
  75. package/dist/{esm/deserializer/network/hostname-list-deserializer.mjs → deserializer/network/hostname-list-deserializer.js} +15 -7
  76. package/dist/{esm/deserializer/network/network-rule-deserializer.mjs → deserializer/network/network-rule-deserializer.js} +11 -11
  77. package/dist/{esm/deserializer/rule-deserializer.mjs → deserializer/rule-deserializer.js} +10 -10
  78. package/dist/{esm/deserializer/syntax-deserialization-map.mjs → deserializer/syntax-deserialization-map.js} +3 -3
  79. package/dist/{esm/errors/adblock-syntax-error.mjs → errors/adblock-syntax-error.js} +2 -2
  80. package/dist/{esm/errors/binary-schema-mismatch-error.mjs → errors/binary-schema-mismatch-error.js} +2 -2
  81. package/dist/{esm/errors/not-implemented-error.mjs → errors/not-implemented-error.js} +2 -2
  82. package/dist/{esm/errors/rule-conversion-error.mjs → errors/rule-conversion-error.js} +2 -2
  83. package/dist/{esm/generator/base-generator.mjs → generator/base-generator.js} +4 -4
  84. package/dist/{esm/generator/comment/agent-comment-generator.mjs → generator/comment/agent-comment-generator.js} +8 -5
  85. package/dist/{esm/generator/comment/agent-generator.mjs → generator/comment/agent-generator.js} +9 -5
  86. package/dist/{esm/generator/comment/comment-rule-generator.mjs → generator/comment/comment-rule-generator.js} +11 -64
  87. package/dist/{esm/generator/comment/config-comment-generator.mjs → generator/comment/config-comment-generator.js} +8 -5
  88. package/dist/{esm/generator/comment/hint-comment-generator.mjs → generator/comment/hint-comment-generator.js} +8 -5
  89. package/dist/{esm/generator/comment/hint-generator.mjs → generator/comment/hint-generator.js} +11 -8
  90. package/dist/{esm/generator/comment/metadata-comment-generator.mjs → generator/comment/metadata-comment-generator.js} +8 -5
  91. package/dist/{esm/generator/comment/pre-processor-comment-generator.mjs → generator/comment/pre-processor-comment-generator.js} +10 -7
  92. package/dist/{esm/generator/comment/simple-comment-generator.mjs → generator/comment/simple-comment-generator.js} +8 -5
  93. package/dist/{esm/generator/cosmetic/body/abp-snippet-injection-body-generator.mjs → generator/cosmetic/body/abp-snippet-injection-body-generator.js} +10 -6
  94. package/dist/{esm/generator/cosmetic/body/adg-scriptlet-injection-body-generator.mjs → generator/cosmetic/body/adg-scriptlet-injection-body-generator.js} +10 -6
  95. package/dist/{esm/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.mjs → generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js} +10 -6
  96. package/dist/{esm/generator/cosmetic/cosmetic-rule-body-generator.mjs → generator/cosmetic/cosmetic-rule-body-generator.js} +17 -13
  97. package/dist/{esm/generator/cosmetic/cosmetic-rule-generator.mjs → generator/cosmetic/cosmetic-rule-generator.js} +19 -21
  98. package/dist/{esm/generator/cosmetic/cosmetic-rule-pattern-generator.mjs → generator/cosmetic/cosmetic-rule-pattern-generator.js} +10 -7
  99. package/dist/{esm/generator/css/adg-css-injection-generator.mjs → generator/css/adg-css-injection-generator.js} +8 -5
  100. package/dist/{esm/generator/filterlist-generator.mjs → generator/filterlist-generator.js} +21 -9
  101. package/dist/{esm/generator/index.mjs → generator/index.js} +5 -5
  102. package/dist/{esm/generator/misc/domain-list-generator.mjs → generator/misc/domain-list-generator.js} +7 -4
  103. package/dist/{esm/generator/misc/list-items-generator.mjs → generator/misc/list-items-generator.js} +6 -3
  104. package/dist/{esm/generator/misc/logical-expression-generator.mjs → generator/misc/logical-expression-generator.js} +8 -5
  105. package/dist/{esm/generator/misc/modifier-generator.mjs → generator/misc/modifier-generator.js} +9 -6
  106. package/dist/{esm/generator/misc/modifier-list-generator.mjs → generator/misc/modifier-list-generator.js} +8 -5
  107. package/dist/{esm/generator/misc/parameter-list-generator.mjs → generator/misc/parameter-list-generator.js} +8 -6
  108. package/dist/{esm/generator/misc/value-generator.mjs → generator/misc/value-generator.js} +6 -3
  109. package/dist/{esm/generator/network/host-rule-generator.mjs → generator/network/host-rule-generator.js} +7 -4
  110. package/dist/{esm/generator/network/network-rule-generator.mjs → generator/network/network-rule-generator.js} +11 -8
  111. package/dist/{esm/generator/rule-generator.mjs → generator/rule-generator.js} +12 -9
  112. package/dist/{esm/index.mjs → index.js} +66 -66
  113. package/dist/{cjs/marshalling-utils/empty-rule-common.js → marshalling-utils/comment/agent-comment-common.js} +9 -9
  114. package/dist/{esm/marshalling-utils/comment/agent-common.mjs → marshalling-utils/comment/agent-common.js} +8 -9
  115. package/dist/{esm/marshalling-utils/comment/config-comment-common.mjs → marshalling-utils/comment/config-comment-common.js} +15 -17
  116. package/dist/marshalling-utils/comment/hint-comment-common.js +22 -0
  117. package/dist/{esm/marshalling-utils/comment/hint-common.mjs → marshalling-utils/comment/hint-common.js} +8 -9
  118. package/dist/{esm/marshalling-utils/comment/metadata-comment-common.mjs → marshalling-utils/comment/metadata-comment-common.js} +9 -10
  119. package/dist/{esm/marshalling-utils/comment/pre-processor-comment-common.mjs → marshalling-utils/comment/pre-processor-comment-common.js} +9 -10
  120. package/dist/marshalling-utils/comment/simple-comment-common.js +22 -0
  121. package/dist/{esm/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.mjs → marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js} +7 -8
  122. package/dist/{esm/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.mjs → marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js} +2 -2
  123. package/dist/marshalling-utils/cosmetic/body/css-injection-body-common.js +24 -0
  124. package/dist/marshalling-utils/cosmetic/body/element-hiding-body-common.js +21 -0
  125. package/dist/{esm/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.mjs → marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js} +2 -2
  126. package/dist/{esm/marshalling-utils/cosmetic/cosmetic-rule-common.mjs → marshalling-utils/cosmetic/cosmetic-rule-common.js} +10 -13
  127. package/dist/{esm/marshalling-utils/empty-rule-common.mjs → marshalling-utils/empty-rule-common.js} +6 -7
  128. package/dist/marshalling-utils/filter-list-common.js +21 -0
  129. package/dist/{esm/marshalling-utils/invalid-rule-common.mjs → marshalling-utils/invalid-rule-common.js} +7 -8
  130. package/dist/marshalling-utils/invalid-rule-error-node-common.js +22 -0
  131. package/dist/marshalling-utils/misc/binary-type-common.js +54 -0
  132. package/dist/{esm/marshalling-utils/misc/domain-list-common.mjs → marshalling-utils/misc/domain-list-common.js} +9 -10
  133. package/dist/marshalling-utils/misc/host-rule-common.js +24 -0
  134. package/dist/marshalling-utils/misc/hostname-list-common.js +21 -0
  135. package/dist/marshalling-utils/misc/list-item-common.js +22 -0
  136. package/dist/marshalling-utils/misc/logical-expression-common.js +83 -0
  137. package/dist/{esm/marshalling-utils/misc/modifier-common.mjs → marshalling-utils/misc/modifier-common.js} +9 -10
  138. package/dist/marshalling-utils/misc/modifier-list-common.js +21 -0
  139. package/dist/marshalling-utils/misc/parameter-list-common.js +21 -0
  140. package/dist/marshalling-utils/misc/value-common.js +22 -0
  141. package/dist/marshalling-utils/network/network-rule-common.js +24 -0
  142. package/dist/{esm/marshalling-utils/syntax-serialization-map.mjs → marshalling-utils/syntax-serialization-map.js} +3 -3
  143. package/dist/{esm/nodes/index.mjs → nodes/index.js} +66 -79
  144. package/dist/{esm/package.json.mjs → package.json.js} +3 -3
  145. package/dist/{esm/parser/base-parser.mjs → parser/base-parser.js} +3 -3
  146. package/dist/{esm/parser/comment/agent-comment-parser.mjs → parser/comment/agent-comment-parser.js} +12 -12
  147. package/dist/{esm/parser/comment/agent-parser.mjs → parser/comment/agent-parser.js} +19 -14
  148. package/dist/{esm/parser/comment/comment-parser.mjs → parser/comment/comment-parser.js} +10 -10
  149. package/dist/{esm/parser/comment/config-comment-parser.mjs → parser/comment/config-comment-parser.js} +10 -10
  150. package/dist/{esm/parser/comment/hint-comment-parser.mjs → parser/comment/hint-comment-parser.js} +10 -10
  151. package/dist/{esm/parser/comment/hint-parser.mjs → parser/comment/hint-parser.js} +9 -9
  152. package/dist/{esm/parser/comment/metadata-comment-parser.mjs → parser/comment/metadata-comment-parser.js} +11 -11
  153. package/dist/{esm/parser/comment/preprocessor-parser.mjs → parser/comment/preprocessor-parser.js} +12 -12
  154. package/dist/{esm/parser/comment/simple-comment-parser.mjs → parser/comment/simple-comment-parser.js} +9 -9
  155. package/dist/{esm/parser/cosmetic/body/abp-snippet-injection-body-parser.mjs → parser/cosmetic/body/abp-snippet-injection-body-parser.js} +9 -9
  156. package/dist/{esm/parser/cosmetic/body/adg-scriptlet-injection-body-parser.mjs → parser/cosmetic/body/adg-scriptlet-injection-body-parser.js} +9 -9
  157. package/dist/{esm/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.mjs → parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js} +8 -8
  158. package/dist/{esm/parser/cosmetic/cosmetic-rule-parser.mjs → parser/cosmetic/cosmetic-rule-parser.js} +63 -23
  159. package/dist/{esm/parser/css/adg-css-injection-parser.mjs → parser/css/adg-css-injection-parser.js} +7 -7
  160. package/dist/{esm/parser/css/balancing.mjs → parser/css/balancing.js} +6 -6
  161. package/dist/{esm/parser/css/constants.mjs → parser/css/constants.js} +2 -2
  162. package/dist/{esm/parser/css/css-token-stream.mjs → parser/css/css-token-stream.js} +24 -14
  163. package/dist/{esm/parser/css/ubo-selector-parser.mjs → parser/css/ubo-selector-parser.js} +8 -8
  164. package/dist/{esm/parser/filterlist-parser.mjs → parser/filterlist-parser.js} +7 -7
  165. package/dist/parser/index.js +12 -0
  166. package/dist/{esm/parser/misc/app-list-parser.mjs → parser/misc/app-list-parser.js} +7 -7
  167. package/dist/{esm/parser/misc/domain-list-parser.mjs → parser/misc/domain-list-parser.js} +7 -7
  168. package/dist/{esm/parser/misc/list-items-parser.mjs → parser/misc/list-items-parser.js} +10 -7
  169. package/dist/{esm/parser/misc/logical-expression-parser.mjs → parser/misc/logical-expression-parser.js} +18 -20
  170. package/dist/{esm/parser/misc/method-list-parser.mjs → parser/misc/method-list-parser.js} +7 -7
  171. package/dist/{esm/parser/misc/modifier-list.mjs → parser/misc/modifier-list.js} +7 -7
  172. package/dist/{esm/parser/misc/modifier-parser.mjs → parser/misc/modifier-parser.js} +8 -8
  173. package/dist/{esm/parser/misc/parameter-list-parser.mjs → parser/misc/parameter-list-parser.js} +10 -7
  174. package/dist/{esm/parser/misc/stealth-option-list-parser.mjs → parser/misc/stealth-option-list-parser.js} +7 -7
  175. package/dist/{esm/parser/misc/ubo-parameter-list-parser.mjs → parser/misc/ubo-parameter-list-parser.js} +12 -9
  176. package/dist/{esm/parser/misc/value-parser.mjs → parser/misc/value-parser.js} +5 -5
  177. package/dist/{esm/parser/network/host-rule-parser.mjs → parser/network/host-rule-parser.js} +11 -11
  178. package/dist/{esm/parser/network/network-rule-parser.mjs → parser/network/network-rule-parser.js} +17 -11
  179. package/dist/{esm/parser/options.mjs → parser/options.js} +2 -2
  180. package/dist/{esm/parser/rule-parser.mjs → parser/rule-parser.js} +11 -11
  181. package/dist/{esm/serializer/base-serializer.mjs → serializer/base-serializer.js} +3 -3
  182. package/dist/{esm/serializer/comment/agent-comment-serializer.mjs → serializer/comment/agent-comment-serializer.js} +11 -8
  183. package/dist/{esm/serializer/comment/agent-serializer.mjs → serializer/comment/agent-serializer.js} +9 -18
  184. package/dist/{esm/serializer/comment/comment-rule-serializer.mjs → serializer/comment/comment-rule-serializer.js} +10 -10
  185. package/dist/{esm/serializer/comment/config-comment-serializer.mjs → serializer/comment/config-comment-serializer.js} +10 -10
  186. package/dist/{esm/serializer/comment/hint-comment-serializer.mjs → serializer/comment/hint-comment-serializer.js} +13 -10
  187. package/dist/{esm/serializer/comment/hint-serializer.mjs → serializer/comment/hint-serializer.js} +9 -9
  188. package/dist/{esm/serializer/comment/metadata-comment-serializer.mjs → serializer/comment/metadata-comment-serializer.js} +8 -8
  189. package/dist/{esm/serializer/comment/pre-processor-comment-serializer.mjs → serializer/comment/pre-processor-comment-serializer.js} +11 -11
  190. package/dist/{esm/serializer/comment/simple-comment-serializer.mjs → serializer/comment/simple-comment-serializer.js} +10 -10
  191. package/dist/{esm/serializer/cosmetic/body/abp-snippet-injection-body-serializer.mjs → serializer/cosmetic/body/abp-snippet-injection-body-serializer.js} +9 -9
  192. package/dist/{esm/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.mjs → serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js} +9 -9
  193. package/dist/{esm/serializer/cosmetic/body/scriptlet-body-serializer.mjs → serializer/cosmetic/body/scriptlet-body-serializer.js} +16 -13
  194. package/dist/{esm/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.mjs → serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js} +5 -5
  195. package/dist/{esm/serializer/cosmetic/cosmetic-rule-serializer.mjs → serializer/cosmetic/cosmetic-rule-serializer.js} +22 -31
  196. package/dist/{esm/serializer/cosmetic/css-injection-body-serializer.mjs → serializer/cosmetic/css-injection-body-serializer.js} +11 -8
  197. package/dist/{esm/serializer/cosmetic/element-hiding-body-serializer.mjs → serializer/cosmetic/element-hiding-body-serializer.js} +11 -8
  198. package/dist/{esm/serializer/empty-rule-serializer.mjs → serializer/empty-rule-serializer.js} +10 -7
  199. package/dist/{esm/serializer/filterlist-serializer.mjs → serializer/filterlist-serializer.js} +9 -10
  200. package/dist/serializer/index.js +7 -0
  201. package/dist/{esm/serializer/invalid-rule-error-node-serializer.mjs → serializer/invalid-rule-error-node-serializer.js} +10 -7
  202. package/dist/{esm/serializer/invalid-rule-serializer.mjs → serializer/invalid-rule-serializer.js} +11 -8
  203. package/dist/{esm/serializer/misc/domain-list-serializer.mjs → serializer/misc/domain-list-serializer.js} +10 -10
  204. package/dist/{esm/serializer/misc/list-item-serializer.mjs → serializer/misc/list-item-serializer.js} +11 -8
  205. package/dist/{esm/serializer/misc/list-items-serializer.mjs → serializer/misc/list-items-serializer.js} +6 -3
  206. package/dist/{esm/serializer/misc/logical-expression-serializer.mjs → serializer/misc/logical-expression-serializer.js} +14 -14
  207. package/dist/{esm/serializer/misc/modifier-list-serializer.mjs → serializer/misc/modifier-list-serializer.js} +11 -8
  208. package/dist/{esm/serializer/misc/modifier-serializer.mjs → serializer/misc/modifier-serializer.js} +8 -8
  209. package/dist/{esm/serializer/misc/parameter-list-serializer.mjs → serializer/misc/parameter-list-serializer.js} +11 -8
  210. package/dist/{esm/serializer/misc/value-serializer.mjs → serializer/misc/value-serializer.js} +7 -7
  211. package/dist/{esm/serializer/network/host-rule-serializer.mjs → serializer/network/host-rule-serializer.js} +10 -10
  212. package/dist/{esm/serializer/network/hostname-list-serializer.mjs → serializer/network/hostname-list-serializer.js} +14 -8
  213. package/dist/{esm/serializer/network/network-rule-serializer.mjs → serializer/network/network-rule-serializer.js} +10 -10
  214. package/dist/{esm/serializer/rule-serializer.mjs → serializer/rule-serializer.js} +10 -10
  215. package/dist/types/common/abp-snippet-injection-body-common.d.ts +7 -0
  216. package/dist/types/common/ubo-selector-common.d.ts +7 -6
  217. package/dist/types/compatibility-tables/compatibility-table-data.d.ts +2 -1
  218. package/dist/types/compatibility-tables/platforms.d.ts +36 -34
  219. package/dist/types/compatibility-tables/schemas/base.d.ts +1 -12
  220. package/dist/types/compatibility-tables/schemas/modifier.d.ts +5 -0
  221. package/dist/types/compatibility-tables/schemas/redirect.d.ts +1 -1
  222. package/dist/types/compatibility-tables/schemas/resource-type.d.ts +29 -15
  223. package/dist/types/compatibility-tables/utils/zod-camelcase.d.ts +1 -1
  224. package/dist/types/converter/cosmetic/rule-modifiers/ubo.d.ts +24 -0
  225. package/dist/types/converter/css/index.d.ts +17 -0
  226. package/dist/types/deserializer/comment/comment-rule-deserializer.d.ts +1 -54
  227. package/dist/types/deserializer/cosmetic/cosmetic-rule-deserializer.d.ts +6 -0
  228. package/dist/types/deserializer/cosmetic/css-injection-body-deserializer.d.ts +3 -0
  229. package/dist/types/deserializer/cosmetic/element-hiding-body-deserializer.d.ts +4 -0
  230. package/dist/types/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.d.ts +4 -0
  231. package/dist/types/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.d.ts +5 -0
  232. package/dist/types/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.d.ts +4 -0
  233. package/dist/types/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.d.ts +4 -1
  234. package/dist/types/deserializer/empty-rule-deserializer.d.ts +4 -0
  235. package/dist/types/deserializer/filterlist-deserializer.d.ts +4 -0
  236. package/dist/types/deserializer/invalid-rule-deserializer.d.ts +4 -0
  237. package/dist/types/deserializer/invalid-rule-error-node-deserializer.d.ts +4 -0
  238. package/dist/types/deserializer/misc/list-item-deserializer.d.ts +6 -0
  239. package/dist/types/deserializer/misc/list-items-deserializer.d.ts +4 -0
  240. package/dist/types/deserializer/misc/modifier-deserializer.d.ts +1 -1
  241. package/dist/types/deserializer/misc/parameter-list-deserializer.d.ts +4 -0
  242. package/dist/types/deserializer/network/host-rule-deserializer.d.ts +4 -16
  243. package/dist/types/deserializer/network/hostname-list-deserializer.d.ts +3 -0
  244. package/dist/types/generator/comment/agent-comment-generator.d.ts +3 -0
  245. package/dist/types/generator/comment/agent-generator.d.ts +4 -0
  246. package/dist/types/generator/comment/comment-rule-generator.d.ts +1 -54
  247. package/dist/types/generator/comment/config-comment-generator.d.ts +3 -0
  248. package/dist/types/generator/comment/hint-comment-generator.d.ts +3 -0
  249. package/dist/types/generator/comment/hint-generator.d.ts +6 -3
  250. package/dist/types/generator/comment/index.d.ts +1 -2
  251. package/dist/types/generator/comment/metadata-comment-generator.d.ts +3 -0
  252. package/dist/types/generator/comment/pre-processor-comment-generator.d.ts +3 -0
  253. package/dist/types/generator/comment/simple-comment-generator.d.ts +3 -0
  254. package/dist/types/generator/cosmetic/body/abp-snippet-injection-body-generator.d.ts +4 -0
  255. package/dist/types/generator/cosmetic/body/adg-scriptlet-injection-body-generator.d.ts +5 -1
  256. package/dist/types/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.d.ts +5 -1
  257. package/dist/types/generator/cosmetic/cosmetic-rule-body-generator.d.ts +5 -0
  258. package/dist/types/generator/cosmetic/cosmetic-rule-generator.d.ts +3 -11
  259. package/dist/types/generator/cosmetic/cosmetic-rule-pattern-generator.d.ts +3 -0
  260. package/dist/types/generator/css/adg-css-injection-generator.d.ts +3 -0
  261. package/dist/types/generator/css/ubo-selector-generator.d.ts +3 -0
  262. package/dist/types/generator/filterlist-generator.d.ts +4 -3
  263. package/dist/types/generator/misc/domain-list-generator.d.ts +3 -0
  264. package/dist/types/generator/misc/list-items-generator.d.ts +3 -0
  265. package/dist/types/generator/misc/logical-expression-generator.d.ts +3 -0
  266. package/dist/types/generator/misc/modifier-generator.d.ts +5 -2
  267. package/dist/types/generator/misc/modifier-list-generator.d.ts +3 -0
  268. package/dist/types/generator/misc/parameter-list-generator.d.ts +3 -0
  269. package/dist/types/generator/misc/value-generator.d.ts +3 -0
  270. package/dist/types/generator/network/host-rule-generator.d.ts +3 -0
  271. package/dist/types/generator/network/network-rule-generator.d.ts +6 -3
  272. package/dist/types/generator/rule-generator.d.ts +3 -0
  273. package/dist/types/marshalling-utils/comment/agent-comment-common.d.ts +6 -5
  274. package/dist/types/marshalling-utils/comment/agent-common.d.ts +7 -6
  275. package/dist/types/marshalling-utils/comment/config-comment-common.d.ts +15 -13
  276. package/dist/types/marshalling-utils/comment/hint-comment-common.d.ts +7 -6
  277. package/dist/types/marshalling-utils/comment/hint-common.d.ts +7 -6
  278. package/dist/types/marshalling-utils/comment/metadata-comment-common.d.ts +8 -7
  279. package/dist/types/marshalling-utils/comment/pre-processor-comment-common.d.ts +8 -7
  280. package/dist/types/marshalling-utils/comment/simple-comment-common.d.ts +7 -6
  281. package/dist/types/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.d.ts +6 -5
  282. package/dist/types/marshalling-utils/cosmetic/body/css-injection-body-common.d.ts +9 -8
  283. package/dist/types/marshalling-utils/cosmetic/body/element-hiding-body-common.d.ts +6 -5
  284. package/dist/types/marshalling-utils/cosmetic/cosmetic-rule-common.d.ts +11 -10
  285. package/dist/types/marshalling-utils/empty-rule-common.d.ts +5 -4
  286. package/dist/types/marshalling-utils/filter-list-common.d.ts +6 -5
  287. package/dist/types/marshalling-utils/invalid-rule-common.d.ts +6 -5
  288. package/dist/types/marshalling-utils/invalid-rule-error-node-common.d.ts +7 -6
  289. package/dist/types/marshalling-utils/misc/binary-type-common.d.ts +52 -51
  290. package/dist/types/marshalling-utils/misc/domain-list-common.d.ts +7 -6
  291. package/dist/types/marshalling-utils/misc/host-rule-common.d.ts +10 -9
  292. package/dist/types/marshalling-utils/misc/hostname-list-common.d.ts +6 -5
  293. package/dist/types/marshalling-utils/misc/list-item-common.d.ts +7 -6
  294. package/dist/types/marshalling-utils/misc/logical-expression-common.d.ts +21 -18
  295. package/dist/types/marshalling-utils/misc/modifier-common.d.ts +8 -7
  296. package/dist/types/marshalling-utils/misc/modifier-list-common.d.ts +6 -5
  297. package/dist/types/marshalling-utils/misc/parameter-list-common.d.ts +6 -5
  298. package/dist/types/marshalling-utils/misc/value-common.d.ts +7 -6
  299. package/dist/types/marshalling-utils/network/network-rule-common.d.ts +10 -9
  300. package/dist/types/nodes/index.d.ts +104 -98
  301. package/dist/types/parser/comment/agent-parser.d.ts +7 -0
  302. package/dist/types/parser/css/balancing.d.ts +21 -1
  303. package/dist/types/parser/index.d.ts +1 -0
  304. package/dist/types/parser/misc/list-items-parser.d.ts +3 -0
  305. package/dist/types/parser/misc/logical-expression-parser.d.ts +6 -5
  306. package/dist/types/parser/misc/parameter-list-parser.d.ts +3 -0
  307. package/dist/types/parser/misc/ubo-parameter-list-parser.d.ts +3 -0
  308. package/dist/types/parser/misc/value-parser.d.ts +1 -1
  309. package/dist/types/serializer/comment/agent-serializer.d.ts +1 -10
  310. package/dist/types/serializer/comment/config-comment-serializer.d.ts +1 -1
  311. package/dist/types/serializer/comment/simple-comment-serializer.d.ts +2 -2
  312. package/dist/types/serializer/cosmetic/body/abp-snippet-injection-body-serializer.d.ts +4 -4
  313. package/dist/types/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.d.ts +4 -4
  314. package/dist/types/serializer/cosmetic/body/scriptlet-body-serializer.d.ts +8 -5
  315. package/dist/types/serializer/cosmetic/cosmetic-rule-serializer.d.ts +4 -11
  316. package/dist/types/serializer/cosmetic/css-injection-body-serializer.d.ts +3 -0
  317. package/dist/types/serializer/cosmetic/element-hiding-body-serializer.d.ts +3 -0
  318. package/dist/types/serializer/empty-rule-serializer.d.ts +3 -0
  319. package/dist/types/serializer/filterlist-serializer.d.ts +1 -2
  320. package/dist/types/serializer/invalid-rule-error-node-serializer.d.ts +3 -0
  321. package/dist/types/serializer/invalid-rule-serializer.d.ts +3 -0
  322. package/dist/types/serializer/misc/domain-list-serializer.d.ts +2 -2
  323. package/dist/types/serializer/misc/list-item-serializer.d.ts +3 -0
  324. package/dist/types/serializer/misc/list-items-serializer.d.ts +3 -0
  325. package/dist/types/serializer/misc/logical-expression-serializer.d.ts +7 -6
  326. package/dist/types/serializer/misc/parameter-list-serializer.d.ts +3 -0
  327. package/dist/types/serializer/network/hostname-list-serializer.d.ts +3 -0
  328. package/dist/types/utils/adblockers.d.ts +7 -6
  329. package/dist/types/utils/constants.d.ts +5 -0
  330. package/dist/types/utils/domain.d.ts +3 -0
  331. package/dist/types/utils/index.d.ts +1 -1
  332. package/dist/types/utils/input-byte-buffer.d.ts +6 -0
  333. package/dist/types/utils/output-byte-buffer.d.ts +6 -0
  334. package/dist/types/utils/quotes.d.ts +7 -6
  335. package/dist/types/utils/regexp.d.ts +21 -0
  336. package/dist/types/utils/string.d.ts +3 -0
  337. package/dist/types/validator/value.d.ts +2 -1
  338. package/dist/{esm/utils/adblockers.mjs → utils/adblockers.js} +8 -9
  339. package/dist/{esm/utils/binary-schema-version.mjs → utils/binary-schema-version.js} +2 -2
  340. package/dist/{esm/utils/byte-buffer.mjs → utils/byte-buffer.js} +2 -2
  341. package/dist/{esm/utils/categorizer.mjs → utils/categorizer.js} +5 -5
  342. package/dist/{esm/utils/clone.mjs → utils/clone.js} +2 -2
  343. package/dist/{esm/utils/constants.mjs → utils/constants.js} +10 -3
  344. package/dist/{esm/utils/cosmetic-rule-separator.mjs → utils/cosmetic-rule-separator.js} +4 -4
  345. package/dist/{esm/utils/deep-freeze.mjs → utils/deep-freeze.js} +2 -2
  346. package/dist/{esm/utils/domain.mjs → utils/domain.js} +6 -3
  347. package/dist/{esm/utils/error.mjs → utils/error.js} +2 -2
  348. package/dist/utils/index.js +21 -0
  349. package/dist/{esm/utils/input-byte-buffer.mjs → utils/input-byte-buffer.js} +17 -8
  350. package/dist/{esm/utils/is-chromium.mjs → utils/is-chromium.js} +2 -2
  351. package/dist/{esm/utils/logical-expression.mjs → utils/logical-expression.js} +4 -4
  352. package/dist/{esm/utils/multi-value-map.mjs → utils/multi-value-map.js} +3 -3
  353. package/dist/{esm/utils/output-byte-buffer.mjs → utils/output-byte-buffer.js} +14 -6
  354. package/dist/{esm/utils/position-provider.mjs → utils/position-provider.js} +3 -3
  355. package/dist/{esm/utils/quotes.mjs → utils/quotes.js} +9 -10
  356. package/dist/{esm/utils/regexp.mjs → utils/regexp.js} +49 -3
  357. package/dist/{esm/utils/string.mjs → utils/string.js} +6 -3
  358. package/dist/{esm/utils/text-decoder-polyfill.mjs → utils/text-decoder-polyfill.js} +3 -3
  359. package/dist/{esm/utils/text-encoder-polyfill.mjs → utils/text-encoder-polyfill.js} +2 -2
  360. package/dist/{esm/utils/type-guards.mjs → utils/type-guards.js} +2 -2
  361. package/dist/{esm/validator/constants.mjs → validator/constants.js} +4 -4
  362. package/dist/{esm/validator/helpers.mjs → validator/helpers.js} +4 -4
  363. package/dist/{esm/validator/index.mjs → validator/index.js} +11 -11
  364. package/dist/{esm/validator/value.mjs → validator/value.js} +34 -29
  365. package/dist/{esm/version.mjs → version.js} +3 -3
  366. package/package.json +24 -70
  367. package/dist/cjs/ast-utils/clone.js +0 -65
  368. package/dist/cjs/ast-utils/modifiers.js +0 -56
  369. package/dist/cjs/ast-utils/network-rules.js +0 -43
  370. package/dist/cjs/ast-utils/scriptlets.js +0 -93
  371. package/dist/cjs/common/abp-snippet-injection-body-common.js +0 -18
  372. package/dist/cjs/common/agent-common.js +0 -58
  373. package/dist/cjs/common/ubo-selector-common.js +0 -18
  374. package/dist/cjs/compatibility-tables/base.js +0 -264
  375. package/dist/cjs/compatibility-tables/compatibility-table-data.js +0 -15
  376. package/dist/cjs/compatibility-tables/modifiers.js +0 -57
  377. package/dist/cjs/compatibility-tables/platforms.js +0 -58
  378. package/dist/cjs/compatibility-tables/redirects.js +0 -102
  379. package/dist/cjs/compatibility-tables/schemas/base.js +0 -116
  380. package/dist/cjs/compatibility-tables/schemas/modifier.js +0 -107
  381. package/dist/cjs/compatibility-tables/schemas/platform.js +0 -71
  382. package/dist/cjs/compatibility-tables/schemas/redirect.js +0 -31
  383. package/dist/cjs/compatibility-tables/schemas/resource-type.js +0 -39
  384. package/dist/cjs/compatibility-tables/schemas/scriptlet.js +0 -81
  385. package/dist/cjs/compatibility-tables/scriptlets.js +0 -30
  386. package/dist/cjs/compatibility-tables/utils/platform-helpers.js +0 -112
  387. package/dist/cjs/compatibility-tables/utils/resource-type-helpers.js +0 -64
  388. package/dist/cjs/compatibility-tables/utils/zod-camelcase.js +0 -27
  389. package/dist/cjs/converter/base-interfaces/base-converter.js +0 -61
  390. package/dist/cjs/converter/base-interfaces/conversion-result.js +0 -41
  391. package/dist/cjs/converter/base-interfaces/rule-converter-base.js +0 -62
  392. package/dist/cjs/converter/comment/index.js +0 -56
  393. package/dist/cjs/converter/cosmetic/css.js +0 -71
  394. package/dist/cjs/converter/cosmetic/element-hiding.js +0 -64
  395. package/dist/cjs/converter/cosmetic/header-removal.js +0 -126
  396. package/dist/cjs/converter/cosmetic/html.js +0 -384
  397. package/dist/cjs/converter/cosmetic/index.js +0 -120
  398. package/dist/cjs/converter/cosmetic/rule-modifiers/adg.js +0 -81
  399. package/dist/cjs/converter/cosmetic/scriptlet.js +0 -356
  400. package/dist/cjs/converter/css/index.js +0 -193
  401. package/dist/cjs/converter/data/css.js +0 -133
  402. package/dist/cjs/converter/filter-list.js +0 -90
  403. package/dist/cjs/converter/index.js +0 -15
  404. package/dist/cjs/converter/misc/network-rule-modifier.js +0 -313
  405. package/dist/cjs/converter/network/index.js +0 -101
  406. package/dist/cjs/converter/raw-filter-list.js +0 -58
  407. package/dist/cjs/converter/rule.js +0 -83
  408. package/dist/cjs/deserializer/base-deserializer.js +0 -31
  409. package/dist/cjs/deserializer/comment/agent-comment-deserializer.js +0 -76
  410. package/dist/cjs/deserializer/comment/agent-deserializer.js +0 -67
  411. package/dist/cjs/deserializer/comment/comment-rule-deserializer.js +0 -109
  412. package/dist/cjs/deserializer/comment/config-comment-deserializer.js +0 -113
  413. package/dist/cjs/deserializer/comment/hint-comment-deserializer.js +0 -69
  414. package/dist/cjs/deserializer/comment/hint-deserializer.js +0 -88
  415. package/dist/cjs/deserializer/comment/metadata-comment-deserializer.js +0 -71
  416. package/dist/cjs/deserializer/comment/pre-processor-comment-deserializer.js +0 -114
  417. package/dist/cjs/deserializer/comment/simple-comment-deserializer.js +0 -67
  418. package/dist/cjs/deserializer/cosmetic/cosmetic-rule-deserializer.js +0 -127
  419. package/dist/cjs/deserializer/cosmetic/css-injection-body-deserializer.js +0 -55
  420. package/dist/cjs/deserializer/cosmetic/element-hiding-body-deserializer.js +0 -46
  421. package/dist/cjs/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +0 -37
  422. package/dist/cjs/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +0 -37
  423. package/dist/cjs/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +0 -52
  424. package/dist/cjs/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +0 -38
  425. package/dist/cjs/deserializer/empty-rule-deserializer.js +0 -46
  426. package/dist/cjs/deserializer/filterlist-deserializer.js +0 -83
  427. package/dist/cjs/deserializer/index.js +0 -15
  428. package/dist/cjs/deserializer/invalid-rule-deserializer.js +0 -48
  429. package/dist/cjs/deserializer/invalid-rule-error-node-deserializer.js +0 -48
  430. package/dist/cjs/deserializer/misc/domain-list-deserializer.js +0 -66
  431. package/dist/cjs/deserializer/misc/list-item-deserializer.js +0 -65
  432. package/dist/cjs/deserializer/misc/list-items-deserializer.js +0 -28
  433. package/dist/cjs/deserializer/misc/logical-expression-deserializer.js +0 -199
  434. package/dist/cjs/deserializer/misc/modifier-deserializer.js +0 -89
  435. package/dist/cjs/deserializer/misc/modifier-list-deserializer.js +0 -58
  436. package/dist/cjs/deserializer/misc/parameter-list-deserializer.js +0 -62
  437. package/dist/cjs/deserializer/misc/value-deserializer.js +0 -52
  438. package/dist/cjs/deserializer/network/host-rule-deserializer.js +0 -81
  439. package/dist/cjs/deserializer/network/hostname-list-deserializer.js +0 -50
  440. package/dist/cjs/deserializer/network/network-rule-deserializer.js +0 -67
  441. package/dist/cjs/deserializer/rule-deserializer.js +0 -67
  442. package/dist/cjs/deserializer/syntax-deserialization-map.js +0 -23
  443. package/dist/cjs/errors/adblock-syntax-error.js +0 -41
  444. package/dist/cjs/errors/binary-schema-mismatch-error.js +0 -39
  445. package/dist/cjs/errors/not-implemented-error.js +0 -33
  446. package/dist/cjs/errors/rule-conversion-error.js +0 -28
  447. package/dist/cjs/generator/base-generator.js +0 -29
  448. package/dist/cjs/generator/comment/agent-comment-generator.js +0 -30
  449. package/dist/cjs/generator/comment/agent-generator.js +0 -34
  450. package/dist/cjs/generator/comment/comment-rule-generator.js +0 -102
  451. package/dist/cjs/generator/comment/config-comment-generator.js +0 -44
  452. package/dist/cjs/generator/comment/hint-comment-generator.js +0 -27
  453. package/dist/cjs/generator/comment/hint-generator.js +0 -32
  454. package/dist/cjs/generator/comment/metadata-comment-generator.js +0 -32
  455. package/dist/cjs/generator/comment/pre-processor-comment-generator.js +0 -47
  456. package/dist/cjs/generator/comment/simple-comment-generator.js +0 -28
  457. package/dist/cjs/generator/cosmetic/body/abp-snippet-injection-body-generator.js +0 -36
  458. package/dist/cjs/generator/cosmetic/body/adg-scriptlet-injection-body-generator.js +0 -41
  459. package/dist/cjs/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js +0 -43
  460. package/dist/cjs/generator/cosmetic/cosmetic-rule-body-generator.js +0 -92
  461. package/dist/cjs/generator/cosmetic/cosmetic-rule-generator.js +0 -66
  462. package/dist/cjs/generator/cosmetic/cosmetic-rule-pattern-generator.js +0 -41
  463. package/dist/cjs/generator/css/adg-css-injection-generator.js +0 -41
  464. package/dist/cjs/generator/filterlist-generator.js +0 -57
  465. package/dist/cjs/generator/index.js +0 -17
  466. package/dist/cjs/generator/misc/domain-list-generator.js +0 -25
  467. package/dist/cjs/generator/misc/list-items-generator.js +0 -38
  468. package/dist/cjs/generator/misc/logical-expression-generator.js +0 -47
  469. package/dist/cjs/generator/misc/modifier-generator.js +0 -33
  470. package/dist/cjs/generator/misc/modifier-list-generator.js +0 -28
  471. package/dist/cjs/generator/misc/parameter-list-generator.js +0 -41
  472. package/dist/cjs/generator/misc/value-generator.js +0 -23
  473. package/dist/cjs/generator/network/host-rule-generator.js +0 -38
  474. package/dist/cjs/generator/network/network-rule-generator.js +0 -37
  475. package/dist/cjs/generator/rule-generator.js +0 -64
  476. package/dist/cjs/index.js +0 -201
  477. package/dist/cjs/marshalling-utils/comment/agent-comment-common.js +0 -22
  478. package/dist/cjs/marshalling-utils/comment/agent-common.js +0 -43
  479. package/dist/cjs/marshalling-utils/comment/config-comment-common.js +0 -58
  480. package/dist/cjs/marshalling-utils/comment/hint-comment-common.js +0 -23
  481. package/dist/cjs/marshalling-utils/comment/hint-common.js +0 -60
  482. package/dist/cjs/marshalling-utils/comment/metadata-comment-common.js +0 -44
  483. package/dist/cjs/marshalling-utils/comment/pre-processor-comment-common.js +0 -63
  484. package/dist/cjs/marshalling-utils/comment/simple-comment-common.js +0 -23
  485. package/dist/cjs/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +0 -64
  486. package/dist/cjs/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +0 -68
  487. package/dist/cjs/marshalling-utils/cosmetic/body/css-injection-body-common.js +0 -25
  488. package/dist/cjs/marshalling-utils/cosmetic/body/element-hiding-body-common.js +0 -22
  489. package/dist/cjs/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +0 -116
  490. package/dist/cjs/marshalling-utils/cosmetic/cosmetic-rule-common.js +0 -51
  491. package/dist/cjs/marshalling-utils/filter-list-common.js +0 -22
  492. package/dist/cjs/marshalling-utils/invalid-rule-common.js +0 -22
  493. package/dist/cjs/marshalling-utils/invalid-rule-error-node-common.js +0 -23
  494. package/dist/cjs/marshalling-utils/misc/binary-type-common.js +0 -67
  495. package/dist/cjs/marshalling-utils/misc/domain-list-common.js +0 -39
  496. package/dist/cjs/marshalling-utils/misc/host-rule-common.js +0 -26
  497. package/dist/cjs/marshalling-utils/misc/hostname-list-common.js +0 -22
  498. package/dist/cjs/marshalling-utils/misc/list-item-common.js +0 -23
  499. package/dist/cjs/marshalling-utils/misc/logical-expression-common.js +0 -89
  500. package/dist/cjs/marshalling-utils/misc/modifier-common.js +0 -236
  501. package/dist/cjs/marshalling-utils/misc/modifier-list-common.js +0 -22
  502. package/dist/cjs/marshalling-utils/misc/parameter-list-common.js +0 -22
  503. package/dist/cjs/marshalling-utils/misc/value-common.js +0 -23
  504. package/dist/cjs/marshalling-utils/network/network-rule-common.js +0 -26
  505. package/dist/cjs/marshalling-utils/syntax-serialization-map.js +0 -32
  506. package/dist/cjs/nodes/index.js +0 -180
  507. package/dist/cjs/package.json.js +0 -11
  508. package/dist/cjs/parser/base-parser.js +0 -32
  509. package/dist/cjs/parser/comment/agent-comment-parser.js +0 -121
  510. package/dist/cjs/parser/comment/agent-parser.js +0 -111
  511. package/dist/cjs/parser/comment/comment-parser.js +0 -110
  512. package/dist/cjs/parser/comment/config-comment-parser.js +0 -139
  513. package/dist/cjs/parser/comment/hint-comment-parser.js +0 -119
  514. package/dist/cjs/parser/comment/hint-parser.js +0 -131
  515. package/dist/cjs/parser/comment/metadata-comment-parser.js +0 -131
  516. package/dist/cjs/parser/comment/preprocessor-parser.js +0 -201
  517. package/dist/cjs/parser/comment/simple-comment-parser.js +0 -108
  518. package/dist/cjs/parser/cosmetic/body/abp-snippet-injection-body-parser.js +0 -81
  519. package/dist/cjs/parser/cosmetic/body/adg-scriptlet-injection-body-parser.js +0 -151
  520. package/dist/cjs/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js +0 -112
  521. package/dist/cjs/parser/cosmetic/cosmetic-rule-parser.js +0 -456
  522. package/dist/cjs/parser/css/adg-css-injection-parser.js +0 -213
  523. package/dist/cjs/parser/css/balancing.js +0 -97
  524. package/dist/cjs/parser/css/constants.js +0 -21
  525. package/dist/cjs/parser/css/css-token-stream.js +0 -345
  526. package/dist/cjs/parser/css/ubo-selector-parser.js +0 -373
  527. package/dist/cjs/parser/filterlist-parser.js +0 -104
  528. package/dist/cjs/parser/index.js +0 -21
  529. package/dist/cjs/parser/misc/app-list-parser.js +0 -47
  530. package/dist/cjs/parser/misc/domain-list-parser.js +0 -54
  531. package/dist/cjs/parser/misc/list-items-parser.js +0 -116
  532. package/dist/cjs/parser/misc/logical-expression-parser.js +0 -283
  533. package/dist/cjs/parser/misc/method-list-parser.js +0 -48
  534. package/dist/cjs/parser/misc/modifier-list.js +0 -72
  535. package/dist/cjs/parser/misc/modifier-parser.js +0 -91
  536. package/dist/cjs/parser/misc/parameter-list-parser.js +0 -74
  537. package/dist/cjs/parser/misc/stealth-option-list-parser.js +0 -48
  538. package/dist/cjs/parser/misc/ubo-parameter-list-parser.js +0 -148
  539. package/dist/cjs/parser/misc/value-parser.js +0 -39
  540. package/dist/cjs/parser/network/host-rule-parser.js +0 -151
  541. package/dist/cjs/parser/network/network-rule-parser.js +0 -113
  542. package/dist/cjs/parser/options.js +0 -25
  543. package/dist/cjs/parser/rule-parser.js +0 -194
  544. package/dist/cjs/serializer/base-serializer.js +0 -31
  545. package/dist/cjs/serializer/comment/agent-comment-serializer.js +0 -73
  546. package/dist/cjs/serializer/comment/agent-serializer.js +0 -70
  547. package/dist/cjs/serializer/comment/comment-rule-serializer.js +0 -107
  548. package/dist/cjs/serializer/comment/config-comment-serializer.js +0 -84
  549. package/dist/cjs/serializer/comment/hint-comment-serializer.js +0 -64
  550. package/dist/cjs/serializer/comment/hint-serializer.js +0 -56
  551. package/dist/cjs/serializer/comment/metadata-comment-serializer.js +0 -75
  552. package/dist/cjs/serializer/comment/pre-processor-comment-serializer.js +0 -73
  553. package/dist/cjs/serializer/comment/simple-comment-serializer.js +0 -54
  554. package/dist/cjs/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +0 -38
  555. package/dist/cjs/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +0 -38
  556. package/dist/cjs/serializer/cosmetic/body/scriptlet-body-serializer.js +0 -49
  557. package/dist/cjs/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +0 -38
  558. package/dist/cjs/serializer/cosmetic/cosmetic-rule-serializer.js +0 -131
  559. package/dist/cjs/serializer/cosmetic/css-injection-body-serializer.js +0 -50
  560. package/dist/cjs/serializer/cosmetic/element-hiding-body-serializer.js +0 -39
  561. package/dist/cjs/serializer/empty-rule-serializer.js +0 -36
  562. package/dist/cjs/serializer/filterlist-serializer.js +0 -48
  563. package/dist/cjs/serializer/index.js +0 -13
  564. package/dist/cjs/serializer/invalid-rule-error-node-serializer.js +0 -40
  565. package/dist/cjs/serializer/invalid-rule-serializer.js +0 -39
  566. package/dist/cjs/serializer/misc/domain-list-serializer.js +0 -66
  567. package/dist/cjs/serializer/misc/list-item-serializer.js +0 -57
  568. package/dist/cjs/serializer/misc/list-items-serializer.js +0 -28
  569. package/dist/cjs/serializer/misc/logical-expression-serializer.js +0 -138
  570. package/dist/cjs/serializer/misc/modifier-list-serializer.js +0 -57
  571. package/dist/cjs/serializer/misc/modifier-serializer.js +0 -51
  572. package/dist/cjs/serializer/misc/parameter-list-serializer.js +0 -51
  573. package/dist/cjs/serializer/misc/value-serializer.js +0 -52
  574. package/dist/cjs/serializer/network/host-rule-serializer.js +0 -72
  575. package/dist/cjs/serializer/network/hostname-list-serializer.js +0 -49
  576. package/dist/cjs/serializer/network/network-rule-serializer.js +0 -56
  577. package/dist/cjs/serializer/rule-serializer.js +0 -63
  578. package/dist/cjs/utils/adblockers.js +0 -57
  579. package/dist/cjs/utils/binary-schema-version.js +0 -19
  580. package/dist/cjs/utils/byte-buffer.js +0 -93
  581. package/dist/cjs/utils/categorizer.js +0 -46
  582. package/dist/cjs/utils/clone.js +0 -30
  583. package/dist/cjs/utils/constants.js +0 -380
  584. package/dist/cjs/utils/cosmetic-rule-separator.js +0 -129
  585. package/dist/cjs/utils/deep-freeze.js +0 -34
  586. package/dist/cjs/utils/domain.js +0 -60
  587. package/dist/cjs/utils/error.js +0 -51
  588. package/dist/cjs/utils/index.js +0 -69
  589. package/dist/cjs/utils/input-byte-buffer.js +0 -259
  590. package/dist/cjs/utils/is-chromium.js +0 -22
  591. package/dist/cjs/utils/logical-expression.js +0 -94
  592. package/dist/cjs/utils/multi-value-map.js +0 -35
  593. package/dist/cjs/utils/output-byte-buffer.js +0 -225
  594. package/dist/cjs/utils/position-provider.js +0 -75
  595. package/dist/cjs/utils/quotes.js +0 -218
  596. package/dist/cjs/utils/regexp.js +0 -190
  597. package/dist/cjs/utils/string.js +0 -560
  598. package/dist/cjs/utils/text-decoder-polyfill.js +0 -109
  599. package/dist/cjs/utils/text-encoder-polyfill.js +0 -80
  600. package/dist/cjs/utils/type-guards.js +0 -52
  601. package/dist/cjs/validator/constants.js +0 -222
  602. package/dist/cjs/validator/helpers.js +0 -49
  603. package/dist/cjs/validator/index.js +0 -176
  604. package/dist/cjs/validator/value.js +0 -565
  605. package/dist/cjs/version.js +0 -20
  606. package/dist/esm/common/ubo-selector-common.mjs +0 -18
  607. package/dist/esm/compatibility-tables/platforms.mjs +0 -58
  608. package/dist/esm/compatibility-tables/schemas/resource-type.mjs +0 -37
  609. package/dist/esm/converter/index.mjs +0 -8
  610. package/dist/esm/marshalling-utils/comment/agent-comment-common.mjs +0 -22
  611. package/dist/esm/marshalling-utils/comment/hint-comment-common.mjs +0 -23
  612. package/dist/esm/marshalling-utils/comment/simple-comment-common.mjs +0 -23
  613. package/dist/esm/marshalling-utils/cosmetic/body/css-injection-body-common.mjs +0 -25
  614. package/dist/esm/marshalling-utils/cosmetic/body/element-hiding-body-common.mjs +0 -22
  615. package/dist/esm/marshalling-utils/filter-list-common.mjs +0 -22
  616. package/dist/esm/marshalling-utils/invalid-rule-error-node-common.mjs +0 -23
  617. package/dist/esm/marshalling-utils/misc/binary-type-common.mjs +0 -67
  618. package/dist/esm/marshalling-utils/misc/host-rule-common.mjs +0 -26
  619. package/dist/esm/marshalling-utils/misc/hostname-list-common.mjs +0 -22
  620. package/dist/esm/marshalling-utils/misc/list-item-common.mjs +0 -23
  621. package/dist/esm/marshalling-utils/misc/logical-expression-common.mjs +0 -86
  622. package/dist/esm/marshalling-utils/misc/modifier-list-common.mjs +0 -22
  623. package/dist/esm/marshalling-utils/misc/parameter-list-common.mjs +0 -22
  624. package/dist/esm/marshalling-utils/misc/value-common.mjs +0 -23
  625. package/dist/esm/marshalling-utils/network/network-rule-common.mjs +0 -26
  626. package/dist/esm/parser/index.mjs +0 -11
  627. package/dist/esm/serializer/index.mjs +0 -7
  628. package/dist/esm/utils/index.mjs +0 -21
@@ -1,133 +0,0 @@
1
- /*
2
- * AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
3
- * (c) 2024 Adguard Software Ltd.
4
- * Released under the MIT license
5
- * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
- */
7
- 'use strict';
8
-
9
- /**
10
- * @file Known CSS elements and attributes.
11
- * TODO: Implement a compatibility table for Extended CSS
12
- */
13
- /**
14
- * Legacy Extended CSS attribute prefix.
15
- *
16
- * @example
17
- * ```css
18
- * [-ext-<name>=...]
19
- * ```
20
- */
21
- const LEGACY_EXT_CSS_ATTRIBUTE_PREFIX = '-ext-';
22
- /**
23
- * ABP Extended CSS prefix.
24
- *
25
- * @example
26
- * ```css
27
- * [-abp-<name>=...]
28
- * -abp-<name>(...)
29
- * ```
30
- */
31
- const ABP_EXT_CSS_PREFIX = '-abp';
32
- /**
33
- * Known _strict_ Extended CSS pseudo-classes. Please, keep this list sorted.
34
- * Strict means that these pseudo-classes are not supported by any browser natively,
35
- * and they always require Extended CSS libraries to work.
36
- */
37
- const EXT_CSS_PSEUDO_CLASSES_STRICT = new Set([
38
- // AdGuard
39
- // https://github.com/AdguardTeam/ExtendedCss
40
- 'contains',
41
- 'if-not',
42
- 'matches-attr',
43
- 'matches-css',
44
- 'matches-property',
45
- 'nth-ancestor',
46
- 'remove',
47
- 'upward',
48
- 'xpath',
49
- // uBlock Origin
50
- // https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#procedural-cosmetic-filters
51
- 'has-text',
52
- 'matches-css-after',
53
- 'matches-css-before',
54
- 'matches-path',
55
- 'min-text-length',
56
- 'watch-attr',
57
- // Adblock Plus
58
- // https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide-emulation
59
- '-abp-contains',
60
- '-abp-has',
61
- '-abp-properties',
62
- ]);
63
- /**
64
- * _ALL_ known Extended CSS pseudo-classes. Please, keep this list sorted.
65
- * It includes strict pseudo-classes and additional pseudo-classes that may be
66
- * supported by some browsers natively.
67
- */
68
- const EXT_CSS_PSEUDO_CLASSES = new Set([
69
- ...EXT_CSS_PSEUDO_CLASSES_STRICT,
70
- /**
71
- * https://developer.mozilla.org/en-US/docs/Web/CSS/:has
72
- */
73
- 'has',
74
- /**
75
- * https://developer.mozilla.org/en-US/docs/Web/CSS/:is
76
- */
77
- 'is',
78
- ]);
79
- /**
80
- * Known legacy Extended CSS attributes. These attributes are deprecated and
81
- * should be replaced with the corresponding pseudo-classes. In a long term,
82
- * these attributes will be COMPLETELY removed from the Extended CSS syntax.
83
- *
84
- * Please, keep this list sorted.
85
- */
86
- const EXT_CSS_LEGACY_ATTRIBUTES = new Set([
87
- // AdGuard
88
- '-ext-contains',
89
- '-ext-has',
90
- '-ext-if-not',
91
- '-ext-is',
92
- '-ext-matches-attr',
93
- '-ext-matches-css',
94
- '-ext-matches-property',
95
- '-ext-nth-ancestor',
96
- '-ext-remove',
97
- '-ext-upward',
98
- '-ext-xpath',
99
- // uBlock Origin
100
- '-ext-has-text',
101
- '-ext-matches-css-after',
102
- '-ext-matches-css-before',
103
- '-ext-matches-path',
104
- '-ext-min-text-length',
105
- '-ext-watch-attr',
106
- // Adblock Plus
107
- '-ext-abp-contains',
108
- '-ext-abp-has',
109
- '-ext-abp-properties',
110
- ]);
111
- /**
112
- * Known CSS functions that aren't allowed in CSS injection rules, because they
113
- * able to load external resources. Please, keep this list sorted.
114
- */
115
- const FORBIDDEN_CSS_FUNCTIONS = new Set([
116
- // https://developer.mozilla.org/en-US/docs/Web/CSS/cross-fade
117
- '-webkit-cross-fade',
118
- 'cross-fade',
119
- // https://developer.mozilla.org/en-US/docs/Web/CSS/image
120
- 'image',
121
- // https://developer.mozilla.org/en-US/docs/Web/CSS/image-set
122
- '-webkit-image-set',
123
- 'image-set',
124
- // https://developer.mozilla.org/en-US/docs/Web/CSS/url
125
- 'url',
126
- ]);
127
-
128
- exports.ABP_EXT_CSS_PREFIX = ABP_EXT_CSS_PREFIX;
129
- exports.EXT_CSS_LEGACY_ATTRIBUTES = EXT_CSS_LEGACY_ATTRIBUTES;
130
- exports.EXT_CSS_PSEUDO_CLASSES = EXT_CSS_PSEUDO_CLASSES;
131
- exports.EXT_CSS_PSEUDO_CLASSES_STRICT = EXT_CSS_PSEUDO_CLASSES_STRICT;
132
- exports.FORBIDDEN_CSS_FUNCTIONS = FORBIDDEN_CSS_FUNCTIONS;
133
- exports.LEGACY_EXT_CSS_ATTRIBUTE_PREFIX = LEGACY_EXT_CSS_ATTRIBUTE_PREFIX;
@@ -1,90 +0,0 @@
1
- /*
2
- * AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
3
- * (c) 2024 Adguard Software Ltd.
4
- * Released under the MIT license
5
- * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
- */
7
- 'use strict';
8
-
9
- var rule = require('./rule.js');
10
- var clone = require('../utils/clone.js');
11
- var multiValueMap = require('../utils/multi-value-map.js');
12
- var conversionResult = require('./base-interfaces/conversion-result.js');
13
- var baseConverter = require('./base-interfaces/base-converter.js');
14
-
15
- /**
16
- * @file Adblock filter list converter
17
- */
18
- /**
19
- * Adblock filter list converter class
20
- *
21
- * This class just provides an extra layer on top of the {@link RuleConverter}
22
- * and can be used to convert entire filter lists.
23
- *
24
- * @todo Implement `convertToUbo` and `convertToAbp`
25
- * @todo Implement tolerant mode, which will allow to convert a filter list
26
- * even if some of its rules are invalid
27
- */
28
- class FilterListConverter extends baseConverter.BaseConverter {
29
- /**
30
- * Converts an adblock filter list to AdGuard format, if possible.
31
- *
32
- * @param filterListNode Filter list node to convert
33
- * @param tolerant Indicates whether the converter should be tolerant to invalid rules. If enabled and a rule is
34
- * invalid, it will be left as is. If disabled and a rule is invalid, the whole filter list will be failed.
35
- * Defaults to `true`.
36
- * @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
37
- * the converted node, and its `isConverted` flag indicates whether the original node was converted.
38
- * If the node was not converted, the result will contain the original node with the same object reference
39
- * @throws If the filter list is invalid or cannot be converted (if the tolerant mode is disabled)
40
- */
41
- static convertToAdg(filterListNode, tolerant = true) {
42
- // Prepare a map to store the converted rules by their index in the filter list
43
- const conversionMap = new multiValueMap.MultiValueMap();
44
- // Iterate over the filtering rules and convert them one by one, then add them to the result (one conversion may
45
- // result in multiple rules)
46
- for (let i = 0; i < filterListNode.children.length; i += 1) {
47
- try {
48
- const convertedRules = rule.RuleConverter.convertToAdg(filterListNode.children[i]);
49
- // Add the converted rules to the map if they were converted
50
- if (convertedRules.isConverted) {
51
- conversionMap.add(i, ...convertedRules.result);
52
- }
53
- }
54
- catch (error) {
55
- // If the tolerant mode is disabled, we should throw an error, this will fail the whole filter list
56
- // conversion.
57
- // Otherwise, we just ignore the error and leave the rule as is
58
- if (!tolerant) {
59
- throw error;
60
- }
61
- }
62
- }
63
- // If the conversion map is empty, it means that no rules were converted, so we can return the original filter
64
- // list
65
- if (conversionMap.size === 0) {
66
- return conversionResult.createConversionResult(filterListNode, false);
67
- }
68
- // Otherwise, create a new filter list node with the converted rules
69
- const convertedFilterList = {
70
- type: 'FilterList',
71
- children: [],
72
- };
73
- // Iterate over the original rules again and add them to the converted filter list, replacing the converted
74
- // rules with the new ones at the specified indexes
75
- for (let i = 0; i < filterListNode.children.length; i += 1) {
76
- const rules = conversionMap.get(i);
77
- if (rules) {
78
- convertedFilterList.children.push(...rules);
79
- }
80
- else {
81
- // We clone the unconverted rules to avoid mutating the original filter list if we return the converted
82
- // one
83
- convertedFilterList.children.push(clone.clone(filterListNode.children[i]));
84
- }
85
- }
86
- return conversionResult.createConversionResult(convertedFilterList, true);
87
- }
88
- }
89
-
90
- exports.FilterListConverter = FilterListConverter;
@@ -1,15 +0,0 @@
1
- /*
2
- * AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
3
- * (c) 2024 Adguard Software Ltd.
4
- * Released under the MIT license
5
- * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
- */
7
- 'use strict';
8
-
9
- var rawFilterList = require('./raw-filter-list.js');
10
- var rule = require('./rule.js');
11
-
12
-
13
-
14
- exports.RawFilterListConverter = rawFilterList.RawFilterListConverter;
15
- exports.RuleConverter = rule.RuleConverter;
@@ -1,313 +0,0 @@
1
- /*
2
- * AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
3
- * (c) 2024 Adguard Software Ltd.
4
- * Released under the MIT license
5
- * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
- */
7
- 'use strict';
8
-
9
- var constants = require('../../utils/constants.js');
10
- var modifiers = require('../../ast-utils/modifiers.js');
11
- var baseConverter = require('../base-interfaces/base-converter.js');
12
- var ruleConversionError = require('../../errors/rule-conversion-error.js');
13
- var multiValueMap = require('../../utils/multi-value-map.js');
14
- var conversionResult = require('../base-interfaces/conversion-result.js');
15
- var clone = require('../../ast-utils/clone.js');
16
- var modifiers$1 = require('../../compatibility-tables/modifiers.js');
17
- var redirects = require('../../compatibility-tables/redirects.js');
18
- require('../../compatibility-tables/scriptlets.js');
19
- var platforms = require('../../compatibility-tables/platforms.js');
20
- require('../../compatibility-tables/schemas/base.js');
21
- require('../../compatibility-tables/schemas/modifier.js');
22
- require('../../compatibility-tables/schemas/redirect.js');
23
- require('../../compatibility-tables/schemas/scriptlet.js');
24
- require('../../compatibility-tables/schemas/platform.js');
25
- require('../../compatibility-tables/utils/platform-helpers.js');
26
- require('../../compatibility-tables/schemas/resource-type.js');
27
- var resourceTypeHelpers = require('../../compatibility-tables/utils/resource-type-helpers.js');
28
- var typeGuards = require('../../utils/type-guards.js');
29
-
30
- /**
31
- * @file Network rule modifier list converter.
32
- */
33
- /**
34
- * @see {@link https://adguard.com/kb/general/ad-filtering/create-own-filters/#csp-modifier}
35
- */
36
- const CSP_MODIFIER = 'csp';
37
- const CSP_SEPARATOR = constants.SEMICOLON + constants.SPACE;
38
- /**
39
- * @see {@link https://adguard.com/kb/general/ad-filtering/create-own-filters/#csp-modifier}
40
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy}
41
- */
42
- const COMMON_CSP_PARAMS = '\'self\' \'unsafe-eval\' http: https: data: blob: mediastream: filesystem:';
43
- /**
44
- * @see {@link https://help.adblockplus.org/hc/en-us/articles/360062733293#rewrite}
45
- */
46
- const ABP_REWRITE_MODIFIER = 'rewrite';
47
- /**
48
- * @see {@link https://adguard.com/kb/general/ad-filtering/create-own-filters/#redirect-modifier}
49
- */
50
- const REDIRECT_MODIFIER = 'redirect';
51
- /**
52
- * @see {@link https://adguard.com/kb/general/ad-filtering/create-own-filters/#redirect-rule-modifier}
53
- */
54
- const REDIRECT_RULE_MODIFIER = 'redirect-rule';
55
- /**
56
- * @see {@link https://github.com/gorhill/uBlock/wiki/Resources-Library#empty-redirect-resources}
57
- */
58
- const UBO_NOOP_TEXT_RESOURCE = 'noop.txt';
59
- /**
60
- * Redirect-related modifiers.
61
- */
62
- const REDIRECT_MODIFIERS = new Set([
63
- ABP_REWRITE_MODIFIER,
64
- REDIRECT_MODIFIER,
65
- REDIRECT_RULE_MODIFIER,
66
- ]);
67
- /**
68
- * Conversion map for ADG network rule modifiers.
69
- */
70
- const ADG_CONVERSION_MAP = new Map([
71
- ['1p', [{ name: () => 'third-party', exception: (actual) => !actual }]],
72
- ['3p', [{ name: () => 'third-party' }]],
73
- ['css', [{ name: () => 'stylesheet' }]],
74
- ['doc', [{ name: () => 'document' }]],
75
- ['ehide', [{ name: () => 'elemhide' }]],
76
- ['empty', [{ name: () => 'redirect', value: () => 'nooptext' }]],
77
- ['first-party', [{ name: () => 'third-party', exception: (actual) => !actual }]],
78
- ['frame', [{ name: () => 'subdocument' }]],
79
- ['ghide', [{ name: () => 'generichide' }]],
80
- ['inline-font', [{ name: () => CSP_MODIFIER, value: () => `font-src ${COMMON_CSP_PARAMS}` }]],
81
- ['inline-script', [{ name: () => CSP_MODIFIER, value: () => `script-src ${COMMON_CSP_PARAMS}` }]],
82
- ['mp4', [{ name: () => 'redirect', value: () => 'noopmp4-1s' }, { name: () => 'media', value: () => undefined }]],
83
- ['queryprune', [{ name: () => 'removeparam' }]],
84
- ['shide', [{ name: () => 'specifichide' }]],
85
- ['xhr', [{ name: () => 'xmlhttprequest' }]],
86
- ]);
87
- /**
88
- * Helper class for converting network rule modifier lists.
89
- *
90
- * @todo Implement `convertToUbo` and `convertToAbp`
91
- */
92
- class NetworkRuleModifierListConverter extends baseConverter.BaseConverter {
93
- /**
94
- * Converts a network rule modifier list to AdGuard format, if possible.
95
- *
96
- * @param modifierList Network rule modifier list node to convert
97
- * @param isException If `true`, the rule is an exception rule
98
- * @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
99
- * the converted node, and its `isConverted` flag indicates whether the original node was converted.
100
- * If the node was not converted, the result will contain the original node with the same object reference
101
- * @throws If the conversion is not possible
102
- */
103
- static convertToAdg(modifierList, isException = false) {
104
- const conversionMap = new multiValueMap.MultiValueMap();
105
- // Special case: $csp modifier
106
- let cspCount = 0;
107
- modifierList.children.forEach((modifierNode, index) => {
108
- const modifierConversions = ADG_CONVERSION_MAP.get(modifierNode.name.value);
109
- if (modifierConversions) {
110
- for (const modifierConversion of modifierConversions) {
111
- const name = modifierConversion.name(modifierNode.name.value);
112
- const exception = modifierConversion.exception
113
- // If the exception value is undefined in the original modifier, it
114
- // means that the modifier isn't negated
115
- ? modifierConversion.exception(modifierNode.exception || false)
116
- : modifierNode.exception;
117
- const value = modifierConversion.value
118
- ? modifierConversion.value(modifierNode.value?.value)
119
- : modifierNode.value?.value;
120
- // Check if the name or the value is different from the original modifier
121
- // If so, add the converted modifier to the list
122
- if (name !== modifierNode.name.value || value !== modifierNode.value?.value) {
123
- conversionMap.add(index, modifiers.createModifierNode(name, value, exception));
124
- }
125
- // Special case: $csp modifier
126
- if (name === CSP_MODIFIER) {
127
- cspCount += 1;
128
- }
129
- }
130
- return;
131
- }
132
- // Handle special case: resource redirection modifiers
133
- if (REDIRECT_MODIFIERS.has(modifierNode.name.value)) {
134
- // Redirect modifiers can't be negated
135
- if (modifierNode.exception === true) {
136
- throw new ruleConversionError.RuleConversionError(`Modifier '${modifierNode.name.value}' cannot be negated`);
137
- }
138
- // Convert the redirect resource name to ADG format
139
- const redirectResource = modifierNode.value?.value;
140
- // Special case: for exception rules, $redirect without value is allowed,
141
- // and in this case it means an exception for all redirects
142
- if (!redirectResource && !isException) {
143
- throw new ruleConversionError.RuleConversionError(`No redirect resource specified for '${modifierNode.name.value}' modifier`);
144
- }
145
- // Leave $redirect and $redirect-rule modifiers as is, but convert $rewrite to $redirect
146
- const modifierName = modifierNode.name.value === ABP_REWRITE_MODIFIER
147
- ? REDIRECT_MODIFIER
148
- : modifierNode.name.value;
149
- const convertedRedirectResource = redirectResource
150
- ? redirects.redirectsCompatibilityTable.getFirst(redirectResource, platforms.GenericPlatform.AdgAny)?.name
151
- : undefined;
152
- // Check if the modifier name or the redirect resource name is different from the original modifier.
153
- // If so, add the converted modifier to the list
154
- if (modifierName !== modifierNode.name.value
155
- || (convertedRedirectResource !== undefined && convertedRedirectResource !== redirectResource)) {
156
- conversionMap.add(index, modifiers.createModifierNode(modifierName,
157
- // If the redirect resource name is unknown, fall back to the original one
158
- // Later, the validator will throw an error if the resource name is invalid
159
- convertedRedirectResource || redirectResource, modifierNode.exception));
160
- }
161
- }
162
- });
163
- // Prepare the result if there are any converted modifiers or $csp modifiers
164
- if (conversionMap.size || cspCount) {
165
- const modifierListClone = clone.cloneModifierListNode(modifierList);
166
- // Replace the original modifiers with the converted ones
167
- // One modifier may be replaced with multiple modifiers, so we need to flatten the array
168
- modifierListClone.children = modifierListClone.children.map((modifierNode, index) => {
169
- const conversionRecord = conversionMap.get(index);
170
- if (conversionRecord) {
171
- return conversionRecord;
172
- }
173
- return modifierNode;
174
- }).flat();
175
- // Special case: $csp modifier: merge multiple $csp modifiers into one
176
- // and put it at the end of the modifier list
177
- if (cspCount) {
178
- const cspValues = [];
179
- modifierListClone.children = modifierListClone.children.filter((modifierNode) => {
180
- if (modifierNode.name.value === CSP_MODIFIER) {
181
- if (!modifierNode.value?.value) {
182
- throw new ruleConversionError.RuleConversionError('$csp modifier value is missing');
183
- }
184
- cspValues.push(modifierNode.value?.value);
185
- return false;
186
- }
187
- return true;
188
- });
189
- modifierListClone.children.push(modifiers.createModifierNode(CSP_MODIFIER, cspValues.join(CSP_SEPARATOR)));
190
- }
191
- // Before returning the result, remove duplicated modifiers
192
- modifierListClone.children = modifierListClone.children.filter((modifierNode, index, self) => self.findIndex((m) => m.name.value === modifierNode.name.value
193
- && m.exception === modifierNode.exception
194
- && m.value?.value === modifierNode.value?.value) === index);
195
- return conversionResult.createConversionResult(modifierListClone, true);
196
- }
197
- return conversionResult.createConversionResult(modifierList, false);
198
- }
199
- /**
200
- * Converts a network rule modifier list to uBlock format, if possible.
201
- *
202
- * @param modifierList Network rule modifier list node to convert
203
- * @param isException If `true`, the rule is an exception rule
204
- * @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
205
- * the converted node, and its `isConverted` flag indicates whether the original node was converted.
206
- * If the node was not converted, the result will contain the original node with the same object reference
207
- * @throws If the conversion is not possible
208
- */
209
- // TODO: Optimize
210
- static convertToUbo(modifierList, isException = false) {
211
- const conversionMap = new multiValueMap.MultiValueMap();
212
- const resourceTypeModifiersToAdd = new Set();
213
- modifierList.children.forEach((modifierNode, index) => {
214
- const originalModifierName = modifierNode.name.value;
215
- const modifierData = modifiers$1.modifiersCompatibilityTable.getFirst(originalModifierName, platforms.GenericPlatform.UboAny);
216
- // Handle special case: resource redirection modifiers
217
- if (REDIRECT_MODIFIERS.has(originalModifierName)) {
218
- // Redirect modifiers cannot be negated
219
- if (modifierNode.exception === true) {
220
- throw new ruleConversionError.RuleConversionError(`Modifier '${modifierNode.name.value}' cannot be negated`);
221
- }
222
- // Convert the redirect resource name to uBO format
223
- const redirectResourceName = modifierNode.value?.value;
224
- // Special case: for exception rules, $redirect without value is allowed,
225
- // and in this case it means an exception for all redirects
226
- if (!redirectResourceName && !isException) {
227
- throw new ruleConversionError.RuleConversionError(`No redirect resource specified for '${modifierNode.name.value}' modifier`);
228
- }
229
- if (!redirectResourceName) {
230
- // Jump to the next modifier if the redirect resource is not specified
231
- return;
232
- }
233
- // Leave $redirect and $redirect-rule modifiers as is, but convert $rewrite to $redirect
234
- const modifierName = modifierNode.name.value === ABP_REWRITE_MODIFIER
235
- ? REDIRECT_MODIFIER
236
- : modifierNode.name.value;
237
- const convertedRedirectResourceData = redirects.redirectsCompatibilityTable.getFirst(redirectResourceName, platforms.GenericPlatform.UboAny);
238
- const convertedRedirectResourceName = convertedRedirectResourceData?.name ?? redirectResourceName;
239
- // uBlock requires the $redirect modifier to have a resource type
240
- // https://github.com/AdguardTeam/Scriptlets/issues/101
241
- if (convertedRedirectResourceData?.resourceTypes?.length) {
242
- // Convert the resource types to uBO modifiers
243
- const uboResourceTypeModifiers = redirects.redirectsCompatibilityTable.getResourceTypeModifiers(convertedRedirectResourceData, platforms.GenericPlatform.UboAny);
244
- // Special case: noop text resource
245
- // If any of resource type is already present, we don't need to add other resource types,
246
- // otherwise, add all resource types
247
- // TODO: Optimize this logic
248
- // Check if the current resource is the noop text resource
249
- const isNoopTextResource = convertedRedirectResourceName === UBO_NOOP_TEXT_RESOURCE;
250
- // Determine if there are any valid resource types already present
251
- const hasValidResourceType = modifierList.children.some((modifier) => {
252
- const name = modifier.name.value;
253
- if (!resourceTypeHelpers.isValidResourceType(name)) {
254
- return false;
255
- }
256
- const convertedModifierData = modifiers$1.modifiersCompatibilityTable.getFirst(name, platforms.GenericPlatform.UboAny);
257
- return uboResourceTypeModifiers.has(convertedModifierData?.name ?? name);
258
- });
259
- // If it's not the noop text resource or if no valid resource types are present
260
- if (!isNoopTextResource || !hasValidResourceType) {
261
- uboResourceTypeModifiers.forEach((resourceType) => {
262
- resourceTypeModifiersToAdd.add(resourceType);
263
- });
264
- }
265
- }
266
- // Check if the modifier name or the redirect resource name is different from the original modifier.
267
- // If so, add the converted modifier to the list
268
- if (modifierName !== originalModifierName
269
- || (!typeGuards.isUndefined(convertedRedirectResourceName)
270
- && convertedRedirectResourceName !== redirectResourceName)) {
271
- conversionMap.add(index, modifiers.createModifierNode(modifierName,
272
- // If the redirect resource name is unknown, fall back to the original one
273
- // Later, the validator will throw an error if the resource name is invalid
274
- convertedRedirectResourceName || redirectResourceName, modifierNode.exception));
275
- }
276
- return;
277
- }
278
- // Generic modifier conversion
279
- if (modifierData && modifierData.name !== originalModifierName) {
280
- conversionMap.add(index, modifiers.createModifierNode(modifierData.name, modifierNode.value?.value, modifierNode.exception));
281
- }
282
- });
283
- // Prepare the result if there are any converted modifiers or $csp modifiers
284
- if (conversionMap.size || resourceTypeModifiersToAdd.size) {
285
- const modifierListClone = clone.cloneModifierListNode(modifierList);
286
- // Replace the original modifiers with the converted ones
287
- // One modifier may be replaced with multiple modifiers, so we need to flatten the array
288
- modifierListClone.children = modifierListClone.children.map((modifierNode, index) => {
289
- const conversionRecord = conversionMap.get(index);
290
- if (conversionRecord) {
291
- return conversionRecord;
292
- }
293
- return modifierNode;
294
- }).flat();
295
- // Before returning the result, remove duplicated modifiers
296
- modifierListClone.children = modifierListClone.children.filter((modifierNode, index, self) => self.findIndex((m) => m.name.value === modifierNode.name.value
297
- && m.exception === modifierNode.exception
298
- && m.value?.value === modifierNode.value?.value) === index);
299
- if (resourceTypeModifiersToAdd.size) {
300
- const modifierNameSet = new Set(modifierList.children.map((m) => m.name.value));
301
- resourceTypeModifiersToAdd.forEach((resourceType) => {
302
- if (!modifierNameSet.has(resourceType)) {
303
- modifierListClone.children.push(modifiers.createModifierNode(resourceType));
304
- }
305
- });
306
- }
307
- return conversionResult.createConversionResult(modifierListClone, true);
308
- }
309
- return conversionResult.createConversionResult(modifierList, false);
310
- }
311
- }
312
-
313
- exports.NetworkRuleModifierListConverter = NetworkRuleModifierListConverter;
@@ -1,101 +0,0 @@
1
- /*
2
- * AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
3
- * (c) 2024 Adguard Software Ltd.
4
- * Released under the MIT license
5
- * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
- */
7
- 'use strict';
8
-
9
- var index = require('../../nodes/index.js');
10
- var networkRuleModifier = require('../misc/network-rule-modifier.js');
11
- var ruleConverterBase = require('../base-interfaces/rule-converter-base.js');
12
- var conversionResult = require('../base-interfaces/conversion-result.js');
13
-
14
- /**
15
- * @file Network rule converter
16
- */
17
- /**
18
- * Network rule converter class (also known as "basic rule converter")
19
- *
20
- * @todo Implement `convertToUbo` and `convertToAbp`
21
- */
22
- class NetworkRuleConverter extends ruleConverterBase.RuleConverterBase {
23
- /**
24
- * Converts a network rule to AdGuard format, if possible.
25
- *
26
- * @param rule Rule node to convert
27
- * @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
28
- * the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
29
- * If the rule was not converted, the result array will contain the original node with the same object reference
30
- * @throws If the rule is invalid or cannot be converted
31
- */
32
- static convertToAdg(rule) {
33
- // TODO: add support for host rules
34
- if (rule.type !== index.NetworkRuleType.NetworkRule) {
35
- throw new Error(`Invalid rule type: ${rule.type}`);
36
- }
37
- if (rule.modifiers) {
38
- const modifiers = networkRuleModifier.NetworkRuleModifierListConverter.convertToAdg(rule.modifiers, rule.exception);
39
- // If the object reference is different, it means that the modifiers were converted
40
- // In this case, we should clone the entire rule and replace the modifiers with the converted ones
41
- if (modifiers.isConverted) {
42
- return {
43
- result: [{
44
- category: index.RuleCategory.Network,
45
- type: index.NetworkRuleType.NetworkRule,
46
- syntax: rule.syntax,
47
- exception: rule.exception,
48
- pattern: {
49
- type: 'Value',
50
- value: rule.pattern.value,
51
- },
52
- modifiers: modifiers.result,
53
- }],
54
- isConverted: true,
55
- };
56
- }
57
- }
58
- // If the modifiers were not converted, return the original rule
59
- return conversionResult.createNodeConversionResult([rule], false);
60
- }
61
- /**
62
- * Converts a network rule to uBlock format, if possible.
63
- *
64
- * @param rule Rule node to convert
65
- * @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
66
- * the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
67
- * If the rule was not converted, the result array will contain the original node with the same object reference
68
- * @throws If the rule is invalid or cannot be converted
69
- */
70
- static convertToUbo(rule) {
71
- // TODO: add support for host rules
72
- if (rule.type !== index.NetworkRuleType.NetworkRule) {
73
- throw new Error(`Invalid rule type: ${rule.type}`);
74
- }
75
- if (rule.modifiers) {
76
- const modifiers = networkRuleModifier.NetworkRuleModifierListConverter.convertToUbo(rule.modifiers, rule.exception);
77
- // If the object reference is different, it means that the modifiers were converted
78
- // In this case, we should clone the entire rule and replace the modifiers with the converted ones
79
- if (modifiers.isConverted) {
80
- return {
81
- result: [{
82
- category: index.RuleCategory.Network,
83
- type: index.NetworkRuleType.NetworkRule,
84
- syntax: rule.syntax,
85
- exception: rule.exception,
86
- pattern: {
87
- type: 'Value',
88
- value: rule.pattern.value,
89
- },
90
- modifiers: modifiers.result,
91
- }],
92
- isConverted: true,
93
- };
94
- }
95
- }
96
- // If the modifiers were not converted, return the original rule
97
- return conversionResult.createNodeConversionResult([rule], false);
98
- }
99
- }
100
-
101
- exports.NetworkRuleConverter = NetworkRuleConverter;