@adguard/agtree 2.1.3 → 3.0.0-alpha.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 (734) hide show
  1. package/dist/cjs/ast-utils/clone.js +65 -0
  2. package/dist/cjs/ast-utils/modifiers.js +56 -0
  3. package/dist/cjs/ast-utils/network-rules.js +43 -0
  4. package/dist/cjs/ast-utils/scriptlets.js +93 -0
  5. package/dist/cjs/common/abp-snippet-injection-body-common.js +18 -0
  6. package/dist/cjs/common/agent-common.js +58 -0
  7. package/dist/cjs/common/ubo-selector-common.js +18 -0
  8. package/dist/cjs/compatibility-tables/base.js +264 -0
  9. package/dist/cjs/compatibility-tables/compatibility-table-data.js +15 -0
  10. package/dist/cjs/compatibility-tables/modifiers.js +57 -0
  11. package/dist/cjs/compatibility-tables/platforms.js +58 -0
  12. package/dist/cjs/compatibility-tables/redirects.js +102 -0
  13. package/dist/cjs/compatibility-tables/schemas/base.js +116 -0
  14. package/dist/cjs/compatibility-tables/schemas/modifier.js +107 -0
  15. package/dist/cjs/compatibility-tables/schemas/platform.js +71 -0
  16. package/dist/cjs/compatibility-tables/schemas/redirect.js +31 -0
  17. package/dist/cjs/compatibility-tables/schemas/resource-type.js +39 -0
  18. package/dist/cjs/compatibility-tables/schemas/scriptlet.js +81 -0
  19. package/dist/cjs/compatibility-tables/scriptlets.js +30 -0
  20. package/dist/cjs/compatibility-tables/utils/platform-helpers.js +112 -0
  21. package/dist/cjs/compatibility-tables/utils/resource-type-helpers.js +64 -0
  22. package/dist/cjs/compatibility-tables/utils/zod-camelcase.js +27 -0
  23. package/dist/cjs/converter/base-interfaces/base-converter.js +61 -0
  24. package/dist/cjs/converter/base-interfaces/conversion-result.js +41 -0
  25. package/dist/cjs/converter/base-interfaces/rule-converter-base.js +62 -0
  26. package/dist/cjs/converter/comment/index.js +56 -0
  27. package/dist/cjs/converter/cosmetic/css.js +71 -0
  28. package/dist/cjs/converter/cosmetic/element-hiding.js +64 -0
  29. package/dist/cjs/converter/cosmetic/header-removal.js +126 -0
  30. package/dist/cjs/converter/cosmetic/html.js +384 -0
  31. package/dist/cjs/converter/cosmetic/index.js +120 -0
  32. package/dist/cjs/converter/cosmetic/rule-modifiers/adg.js +81 -0
  33. package/dist/cjs/converter/cosmetic/scriptlet.js +356 -0
  34. package/dist/cjs/converter/css/index.js +193 -0
  35. package/dist/cjs/converter/data/css.js +133 -0
  36. package/dist/cjs/converter/filter-list.js +90 -0
  37. package/dist/cjs/converter/index.js +15 -0
  38. package/dist/cjs/converter/misc/network-rule-modifier.js +313 -0
  39. package/dist/cjs/converter/network/index.js +101 -0
  40. package/dist/cjs/converter/raw-filter-list.js +58 -0
  41. package/dist/cjs/converter/rule.js +83 -0
  42. package/dist/cjs/deserializer/base-deserializer.js +31 -0
  43. package/dist/cjs/deserializer/comment/agent-comment-deserializer.js +76 -0
  44. package/dist/cjs/deserializer/comment/agent-deserializer.js +67 -0
  45. package/dist/cjs/deserializer/comment/comment-rule-deserializer.js +109 -0
  46. package/dist/cjs/deserializer/comment/config-comment-deserializer.js +113 -0
  47. package/dist/cjs/deserializer/comment/hint-comment-deserializer.js +69 -0
  48. package/dist/cjs/deserializer/comment/hint-deserializer.js +88 -0
  49. package/dist/cjs/deserializer/comment/metadata-comment-deserializer.js +71 -0
  50. package/dist/cjs/deserializer/comment/pre-processor-comment-deserializer.js +114 -0
  51. package/dist/cjs/deserializer/comment/simple-comment-deserializer.js +67 -0
  52. package/dist/cjs/deserializer/cosmetic/cosmetic-rule-deserializer.js +127 -0
  53. package/dist/cjs/deserializer/cosmetic/css-injection-body-deserializer.js +55 -0
  54. package/dist/cjs/deserializer/cosmetic/element-hiding-body-deserializer.js +46 -0
  55. package/dist/cjs/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +37 -0
  56. package/dist/cjs/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +37 -0
  57. package/dist/cjs/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +52 -0
  58. package/dist/cjs/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +38 -0
  59. package/dist/cjs/deserializer/empty-rule-deserializer.js +46 -0
  60. package/dist/cjs/deserializer/filterlist-deserializer.js +83 -0
  61. package/dist/cjs/deserializer/index.js +15 -0
  62. package/dist/cjs/deserializer/invalid-rule-deserializer.js +48 -0
  63. package/dist/cjs/deserializer/invalid-rule-error-node-deserializer.js +48 -0
  64. package/dist/cjs/deserializer/misc/domain-list-deserializer.js +66 -0
  65. package/dist/cjs/deserializer/misc/list-item-deserializer.js +65 -0
  66. package/dist/cjs/deserializer/misc/list-items-deserializer.js +28 -0
  67. package/dist/cjs/deserializer/misc/logical-expression-deserializer.js +199 -0
  68. package/dist/cjs/deserializer/misc/modifier-deserializer.js +89 -0
  69. package/dist/cjs/deserializer/misc/modifier-list-deserializer.js +58 -0
  70. package/dist/cjs/deserializer/misc/parameter-list-deserializer.js +62 -0
  71. package/dist/cjs/deserializer/misc/value-deserializer.js +52 -0
  72. package/dist/cjs/deserializer/network/host-rule-deserializer.js +81 -0
  73. package/dist/cjs/deserializer/network/hostname-list-deserializer.js +50 -0
  74. package/dist/cjs/deserializer/network/network-rule-deserializer.js +67 -0
  75. package/dist/cjs/deserializer/rule-deserializer.js +67 -0
  76. package/dist/cjs/deserializer/syntax-deserialization-map.js +23 -0
  77. package/dist/cjs/errors/adblock-syntax-error.js +41 -0
  78. package/dist/cjs/errors/binary-schema-mismatch-error.js +39 -0
  79. package/dist/cjs/errors/not-implemented-error.js +33 -0
  80. package/dist/cjs/errors/rule-conversion-error.js +28 -0
  81. package/dist/cjs/generator/base-generator.js +29 -0
  82. package/dist/cjs/generator/comment/agent-comment-generator.js +30 -0
  83. package/dist/cjs/generator/comment/agent-generator.js +34 -0
  84. package/dist/cjs/generator/comment/comment-rule-generator.js +102 -0
  85. package/dist/cjs/generator/comment/config-comment-generator.js +44 -0
  86. package/dist/cjs/generator/comment/hint-comment-generator.js +27 -0
  87. package/dist/cjs/generator/comment/hint-generator.js +32 -0
  88. package/dist/cjs/generator/comment/metadata-comment-generator.js +32 -0
  89. package/dist/cjs/generator/comment/pre-processor-comment-generator.js +47 -0
  90. package/dist/cjs/generator/comment/simple-comment-generator.js +28 -0
  91. package/dist/cjs/generator/cosmetic/body/abp-snippet-injection-body-generator.js +36 -0
  92. package/dist/cjs/generator/cosmetic/body/adg-scriptlet-injection-body-generator.js +41 -0
  93. package/dist/cjs/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js +43 -0
  94. package/dist/cjs/generator/cosmetic/cosmetic-rule-body-generator.js +92 -0
  95. package/dist/cjs/generator/cosmetic/cosmetic-rule-generator.js +66 -0
  96. package/dist/cjs/generator/cosmetic/cosmetic-rule-pattern-generator.js +41 -0
  97. package/dist/cjs/generator/css/adg-css-injection-generator.js +41 -0
  98. package/dist/cjs/generator/filterlist-generator.js +57 -0
  99. package/dist/cjs/generator/index.js +17 -0
  100. package/dist/cjs/generator/misc/domain-list-generator.js +25 -0
  101. package/dist/cjs/generator/misc/list-items-generator.js +38 -0
  102. package/dist/cjs/generator/misc/logical-expression-generator.js +47 -0
  103. package/dist/cjs/generator/misc/modifier-generator.js +33 -0
  104. package/dist/cjs/generator/misc/modifier-list-generator.js +28 -0
  105. package/dist/cjs/generator/misc/parameter-list-generator.js +41 -0
  106. package/dist/cjs/generator/misc/value-generator.js +23 -0
  107. package/dist/cjs/generator/network/host-rule-generator.js +38 -0
  108. package/dist/cjs/generator/network/network-rule-generator.js +37 -0
  109. package/dist/cjs/generator/rule-generator.js +64 -0
  110. package/dist/cjs/index.js +201 -0
  111. package/dist/cjs/marshalling-utils/comment/agent-comment-common.js +22 -0
  112. package/dist/cjs/marshalling-utils/comment/agent-common.js +43 -0
  113. package/dist/cjs/marshalling-utils/comment/config-comment-common.js +58 -0
  114. package/dist/cjs/marshalling-utils/comment/hint-comment-common.js +23 -0
  115. package/dist/cjs/marshalling-utils/comment/hint-common.js +60 -0
  116. package/dist/cjs/marshalling-utils/comment/metadata-comment-common.js +44 -0
  117. package/dist/cjs/marshalling-utils/comment/pre-processor-comment-common.js +63 -0
  118. package/dist/cjs/marshalling-utils/comment/simple-comment-common.js +23 -0
  119. package/dist/cjs/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +64 -0
  120. package/dist/cjs/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +68 -0
  121. package/dist/cjs/marshalling-utils/cosmetic/body/css-injection-body-common.js +25 -0
  122. package/dist/cjs/marshalling-utils/cosmetic/body/element-hiding-body-common.js +22 -0
  123. package/dist/cjs/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +116 -0
  124. package/dist/cjs/marshalling-utils/cosmetic/cosmetic-rule-common.js +51 -0
  125. package/dist/cjs/marshalling-utils/empty-rule-common.js +21 -0
  126. package/dist/cjs/marshalling-utils/filter-list-common.js +22 -0
  127. package/dist/cjs/marshalling-utils/invalid-rule-common.js +22 -0
  128. package/dist/cjs/marshalling-utils/invalid-rule-error-node-common.js +23 -0
  129. package/dist/cjs/marshalling-utils/misc/binary-type-common.js +67 -0
  130. package/dist/cjs/marshalling-utils/misc/domain-list-common.js +39 -0
  131. package/dist/cjs/marshalling-utils/misc/host-rule-common.js +26 -0
  132. package/dist/cjs/marshalling-utils/misc/hostname-list-common.js +22 -0
  133. package/dist/cjs/marshalling-utils/misc/list-item-common.js +23 -0
  134. package/dist/cjs/marshalling-utils/misc/logical-expression-common.js +89 -0
  135. package/dist/cjs/marshalling-utils/misc/modifier-common.js +236 -0
  136. package/dist/cjs/marshalling-utils/misc/modifier-list-common.js +22 -0
  137. package/dist/cjs/marshalling-utils/misc/parameter-list-common.js +22 -0
  138. package/dist/cjs/marshalling-utils/misc/value-common.js +23 -0
  139. package/dist/cjs/marshalling-utils/network/network-rule-common.js +26 -0
  140. package/dist/cjs/marshalling-utils/syntax-serialization-map.js +32 -0
  141. package/dist/cjs/nodes/index.js +180 -0
  142. package/dist/cjs/package.json.js +11 -0
  143. package/dist/cjs/parser/base-parser.js +32 -0
  144. package/dist/cjs/parser/comment/agent-comment-parser.js +121 -0
  145. package/dist/cjs/parser/comment/agent-parser.js +111 -0
  146. package/dist/cjs/parser/comment/comment-parser.js +110 -0
  147. package/dist/cjs/parser/comment/config-comment-parser.js +139 -0
  148. package/dist/cjs/parser/comment/hint-comment-parser.js +119 -0
  149. package/dist/cjs/parser/comment/hint-parser.js +131 -0
  150. package/dist/cjs/parser/comment/metadata-comment-parser.js +131 -0
  151. package/dist/cjs/parser/comment/preprocessor-parser.js +201 -0
  152. package/dist/cjs/parser/comment/simple-comment-parser.js +108 -0
  153. package/dist/cjs/parser/cosmetic/body/abp-snippet-injection-body-parser.js +81 -0
  154. package/dist/cjs/parser/cosmetic/body/adg-scriptlet-injection-body-parser.js +151 -0
  155. package/dist/cjs/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js +112 -0
  156. package/dist/cjs/parser/cosmetic/cosmetic-rule-parser.js +456 -0
  157. package/dist/cjs/parser/css/adg-css-injection-parser.js +213 -0
  158. package/dist/cjs/parser/css/balancing.js +97 -0
  159. package/dist/cjs/parser/css/constants.js +21 -0
  160. package/dist/cjs/parser/css/css-token-stream.js +345 -0
  161. package/dist/cjs/parser/css/ubo-selector-parser.js +373 -0
  162. package/dist/cjs/parser/filterlist-parser.js +104 -0
  163. package/dist/cjs/parser/index.js +21 -0
  164. package/dist/cjs/parser/misc/app-list-parser.js +47 -0
  165. package/dist/cjs/parser/misc/domain-list-parser.js +54 -0
  166. package/dist/cjs/parser/misc/list-items-parser.js +116 -0
  167. package/dist/cjs/parser/misc/logical-expression-parser.js +283 -0
  168. package/dist/cjs/parser/misc/method-list-parser.js +48 -0
  169. package/dist/cjs/parser/misc/modifier-list.js +72 -0
  170. package/dist/cjs/parser/misc/modifier-parser.js +91 -0
  171. package/dist/cjs/parser/misc/parameter-list-parser.js +74 -0
  172. package/dist/cjs/parser/misc/stealth-option-list-parser.js +48 -0
  173. package/dist/cjs/parser/misc/ubo-parameter-list-parser.js +148 -0
  174. package/dist/cjs/parser/misc/value-parser.js +39 -0
  175. package/dist/cjs/parser/network/host-rule-parser.js +151 -0
  176. package/dist/cjs/parser/network/network-rule-parser.js +113 -0
  177. package/dist/cjs/parser/options.js +25 -0
  178. package/dist/cjs/parser/rule-parser.js +194 -0
  179. package/dist/cjs/serializer/base-serializer.js +31 -0
  180. package/dist/cjs/serializer/comment/agent-comment-serializer.js +73 -0
  181. package/dist/cjs/serializer/comment/agent-serializer.js +70 -0
  182. package/dist/cjs/serializer/comment/comment-rule-serializer.js +107 -0
  183. package/dist/cjs/serializer/comment/config-comment-serializer.js +84 -0
  184. package/dist/cjs/serializer/comment/hint-comment-serializer.js +64 -0
  185. package/dist/cjs/serializer/comment/hint-serializer.js +56 -0
  186. package/dist/cjs/serializer/comment/metadata-comment-serializer.js +75 -0
  187. package/dist/cjs/serializer/comment/pre-processor-comment-serializer.js +73 -0
  188. package/dist/cjs/serializer/comment/simple-comment-serializer.js +54 -0
  189. package/dist/cjs/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +38 -0
  190. package/dist/cjs/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +38 -0
  191. package/dist/cjs/serializer/cosmetic/body/scriptlet-body-serializer.js +49 -0
  192. package/dist/cjs/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +38 -0
  193. package/dist/cjs/serializer/cosmetic/cosmetic-rule-serializer.js +131 -0
  194. package/dist/cjs/serializer/cosmetic/css-injection-body-serializer.js +50 -0
  195. package/dist/cjs/serializer/cosmetic/element-hiding-body-serializer.js +39 -0
  196. package/dist/cjs/serializer/empty-rule-serializer.js +36 -0
  197. package/dist/cjs/serializer/filterlist-serializer.js +48 -0
  198. package/dist/cjs/serializer/index.js +13 -0
  199. package/dist/cjs/serializer/invalid-rule-error-node-serializer.js +40 -0
  200. package/dist/cjs/serializer/invalid-rule-serializer.js +39 -0
  201. package/dist/cjs/serializer/misc/domain-list-serializer.js +66 -0
  202. package/dist/cjs/serializer/misc/list-item-serializer.js +57 -0
  203. package/dist/cjs/serializer/misc/list-items-serializer.js +28 -0
  204. package/dist/cjs/serializer/misc/logical-expression-serializer.js +138 -0
  205. package/dist/cjs/serializer/misc/modifier-list-serializer.js +57 -0
  206. package/dist/cjs/serializer/misc/modifier-serializer.js +51 -0
  207. package/dist/cjs/serializer/misc/parameter-list-serializer.js +51 -0
  208. package/dist/cjs/serializer/misc/value-serializer.js +52 -0
  209. package/dist/cjs/serializer/network/host-rule-serializer.js +72 -0
  210. package/dist/cjs/serializer/network/hostname-list-serializer.js +49 -0
  211. package/dist/cjs/serializer/network/network-rule-serializer.js +56 -0
  212. package/dist/cjs/serializer/rule-serializer.js +63 -0
  213. package/dist/cjs/utils/adblockers.js +57 -0
  214. package/dist/cjs/utils/binary-schema-version.js +19 -0
  215. package/dist/cjs/utils/byte-buffer.js +93 -0
  216. package/dist/cjs/utils/categorizer.js +46 -0
  217. package/dist/cjs/utils/clone.js +30 -0
  218. package/dist/cjs/utils/constants.js +380 -0
  219. package/dist/cjs/utils/cosmetic-rule-separator.js +129 -0
  220. package/dist/cjs/utils/deep-freeze.js +34 -0
  221. package/dist/cjs/utils/domain.js +60 -0
  222. package/dist/cjs/utils/error.js +51 -0
  223. package/dist/cjs/utils/index.js +69 -0
  224. package/dist/cjs/utils/input-byte-buffer.js +259 -0
  225. package/dist/cjs/utils/is-chromium.js +22 -0
  226. package/dist/cjs/utils/logical-expression.js +94 -0
  227. package/dist/cjs/utils/multi-value-map.js +35 -0
  228. package/dist/cjs/utils/output-byte-buffer.js +225 -0
  229. package/dist/cjs/utils/position-provider.js +75 -0
  230. package/dist/cjs/utils/quotes.js +218 -0
  231. package/dist/cjs/utils/regexp.js +190 -0
  232. package/dist/cjs/utils/string.js +560 -0
  233. package/dist/cjs/utils/text-decoder-polyfill.js +109 -0
  234. package/dist/cjs/utils/text-encoder-polyfill.js +80 -0
  235. package/dist/cjs/utils/type-guards.js +52 -0
  236. package/dist/cjs/validator/constants.js +222 -0
  237. package/dist/cjs/validator/helpers.js +49 -0
  238. package/dist/cjs/validator/index.js +176 -0
  239. package/dist/cjs/validator/value.js +565 -0
  240. package/dist/cjs/version.js +20 -0
  241. package/dist/esm/ast-utils/clone.mjs +61 -0
  242. package/dist/esm/ast-utils/modifiers.mjs +53 -0
  243. package/dist/esm/ast-utils/network-rules.mjs +41 -0
  244. package/dist/esm/ast-utils/scriptlets.mjs +87 -0
  245. package/dist/esm/common/abp-snippet-injection-body-common.mjs +16 -0
  246. package/dist/esm/common/agent-common.mjs +56 -0
  247. package/dist/esm/common/ubo-selector-common.mjs +18 -0
  248. package/dist/esm/compatibility-tables/base.mjs +262 -0
  249. package/dist/esm/compatibility-tables/compatibility-table-data.mjs +11 -0
  250. package/dist/esm/compatibility-tables/modifiers.mjs +55 -0
  251. package/dist/esm/compatibility-tables/platforms.mjs +58 -0
  252. package/dist/esm/compatibility-tables/redirects.mjs +100 -0
  253. package/dist/esm/compatibility-tables/schemas/base.mjs +111 -0
  254. package/dist/esm/compatibility-tables/schemas/modifier.mjs +105 -0
  255. package/dist/esm/compatibility-tables/schemas/platform.mjs +69 -0
  256. package/dist/esm/compatibility-tables/schemas/redirect.mjs +29 -0
  257. package/dist/esm/compatibility-tables/schemas/resource-type.mjs +37 -0
  258. package/dist/esm/compatibility-tables/schemas/scriptlet.mjs +79 -0
  259. package/dist/esm/compatibility-tables/scriptlets.mjs +28 -0
  260. package/dist/esm/compatibility-tables/utils/platform-helpers.mjs +105 -0
  261. package/dist/esm/compatibility-tables/utils/resource-type-helpers.mjs +61 -0
  262. package/dist/esm/compatibility-tables/utils/zod-camelcase.mjs +25 -0
  263. package/dist/esm/converter/base-interfaces/base-converter.mjs +59 -0
  264. package/dist/esm/converter/base-interfaces/conversion-result.mjs +38 -0
  265. package/dist/esm/converter/base-interfaces/rule-converter-base.mjs +60 -0
  266. package/dist/esm/converter/comment/index.mjs +54 -0
  267. package/dist/esm/converter/cosmetic/css.mjs +69 -0
  268. package/dist/esm/converter/cosmetic/element-hiding.mjs +62 -0
  269. package/dist/esm/converter/cosmetic/header-removal.mjs +123 -0
  270. package/dist/esm/converter/cosmetic/html.mjs +381 -0
  271. package/dist/esm/converter/cosmetic/index.mjs +118 -0
  272. package/dist/esm/converter/cosmetic/rule-modifiers/adg.mjs +79 -0
  273. package/dist/esm/converter/cosmetic/scriptlet.mjs +354 -0
  274. package/dist/esm/converter/css/index.mjs +190 -0
  275. package/dist/esm/converter/data/css.mjs +126 -0
  276. package/dist/esm/converter/filter-list.mjs +88 -0
  277. package/dist/esm/converter/index.mjs +8 -0
  278. package/dist/esm/converter/misc/network-rule-modifier.mjs +311 -0
  279. package/dist/esm/converter/network/index.mjs +99 -0
  280. package/dist/esm/converter/raw-filter-list.mjs +56 -0
  281. package/dist/esm/converter/rule.mjs +81 -0
  282. package/dist/esm/deserializer/base-deserializer.mjs +29 -0
  283. package/dist/esm/deserializer/comment/agent-comment-deserializer.mjs +74 -0
  284. package/dist/esm/deserializer/comment/agent-deserializer.mjs +65 -0
  285. package/dist/esm/deserializer/comment/comment-rule-deserializer.mjs +107 -0
  286. package/dist/esm/deserializer/comment/config-comment-deserializer.mjs +111 -0
  287. package/dist/esm/deserializer/comment/hint-comment-deserializer.mjs +67 -0
  288. package/dist/esm/deserializer/comment/hint-deserializer.mjs +85 -0
  289. package/dist/esm/deserializer/comment/metadata-comment-deserializer.mjs +69 -0
  290. package/dist/esm/deserializer/comment/pre-processor-comment-deserializer.mjs +112 -0
  291. package/dist/esm/deserializer/comment/simple-comment-deserializer.mjs +65 -0
  292. package/dist/esm/deserializer/cosmetic/cosmetic-rule-deserializer.mjs +125 -0
  293. package/dist/esm/deserializer/cosmetic/css-injection-body-deserializer.mjs +53 -0
  294. package/dist/esm/deserializer/cosmetic/element-hiding-body-deserializer.mjs +44 -0
  295. package/dist/esm/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.mjs +35 -0
  296. package/dist/esm/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.mjs +35 -0
  297. package/dist/esm/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.mjs +50 -0
  298. package/dist/esm/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.mjs +35 -0
  299. package/dist/esm/deserializer/empty-rule-deserializer.mjs +44 -0
  300. package/dist/esm/deserializer/filterlist-deserializer.mjs +81 -0
  301. package/dist/esm/deserializer/index.mjs +8 -0
  302. package/dist/esm/deserializer/invalid-rule-deserializer.mjs +46 -0
  303. package/dist/esm/deserializer/invalid-rule-error-node-deserializer.mjs +46 -0
  304. package/dist/esm/deserializer/misc/domain-list-deserializer.mjs +64 -0
  305. package/dist/esm/deserializer/misc/list-item-deserializer.mjs +63 -0
  306. package/dist/esm/deserializer/misc/list-items-deserializer.mjs +26 -0
  307. package/dist/esm/deserializer/misc/logical-expression-deserializer.mjs +196 -0
  308. package/dist/esm/deserializer/misc/modifier-deserializer.mjs +87 -0
  309. package/dist/esm/deserializer/misc/modifier-list-deserializer.mjs +56 -0
  310. package/dist/esm/deserializer/misc/parameter-list-deserializer.mjs +60 -0
  311. package/dist/esm/deserializer/misc/value-deserializer.mjs +50 -0
  312. package/dist/esm/deserializer/network/host-rule-deserializer.mjs +79 -0
  313. package/dist/esm/deserializer/network/hostname-list-deserializer.mjs +48 -0
  314. package/dist/esm/deserializer/network/network-rule-deserializer.mjs +65 -0
  315. package/dist/esm/deserializer/rule-deserializer.mjs +65 -0
  316. package/dist/esm/deserializer/syntax-deserialization-map.mjs +21 -0
  317. package/dist/esm/errors/adblock-syntax-error.mjs +39 -0
  318. package/dist/esm/errors/binary-schema-mismatch-error.mjs +37 -0
  319. package/dist/esm/errors/not-implemented-error.mjs +31 -0
  320. package/dist/esm/errors/rule-conversion-error.mjs +26 -0
  321. package/dist/esm/generator/base-generator.mjs +27 -0
  322. package/dist/esm/generator/comment/agent-comment-generator.mjs +28 -0
  323. package/dist/esm/generator/comment/agent-generator.mjs +32 -0
  324. package/dist/esm/generator/comment/comment-rule-generator.mjs +100 -0
  325. package/dist/esm/generator/comment/config-comment-generator.mjs +42 -0
  326. package/dist/esm/generator/comment/hint-comment-generator.mjs +25 -0
  327. package/dist/esm/generator/comment/hint-generator.mjs +30 -0
  328. package/dist/esm/generator/comment/metadata-comment-generator.mjs +30 -0
  329. package/dist/esm/generator/comment/pre-processor-comment-generator.mjs +45 -0
  330. package/dist/esm/generator/comment/simple-comment-generator.mjs +26 -0
  331. package/dist/esm/generator/cosmetic/body/abp-snippet-injection-body-generator.mjs +34 -0
  332. package/dist/esm/generator/cosmetic/body/adg-scriptlet-injection-body-generator.mjs +39 -0
  333. package/dist/esm/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.mjs +41 -0
  334. package/dist/esm/generator/cosmetic/cosmetic-rule-body-generator.mjs +90 -0
  335. package/dist/esm/generator/cosmetic/cosmetic-rule-generator.mjs +64 -0
  336. package/dist/esm/generator/cosmetic/cosmetic-rule-pattern-generator.mjs +39 -0
  337. package/dist/esm/generator/css/adg-css-injection-generator.mjs +39 -0
  338. package/dist/esm/generator/filterlist-generator.mjs +55 -0
  339. package/dist/esm/generator/index.mjs +9 -0
  340. package/dist/esm/generator/misc/domain-list-generator.mjs +23 -0
  341. package/dist/esm/generator/misc/list-items-generator.mjs +36 -0
  342. package/dist/esm/generator/misc/logical-expression-generator.mjs +45 -0
  343. package/dist/esm/generator/misc/modifier-generator.mjs +31 -0
  344. package/dist/esm/generator/misc/modifier-list-generator.mjs +26 -0
  345. package/dist/esm/generator/misc/parameter-list-generator.mjs +39 -0
  346. package/dist/esm/generator/misc/value-generator.mjs +21 -0
  347. package/dist/esm/generator/network/host-rule-generator.mjs +36 -0
  348. package/dist/esm/generator/network/network-rule-generator.mjs +35 -0
  349. package/dist/esm/generator/rule-generator.mjs +62 -0
  350. package/dist/esm/index.mjs +70 -0
  351. package/dist/esm/marshalling-utils/comment/agent-comment-common.mjs +22 -0
  352. package/dist/esm/marshalling-utils/comment/agent-common.mjs +41 -0
  353. package/dist/esm/marshalling-utils/comment/config-comment-common.mjs +56 -0
  354. package/dist/esm/marshalling-utils/comment/hint-comment-common.mjs +23 -0
  355. package/dist/esm/marshalling-utils/comment/hint-common.mjs +57 -0
  356. package/dist/esm/marshalling-utils/comment/metadata-comment-common.mjs +42 -0
  357. package/dist/esm/marshalling-utils/comment/pre-processor-comment-common.mjs +60 -0
  358. package/dist/esm/marshalling-utils/comment/simple-comment-common.mjs +23 -0
  359. package/dist/esm/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.mjs +62 -0
  360. package/dist/esm/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.mjs +66 -0
  361. package/dist/esm/marshalling-utils/cosmetic/body/css-injection-body-common.mjs +25 -0
  362. package/dist/esm/marshalling-utils/cosmetic/body/element-hiding-body-common.mjs +22 -0
  363. package/dist/esm/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.mjs +114 -0
  364. package/dist/esm/marshalling-utils/cosmetic/cosmetic-rule-common.mjs +49 -0
  365. package/dist/esm/marshalling-utils/empty-rule-common.mjs +21 -0
  366. package/dist/esm/marshalling-utils/filter-list-common.mjs +22 -0
  367. package/dist/esm/marshalling-utils/invalid-rule-common.mjs +22 -0
  368. package/dist/esm/marshalling-utils/invalid-rule-error-node-common.mjs +23 -0
  369. package/dist/esm/marshalling-utils/misc/binary-type-common.mjs +67 -0
  370. package/dist/esm/marshalling-utils/misc/domain-list-common.mjs +37 -0
  371. package/dist/esm/marshalling-utils/misc/host-rule-common.mjs +26 -0
  372. package/dist/esm/marshalling-utils/misc/hostname-list-common.mjs +22 -0
  373. package/dist/esm/marshalling-utils/misc/list-item-common.mjs +23 -0
  374. package/dist/esm/marshalling-utils/misc/logical-expression-common.mjs +86 -0
  375. package/dist/esm/marshalling-utils/misc/modifier-common.mjs +232 -0
  376. package/dist/esm/marshalling-utils/misc/modifier-list-common.mjs +22 -0
  377. package/dist/esm/marshalling-utils/misc/parameter-list-common.mjs +22 -0
  378. package/dist/esm/marshalling-utils/misc/value-common.mjs +23 -0
  379. package/dist/esm/marshalling-utils/network/network-rule-common.mjs +26 -0
  380. package/dist/esm/marshalling-utils/syntax-serialization-map.mjs +30 -0
  381. package/dist/esm/nodes/index.mjs +180 -0
  382. package/dist/esm/package.json.mjs +9 -0
  383. package/dist/esm/parser/base-parser.mjs +30 -0
  384. package/dist/esm/parser/comment/agent-comment-parser.mjs +119 -0
  385. package/dist/esm/parser/comment/agent-parser.mjs +109 -0
  386. package/dist/esm/parser/comment/comment-parser.mjs +108 -0
  387. package/dist/esm/parser/comment/config-comment-parser.mjs +137 -0
  388. package/dist/esm/parser/comment/hint-comment-parser.mjs +117 -0
  389. package/dist/esm/parser/comment/hint-parser.mjs +129 -0
  390. package/dist/esm/parser/comment/metadata-comment-parser.mjs +129 -0
  391. package/dist/esm/parser/comment/preprocessor-parser.mjs +199 -0
  392. package/dist/esm/parser/comment/simple-comment-parser.mjs +106 -0
  393. package/dist/esm/parser/cosmetic/body/abp-snippet-injection-body-parser.mjs +79 -0
  394. package/dist/esm/parser/cosmetic/body/adg-scriptlet-injection-body-parser.mjs +149 -0
  395. package/dist/esm/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.mjs +110 -0
  396. package/dist/esm/parser/cosmetic/cosmetic-rule-parser.mjs +453 -0
  397. package/dist/esm/parser/css/adg-css-injection-parser.mjs +208 -0
  398. package/dist/esm/parser/css/balancing.mjs +94 -0
  399. package/dist/esm/parser/css/constants.mjs +18 -0
  400. package/dist/esm/parser/css/css-token-stream.mjs +343 -0
  401. package/dist/esm/parser/css/ubo-selector-parser.mjs +369 -0
  402. package/dist/esm/parser/filterlist-parser.mjs +102 -0
  403. package/dist/esm/parser/index.mjs +11 -0
  404. package/dist/esm/parser/misc/app-list-parser.mjs +45 -0
  405. package/dist/esm/parser/misc/domain-list-parser.mjs +52 -0
  406. package/dist/esm/parser/misc/list-items-parser.mjs +113 -0
  407. package/dist/esm/parser/misc/logical-expression-parser.mjs +281 -0
  408. package/dist/esm/parser/misc/method-list-parser.mjs +46 -0
  409. package/dist/esm/parser/misc/modifier-list.mjs +70 -0
  410. package/dist/esm/parser/misc/modifier-parser.mjs +89 -0
  411. package/dist/esm/parser/misc/parameter-list-parser.mjs +72 -0
  412. package/dist/esm/parser/misc/stealth-option-list-parser.mjs +46 -0
  413. package/dist/esm/parser/misc/ubo-parameter-list-parser.mjs +146 -0
  414. package/dist/esm/parser/misc/value-parser.mjs +37 -0
  415. package/dist/esm/parser/network/host-rule-parser.mjs +130 -0
  416. package/dist/esm/parser/network/network-rule-parser.mjs +111 -0
  417. package/dist/esm/parser/options.mjs +23 -0
  418. package/dist/esm/parser/rule-parser.mjs +192 -0
  419. package/dist/esm/serializer/base-serializer.mjs +29 -0
  420. package/dist/esm/serializer/comment/agent-comment-serializer.mjs +71 -0
  421. package/dist/esm/serializer/comment/agent-serializer.mjs +68 -0
  422. package/dist/esm/serializer/comment/comment-rule-serializer.mjs +105 -0
  423. package/dist/esm/serializer/comment/config-comment-serializer.mjs +82 -0
  424. package/dist/esm/serializer/comment/hint-comment-serializer.mjs +62 -0
  425. package/dist/esm/serializer/comment/hint-serializer.mjs +54 -0
  426. package/dist/esm/serializer/comment/metadata-comment-serializer.mjs +73 -0
  427. package/dist/esm/serializer/comment/pre-processor-comment-serializer.mjs +71 -0
  428. package/dist/esm/serializer/comment/simple-comment-serializer.mjs +52 -0
  429. package/dist/esm/serializer/cosmetic/body/abp-snippet-injection-body-serializer.mjs +36 -0
  430. package/dist/esm/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.mjs +36 -0
  431. package/dist/esm/serializer/cosmetic/body/scriptlet-body-serializer.mjs +47 -0
  432. package/dist/esm/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.mjs +36 -0
  433. package/dist/esm/serializer/cosmetic/cosmetic-rule-serializer.mjs +129 -0
  434. package/dist/esm/serializer/cosmetic/css-injection-body-serializer.mjs +48 -0
  435. package/dist/esm/serializer/cosmetic/element-hiding-body-serializer.mjs +37 -0
  436. package/dist/esm/serializer/empty-rule-serializer.mjs +34 -0
  437. package/dist/esm/serializer/filterlist-serializer.mjs +46 -0
  438. package/dist/esm/serializer/index.mjs +7 -0
  439. package/dist/esm/serializer/invalid-rule-error-node-serializer.mjs +38 -0
  440. package/dist/esm/serializer/invalid-rule-serializer.mjs +37 -0
  441. package/dist/esm/serializer/misc/domain-list-serializer.mjs +64 -0
  442. package/dist/esm/serializer/misc/list-item-serializer.mjs +55 -0
  443. package/dist/esm/serializer/misc/list-items-serializer.mjs +26 -0
  444. package/dist/esm/serializer/misc/logical-expression-serializer.mjs +136 -0
  445. package/dist/esm/serializer/misc/modifier-list-serializer.mjs +55 -0
  446. package/dist/esm/serializer/misc/modifier-serializer.mjs +49 -0
  447. package/dist/esm/serializer/misc/parameter-list-serializer.mjs +49 -0
  448. package/dist/esm/serializer/misc/value-serializer.mjs +50 -0
  449. package/dist/esm/serializer/network/host-rule-serializer.mjs +70 -0
  450. package/dist/esm/serializer/network/hostname-list-serializer.mjs +47 -0
  451. package/dist/esm/serializer/network/network-rule-serializer.mjs +54 -0
  452. package/dist/esm/serializer/rule-serializer.mjs +61 -0
  453. package/dist/esm/utils/adblockers.mjs +57 -0
  454. package/dist/esm/utils/binary-schema-version.mjs +17 -0
  455. package/dist/esm/utils/byte-buffer.mjs +91 -0
  456. package/dist/esm/utils/categorizer.mjs +44 -0
  457. package/dist/esm/utils/clone.mjs +28 -0
  458. package/dist/esm/utils/constants.mjs +249 -0
  459. package/dist/esm/utils/cosmetic-rule-separator.mjs +127 -0
  460. package/dist/esm/utils/deep-freeze.mjs +32 -0
  461. package/dist/esm/utils/domain.mjs +56 -0
  462. package/dist/esm/utils/error.mjs +49 -0
  463. package/dist/esm/utils/index.mjs +21 -0
  464. package/dist/esm/utils/input-byte-buffer.mjs +257 -0
  465. package/dist/esm/utils/is-chromium.mjs +20 -0
  466. package/dist/esm/utils/logical-expression.mjs +92 -0
  467. package/dist/esm/utils/multi-value-map.mjs +33 -0
  468. package/dist/esm/utils/output-byte-buffer.mjs +223 -0
  469. package/dist/esm/utils/position-provider.mjs +73 -0
  470. package/dist/esm/utils/quotes.mjs +215 -0
  471. package/dist/esm/utils/regexp.mjs +176 -0
  472. package/dist/esm/utils/string.mjs +556 -0
  473. package/dist/esm/utils/text-decoder-polyfill.mjs +107 -0
  474. package/dist/esm/utils/text-encoder-polyfill.mjs +78 -0
  475. package/dist/esm/utils/type-guards.mjs +47 -0
  476. package/dist/esm/validator/constants.mjs +210 -0
  477. package/dist/esm/validator/helpers.mjs +45 -0
  478. package/dist/esm/validator/index.mjs +174 -0
  479. package/dist/esm/validator/value.mjs +563 -0
  480. package/dist/esm/version.mjs +18 -0
  481. package/dist/types/ast-utils/clone.d.ts +26 -0
  482. package/dist/types/ast-utils/filter-list.d.ts +11 -0
  483. package/dist/types/ast-utils/modifiers.d.ts +20 -0
  484. package/dist/types/ast-utils/network-rules.d.ts +15 -0
  485. package/dist/types/ast-utils/scriptlets.d.ts +52 -0
  486. package/dist/types/common/abp-snippet-injection-body-common.d.ts +8 -0
  487. package/dist/types/common/agent-common.d.ts +10 -0
  488. package/dist/types/common/ubo-selector-common.d.ts +9 -0
  489. package/dist/types/compatibility-tables/base.d.ts +157 -0
  490. package/dist/types/compatibility-tables/compatibility-table-data.d.ts +67 -0
  491. package/dist/types/compatibility-tables/index.d.ts +13 -0
  492. package/dist/types/compatibility-tables/modifiers.d.ts +22 -0
  493. package/dist/types/compatibility-tables/platforms.d.ts +47 -0
  494. package/dist/types/compatibility-tables/redirects.d.ts +33 -0
  495. package/dist/types/compatibility-tables/schemas/base.d.ts +135 -0
  496. package/dist/types/compatibility-tables/schemas/index.d.ts +8 -0
  497. package/dist/types/compatibility-tables/schemas/modifier.d.ts +31 -0
  498. package/dist/types/compatibility-tables/schemas/platform.d.ts +16 -0
  499. package/dist/types/compatibility-tables/schemas/redirect.d.ts +25 -0
  500. package/dist/types/compatibility-tables/schemas/resource-type.d.ts +27 -0
  501. package/dist/types/compatibility-tables/schemas/scriptlet.d.ts +31 -0
  502. package/dist/types/compatibility-tables/scriptlets.d.ts +15 -0
  503. package/dist/types/compatibility-tables/types.d.ts +34 -0
  504. package/dist/types/compatibility-tables/utils/platform-helpers.d.ts +44 -0
  505. package/dist/types/compatibility-tables/utils/resource-type-helpers.d.ts +20 -0
  506. package/dist/types/compatibility-tables/utils/zod-camelcase.d.ts +15 -0
  507. package/dist/types/converter/base-interfaces/base-converter.d.ts +42 -0
  508. package/dist/types/converter/base-interfaces/conversion-result.d.ts +43 -0
  509. package/dist/types/converter/base-interfaces/rule-converter-base.d.ts +44 -0
  510. package/dist/types/converter/comment/index.d.ts +23 -0
  511. package/dist/types/converter/cosmetic/css.d.ts +23 -0
  512. package/dist/types/converter/cosmetic/element-hiding.d.ts +23 -0
  513. package/dist/types/converter/cosmetic/header-removal.d.ts +37 -0
  514. package/dist/types/converter/cosmetic/html.d.ts +54 -0
  515. package/dist/types/converter/cosmetic/index.d.ts +33 -0
  516. package/dist/types/converter/cosmetic/rule-modifiers/adg.d.ts +21 -0
  517. package/dist/types/converter/cosmetic/scriptlet.d.ts +33 -0
  518. package/dist/types/converter/css/index.d.ts +23 -0
  519. package/dist/types/converter/data/css.d.ts +48 -0
  520. package/dist/types/converter/filter-list.d.ts +31 -0
  521. package/dist/types/converter/index.d.ts +5 -0
  522. package/dist/types/converter/misc/network-rule-modifier.d.ts +35 -0
  523. package/dist/types/converter/network/index.d.ts +33 -0
  524. package/dist/types/converter/raw-filter-list.d.ts +31 -0
  525. package/dist/types/converter/raw-rule.d.ts +28 -0
  526. package/dist/types/converter/rule.d.ts +37 -0
  527. package/dist/types/deserializer/base-deserializer.d.ts +15 -0
  528. package/dist/types/deserializer/comment/agent-comment-deserializer.d.ts +34 -0
  529. package/dist/types/deserializer/comment/agent-deserializer.d.ts +25 -0
  530. package/dist/types/deserializer/comment/comment-rule-deserializer.d.ts +69 -0
  531. package/dist/types/deserializer/comment/config-comment-deserializer.d.ts +27 -0
  532. package/dist/types/deserializer/comment/hint-comment-deserializer.d.ts +24 -0
  533. package/dist/types/deserializer/comment/hint-deserializer.d.ts +26 -0
  534. package/dist/types/deserializer/comment/metadata-comment-deserializer.d.ts +26 -0
  535. package/dist/types/deserializer/comment/pre-processor-comment-deserializer.d.ts +29 -0
  536. package/dist/types/deserializer/comment/simple-comment-deserializer.d.ts +26 -0
  537. package/dist/types/deserializer/cosmetic/cosmetic-rule-deserializer.d.ts +12 -0
  538. package/dist/types/deserializer/cosmetic/css-injection-body-deserializer.d.ts +12 -0
  539. package/dist/types/deserializer/cosmetic/element-hiding-body-deserializer.d.ts +12 -0
  540. package/dist/types/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.d.ts +13 -0
  541. package/dist/types/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.d.ts +13 -0
  542. package/dist/types/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.d.ts +15 -0
  543. package/dist/types/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.d.ts +14 -0
  544. package/dist/types/deserializer/empty-rule-deserializer.d.ts +12 -0
  545. package/dist/types/deserializer/filterlist-deserializer.d.ts +30 -0
  546. package/dist/types/deserializer/index.d.ts +2 -0
  547. package/dist/types/deserializer/invalid-rule-deserializer.d.ts +12 -0
  548. package/dist/types/deserializer/invalid-rule-error-node-deserializer.d.ts +12 -0
  549. package/dist/types/deserializer/misc/domain-list-deserializer.d.ts +15 -0
  550. package/dist/types/deserializer/misc/list-item-deserializer.d.ts +13 -0
  551. package/dist/types/deserializer/misc/list-items-deserializer.d.ts +12 -0
  552. package/dist/types/deserializer/misc/logical-expression-deserializer.d.ts +55 -0
  553. package/dist/types/deserializer/misc/modifier-deserializer.d.ts +18 -0
  554. package/dist/types/deserializer/misc/modifier-list-deserializer.d.ts +20 -0
  555. package/dist/types/deserializer/misc/parameter-list-deserializer.d.ts +14 -0
  556. package/dist/types/deserializer/misc/value-deserializer.d.ts +17 -0
  557. package/dist/types/deserializer/network/host-rule-deserializer.d.ts +30 -0
  558. package/dist/types/deserializer/network/hostname-list-deserializer.d.ts +12 -0
  559. package/dist/types/deserializer/network/network-rule-deserializer.d.ts +18 -0
  560. package/dist/types/deserializer/rule-deserializer.d.ts +17 -0
  561. package/dist/types/deserializer/syntax-deserialization-map.d.ts +2 -0
  562. package/dist/types/errors/adblock-syntax-error.d.ts +25 -0
  563. package/dist/types/errors/binary-schema-mismatch-error.d.ts +23 -0
  564. package/dist/types/errors/not-implemented-error.d.ts +14 -0
  565. package/dist/types/errors/rule-conversion-error.d.ts +14 -0
  566. package/dist/types/generator/base-generator.d.ts +12 -0
  567. package/dist/types/generator/comment/agent-comment-generator.d.ts +11 -0
  568. package/dist/types/generator/comment/agent-generator.d.ts +11 -0
  569. package/dist/types/generator/comment/comment-rule-generator.d.ts +67 -0
  570. package/dist/types/generator/comment/config-comment-generator.d.ts +11 -0
  571. package/dist/types/generator/comment/hint-comment-generator.d.ts +11 -0
  572. package/dist/types/generator/comment/hint-generator.d.ts +11 -0
  573. package/dist/types/generator/comment/index.d.ts +2 -0
  574. package/dist/types/generator/comment/metadata-comment-generator.d.ts +11 -0
  575. package/dist/types/generator/comment/pre-processor-comment-generator.d.ts +11 -0
  576. package/dist/types/generator/comment/simple-comment-generator.d.ts +11 -0
  577. package/dist/types/generator/cosmetic/body/abp-snippet-injection-body-generator.d.ts +11 -0
  578. package/dist/types/generator/cosmetic/body/adg-scriptlet-injection-body-generator.d.ts +17 -0
  579. package/dist/types/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.d.ts +17 -0
  580. package/dist/types/generator/cosmetic/cosmetic-rule-body-generator.d.ts +15 -0
  581. package/dist/types/generator/cosmetic/cosmetic-rule-generator.d.ts +36 -0
  582. package/dist/types/generator/cosmetic/cosmetic-rule-pattern-generator.d.ts +15 -0
  583. package/dist/types/generator/cosmetic/index.d.ts +1 -0
  584. package/dist/types/generator/css/adg-css-injection-generator.d.ts +12 -0
  585. package/dist/types/generator/css/ubo-selector-generator.d.ts +11 -0
  586. package/dist/types/generator/filterlist-generator.d.ts +17 -0
  587. package/dist/types/generator/index.d.ts +3 -0
  588. package/dist/types/generator/misc/domain-list-generator.d.ts +12 -0
  589. package/dist/types/generator/misc/list-items-generator.d.ts +22 -0
  590. package/dist/types/generator/misc/logical-expression-generator.d.ts +11 -0
  591. package/dist/types/generator/misc/modifier-generator.d.ts +11 -0
  592. package/dist/types/generator/misc/modifier-list-generator.d.ts +11 -0
  593. package/dist/types/generator/misc/parameter-list-generator.d.ts +12 -0
  594. package/dist/types/generator/misc/value-generator.d.ts +11 -0
  595. package/dist/types/generator/network/host-rule-generator.d.ts +11 -0
  596. package/dist/types/generator/network/index.d.ts +2 -0
  597. package/dist/types/generator/network/network-rule-generator.d.ts +11 -0
  598. package/dist/types/generator/rule-generator.d.ts +21 -0
  599. package/dist/types/index.d.ts +55 -0
  600. package/dist/types/marshalling-utils/comment/agent-comment-common.d.ts +13 -0
  601. package/dist/types/marshalling-utils/comment/agent-common.d.ts +19 -0
  602. package/dist/types/marshalling-utils/comment/config-comment-common.d.ts +40 -0
  603. package/dist/types/marshalling-utils/comment/hint-comment-common.d.ts +14 -0
  604. package/dist/types/marshalling-utils/comment/hint-common.d.ts +32 -0
  605. package/dist/types/marshalling-utils/comment/metadata-comment-common.d.ts +20 -0
  606. package/dist/types/marshalling-utils/comment/pre-processor-comment-common.d.ts +36 -0
  607. package/dist/types/marshalling-utils/comment/simple-comment-common.d.ts +14 -0
  608. package/dist/types/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.d.ts +22 -0
  609. package/dist/types/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.d.ts +9 -0
  610. package/dist/types/marshalling-utils/cosmetic/body/css-injection-body-common.d.ts +16 -0
  611. package/dist/types/marshalling-utils/cosmetic/body/element-hiding-body-common.d.ts +13 -0
  612. package/dist/types/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.d.ts +9 -0
  613. package/dist/types/marshalling-utils/cosmetic/cosmetic-rule-common.d.ts +27 -0
  614. package/dist/types/marshalling-utils/empty-rule-common.d.ts +12 -0
  615. package/dist/types/marshalling-utils/filter-list-common.d.ts +13 -0
  616. package/dist/types/marshalling-utils/invalid-rule-common.d.ts +13 -0
  617. package/dist/types/marshalling-utils/invalid-rule-error-node-common.d.ts +14 -0
  618. package/dist/types/marshalling-utils/misc/binary-type-common.d.ts +56 -0
  619. package/dist/types/marshalling-utils/misc/domain-list-common.d.ts +23 -0
  620. package/dist/types/marshalling-utils/misc/host-rule-common.d.ts +17 -0
  621. package/dist/types/marshalling-utils/misc/hostname-list-common.d.ts +13 -0
  622. package/dist/types/marshalling-utils/misc/list-item-common.d.ts +14 -0
  623. package/dist/types/marshalling-utils/misc/logical-expression-common.d.ts +44 -0
  624. package/dist/types/marshalling-utils/misc/modifier-common.d.ts +40 -0
  625. package/dist/types/marshalling-utils/misc/modifier-list-common.d.ts +13 -0
  626. package/dist/types/marshalling-utils/misc/parameter-list-common.d.ts +13 -0
  627. package/dist/types/marshalling-utils/misc/value-common.d.ts +14 -0
  628. package/dist/types/marshalling-utils/network/network-rule-common.d.ts +17 -0
  629. package/dist/types/marshalling-utils/syntax-serialization-map.d.ts +2 -0
  630. package/dist/types/nodes/index.d.ts +1177 -0
  631. package/dist/types/parser/base-parser.d.ts +16 -0
  632. package/dist/types/parser/comment/agent-comment-parser.d.ts +42 -0
  633. package/dist/types/parser/comment/agent-parser.d.ts +33 -0
  634. package/dist/types/parser/comment/comment-parser.d.ts +76 -0
  635. package/dist/types/parser/comment/config-comment-parser.d.ts +31 -0
  636. package/dist/types/parser/comment/hint-comment-parser.d.ts +33 -0
  637. package/dist/types/parser/comment/hint-parser.d.ts +30 -0
  638. package/dist/types/parser/comment/metadata-comment-parser.d.ts +29 -0
  639. package/dist/types/parser/comment/preprocessor-parser.d.ts +43 -0
  640. package/dist/types/parser/comment/simple-comment-parser.d.ts +33 -0
  641. package/dist/types/parser/cosmetic/body/abp-snippet-injection-body-parser.d.ts +34 -0
  642. package/dist/types/parser/cosmetic/body/adg-scriptlet-injection-body-parser.d.ts +47 -0
  643. package/dist/types/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.d.ts +44 -0
  644. package/dist/types/parser/cosmetic/cosmetic-rule-parser.d.ts +51 -0
  645. package/dist/types/parser/css/adg-css-injection-parser.d.ts +28 -0
  646. package/dist/types/parser/css/balancing.d.ts +36 -0
  647. package/dist/types/parser/css/constants.d.ts +10 -0
  648. package/dist/types/parser/css/css-token-stream.d.ts +210 -0
  649. package/dist/types/parser/css/ubo-selector-parser.d.ts +46 -0
  650. package/dist/types/parser/filterlist-parser.d.ts +29 -0
  651. package/dist/types/parser/index.d.ts +5 -0
  652. package/dist/types/parser/misc/app-list-parser.d.ts +22 -0
  653. package/dist/types/parser/misc/domain-list-parser.d.ts +26 -0
  654. package/dist/types/parser/misc/list-items-parser.d.ts +34 -0
  655. package/dist/types/parser/misc/logical-expression-parser.d.ts +41 -0
  656. package/dist/types/parser/misc/method-list-parser.d.ts +22 -0
  657. package/dist/types/parser/misc/modifier-list.d.ts +24 -0
  658. package/dist/types/parser/misc/modifier-parser.d.ts +21 -0
  659. package/dist/types/parser/misc/parameter-list-parser.d.ts +14 -0
  660. package/dist/types/parser/misc/stealth-option-list-parser.d.ts +22 -0
  661. package/dist/types/parser/misc/ubo-parameter-list-parser.d.ts +18 -0
  662. package/dist/types/parser/misc/value-parser.d.ts +18 -0
  663. package/dist/types/parser/network/host-rule-parser.d.ts +35 -0
  664. package/dist/types/parser/network/network-rule-parser.d.ts +31 -0
  665. package/dist/types/parser/options.d.ts +41 -0
  666. package/dist/types/parser/rule-parser.d.ts +78 -0
  667. package/dist/types/serializer/base-serializer.d.ts +15 -0
  668. package/dist/types/serializer/comment/agent-comment-serializer.d.ts +34 -0
  669. package/dist/types/serializer/comment/agent-serializer.d.ts +24 -0
  670. package/dist/types/serializer/comment/comment-rule-serializer.d.ts +68 -0
  671. package/dist/types/serializer/comment/config-comment-serializer.d.ts +25 -0
  672. package/dist/types/serializer/comment/hint-comment-serializer.d.ts +23 -0
  673. package/dist/types/serializer/comment/hint-serializer.d.ts +24 -0
  674. package/dist/types/serializer/comment/metadata-comment-serializer.d.ts +25 -0
  675. package/dist/types/serializer/comment/pre-processor-comment-serializer.d.ts +28 -0
  676. package/dist/types/serializer/comment/simple-comment-serializer.d.ts +24 -0
  677. package/dist/types/serializer/cosmetic/body/abp-snippet-injection-body-serializer.d.ts +25 -0
  678. package/dist/types/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.d.ts +25 -0
  679. package/dist/types/serializer/cosmetic/body/scriptlet-body-serializer.d.ts +14 -0
  680. package/dist/types/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.d.ts +25 -0
  681. package/dist/types/serializer/cosmetic/cosmetic-rule-serializer.d.ts +26 -0
  682. package/dist/types/serializer/cosmetic/css-injection-body-serializer.d.ts +12 -0
  683. package/dist/types/serializer/cosmetic/element-hiding-body-serializer.d.ts +12 -0
  684. package/dist/types/serializer/empty-rule-serializer.d.ts +12 -0
  685. package/dist/types/serializer/filterlist-serializer.d.ts +16 -0
  686. package/dist/types/serializer/index.d.ts +1 -0
  687. package/dist/types/serializer/invalid-rule-error-node-serializer.d.ts +12 -0
  688. package/dist/types/serializer/invalid-rule-serializer.d.ts +12 -0
  689. package/dist/types/serializer/misc/domain-list-serializer.d.ts +21 -0
  690. package/dist/types/serializer/misc/list-item-serializer.d.ts +13 -0
  691. package/dist/types/serializer/misc/list-items-serializer.d.ts +12 -0
  692. package/dist/types/serializer/misc/logical-expression-serializer.d.ts +51 -0
  693. package/dist/types/serializer/misc/modifier-list-serializer.d.ts +20 -0
  694. package/dist/types/serializer/misc/modifier-serializer.d.ts +18 -0
  695. package/dist/types/serializer/misc/parameter-list-serializer.d.ts +14 -0
  696. package/dist/types/serializer/misc/value-serializer.d.ts +17 -0
  697. package/dist/types/serializer/network/host-rule-serializer.d.ts +30 -0
  698. package/dist/types/serializer/network/hostname-list-serializer.d.ts +12 -0
  699. package/dist/types/serializer/network/network-rule-serializer.d.ts +18 -0
  700. package/dist/types/serializer/rule-serializer.d.ts +17 -0
  701. package/dist/types/utils/adblockers.d.ts +48 -0
  702. package/dist/types/utils/binary-schema-version.d.ts +9 -0
  703. package/dist/types/utils/byte-buffer.d.ts +54 -0
  704. package/dist/types/utils/categorizer.d.ts +14 -0
  705. package/dist/types/utils/clone.d.ts +15 -0
  706. package/dist/types/utils/constants.d.ts +188 -0
  707. package/dist/types/utils/cosmetic-rule-separator.d.ts +45 -0
  708. package/dist/types/utils/deep-freeze.d.ts +13 -0
  709. package/dist/types/utils/domain.d.ts +26 -0
  710. package/dist/types/utils/error.d.ts +8 -0
  711. package/dist/types/utils/index.d.ts +15 -0
  712. package/dist/types/utils/input-byte-buffer.d.ts +140 -0
  713. package/dist/types/utils/is-chromium.d.ts +7 -0
  714. package/dist/types/utils/logical-expression.d.ts +45 -0
  715. package/dist/types/utils/multi-value-map.d.ts +16 -0
  716. package/dist/types/utils/output-byte-buffer.d.ts +126 -0
  717. package/dist/types/utils/position-provider.d.ts +46 -0
  718. package/dist/types/utils/quotes.d.ts +93 -0
  719. package/dist/types/utils/regexp.d.ts +54 -0
  720. package/dist/types/utils/storage-interface.d.ts +23 -0
  721. package/dist/types/utils/string.d.ts +277 -0
  722. package/dist/types/utils/text-decoder-polyfill.d.ts +14 -0
  723. package/dist/types/utils/text-encoder-polyfill.d.ts +18 -0
  724. package/dist/types/utils/type-guards.d.ts +47 -0
  725. package/dist/types/validator/constants.d.ts +89 -0
  726. package/dist/types/validator/helpers.d.ts +37 -0
  727. package/dist/types/validator/index.d.ts +38 -0
  728. package/dist/types/validator/value.d.ts +11 -0
  729. package/dist/types/version.d.ts +5 -0
  730. package/package.json +91 -37
  731. package/dist/agtree.d.ts +0 -4152
  732. package/dist/agtree.js +0 -15741
  733. package/dist/agtree.mjs +0 -15642
  734. package/dist/compatibility-table-data.js +0 -12634
