@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,563 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 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
+ import XRegExp from 'xregexp';
8
+ import { AdblockSyntaxError } from '../errors/adblock-syntax-error.mjs';
9
+ import { AppListParser } from '../parser/misc/app-list-parser.mjs';
10
+ import { DomainListParser } from '../parser/misc/domain-list-parser.mjs';
11
+ import { MethodListParser } from '../parser/misc/method-list-parser.mjs';
12
+ import { StealthOptionListParser } from '../parser/misc/stealth-option-list-parser.mjs';
13
+ import { DomainUtils } from '../utils/domain.mjs';
14
+ import { QuoteUtils, QuoteType } from '../utils/quotes.mjs';
15
+ import { SEMICOLON, SPACE, BACKSLASH, COMMA, PIPE, EQUALS, WILDCARD, DOT, OPEN_PARENTHESIS, CLOSE_PARENTHESIS } from '../utils/constants.mjs';
16
+ import { getValueRequiredValidationResult, getInvalidValidationResult } from './helpers.mjs';
17
+ import { VALIDATION_ERROR_PREFIX, ALLOWED_CSP_DIRECTIVES, REFERRER_POLICY_DIRECTIVES, ALLOWED_PERMISSION_DIRECTIVES, ALLOWED_METHODS, ALLOWED_STEALTH_OPTIONS, EMPTY_PERMISSIONS_ALLOWLIST, APP_NAME_ALLOWED_CHARS, PERMISSIONS_TOKEN_SELF, SOURCE_DATA_ERROR_PREFIX } from './constants.mjs';
18
+ import { defaultParserOptions } from '../parser/options.mjs';
19
+
20
+ /**
21
+ * Pre-defined available validators for modifiers with custom `value_format`.
22
+ */
23
+ var CustomValueFormatValidatorName;
24
+ (function (CustomValueFormatValidatorName) {
25
+ CustomValueFormatValidatorName["App"] = "pipe_separated_apps";
26
+ CustomValueFormatValidatorName["Csp"] = "csp_value";
27
+ // there are some differences between $domain and $denyallow
28
+ CustomValueFormatValidatorName["DenyAllow"] = "pipe_separated_denyallow_domains";
29
+ CustomValueFormatValidatorName["Domain"] = "pipe_separated_domains";
30
+ CustomValueFormatValidatorName["Method"] = "pipe_separated_methods";
31
+ CustomValueFormatValidatorName["Permissions"] = "permissions_value";
32
+ CustomValueFormatValidatorName["ReferrerPolicy"] = "referrerpolicy_value";
33
+ CustomValueFormatValidatorName["StealthOption"] = "pipe_separated_stealth_options";
34
+ })(CustomValueFormatValidatorName || (CustomValueFormatValidatorName = {}));
35
+ /**
36
+ * Checks whether the `chunk` of app name (which if splitted by dot `.`) is valid.
37
+ * Only letters, numbers, and underscore `_` are allowed.
38
+ *
39
+ * @param chunk Chunk of app name to check.
40
+ *
41
+ * @returns True if the `chunk` is valid part of app name, false otherwise.
42
+ */
43
+ const isValidAppNameChunk = (chunk) => {
44
+ // e.g. 'Example..exe'
45
+ if (chunk.length === 0) {
46
+ return false;
47
+ }
48
+ for (let i = 0; i < chunk.length; i += 1) {
49
+ const char = chunk[i];
50
+ if (!APP_NAME_ALLOWED_CHARS.has(char)) {
51
+ return false;
52
+ }
53
+ }
54
+ return true;
55
+ };
56
+ /**
57
+ * Checks whether the given `value` is valid app name as $app modifier value.
58
+ *
59
+ * @param value App name to check.
60
+ *
61
+ * @returns True if the `value` is valid app name, false otherwise.
62
+ */
63
+ const isValidAppModifierValue = (value) => {
64
+ // $app modifier does not support wildcard tld
65
+ // https://adguard.app/kb/general/ad-filtering/create-own-filters/#app-modifier
66
+ if (value.includes(WILDCARD)) {
67
+ return false;
68
+ }
69
+ return value
70
+ .split(DOT)
71
+ .every((chunk) => isValidAppNameChunk(chunk));
72
+ };
73
+ /**
74
+ * Checks whether the given `value` is valid HTTP method as $method modifier value.
75
+ *
76
+ * @param value Method to check.
77
+ *
78
+ * @returns True if the `value` is valid HTTP method, false otherwise.
79
+ */
80
+ const isValidMethodModifierValue = (value) => {
81
+ return ALLOWED_METHODS.has(value);
82
+ };
83
+ /**
84
+ * Checks whether the given `value` is valid option as $stealth modifier value.
85
+ *
86
+ * @param value Stealth option to check.
87
+ *
88
+ * @returns True if the `value` is valid stealth option, false otherwise.
89
+ */
90
+ const isValidStealthModifierValue = (value) => {
91
+ return ALLOWED_STEALTH_OPTIONS.has(value);
92
+ };
93
+ /**
94
+ * Checks whether the given `rawOrigin` is valid as Permissions Allowlist origin.
95
+ *
96
+ * @see {@link https://w3c.github.io/webappsec-permissions-policy/#allowlists}
97
+ *
98
+ * @param rawOrigin The raw origin.
99
+ *
100
+ * @returns True if the origin is valid, false otherwise.
101
+ */
102
+ const isValidPermissionsOrigin = (rawOrigin) => {
103
+ // origins should be quoted by double quote
104
+ const actualQuoteType = QuoteUtils.getStringQuoteType(rawOrigin);
105
+ if (actualQuoteType !== QuoteType.Double) {
106
+ return false;
107
+ }
108
+ const origin = QuoteUtils.removeQuotes(rawOrigin);
109
+ try {
110
+ // validate the origin by URL constructor
111
+ // https://w3c.github.io/webappsec-permissions-policy/#algo-parse-policy-directive
112
+ new URL(origin);
113
+ }
114
+ catch (e) {
115
+ return false;
116
+ }
117
+ return true;
118
+ };
119
+ /**
120
+ * Checks whether the given `value` is valid domain as $denyallow modifier value.
121
+ * Important: wildcard tld are not supported, compared to $domain.
122
+ *
123
+ * @param value Value to check.
124
+ *
125
+ * @returns True if the `value` is valid domain and does not contain wildcard `*`, false otherwise.
126
+ */
127
+ const isValidDenyAllowModifierValue = (value) => {
128
+ // $denyallow modifier does not support wildcard tld
129
+ // https://adguard.app/kb/general/ad-filtering/create-own-filters/#denyallow-modifier
130
+ // but here we are simply checking whether the value contains wildcard `*`, not ends with `.*`
131
+ if (value.includes(WILDCARD)) {
132
+ return false;
133
+ }
134
+ // TODO: add cache for domains validation
135
+ return DomainUtils.isValidDomainOrHostname(value);
136
+ };
137
+ /**
138
+ * Checks whether the given `value` is valid domain as $domain modifier value.
139
+ *
140
+ * @param value Value to check.
141
+ *
142
+ * @returns True if the `value` is valid domain, false otherwise.
143
+ */
144
+ const isValidDomainModifierValue = (value) => {
145
+ // TODO: add cache for domains validation
146
+ return DomainUtils.isValidDomainOrHostname(value);
147
+ };
148
+ /**
149
+ * Checks whether the all list items' exceptions are `false`.
150
+ * Those items which `exception` is `true` is to be specified in the validation result error message.
151
+ *
152
+ * @param modifierName Modifier name.
153
+ * @param listItems List items to check.
154
+ *
155
+ * @returns Validation result.
156
+ */
157
+ const customNoNegatedListItemsValidator = (modifierName, listItems) => {
158
+ const negatedValues = [];
159
+ listItems.forEach((listItem) => {
160
+ if (listItem.exception) {
161
+ negatedValues.push(listItem.value);
162
+ }
163
+ });
164
+ if (negatedValues.length > 0) {
165
+ const valuesToStr = QuoteUtils.quoteAndJoinStrings(negatedValues);
166
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.NOT_NEGATABLE_VALUE}: '${modifierName}': ${valuesToStr}`);
167
+ }
168
+ return { valid: true };
169
+ };
170
+ /**
171
+ * Checks whether the all list items' exceptions are consistent,
172
+ * i.e. all items are either negated or not negated.
173
+ *
174
+ * The `exception` value of the first item is used as a reference, and all other items are checked against it.
175
+ * Those items which `exception` is not consistent with the first item
176
+ * is to be specified in the validation result error message.
177
+ *
178
+ * @see {@link https://adguard.com/kb/general/ad-filtering/create-own-filters/#method-modifier}
179
+ *
180
+ * @param modifierName Modifier name.
181
+ * @param listItems List items to check.
182
+ *
183
+ * @returns Validation result.
184
+ */
185
+ const customConsistentExceptionsValidator = (modifierName, listItems) => {
186
+ const firstException = listItems[0].exception;
187
+ const nonConsistentItemValues = [];
188
+ listItems.forEach((listItem) => {
189
+ if (listItem.exception !== firstException) {
190
+ nonConsistentItemValues.push(listItem.value);
191
+ }
192
+ });
193
+ if (nonConsistentItemValues.length > 0) {
194
+ const valuesToStr = QuoteUtils.quoteAndJoinStrings(nonConsistentItemValues);
195
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.MIXED_NEGATIONS}: '${modifierName}': ${valuesToStr}`);
196
+ }
197
+ return { valid: true };
198
+ };
199
+ /**
200
+ * Checks whether the given `modifier` value is valid.
201
+ * Supposed to validate the value of modifiers which values are lists separated by pipe `|` —
202
+ * $app, $domain, $denyallow, $method.
203
+ *
204
+ * @param modifier Modifier AST node.
205
+ * @param listParser Parser function for parsing modifier value
206
+ * which is supposed to be a list separated by pipe `|`.
207
+ * @param isValidListItem Predicate function for checking of modifier's list item validity,
208
+ * e.g. $denyallow modifier does not support wildcard tld, but $domain does.
209
+ * @param customListValidator Optional; custom validator for specific modifier,
210
+ * e.g. $denyallow modifier does not support negated domains.
211
+ *
212
+ * @returns Result of modifier domains validation.
213
+ */
214
+ const validateListItemsModifier = (modifier, listParser, isValidListItem, customListValidator) => {
215
+ const modifierName = modifier.name.value;
216
+ const defaultInvalidValueResult = getValueRequiredValidationResult(modifierName);
217
+ if (!modifier.value?.value) {
218
+ return defaultInvalidValueResult;
219
+ }
220
+ let theList;
221
+ try {
222
+ theList = listParser(modifier.value.value, defaultParserOptions, 0, PIPE);
223
+ }
224
+ catch (e) {
225
+ if (e instanceof AdblockSyntaxError) {
226
+ return {
227
+ valid: false,
228
+ error: e.message,
229
+ };
230
+ }
231
+ return defaultInvalidValueResult;
232
+ }
233
+ const invalidListItems = [];
234
+ theList.children.forEach((item) => {
235
+ // different validators are used for $denyallow and $domain modifiers
236
+ // because of different requirements and restrictions
237
+ if (!isValidListItem(item.value)) {
238
+ invalidListItems.push(item.value);
239
+ }
240
+ });
241
+ if (invalidListItems.length > 0) {
242
+ const itemsToStr = QuoteUtils.quoteAndJoinStrings(invalidListItems);
243
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.INVALID_LIST_VALUES}: '${modifierName}': ${itemsToStr}`);
244
+ }
245
+ // IMPORTANT: run custom validator after all other checks
246
+ // Some lists should be fully checked, not just the list items:
247
+ // e.g. Safari does not support allowed and disallowed domains for $domain in the same list
248
+ // or domains cannot be negated for $denyallow modifier
249
+ if (customListValidator) {
250
+ return customListValidator(modifierName, theList.children);
251
+ }
252
+ return { valid: true };
253
+ };
254
+ /**
255
+ * Validates 'pipe_separated_apps' custom value format.
256
+ * Used for $app modifier.
257
+ *
258
+ * @param modifier Modifier AST node.
259
+ *
260
+ * @returns Validation result.
261
+ */
262
+ const validatePipeSeparatedApps = (modifier) => {
263
+ return validateListItemsModifier(modifier, (raw) => AppListParser.parse(raw), isValidAppModifierValue);
264
+ };
265
+ /**
266
+ * Validates 'pipe_separated_denyallow_domains' custom value format.
267
+ * Used for $denyallow modifier.
268
+ *
269
+ * @param modifier Modifier AST node.
270
+ *
271
+ * @returns Validation result.
272
+ */
273
+ const validatePipeSeparatedDenyAllowDomains = (modifier) => {
274
+ return validateListItemsModifier(modifier, DomainListParser.parse, isValidDenyAllowModifierValue, customNoNegatedListItemsValidator);
275
+ };
276
+ /**
277
+ * Validates 'pipe_separated_domains' custom value format.
278
+ * Used for $domains modifier.
279
+ *
280
+ * @param modifier Modifier AST node.
281
+ *
282
+ * @returns Validation result.
283
+ */
284
+ const validatePipeSeparatedDomains = (modifier) => {
285
+ return validateListItemsModifier(modifier, DomainListParser.parse, isValidDomainModifierValue);
286
+ };
287
+ /**
288
+ * Validates 'pipe_separated_methods' custom value format.
289
+ * Used for $method modifier.
290
+ *
291
+ * @param modifier Modifier AST node.
292
+ *
293
+ * @returns Validation result.
294
+ */
295
+ const validatePipeSeparatedMethods = (modifier) => {
296
+ return validateListItemsModifier(modifier, (raw) => MethodListParser.parse(raw), isValidMethodModifierValue, customConsistentExceptionsValidator);
297
+ };
298
+ /**
299
+ * Validates 'pipe_separated_stealth_options' custom value format.
300
+ * Used for $stealth modifier.
301
+ *
302
+ * @param modifier Modifier AST node.
303
+ *
304
+ * @returns Validation result.
305
+ */
306
+ const validatePipeSeparatedStealthOptions = (modifier) => {
307
+ return validateListItemsModifier(modifier, (raw) => StealthOptionListParser.parse(raw), isValidStealthModifierValue, customNoNegatedListItemsValidator);
308
+ };
309
+ /**
310
+ * Validates `csp_value` custom value format.
311
+ * Used for $csp modifier.
312
+ *
313
+ * @param modifier Modifier AST node.
314
+ *
315
+ * @returns Validation result.
316
+ */
317
+ const validateCspValue = (modifier) => {
318
+ const modifierName = modifier.name.value;
319
+ if (!modifier.value?.value) {
320
+ return getValueRequiredValidationResult(modifierName);
321
+ }
322
+ // $csp modifier value may contain multiple directives
323
+ // e.g. "csp=child-src 'none'; frame-src 'self' *; worker-src 'none'"
324
+ const policyDirectives = modifier.value.value
325
+ .split(SEMICOLON)
326
+ // rule with $csp modifier may end with semicolon
327
+ // e.g. "$csp=sandbox allow-same-origin;"
328
+ // TODO: add predicate helper for `(i) => !!i`
329
+ .filter((i) => !!i);
330
+ const invalidValueValidationResult = getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.VALUE_INVALID}: '${modifierName}': "${modifier.value.value}"`);
331
+ if (policyDirectives.length === 0) {
332
+ return invalidValueValidationResult;
333
+ }
334
+ const invalidDirectives = [];
335
+ for (let i = 0; i < policyDirectives.length; i += 1) {
336
+ const policyDirective = policyDirectives[i].trim();
337
+ if (!policyDirective) {
338
+ return invalidValueValidationResult;
339
+ }
340
+ const chunks = policyDirective.split(SPACE);
341
+ const [directive, ...valueChunks] = chunks;
342
+ // e.g. "csp=child-src 'none'; ; worker-src 'none'"
343
+ // validator it here ↑
344
+ if (!directive) {
345
+ return invalidValueValidationResult;
346
+ }
347
+ if (!ALLOWED_CSP_DIRECTIVES.has(directive)) {
348
+ // e.g. "csp='child-src' 'none'"
349
+ if (ALLOWED_CSP_DIRECTIVES.has(QuoteUtils.removeQuotes(directive))) {
350
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.NO_CSP_DIRECTIVE_QUOTE}: '${modifierName}': ${directive}`);
351
+ }
352
+ invalidDirectives.push(directive);
353
+ continue;
354
+ }
355
+ if (valueChunks.length === 0) {
356
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.NO_CSP_VALUE}: '${modifierName}': '${directive}'`);
357
+ }
358
+ }
359
+ if (invalidDirectives.length > 0) {
360
+ const directivesToStr = QuoteUtils.quoteAndJoinStrings(invalidDirectives, QuoteType.Double);
361
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.INVALID_CSP_DIRECTIVES}: '${modifierName}': ${directivesToStr}`);
362
+ }
363
+ return { valid: true };
364
+ };
365
+ /**
366
+ * Validates permission allowlist origins in the value of $permissions modifier.
367
+ *
368
+ * @see {@link https://w3c.github.io/webappsec-permissions-policy/#allowlists}
369
+ *
370
+ * @param allowlistChunks Array of allowlist chunks.
371
+ * @param directive Permission directive name.
372
+ * @param modifierName Modifier name.
373
+ *
374
+ * @returns Validation result.
375
+ */
376
+ const validatePermissionAllowlistOrigins = (allowlistChunks, directive, modifierName) => {
377
+ const invalidOrigins = [];
378
+ for (let i = 0; i < allowlistChunks.length; i += 1) {
379
+ const chunk = allowlistChunks[i].trim();
380
+ // skip few spaces between origins (they were splitted by space)
381
+ // e.g. 'geolocation=("https://example.com" "https://*.example.com")'
382
+ if (chunk.length === 0) {
383
+ continue;
384
+ }
385
+ /**
386
+ * 'self' should be checked case-insensitively
387
+ *
388
+ * @see {@link https://w3c.github.io/webappsec-permissions-policy/#algo-parse-policy-directive}
389
+ *
390
+ * @example 'geolocation=(self)'
391
+ */
392
+ if (chunk.toLowerCase() === PERMISSIONS_TOKEN_SELF) {
393
+ continue;
394
+ }
395
+ if (QuoteUtils.getStringQuoteType(chunk) !== QuoteType.Double) {
396
+ return getInvalidValidationResult(
397
+ // eslint-disable-next-line max-len
398
+ `${VALIDATION_ERROR_PREFIX.INVALID_PERMISSION_ORIGIN_QUOTES}: '${modifierName}': '${directive}': '${QuoteUtils.removeQuotes(chunk)}'`);
399
+ }
400
+ if (!isValidPermissionsOrigin(chunk)) {
401
+ invalidOrigins.push(chunk);
402
+ }
403
+ }
404
+ if (invalidOrigins.length > 0) {
405
+ const originsToStr = QuoteUtils.quoteAndJoinStrings(invalidOrigins);
406
+ return getInvalidValidationResult(
407
+ // eslint-disable-next-line max-len
408
+ `${VALIDATION_ERROR_PREFIX.INVALID_PERMISSION_ORIGINS}: '${modifierName}': '${directive}': ${originsToStr}`);
409
+ }
410
+ return { valid: true };
411
+ };
412
+ /**
413
+ * Validates permission allowlist in the modifier value.
414
+ *
415
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Permissions_Policy#allowlists}
416
+ * @see {@link https://w3c.github.io/webappsec-permissions-policy/#allowlists}
417
+ *
418
+ * @param allowlist Allowlist value.
419
+ * @param directive Permission directive name.
420
+ * @param modifierName Modifier name.
421
+ *
422
+ * @returns Validation result.
423
+ */
424
+ const validatePermissionAllowlist = (allowlist, directive, modifierName) => {
425
+ // `*` is one of available permissions tokens
426
+ // e.g. 'fullscreen=*'
427
+ // https://w3c.github.io/webappsec-permissions-policy/#structured-header-serialization
428
+ if (allowlist === WILDCARD
429
+ // e.g. 'autoplay=()'
430
+ || allowlist === EMPTY_PERMISSIONS_ALLOWLIST) {
431
+ return { valid: true };
432
+ }
433
+ if (!(allowlist.startsWith(OPEN_PARENTHESIS) && allowlist.endsWith(CLOSE_PARENTHESIS))) {
434
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.VALUE_INVALID}: '${modifierName}'`);
435
+ }
436
+ const allowlistChunks = allowlist.slice(1, -1).split(SPACE);
437
+ return validatePermissionAllowlistOrigins(allowlistChunks, directive, modifierName);
438
+ };
439
+ /**
440
+ * Validates single permission in the modifier value.
441
+ *
442
+ * @param permission Single permission value.
443
+ * @param modifierName Modifier name.
444
+ * @param modifierValue Modifier value.
445
+ *
446
+ * @returns Validation result.
447
+ */
448
+ const validateSinglePermission = (permission, modifierName, modifierValue) => {
449
+ // empty permission in the rule
450
+ // e.g. 'permissions=storage-access=()\\, \\, camera=()'
451
+ // the validator is here ↑
452
+ if (!permission) {
453
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.VALUE_INVALID}: '${modifierName}'`);
454
+ }
455
+ if (permission.includes(COMMA)) {
456
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.NO_UNESCAPED_PERMISSION_COMMA}: '${modifierName}': '${modifierValue}'`);
457
+ }
458
+ const [directive, allowlist] = permission.split(EQUALS);
459
+ if (!ALLOWED_PERMISSION_DIRECTIVES.has(directive)) {
460
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.INVALID_PERMISSION_DIRECTIVE}: '${modifierName}': '${directive}'`);
461
+ }
462
+ return validatePermissionAllowlist(allowlist, directive, modifierName);
463
+ };
464
+ /**
465
+ * Validates `permissions_value` custom value format.
466
+ * Used for $permissions modifier.
467
+ *
468
+ * @param modifier Modifier AST node.
469
+ *
470
+ * @returns Validation result.
471
+ */
472
+ const validatePermissions = (modifier) => {
473
+ if (!modifier.value?.value) {
474
+ return getValueRequiredValidationResult(modifier.name.value);
475
+ }
476
+ const modifierName = modifier.name.value;
477
+ const modifierValue = modifier.value.value;
478
+ // multiple permissions may be separated by escaped commas
479
+ const permissions = modifier.value.value.split(`${BACKSLASH}${COMMA}`);
480
+ for (let i = 0; i < permissions.length; i += 1) {
481
+ const permission = permissions[i].trim();
482
+ const singlePermissionValidationResult = validateSinglePermission(permission, modifierName, modifierValue);
483
+ if (!singlePermissionValidationResult.valid) {
484
+ return singlePermissionValidationResult;
485
+ }
486
+ }
487
+ return { valid: true };
488
+ };
489
+ /**
490
+ * Validates `referrerpolicy_value` custom value format.
491
+ * Used for $referrerpolicy modifier.
492
+ *
493
+ * @param modifier Modifier AST node.
494
+ *
495
+ * @returns Validation result.
496
+ */
497
+ const validateReferrerPolicy = (modifier) => {
498
+ if (!modifier.value?.value) {
499
+ return getValueRequiredValidationResult(modifier.name.value);
500
+ }
501
+ const modifierName = modifier.name.value;
502
+ const modifierValue = modifier.value.value;
503
+ if (!REFERRER_POLICY_DIRECTIVES.has(modifierValue)) {
504
+ // eslint-disable-next-line max-len
505
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.INVALID_REFERRER_POLICY_DIRECTIVE}: '${modifierName}': '${modifierValue}'`);
506
+ }
507
+ return { valid: true };
508
+ };
509
+ /**
510
+ * Map of all available pre-defined validators for modifiers with custom `value_format`.
511
+ */
512
+ const CUSTOM_VALUE_FORMAT_MAP = {
513
+ [CustomValueFormatValidatorName.App]: validatePipeSeparatedApps,
514
+ [CustomValueFormatValidatorName.Csp]: validateCspValue,
515
+ [CustomValueFormatValidatorName.DenyAllow]: validatePipeSeparatedDenyAllowDomains,
516
+ [CustomValueFormatValidatorName.Domain]: validatePipeSeparatedDomains,
517
+ [CustomValueFormatValidatorName.Method]: validatePipeSeparatedMethods,
518
+ [CustomValueFormatValidatorName.Permissions]: validatePermissions,
519
+ [CustomValueFormatValidatorName.ReferrerPolicy]: validateReferrerPolicy,
520
+ [CustomValueFormatValidatorName.StealthOption]: validatePipeSeparatedStealthOptions,
521
+ };
522
+ /**
523
+ * Returns whether the given `valueFormat` is a valid custom value format validator name.
524
+ *
525
+ * @param valueFormat Value format for the modifier.
526
+ *
527
+ * @returns True if `valueFormat` is a supported pre-defined value format validator name, false otherwise.
528
+ */
529
+ const isCustomValueFormatValidator = (valueFormat) => {
530
+ return Object.keys(CUSTOM_VALUE_FORMAT_MAP).includes(valueFormat);
531
+ };
532
+ /**
533
+ * Checks whether the value for given `modifier` is valid.
534
+ *
535
+ * @param modifier Modifier AST node.
536
+ * @param valueFormat Value format for the modifier.
537
+ *
538
+ * @returns Validation result.
539
+ */
540
+ const validateValue = (modifier, valueFormat) => {
541
+ if (isCustomValueFormatValidator(valueFormat)) {
542
+ const validator = CUSTOM_VALUE_FORMAT_MAP[valueFormat];
543
+ return validator(modifier);
544
+ }
545
+ const modifierName = modifier.name.value;
546
+ if (!modifier.value?.value) {
547
+ return getValueRequiredValidationResult(modifierName);
548
+ }
549
+ let xRegExp;
550
+ try {
551
+ xRegExp = XRegExp(valueFormat);
552
+ }
553
+ catch (e) {
554
+ throw new Error(`${SOURCE_DATA_ERROR_PREFIX.INVALID_VALUE_FORMAT_REGEXP}: '${modifierName}'`);
555
+ }
556
+ const isValid = xRegExp.test(modifier.value?.value);
557
+ if (!isValid) {
558
+ return getInvalidValidationResult(`${VALIDATION_ERROR_PREFIX.VALUE_INVALID}: '${modifierName}'`);
559
+ }
560
+ return { valid: true };
561
+ };
562
+
563
+ export { validateValue };
@@ -0,0 +1,18 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 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
+ import { version } from './package.json.mjs';
8
+
9
+ /**
10
+ * @file AGTree version
11
+ */
12
+ // ! Notice:
13
+ // Don't export version from package.json directly, because if you run
14
+ // `tsc` in the root directory, it will generate `dist/types/src/version.d.ts`
15
+ // with wrong relative path to `package.json`. So we need this little "hack"
16
+ const AGTREE_VERSION = version;
17
+
18
+ export { AGTREE_VERSION };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @file Custom clone functions for AST nodes, this is probably the most efficient way to clone AST nodes.
3
+ * @todo Maybe move them to parser classes as 'clone' methods
4
+ */
5
+ import { type ParameterList, type DomainList, type ModifierList } from '../nodes';
6
+ /**
7
+ * Clones a scriptlet rule node.
8
+ *
9
+ * @param node Node to clone
10
+ * @returns Cloned node
11
+ */
12
+ export declare function cloneScriptletRuleNode(node: ParameterList): ParameterList;
13
+ /**
14
+ * Clones a domain list node.
15
+ *
16
+ * @param node Node to clone
17
+ * @returns Cloned node
18
+ */
19
+ export declare function cloneDomainListNode(node: DomainList): DomainList;
20
+ /**
21
+ * Clones a modifier list node.
22
+ *
23
+ * @param node Node to clone
24
+ * @returns Cloned node
25
+ */
26
+ export declare function cloneModifierListNode(node: ModifierList): ModifierList;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file Utility functions for working with filter list nodes
3
+ */
4
+ import { type AnyRule, type FilterList } from '../nodes';
5
+ /**
6
+ * Creates a filter list node
7
+ *
8
+ * @param rules Rules to put in the list (optional, defaults to an empty list)
9
+ * @returns Filter list node
10
+ */
11
+ export declare function createFilterListNode(rules?: AnyRule[]): FilterList;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file Utility functions for working with modifier nodes
3
+ */
4
+ import { type Modifier, type ModifierList } from '../nodes';
5
+ /**
6
+ * Creates a modifier node
7
+ *
8
+ * @param name Name of the modifier
9
+ * @param value Value of the modifier
10
+ * @param exception Whether the modifier is an exception
11
+ * @returns Modifier node
12
+ */
13
+ export declare function createModifierNode(name: string, value?: string | undefined, exception?: boolean): Modifier;
14
+ /**
15
+ * Creates a modifier list node
16
+ *
17
+ * @param modifiers Modifiers to put in the list (optional, defaults to an empty list)
18
+ * @returns Modifier list node
19
+ */
20
+ export declare function createModifierListNode(modifiers?: Modifier[]): ModifierList;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file Utility functions for working with network rule nodes
3
+ */
4
+ import { type ModifierList, type NetworkRule } from '../nodes';
5
+ import { AdblockSyntax } from '../utils/adblockers';
6
+ /**
7
+ * Creates a network rule node
8
+ *
9
+ * @param pattern Rule pattern
10
+ * @param modifiers Rule modifiers (optional, default: undefined)
11
+ * @param exception Exception rule flag (optional, default: false)
12
+ * @param syntax Adblock syntax (optional, default: Common)
13
+ * @returns Network rule node
14
+ */
15
+ export declare function createNetworkRuleNode(pattern: string, modifiers?: ModifierList | undefined, exception?: boolean, syntax?: AdblockSyntax): NetworkRule;