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