@@ -0,0 +1,1177 @@
1
+ import { type AdblockSyntax } from '../utils/adblockers';
2
+ import { type COMMA_DOMAIN_LIST_SEPARATOR, type PIPE_MODIFIER_SEPARATOR } from '../utils/constants';
3
+ /**
4
+ * Possible operators in the logical expression.
5
+ */
6
+ export declare const enum OperatorValue {
7
+ Not = "!",
8
+ And = "&&",
9
+ Or = "||"
10
+ }
11
+ /**
12
+ * Represents possible new line types.
13
+ */
14
+ export type NewLine = 'crlf' | 'lf' | 'cr';
15
+ /**
16
+ * Represents any kind of logical expression node.
17
+ */
18
+ export type AnyExpressionNode = ExpressionVariableNode | ExpressionOperatorNode | ExpressionParenthesisNode;
19
+ /**
20
+ * Represents any kind of adblock rule.
21
+ */
22
+ export type AnyRule = EmptyRule | AnyCommentRule | AnyCosmeticRule | AnyNetworkRule | InvalidRule;
23
+ /**
24
+ * Represents any comment-like adblock rule.
25
+ */
26
+ export type AnyCommentRule = AgentCommentRule | CommentRule | ConfigCommentRule | HintCommentRule | MetadataCommentRule | PreProcessorCommentRule;
27
+ /**
28
+ * Represents any cosmetic adblock rule.
29
+ */
30
+ export type AnyCosmeticRule = CssInjectionRule | ElementHidingRule | ScriptletInjectionRule | HtmlFilteringRule | JsInjectionRule;
31
+ /**
32
+ * Represents any network adblock rule.
33
+ */
34
+ export type AnyNetworkRule = NetworkRule | HostRule;
35
+ /**
36
+ * Represents the different comment markers that can be used in an adblock rule.
37
+ *
38
+ * @example
39
+ * - If the rule is `! This is just a comment`, then the marker will be `!`.
40
+ * - If the rule is `# This is just a comment`, then the marker will be `#`.
41
+ */
42
+ export declare const enum CommentMarker {
43
+ /**
44
+ * Regular comment marker. It is supported by all ad blockers.
45
+ */
46
+ Regular = "!",
47
+ /**
48
+ * Hashmark comment marker. It is supported by uBlock Origin and AdGuard,
49
+ * and also used in hosts files.
50
+ */
51
+ Hashmark = "#"
52
+ }
53
+ /**
54
+ * Represents the main categories that an adblock rule can belong to.
55
+ * Of course, these include additional subcategories.
56
+ */
57
+ export declare enum RuleCategory {
58
+ /**
59
+ * Empty "rules" that are only containing whitespaces. These rules are handled just for convenience.
60
+ */
61
+ Empty = "Empty",
62
+ /**
63
+ * Syntactically invalid rules (tolerant mode only).
64
+ */
65
+ Invalid = "Invalid",
66
+ /**
67
+ * Comment rules, such as comment rules, metadata rules, preprocessor rules, etc.
68
+ */
69
+ Comment = "Comment",
70
+ /**
71
+ * Cosmetic rules, such as element hiding rules, CSS rules, scriptlet rules, HTML rules, and JS rules.
72
+ */
73
+ Cosmetic = "Cosmetic",
74
+ /**
75
+ * Network rules, such as basic network rules, header remover network rules, redirect network rules,
76
+ * response header filtering rules, etc.
77
+ */
78
+ Network = "Network"
79
+ }
80
+ /**
81
+ * Represents similar types of modifiers values
82
+ * which may be separated by a comma `,` (only for DomainList) or a pipe `|`.
83
+ */
84
+ export declare const enum ListNodeType {
85
+ Unknown = "Unknown",
86
+ AppList = "AppList",
87
+ DomainList = "DomainList",
88
+ MethodList = "MethodList",
89
+ StealthOptionList = "StealthOptionList"
90
+ }
91
+ /**
92
+ * Represents child items for {@link ListNodeType}.
93
+ */
94
+ export declare enum ListItemNodeType {
95
+ Unknown = "Unknown",
96
+ App = "App",
97
+ Domain = "Domain",
98
+ Method = "Method",
99
+ StealthOption = "StealthOption"
100
+ }
101
+ /**
102
+ * Represents possible comment types.
103
+ */
104
+ export declare enum CommentRuleType {
105
+ AgentCommentRule = "AgentCommentRule",
106
+ CommentRule = "CommentRule",
107
+ ConfigCommentRule = "ConfigCommentRule",
108
+ HintCommentRule = "HintCommentRule",
109
+ MetadataCommentRule = "MetadataCommentRule",
110
+ PreProcessorCommentRule = "PreProcessorCommentRule"
111
+ }
112
+ /**
113
+ * Represents possible cosmetic rule types.
114
+ */
115
+ export declare enum CosmeticRuleType {
116
+ ElementHidingRule = "ElementHidingRule",
117
+ CssInjectionRule = "CssInjectionRule",
118
+ ScriptletInjectionRule = "ScriptletInjectionRule",
119
+ HtmlFilteringRule = "HtmlFilteringRule",
120
+ JsInjectionRule = "JsInjectionRule"
121
+ }
122
+ /**
123
+ * Represents possible cosmetic rule separators.
124
+ */
125
+ export declare const enum CosmeticRuleSeparator {
126
+ /**
127
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
128
+ */
129
+ ElementHiding = "##",
130
+ /**
131
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
132
+ */
133
+ ElementHidingException = "#@#",
134
+ /**
135
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
136
+ */
137
+ ExtendedElementHiding = "#?#",
138
+ /**
139
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
140
+ */
141
+ ExtendedElementHidingException = "#@?#",
142
+ /**
143
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
144
+ */
145
+ AbpSnippet = "#$#",
146
+ /**
147
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
148
+ */
149
+ AbpSnippetException = "#@$#",
150
+ /**
151
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#cosmetic-css-rules}
152
+ */
153
+ AdgCssInjection = "#$#",
154
+ /**
155
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#cosmetic-css-rules}
156
+ */
157
+ AdgCssInjectionException = "#@$#",
158
+ /**
159
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#cosmetic-css-rules}
160
+ */
161
+ AdgExtendedCssInjection = "#$?#",
162
+ /**
163
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#cosmetic-css-rules}
164
+ */
165
+ AdgExtendedCssInjectionException = "#@$?#",
166
+ /**
167
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#scriptlets}
168
+ */
169
+ AdgJsInjection = "#%#",
170
+ /**
171
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#scriptlets}
172
+ */
173
+ AdgJsInjectionException = "#@%#",
174
+ /**
175
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#html-filtering-rules}
176
+ */
177
+ AdgHtmlFiltering = "$$",
178
+ /**
179
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#html-filtering-rules}
180
+ */
181
+ AdgHtmlFilteringException = "$@$"
182
+ }
183
+ /**
184
+ * Represents a basic node in the AST.
185
+ */
186
+ export interface Node {
187
+ /**
188
+ * The type of the node. Every node should have a type.
189
+ */
190
+ type: string;
191
+ /**
192
+ * Optionally the raw representation of the node in the source code.
193
+ */
194
+ raw?: string;
195
+ /**
196
+ * Start offset of the node.
197
+ */
198
+ start?: number;
199
+ /**
200
+ * End offset of the node.
201
+ */
202
+ end?: number;
203
+ }
204
+ /**
205
+ * Represents a location in the source code.
206
+ */
207
+ export interface Location {
208
+ /**
209
+ * Zero-based index of the first character of the parsed source region.
210
+ */
211
+ offset: number;
212
+ /**
213
+ * One-based line index of the first character of the parsed source region.
214
+ */
215
+ line: number;
216
+ /**
217
+ * One-based column index of the first character of the parsed source region.
218
+ */
219
+ column: number;
220
+ }
221
+ /**
222
+ * Represents a location range in the source code.
223
+ */
224
+ export interface LocationRange {
225
+ /**
226
+ * The start location of the node.
227
+ */
228
+ start: Location;
229
+ /**
230
+ * The end location of the node.
231
+ */
232
+ end: Location;
233
+ }
234
+ /**
235
+ * Default location for AST nodes.
236
+ */
237
+ export declare const defaultLocation: Location;
238
+ /**
239
+ * Represents a basic value node in the AST.
240
+ */
241
+ export interface Value<T = string> extends Node {
242
+ type: 'Value';
243
+ /**
244
+ * Value of the node.
245
+ */
246
+ value: T;
247
+ }
248
+ /**
249
+ * Represents a raw value node.
250
+ */
251
+ export interface Raw extends Node {
252
+ type: 'Raw';
253
+ /**
254
+ * Value of the node.
255
+ */
256
+ value: string;
257
+ }
258
+ /**
259
+ * Represents a list of parameters.
260
+ */
261
+ export interface ParameterList extends Node {
262
+ type: 'ParameterList';
263
+ /**
264
+ * List of values
265
+ *
266
+ * @note `null` values are allowed in the list, they represent empty parameters.
267
+ */
268
+ children: (Value | null)[];
269
+ }
270
+ /**
271
+ * Represents a logical expression variable node in the AST.
272
+ */
273
+ export interface ExpressionVariableNode extends Node {
274
+ type: 'Variable';
275
+ name: string;
276
+ }
277
+ /**
278
+ * Represents a logical expression operator node in the AST.
279
+ */
280
+ export interface ExpressionOperatorNode extends Node {
281
+ type: 'Operator';
282
+ operator: OperatorValue;
283
+ left: AnyExpressionNode;
284
+ right?: AnyExpressionNode;
285
+ }
286
+ /**
287
+ * Represents a logical expression parenthesis node in the AST.
288
+ */
289
+ export interface ExpressionParenthesisNode extends Node {
290
+ type: 'Parenthesis';
291
+ expression: AnyExpressionNode;
292
+ }
293
+ /**
294
+ * Represents a filter list (list of rules).
295
+ */
296
+ export interface FilterList extends Node {
297
+ type: 'FilterList';
298
+ /**
299
+ * List of rules
300
+ */
301
+ children: AnyRule[];
302
+ }
303
+ /**
304
+ * Represents a basic adblock rule. Every adblock rule should extend this interface.
305
+ * We don't use this interface directly, so we don't specify the `type` property.
306
+ */
307
+ export interface RuleBase extends Node {
308
+ /**
309
+ * Syntax of the adblock rule. If we are not able to determine the syntax of the rule,
310
+ * we should use `AdblockSyntax.Common` as the value.
311
+ */
312
+ syntax: AdblockSyntax;
313
+ /**
314
+ * Category of the adblock rule
315
+ */
316
+ category: RuleCategory;
317
+ /**
318
+ * Raw data of the rule
319
+ */
320
+ raws?: {
321
+ /**
322
+ * Original rule text
323
+ */
324
+ text?: string;
325
+ /**
326
+ * Newline character used in the rule (if any)
327
+ */
328
+ nl?: NewLine;
329
+ };
330
+ }
331
+ export interface InvalidRuleError extends Node {
332
+ type: 'InvalidRuleError';
333
+ /**
334
+ * Error name
335
+ */
336
+ name: string;
337
+ /**
338
+ * Error message
339
+ */
340
+ message: string;
341
+ }
342
+ /**
343
+ * Represents an invalid rule (used by tolerant mode).
344
+ */
345
+ export interface InvalidRule extends RuleBase {
346
+ type: 'InvalidRule';
347
+ /**
348
+ * Category of the adblock rule
349
+ */
350
+ category: RuleCategory.Invalid;
351
+ /**
352
+ * Raw rule text
353
+ */
354
+ raw: string;
355
+ /**
356
+ * Error details
357
+ */
358
+ error: InvalidRuleError;
359
+ }
360
+ /**
361
+ * Represents an "empty rule" (practically an empty line)
362
+ */
363
+ export interface EmptyRule extends RuleBase {
364
+ /**
365
+ * Type of the adblock rule (should be always present)
366
+ */
367
+ type: 'EmptyRule';
368
+ /**
369
+ * Category of the adblock rule
370
+ */
371
+ category: RuleCategory.Empty;
372
+ }
373
+ /**
374
+ * Represents the basic comment rule interface.
375
+ */
376
+ export interface CommentBase extends RuleBase {
377
+ category: RuleCategory.Comment;
378
+ type: CommentRuleType;
379
+ }
380
+ /**
381
+ * Represents a simple comment.
382
+ *
383
+ * @example
384
+ * Example rules:
385
+ * - ```adblock
386
+ * ! This is just a comment
387
+ * ```
388
+ * - ```adblock
389
+ * # This is just a comment
390
+ * ```
391
+ */
392
+ export interface CommentRule extends CommentBase {
393
+ type: CommentRuleType.CommentRule;
394
+ /**
395
+ * Comment marker.
396
+ *
397
+ * @example
398
+ * - If the rule is `! This is just a comment`, then the marker will be `!`.
399
+ * - If the rule is `# This is just a comment`, then the marker will be `#`.
400
+ */
401
+ marker: Value;
402
+ /**
403
+ * Comment text.
404
+ *
405
+ * @example
406
+ * If the rule is `! This is just a comment`, then the text will be `This is just a comment`.
407
+ */
408
+ text: Value;
409
+ }
410
+ /**
411
+ * Represents a metadata comment rule. This is a special comment that specifies
412
+ * the name and value of the metadata header.
413
+ *
414
+ * @example
415
+ * For example, in the case of
416
+ * ```adblock
417
+ * ! Title: My List
418
+ * ```
419
+ * the name of the header is `Title`, and the value is `My List`.
420
+ */
421
+ export interface MetadataCommentRule extends CommentBase {
422
+ type: CommentRuleType.MetadataCommentRule;
423
+ /**
424
+ * Comment marker.
425
+ */
426
+ marker: Value;
427
+ /**
428
+ * Metadata header name.
429
+ */
430
+ header: Value;
431
+ /**
432
+ * Metadata header value (always should present).
433
+ */
434
+ value: Value;
435
+ }
436
+ /**
437
+ * Represents an AGLint configuration node.
438
+ *
439
+ * Used within config comments.
440
+ *
441
+ * @example
442
+ * ```adblock
443
+ * ! aglint "rule-1": ["warn", { "option1": "value1" }], "rule-2": "off"
444
+ * ! ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
445
+ * ```
446
+ */
447
+ export interface ConfigNode extends Node {
448
+ type: 'ConfigNode';
449
+ value: object;
450
+ }
451
+ /**
452
+ * Represents an inline linter configuration comment.
453
+ *
454
+ * @example
455
+ * For example, if the comment is
456
+ * ```adblock
457
+ * ! aglint-disable some-rule another-rule
458
+ * ```
459
+ * then the command is `aglint-disable` and its params is `["some-rule", "another-rule"]`.
460
+ */
461
+ export interface ConfigCommentRule extends CommentBase {
462
+ category: RuleCategory.Comment;
463
+ type: CommentRuleType.ConfigCommentRule;
464
+ /**
465
+ * The marker for the comment. It can be `!` or `#`. It is always the first non-whitespace character in the comment.
466
+ */
467
+ marker: Value;
468
+ /**
469
+ * The command for the comment. It is always begins with the `aglint` prefix.
470
+ *
471
+ * @example
472
+ * ```adblock
473
+ * ! aglint-disable-next-line
474
+ * ```
475
+ */
476
+ command: Value;
477
+ /**
478
+ * Params for the command. Can be a rule configuration object or a list of rule names.
479
+ *
480
+ * @example
481
+ * For the following comment:
482
+ * ```adblock
483
+ * ! aglint-disable some-rule another-rule
484
+ * ```
485
+ * the params would be `["some-rule", "another-rule"]`.
486
+ */
487
+ params?: ConfigNode | ParameterList;
488
+ /**
489
+ * Config comment text. The idea is generally the same as in ESLint.
490
+ *
491
+ * @example
492
+ * You can use the following syntax to specify a comment for a config comment:
493
+ * `! aglint-enable -- this is the comment`
494
+ */
495
+ comment?: Value;
496
+ }
497
+ /**
498
+ * Represents a preprocessor comment.
499
+ *
500
+ * @example
501
+ * For example, if the comment is
502
+ * ```adblock
503
+ * !#if (adguard)
504
+ * ```
505
+ * then the directive's name is `if` and its value is `(adguard)`.
506
+ *
507
+ * In such a case, the parameters must be submitted for further parsing and validation, as this parser only handles
508
+ * the general syntax.
509
+ */
510
+ export interface PreProcessorCommentRule extends CommentBase {
511
+ category: RuleCategory.Comment;
512
+ type: CommentRuleType.PreProcessorCommentRule;
513
+ /**
514
+ * Name of the directive
515
+ */
516
+ name: Value;
517
+ /**
518
+ * Params (optional)
519
+ */
520
+ params?: Value | ParameterList | AnyExpressionNode;
521
+ }
522
+ /**
523
+ * Represents an adblock agent.
524
+ */
525
+ export interface Agent extends Node {
526
+ type: 'Agent';
527
+ /**
528
+ * Adblock name.
529
+ */
530
+ adblock: Value;
531
+ /**
532
+ * Adblock version (if specified).
533
+ */
534
+ version?: Value;
535
+ /**
536
+ * Needed for network rules modifier validation.
537
+ */
538
+ syntax: AdblockSyntax;
539
+ }
540
+ /**
541
+ * Represents an agent comment rule.
542
+ *
543
+ * @example
544
+ * - ```adblock
545
+ * [Adblock Plus 2.0]
546
+ * ```
547
+ * - ```adblock
548
+ * [uBlock Origin 1.16.4; AdGuard 1.0]
549
+ * ```
550
+ */
551
+ export interface AgentCommentRule extends RuleBase {
552
+ category: RuleCategory.Comment;
553
+ type: CommentRuleType.AgentCommentRule;
554
+ /**
555
+ * Agent list.
556
+ */
557
+ children: Agent[];
558
+ }
559
+ /**
560
+ * Represents a hint.
561
+ *
562
+ * @example
563
+ * ```adblock
564
+ * !+ PLATFORM(windows, mac)
565
+ * ```
566
+ * the name would be `PLATFORM` and the params would be `["windows", "mac"]`.
567
+ */
568
+ export interface Hint extends Node {
569
+ type: 'Hint';
570
+ /**
571
+ * Hint name.
572
+ *
573
+ * @example
574
+ * For `PLATFORM(windows, mac)` the name would be `PLATFORM`.
575
+ */
576
+ name: Value;
577
+ /**
578
+ * Hint parameters.
579
+ *
580
+ * @example
581
+ * For `PLATFORM(windows, mac)` the params would be `["windows", "mac"]`.
582
+ */
583
+ params?: ParameterList;
584
+ }
585
+ /**
586
+ * Represents a hint comment rule.
587
+ *
588
+ * There can be several hints in a hint rule.
589
+ *
590
+ * @example
591
+ * If the rule is
592
+ * ```adblock
593
+ * !+ NOT_OPTIMIZED PLATFORM(windows)
594
+ * ```
595
+ * then there are two hint members: `NOT_OPTIMIZED` and `PLATFORM`.
596
+ */
597
+ export interface HintCommentRule extends RuleBase {
598
+ category: RuleCategory.Comment;
599
+ type: CommentRuleType.HintCommentRule;
600
+ /**
601
+ * Currently only AdGuard supports hints.
602
+ */
603
+ syntax: AdblockSyntax;
604
+ /**
605
+ * List of hints.
606
+ */
607
+ children: Hint[];
608
+ }
609
+ /**
610
+ * Represents a modifier list.
611
+ *
612
+ * @example
613
+ * If the rule is
614
+ * ```adblock
615
+ * some-rule$script,domain=example.com
616
+ * ```
617
+ * then the list of modifiers will be `script,domain=example.com`.
618
+ */
619
+ export interface ModifierList extends Node {
620
+ type: 'ModifierList';
621
+ /**
622
+ * List of modifiers.
623
+ */
624
+ children: Modifier[];
625
+ }
626
+ /**
627
+ * Represents a modifier.
628
+ *
629
+ * @example
630
+ * If the modifier is `third-party`, the value of the modifier property
631
+ * will be `third-party`, but the value will remain undefined.
632
+ *
633
+ * But if the modifier is `domain=example.com`, then the modifier property will be
634
+ * `domain` and the value property will be `example.com`.
635
+ */
636
+ export interface Modifier extends Node {
637
+ /**
638
+ * Modifier name
639
+ */
640
+ name: Value;
641
+ /**
642
+ * Is this modifier an exception? For example, `~third-party` is an exception
643
+ */
644
+ exception?: boolean;
645
+ /**
646
+ * Modifier value (optional)
647
+ */
648
+ value?: Value;
649
+ }
650
+ /**
651
+ * Represents the separator used for various modifier values.
652
+ *
653
+ * @example
654
+ * `||example.com^$app=com.test1.app|TestApp.exe`
655
+ */
656
+ export type PipeSeparator = typeof PIPE_MODIFIER_SEPARATOR;
657
+ /**
658
+ * Represents the separator used for basic rules domain list.
659
+ *
660
+ * @example
661
+ * `example.com,example.org###banner`
662
+ */
663
+ export type CommaSeparator = typeof COMMA_DOMAIN_LIST_SEPARATOR;
664
+ /**
665
+ * Represents the separator used in a domain list.
666
+ *
667
+ * @example
668
+ * - `,` — for the classic domain list,
669
+ * - `|` — for the $domain modifier value
670
+ */
671
+ export type DomainListSeparator = CommaSeparator | PipeSeparator;
672
+ /**
673
+ * Common interface for a list item of $app, $denyallow, $domain, $method
674
+ * which have similar syntax.
675
+ */
676
+ export interface ListItem<T extends ListItemNodeType> extends Node {
677
+ type: T;
678
+ /**
679
+ * Value of the node.
680
+ */
681
+ value: string;
682
+ /**
683
+ * If the value is an negated.
684
+ *
685
+ * @example
686
+ * `~example.com` is negated, but `example.com` is not. `~` is the exception marker here.
687
+ */
688
+ exception: boolean;
689
+ }
690
+ /**
691
+ * Represents an element of the app list — $app.
692
+ */
693
+ export type App = ListItem<ListItemNodeType.App>;
694
+ /**
695
+ * Represents an element of the domain list — $domain, $denyallow.
696
+ */
697
+ export type Domain = ListItem<ListItemNodeType.Domain>;
698
+ /**
699
+ * Represents an element of the method list — $method.
700
+ */
701
+ export type Method = ListItem<ListItemNodeType.Method>;
702
+ /**
703
+ * Represents an element of the stealth option list — $stealth.
704
+ */
705
+ export type StealthOption = ListItem<ListItemNodeType.StealthOption>;
706
+ /**
707
+ * Represents any list item.
708
+ */
709
+ export type AnyListItem = App | Domain | Method | StealthOption;
710
+ /**
711
+ * Represents a list of domains.
712
+ * Needed for $domain and $denyallow.
713
+ *
714
+ * @example
715
+ * `example.com,~example.net` or `example.com|~example.net`
716
+ */
717
+ export interface DomainList extends Node {
718
+ /**
719
+ * Type of the node. Basically, the idea is that each main AST part should have a type
720
+ */
721
+ type: ListNodeType.DomainList;
722
+ /**
723
+ * Separator used in the domain list.
724
+ */
725
+ separator: DomainListSeparator;
726
+ /**
727
+ * List of domains
728
+ */
729
+ children: Domain[];
730
+ }
731
+ /**
732
+ * Represents a list of apps.
733
+ * Needed for $app.
734
+ *
735
+ * @example
736
+ * `Example.exe|com.example.osx`.
737
+ */
738
+ export interface AppList extends Node {
739
+ /**
740
+ * Type of the node. Basically, the idea is that each main AST part should have a type
741
+ */
742
+ type: ListNodeType.AppList;
743
+ /**
744
+ * Separator used in the app list.
745
+ */
746
+ separator: PipeSeparator;
747
+ /**
748
+ * List of apps
749
+ */
750
+ children: App[];
751
+ }
752
+ /**
753
+ * Represents a list of methods.
754
+ * Needed for $method.
755
+ *
756
+ * @example
757
+ * `get|post|put`.
758
+ */
759
+ export interface MethodList extends Node {
760
+ /**
761
+ * Type of the node. Basically, the idea is that each main AST part should have a type
762
+ */
763
+ type: ListNodeType.MethodList;
764
+ /**
765
+ * Separator used in the method list.
766
+ */
767
+ separator: PipeSeparator;
768
+ /**
769
+ * List of methods
770
+ */
771
+ children: Method[];
772
+ }
773
+ /**
774
+ * Represents a list of stealth options.
775
+ * Needed for $stealth.
776
+ *
777
+ * @example
778
+ * `referrer|ip`.
779
+ */
780
+ export interface StealthOptionList extends Node {
781
+ /**
782
+ * Type of the node. Basically, the idea is that each main AST part should have a type
783
+ */
784
+ type: ListNodeType.StealthOptionList;
785
+ /**
786
+ * Separator used in the stealth option list.
787
+ */
788
+ separator: PipeSeparator;
789
+ /**
790
+ * List of stealth options
791
+ */
792
+ children: StealthOption[];
793
+ }
794
+ /**
795
+ * Represents a CSS injection body.
796
+ */
797
+ export interface CssInjectionRuleBody extends Node {
798
+ type: 'CssInjectionRuleBody';
799
+ /**
800
+ * Media query, if any.
801
+ *
802
+ * @example
803
+ *
804
+ * ```text
805
+ * @media (max-width: 768px) { ... }
806
+ * ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
807
+ * ```
808
+ */
809
+ mediaQueryList?: Value;
810
+ /**
811
+ * CSS selector list.
812
+ *
813
+ * @example
814
+ * section:has(> .ad) { display: none; }
815
+ * ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
816
+ * section:has(> .ad), article > p[advert] { display: none; }
817
+ * ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
818
+ */
819
+ selectorList: Value;
820
+ /**
821
+ * Declaration list.
822
+ *
823
+ * @example
824
+ * section:has(> .ad) { display: none; }
825
+ * ↑↑↑↑↑↑↑↑↑↑↑↑↑↑
826
+ * section:has(> .ad), article > p[advert] { display: none; }
827
+ * ↑↑↑↑↑↑↑↑↑↑↑↑↑↑
828
+ * div[ad] { padding-top: 10px; padding-bottom: 10px; }
829
+ * ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
830
+ */
831
+ declarationList?: Value;
832
+ /**
833
+ * Remove flag
834
+ */
835
+ remove?: boolean;
836
+ }
837
+ /**
838
+ * Represents an element hiding rule body. There can even be several selectors in a rule,
839
+ * but the best practice is to place the selectors in separate rules.
840
+ */
841
+ export interface ElementHidingRuleBody extends Node {
842
+ type: 'ElementHidingRuleBody';
843
+ /**
844
+ * Element hiding rule selector(s).
845
+ */
846
+ selectorList: Value;
847
+ }
848
+ /**
849
+ * Represents a scriptlet injection rule body.
850
+ */
851
+ export interface ScriptletInjectionRuleBody extends Node {
852
+ type: 'ScriptletInjectionRuleBody';
853
+ /**
854
+ * List of scriptlets (list of parameter lists).
855
+ */
856
+ children: ParameterList[];
857
+ }
858
+ /**
859
+ * Represents an HTML filtering rule body.
860
+ */
861
+ export interface HtmlFilteringRuleBody extends Node {
862
+ type: 'HtmlFilteringRuleBody';
863
+ /**
864
+ * HTML rule selector(s).
865
+ */
866
+ body: Value;
867
+ }
868
+ /**
869
+ * A generic representation of a cosmetic rule.
870
+ *
871
+ * Regarding the categories, there is only a difference in the body,
872
+ * all other properties can be defined at this level.
873
+ */
874
+ export interface CosmeticRule extends RuleBase {
875
+ category: RuleCategory.Cosmetic;
876
+ type: CosmeticRuleType;
877
+ /**
878
+ * List of modifiers (optional)
879
+ */
880
+ modifiers?: ModifierList;
881
+ /**
882
+ * List of domains.
883
+ */
884
+ domains: DomainList;
885
+ /**
886
+ * Separator between pattern and body. For example, in the following rule:
887
+ * ```adblock
888
+ * example.com##.ads
889
+ * ```
890
+ * then the separator is `##`.
891
+ */
892
+ separator: Value;
893
+ /**
894
+ * If the rule is an exception. For example, in the following rule:
895
+ * ```adblock
896
+ * example.com#@#.ads
897
+ * ```
898
+ * then the rule is an exception and @ is the exception marker.
899
+ */
900
+ exception: boolean;
901
+ /**
902
+ * Body of the rule. It can be a CSS rule, an element hiding rule, a scriptlet rule, etc.
903
+ */
904
+ body: unknown;
905
+ }
906
+ /**
907
+ * Representation of an element hiding rule.
908
+ *
909
+ * Example rules:
910
+ * - ```adblock
911
+ * example.com##.ads
912
+ * ```
913
+ * - ```adblock
914
+ * example.com#@#.ads
915
+ * ```
916
+ * - ```adblock
917
+ * example.com#?#.ads:has(> .something)
918
+ * ```
919
+ * - ```adblock
920
+ * example.com#@?#.ads:has(> .something)
921
+ * ```
922
+ */
923
+ export interface ElementHidingRule extends CosmeticRule {
924
+ type: CosmeticRuleType.ElementHidingRule;
925
+ body: ElementHidingRuleBody;
926
+ }
927
+ /**
928
+ * Representation of a CSS injection rule.
929
+ *
930
+ * Example rules (AdGuard):
931
+ * - ```adblock
932
+ * example.com#$#body { padding-top: 0 !important; }
933
+ * ```
934
+ * - ```adblock
935
+ * example.com#$#@media (min-width: 1024px) { body { padding-top: 0 !important; } }
936
+ * ```
937
+ * - ```adblock
938
+ * example.com#$?#@media (min-width: 1024px) { .something:has(.ads) { padding-top: 0 !important; } }
939
+ * ```
940
+ * - ```adblock
941
+ * example.com#$#.ads { remove: true; }
942
+ * ```
943
+ *
944
+ * Example rules (uBlock Origin):
945
+ * - ```adblock
946
+ * example.com##body:style(padding-top: 0 !important;)
947
+ * ```
948
+ * - ```adblock
949
+ * example.com##.ads:remove()
950
+ * ```
951
+ */
952
+ export interface CssInjectionRule extends CosmeticRule {
953
+ type: CosmeticRuleType.CssInjectionRule;
954
+ body: CssInjectionRuleBody;
955
+ }
956
+ /**
957
+ * Representation of a scriptlet injection rule.
958
+ *
959
+ * Example rules (AdGuard):
960
+ * - ```adblock
961
+ * example.com#%#//scriptlet('scriptlet-name', 'arg0', 'arg1')
962
+ * ```
963
+ * - ```adblock
964
+ * example.com#@%#//scriptlet('scriptlet-name', 'arg0', 'arg1')
965
+ * ```
966
+ *
967
+ * Example rules (uBlock Origin):
968
+ * - ```adblock
969
+ * example.com##+js(scriptlet-name, arg0, arg1)
970
+ * ```
971
+ * - ```adblock
972
+ * example.com#@#+js(scriptlet-name, arg0, arg1)
973
+ * ```
974
+ *
975
+ * Example rules (Adblock Plus):
976
+ * - ```adblock
977
+ * example.com#$#scriptlet-name arg0 arg1
978
+ * ```
979
+ * - ```adblock
980
+ * example.com#@$#scriptlet-name arg0 arg1
981
+ * ```
982
+ * - ```adblock
983
+ * example.com#$#scriptlet0 arg00 arg01; scriptlet1 arg10 arg11
984
+ * ```
985
+ */
986
+ export interface ScriptletInjectionRule extends CosmeticRule {
987
+ type: CosmeticRuleType.ScriptletInjectionRule;
988
+ body: ScriptletInjectionRuleBody;
989
+ }
990
+ /**
991
+ * Representation of a HTML filtering rule.
992
+ *
993
+ * Example rules (AdGuard):
994
+ * - ```adblock
995
+ * example.com$$script[tag-content="detect"]
996
+ * ```
997
+ * - ```adblock
998
+ * example.com$@$script[tag-content="detect"]
999
+ * ```
1000
+ *
1001
+ * Example rules (uBlock Origin):
1002
+ * - ```adblock
1003
+ * example.com##^script:has-text(detect)
1004
+ * ```
1005
+ * - ```adblock
1006
+ * example.com#@#^script:has-text(detect)
1007
+ * ```
1008
+ */
1009
+ export interface HtmlFilteringRule extends CosmeticRule {
1010
+ type: CosmeticRuleType.HtmlFilteringRule;
1011
+ body: Value;
1012
+ }
1013
+ /**
1014
+ * Representation of a JS injection rule.
1015
+ *
1016
+ * Example rules (AdGuard):
1017
+ * - ```adblock
1018
+ * example.com#%#let a = 2;
1019
+ * ```
1020
+ * - ```adblock
1021
+ * example.com#@%#let a = 2;
1022
+ * ```
1023
+ */
1024
+ export interface JsInjectionRule extends CosmeticRule {
1025
+ type: CosmeticRuleType.JsInjectionRule;
1026
+ body: Value;
1027
+ }
1028
+ /**
1029
+ * Represents the different types of network rules.
1030
+ */
1031
+ export declare enum NetworkRuleType {
1032
+ NetworkRule = "NetworkRule",
1033
+ HostRule = "HostRule"
1034
+ }
1035
+ /**
1036
+ * Represents the common properties of network rules
1037
+ */
1038
+ export interface NetworkRuleBase extends RuleBase {
1039
+ /**
1040
+ * Category of the adblock rule.
1041
+ */
1042
+ category: RuleCategory.Network;
1043
+ /**
1044
+ * Type of the network rule.
1045
+ */
1046
+ type: NetworkRuleType;
1047
+ /**
1048
+ * Syntax of the adblock rule. If we are not able to determine the syntax of the rule,
1049
+ * we should use `AdblockSyntax.Common` as the value.
1050
+ */
1051
+ syntax: AdblockSyntax;
1052
+ }
1053
+ /**
1054
+ * Represents the common properties of network rules
1055
+ */
1056
+ export interface NetworkRule extends NetworkRuleBase {
1057
+ /**
1058
+ * Type of the node.
1059
+ */
1060
+ type: NetworkRuleType.NetworkRule;
1061
+ /**
1062
+ * If the rule is an exception rule. If the rule begins with `@@`, it means that it is an exception rule.
1063
+ *
1064
+ * @example
1065
+ * The following rule is an exception rule:
1066
+ * ```adblock
1067
+ * @@||example.org^
1068
+ * ```
1069
+ * since it begins with `@@`, which is the exception marker.
1070
+ *
1071
+ * But the following rule is not an exception rule:
1072
+ * ```adblock
1073
+ * ||example.org^
1074
+ * ```
1075
+ * since it does not begins with `@@`.
1076
+ */
1077
+ exception: boolean;
1078
+ /**
1079
+ * The rule pattern.
1080
+ *
1081
+ * @example
1082
+ * - Let's say we have the following rule:
1083
+ * ```adblock
1084
+ * ||example.org^
1085
+ * ```
1086
+ * then the pattern of this rule is `||example.org^`.
1087
+ * - But let's say we have the following rule:
1088
+ * ```adblock
1089
+ * ||example.org^$third-party,script
1090
+ * ```
1091
+ * then the pattern of this rule is also `||example.org^`.
1092
+ */
1093
+ pattern: Value;
1094
+ /**
1095
+ * The rule modifiers.
1096
+ *
1097
+ * @example
1098
+ * - Let's say we have the following rule:
1099
+ * ```adblock
1100
+ * ||example.org^$third-party
1101
+ * ```
1102
+ * then the modifiers of this rule are `["third-party"]`.
1103
+ */
1104
+ modifiers?: ModifierList;
1105
+ }
1106
+ /**
1107
+ * Represents a list of hostnames.
1108
+ */
1109
+ export interface HostnameList extends Node {
1110
+ /**
1111
+ * Type of the node.
1112
+ */
1113
+ type: 'HostnameList';
1114
+ /**
1115
+ * List of hostnames.
1116
+ */
1117
+ children: Value[];
1118
+ }
1119
+ /**
1120
+ * Represents the common properties of host rules.
1121
+ *
1122
+ * @see https://adguard-dns.io/kb/general/dns-filtering-syntax/#etc-hosts-syntax
1123
+ */
1124
+ export interface HostRule extends NetworkRuleBase {
1125
+ /**
1126
+ * Type of the node.
1127
+ */
1128
+ type: NetworkRuleType.HostRule;
1129
+ /**
1130
+ * IP address. It can be an IPv4 or IPv6 address.
1131
+ *
1132
+ * @example
1133
+ * ```text
1134
+ * 127.0.0.1 example.com example.org
1135
+ * ↑↑↑↑↑↑↑↑↑
1136
+ * ```
1137
+ * @note If IP is not specified in the rule, it parsed as null IP: `0.0.0.0`.
1138
+ */
1139
+ ip: Value;
1140
+ /**
1141
+ * Hostnames.
1142
+ *
1143
+ * @example
1144
+ * ```text
1145
+ * 127.0.0.1 example.com example.org
1146
+ * ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
1147
+ * ```
1148
+ */
1149
+ hostnames: HostnameList;
1150
+ /**
1151
+ * Comment (optional).
1152
+ *
1153
+ * @example
1154
+ * ```text
1155
+ * 127.0.0.1 localhost # This is just a comment
1156
+ * ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
1157
+ * ```
1158
+ */
1159
+ comment?: Value;
1160
+ }
1161
+ /**
1162
+ * Interface for parsed uBO selector.
1163
+ */
1164
+ export interface UboSelector extends Node {
1165
+ /**
1166
+ * Node type.
1167
+ */
1168
+ type: 'UboSelector';
1169
+ /**
1170
+ * Selector string cleaned from uBO specific syntax.
1171
+ */
1172
+ selector: Value;
1173
+ /**
1174
+ * List of uBO modifiers applied to the selector.
1175
+ */
1176
+ modifiers?: ModifierList;
1177
+ }