@adguard/agtree 2.2.0 → 3.0.0-alpha.2

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 (495) hide show
  1. package/README.md +1 -1
  2. package/dist/ast-utils/clone.js +61 -0
  3. package/dist/ast-utils/modifiers.js +53 -0
  4. package/dist/ast-utils/network-rules.js +41 -0
  5. package/dist/ast-utils/scriptlets.js +87 -0
  6. package/dist/common/abp-snippet-injection-body-common.js +23 -0
  7. package/dist/common/agent-common.js +56 -0
  8. package/dist/common/ubo-selector-common.js +17 -0
  9. package/dist/compatibility-tables/base.js +262 -0
  10. package/dist/compatibility-tables/compatibility-table-data.js +11 -0
  11. package/dist/compatibility-tables/modifiers.js +55 -0
  12. package/dist/compatibility-tables/platforms.js +76 -0
  13. package/dist/compatibility-tables/redirects.js +100 -0
  14. package/dist/compatibility-tables/schemas/base.js +111 -0
  15. package/dist/compatibility-tables/schemas/modifier.js +129 -0
  16. package/dist/compatibility-tables/schemas/platform.js +69 -0
  17. package/dist/compatibility-tables/schemas/redirect.js +29 -0
  18. package/dist/compatibility-tables/schemas/resource-type.js +36 -0
  19. package/dist/compatibility-tables/schemas/scriptlet.js +79 -0
  20. package/dist/compatibility-tables/scriptlets.js +28 -0
  21. package/dist/compatibility-tables/utils/platform-helpers.js +105 -0
  22. package/dist/compatibility-tables/utils/resource-type-helpers.js +61 -0
  23. package/dist/compatibility-tables/utils/zod-camelcase.js +25 -0
  24. package/dist/converter/base-interfaces/base-converter.js +59 -0
  25. package/dist/converter/base-interfaces/conversion-result.js +38 -0
  26. package/dist/converter/base-interfaces/rule-converter-base.js +60 -0
  27. package/dist/converter/comment/index.js +54 -0
  28. package/dist/converter/cosmetic/css.js +69 -0
  29. package/dist/converter/cosmetic/element-hiding.js +62 -0
  30. package/dist/converter/cosmetic/header-removal.js +123 -0
  31. package/dist/converter/cosmetic/html.js +379 -0
  32. package/dist/converter/cosmetic/index.js +118 -0
  33. package/dist/converter/cosmetic/rule-modifiers/adg.js +79 -0
  34. package/dist/converter/cosmetic/scriptlet.js +354 -0
  35. package/dist/converter/css/index.js +188 -0
  36. package/dist/converter/data/css.js +126 -0
  37. package/dist/converter/filter-list.js +88 -0
  38. package/dist/converter/index.js +8 -0
  39. package/dist/converter/misc/network-rule-modifier.js +311 -0
  40. package/dist/converter/network/index.js +99 -0
  41. package/dist/converter/raw-filter-list.js +56 -0
  42. package/dist/converter/rule.js +81 -0
  43. package/dist/deserializer/base-deserializer.js +29 -0
  44. package/dist/deserializer/comment/agent-comment-deserializer.js +79 -0
  45. package/dist/deserializer/comment/agent-deserializer.js +65 -0
  46. package/dist/deserializer/comment/comment-rule-deserializer.js +54 -0
  47. package/dist/deserializer/comment/config-comment-deserializer.js +111 -0
  48. package/dist/deserializer/comment/hint-comment-deserializer.js +72 -0
  49. package/dist/deserializer/comment/hint-deserializer.js +85 -0
  50. package/dist/deserializer/comment/metadata-comment-deserializer.js +69 -0
  51. package/dist/deserializer/comment/pre-processor-comment-deserializer.js +112 -0
  52. package/dist/deserializer/comment/simple-comment-deserializer.js +65 -0
  53. package/dist/deserializer/cosmetic/cosmetic-rule-deserializer.js +131 -0
  54. package/dist/deserializer/cosmetic/css-injection-body-deserializer.js +56 -0
  55. package/dist/deserializer/cosmetic/element-hiding-body-deserializer.js +48 -0
  56. package/dist/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +39 -0
  57. package/dist/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +40 -0
  58. package/dist/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +54 -0
  59. package/dist/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +38 -0
  60. package/dist/deserializer/empty-rule-deserializer.js +48 -0
  61. package/dist/deserializer/filterlist-deserializer.js +85 -0
  62. package/dist/deserializer/index.js +8 -0
  63. package/dist/deserializer/invalid-rule-deserializer.js +50 -0
  64. package/dist/deserializer/invalid-rule-error-node-deserializer.js +50 -0
  65. package/dist/deserializer/misc/domain-list-deserializer.js +64 -0
  66. package/dist/deserializer/misc/list-item-deserializer.js +69 -0
  67. package/dist/deserializer/misc/list-items-deserializer.js +30 -0
  68. package/dist/deserializer/misc/logical-expression-deserializer.js +196 -0
  69. package/dist/deserializer/misc/modifier-deserializer.js +87 -0
  70. package/dist/deserializer/misc/modifier-list-deserializer.js +61 -0
  71. package/dist/deserializer/misc/parameter-list-deserializer.js +64 -0
  72. package/dist/deserializer/misc/value-deserializer.js +50 -0
  73. package/dist/deserializer/network/host-rule-deserializer.js +67 -0
  74. package/dist/deserializer/network/hostname-list-deserializer.js +56 -0
  75. package/dist/deserializer/network/network-rule-deserializer.js +65 -0
  76. package/dist/deserializer/rule-deserializer.js +65 -0
  77. package/dist/deserializer/syntax-deserialization-map.js +21 -0
  78. package/dist/errors/adblock-syntax-error.js +39 -0
  79. package/dist/errors/binary-schema-mismatch-error.js +37 -0
  80. package/dist/errors/not-implemented-error.js +31 -0
  81. package/dist/errors/rule-conversion-error.js +26 -0
  82. package/dist/generator/base-generator.js +27 -0
  83. package/dist/generator/comment/agent-comment-generator.js +31 -0
  84. package/dist/generator/comment/agent-generator.js +36 -0
  85. package/dist/generator/comment/comment-rule-generator.js +47 -0
  86. package/dist/generator/comment/config-comment-generator.js +45 -0
  87. package/dist/generator/comment/hint-comment-generator.js +28 -0
  88. package/dist/generator/comment/hint-generator.js +33 -0
  89. package/dist/generator/comment/metadata-comment-generator.js +33 -0
  90. package/dist/generator/comment/pre-processor-comment-generator.js +48 -0
  91. package/dist/generator/comment/simple-comment-generator.js +29 -0
  92. package/dist/generator/cosmetic/body/abp-snippet-injection-body-generator.js +38 -0
  93. package/dist/generator/cosmetic/body/adg-scriptlet-injection-body-generator.js +43 -0
  94. package/dist/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js +45 -0
  95. package/dist/generator/cosmetic/cosmetic-rule-body-generator.js +94 -0
  96. package/dist/generator/cosmetic/cosmetic-rule-generator.js +54 -0
  97. package/dist/generator/cosmetic/cosmetic-rule-pattern-generator.js +42 -0
  98. package/dist/generator/css/adg-css-injection-generator.js +42 -0
  99. package/dist/generator/filterlist-generator.js +67 -0
  100. package/dist/generator/index.js +9 -0
  101. package/dist/generator/misc/domain-list-generator.js +26 -0
  102. package/dist/generator/misc/list-items-generator.js +39 -0
  103. package/dist/generator/misc/logical-expression-generator.js +48 -0
  104. package/dist/generator/misc/modifier-generator.js +34 -0
  105. package/dist/generator/misc/modifier-list-generator.js +29 -0
  106. package/dist/generator/misc/parameter-list-generator.js +41 -0
  107. package/dist/generator/misc/value-generator.js +24 -0
  108. package/dist/generator/network/host-rule-generator.js +39 -0
  109. package/dist/generator/network/network-rule-generator.js +38 -0
  110. package/dist/generator/rule-generator.js +65 -0
  111. package/dist/index.js +70 -0
  112. package/dist/marshalling-utils/comment/agent-comment-common.js +21 -0
  113. package/dist/marshalling-utils/comment/agent-common.js +40 -0
  114. package/dist/marshalling-utils/comment/config-comment-common.js +54 -0
  115. package/dist/marshalling-utils/comment/hint-comment-common.js +22 -0
  116. package/dist/marshalling-utils/comment/hint-common.js +56 -0
  117. package/dist/marshalling-utils/comment/metadata-comment-common.js +41 -0
  118. package/dist/marshalling-utils/comment/pre-processor-comment-common.js +59 -0
  119. package/dist/marshalling-utils/comment/simple-comment-common.js +22 -0
  120. package/dist/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +61 -0
  121. package/dist/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +66 -0
  122. package/dist/marshalling-utils/cosmetic/body/css-injection-body-common.js +24 -0
  123. package/dist/marshalling-utils/cosmetic/body/element-hiding-body-common.js +21 -0
  124. package/dist/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +114 -0
  125. package/dist/marshalling-utils/cosmetic/cosmetic-rule-common.js +48 -0
  126. package/dist/marshalling-utils/empty-rule-common.js +20 -0
  127. package/dist/marshalling-utils/filter-list-common.js +21 -0
  128. package/dist/marshalling-utils/invalid-rule-common.js +21 -0
  129. package/dist/marshalling-utils/invalid-rule-error-node-common.js +22 -0
  130. package/dist/marshalling-utils/misc/binary-type-common.js +66 -0
  131. package/dist/marshalling-utils/misc/domain-list-common.js +36 -0
  132. package/dist/marshalling-utils/misc/host-rule-common.js +25 -0
  133. package/dist/marshalling-utils/misc/hostname-list-common.js +21 -0
  134. package/dist/marshalling-utils/misc/list-item-common.js +22 -0
  135. package/dist/marshalling-utils/misc/logical-expression-common.js +83 -0
  136. package/dist/marshalling-utils/misc/modifier-common.js +231 -0
  137. package/dist/marshalling-utils/misc/modifier-list-common.js +21 -0
  138. package/dist/marshalling-utils/misc/parameter-list-common.js +21 -0
  139. package/dist/marshalling-utils/misc/value-common.js +22 -0
  140. package/dist/marshalling-utils/network/network-rule-common.js +25 -0
  141. package/dist/marshalling-utils/syntax-serialization-map.js +30 -0
  142. package/dist/nodes/index.js +168 -0
  143. package/dist/package.json.js +9 -0
  144. package/dist/parser/base-parser.js +30 -0
  145. package/dist/parser/comment/agent-comment-parser.js +119 -0
  146. package/dist/parser/comment/agent-parser.js +110 -0
  147. package/dist/parser/comment/comment-parser.js +108 -0
  148. package/dist/parser/comment/config-comment-parser.js +137 -0
  149. package/dist/parser/comment/hint-comment-parser.js +117 -0
  150. package/dist/parser/comment/hint-parser.js +129 -0
  151. package/dist/parser/comment/metadata-comment-parser.js +129 -0
  152. package/dist/parser/comment/preprocessor-parser.js +199 -0
  153. package/dist/parser/comment/simple-comment-parser.js +106 -0
  154. package/dist/parser/cosmetic/body/abp-snippet-injection-body-parser.js +79 -0
  155. package/dist/parser/cosmetic/body/adg-scriptlet-injection-body-parser.js +149 -0
  156. package/dist/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js +110 -0
  157. package/dist/parser/cosmetic/cosmetic-rule-parser.js +453 -0
  158. package/dist/parser/css/adg-css-injection-parser.js +208 -0
  159. package/dist/parser/css/balancing.js +94 -0
  160. package/dist/parser/css/constants.js +18 -0
  161. package/dist/parser/css/css-token-stream.js +343 -0
  162. package/dist/parser/css/ubo-selector-parser.js +369 -0
  163. package/dist/parser/filterlist-parser.js +102 -0
  164. package/dist/parser/index.js +12 -0
  165. package/dist/parser/misc/app-list-parser.js +45 -0
  166. package/dist/parser/misc/domain-list-parser.js +52 -0
  167. package/dist/parser/misc/list-items-parser.js +116 -0
  168. package/dist/parser/misc/logical-expression-parser.js +279 -0
  169. package/dist/parser/misc/method-list-parser.js +46 -0
  170. package/dist/parser/misc/modifier-list.js +70 -0
  171. package/dist/parser/misc/modifier-parser.js +89 -0
  172. package/dist/parser/misc/parameter-list-parser.js +75 -0
  173. package/dist/parser/misc/stealth-option-list-parser.js +46 -0
  174. package/dist/parser/misc/ubo-parameter-list-parser.js +149 -0
  175. package/dist/parser/misc/value-parser.js +37 -0
  176. package/dist/parser/network/host-rule-parser.js +130 -0
  177. package/dist/parser/network/network-rule-parser.js +117 -0
  178. package/dist/parser/options.js +23 -0
  179. package/dist/parser/rule-parser.js +192 -0
  180. package/dist/serializer/base-serializer.js +29 -0
  181. package/dist/serializer/comment/agent-comment-serializer.js +74 -0
  182. package/dist/serializer/comment/agent-serializer.js +59 -0
  183. package/dist/serializer/comment/comment-rule-serializer.js +105 -0
  184. package/dist/serializer/comment/config-comment-serializer.js +82 -0
  185. package/dist/serializer/comment/hint-comment-serializer.js +65 -0
  186. package/dist/serializer/comment/hint-serializer.js +54 -0
  187. package/dist/serializer/comment/metadata-comment-serializer.js +73 -0
  188. package/dist/serializer/comment/pre-processor-comment-serializer.js +71 -0
  189. package/dist/serializer/comment/simple-comment-serializer.js +52 -0
  190. package/dist/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +36 -0
  191. package/dist/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +36 -0
  192. package/dist/serializer/cosmetic/body/scriptlet-body-serializer.js +50 -0
  193. package/dist/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +36 -0
  194. package/dist/serializer/cosmetic/cosmetic-rule-serializer.js +120 -0
  195. package/dist/serializer/cosmetic/css-injection-body-serializer.js +51 -0
  196. package/dist/serializer/cosmetic/element-hiding-body-serializer.js +40 -0
  197. package/dist/serializer/empty-rule-serializer.js +37 -0
  198. package/dist/serializer/filterlist-serializer.js +45 -0
  199. package/dist/serializer/index.js +7 -0
  200. package/dist/serializer/invalid-rule-error-node-serializer.js +41 -0
  201. package/dist/serializer/invalid-rule-serializer.js +40 -0
  202. package/dist/serializer/misc/domain-list-serializer.js +64 -0
  203. package/dist/serializer/misc/list-item-serializer.js +58 -0
  204. package/dist/serializer/misc/list-items-serializer.js +29 -0
  205. package/dist/serializer/misc/logical-expression-serializer.js +136 -0
  206. package/dist/serializer/misc/modifier-list-serializer.js +58 -0
  207. package/dist/serializer/misc/modifier-serializer.js +49 -0
  208. package/dist/serializer/misc/parameter-list-serializer.js +52 -0
  209. package/dist/serializer/misc/value-serializer.js +50 -0
  210. package/dist/serializer/network/host-rule-serializer.js +70 -0
  211. package/dist/serializer/network/hostname-list-serializer.js +53 -0
  212. package/dist/serializer/network/network-rule-serializer.js +54 -0
  213. package/dist/serializer/rule-serializer.js +61 -0
  214. package/dist/types/ast-utils/clone.d.ts +26 -0
  215. package/dist/types/ast-utils/filter-list.d.ts +11 -0
  216. package/dist/types/ast-utils/modifiers.d.ts +20 -0
  217. package/dist/types/ast-utils/network-rules.d.ts +15 -0
  218. package/dist/types/ast-utils/scriptlets.d.ts +52 -0
  219. package/dist/types/common/abp-snippet-injection-body-common.d.ts +15 -0
  220. package/dist/types/common/agent-common.d.ts +10 -0
  221. package/dist/types/common/ubo-selector-common.d.ts +10 -0
  222. package/dist/types/compatibility-tables/base.d.ts +157 -0
  223. package/dist/types/compatibility-tables/compatibility-table-data.d.ts +68 -0
  224. package/dist/types/compatibility-tables/index.d.ts +13 -0
  225. package/dist/types/compatibility-tables/modifiers.d.ts +22 -0
  226. package/dist/types/compatibility-tables/platforms.d.ts +49 -0
  227. package/dist/types/compatibility-tables/redirects.d.ts +33 -0
  228. package/dist/types/compatibility-tables/schemas/base.d.ts +124 -0
  229. package/dist/types/compatibility-tables/schemas/index.d.ts +8 -0
  230. package/dist/types/compatibility-tables/schemas/modifier.d.ts +36 -0
  231. package/dist/types/compatibility-tables/schemas/platform.d.ts +16 -0
  232. package/dist/types/compatibility-tables/schemas/redirect.d.ts +25 -0
  233. package/dist/types/compatibility-tables/schemas/resource-type.d.ts +41 -0
  234. package/dist/types/compatibility-tables/schemas/scriptlet.d.ts +31 -0
  235. package/dist/types/compatibility-tables/scriptlets.d.ts +15 -0
  236. package/dist/types/compatibility-tables/types.d.ts +34 -0
  237. package/dist/types/compatibility-tables/utils/platform-helpers.d.ts +44 -0
  238. package/dist/types/compatibility-tables/utils/resource-type-helpers.d.ts +20 -0
  239. package/dist/types/compatibility-tables/utils/zod-camelcase.d.ts +15 -0
  240. package/dist/types/converter/base-interfaces/base-converter.d.ts +42 -0
  241. package/dist/types/converter/base-interfaces/conversion-result.d.ts +43 -0
  242. package/dist/types/converter/base-interfaces/rule-converter-base.d.ts +44 -0
  243. package/dist/types/converter/comment/index.d.ts +23 -0
  244. package/dist/types/converter/cosmetic/css.d.ts +23 -0
  245. package/dist/types/converter/cosmetic/element-hiding.d.ts +23 -0
  246. package/dist/types/converter/cosmetic/header-removal.d.ts +37 -0
  247. package/dist/types/converter/cosmetic/html.d.ts +54 -0
  248. package/dist/types/converter/cosmetic/index.d.ts +33 -0
  249. package/dist/types/converter/cosmetic/rule-modifiers/adg.d.ts +21 -0
  250. package/dist/types/converter/cosmetic/scriptlet.d.ts +33 -0
  251. package/dist/types/converter/css/index.d.ts +40 -0
  252. package/dist/types/converter/data/css.d.ts +48 -0
  253. package/dist/types/converter/filter-list.d.ts +31 -0
  254. package/dist/types/converter/index.d.ts +5 -0
  255. package/dist/types/converter/misc/network-rule-modifier.d.ts +35 -0
  256. package/dist/types/converter/network/index.d.ts +33 -0
  257. package/dist/types/converter/raw-filter-list.d.ts +31 -0
  258. package/dist/types/converter/raw-rule.d.ts +28 -0
  259. package/dist/types/converter/rule.d.ts +37 -0
  260. package/dist/types/deserializer/base-deserializer.d.ts +15 -0
  261. package/dist/types/deserializer/comment/agent-comment-deserializer.d.ts +34 -0
  262. package/dist/types/deserializer/comment/agent-deserializer.d.ts +25 -0
  263. package/dist/types/deserializer/comment/comment-rule-deserializer.d.ts +16 -0
  264. package/dist/types/deserializer/comment/config-comment-deserializer.d.ts +27 -0
  265. package/dist/types/deserializer/comment/hint-comment-deserializer.d.ts +24 -0
  266. package/dist/types/deserializer/comment/hint-deserializer.d.ts +26 -0
  267. package/dist/types/deserializer/comment/metadata-comment-deserializer.d.ts +26 -0
  268. package/dist/types/deserializer/comment/pre-processor-comment-deserializer.d.ts +29 -0
  269. package/dist/types/deserializer/comment/simple-comment-deserializer.d.ts +26 -0
  270. package/dist/types/deserializer/cosmetic/cosmetic-rule-deserializer.d.ts +18 -0
  271. package/dist/types/deserializer/cosmetic/css-injection-body-deserializer.d.ts +15 -0
  272. package/dist/types/deserializer/cosmetic/element-hiding-body-deserializer.d.ts +16 -0
  273. package/dist/types/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.d.ts +17 -0
  274. package/dist/types/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.d.ts +18 -0
  275. package/dist/types/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.d.ts +19 -0
  276. package/dist/types/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.d.ts +17 -0
  277. package/dist/types/deserializer/empty-rule-deserializer.d.ts +16 -0
  278. package/dist/types/deserializer/filterlist-deserializer.d.ts +34 -0
  279. package/dist/types/deserializer/index.d.ts +2 -0
  280. package/dist/types/deserializer/invalid-rule-deserializer.d.ts +16 -0
  281. package/dist/types/deserializer/invalid-rule-error-node-deserializer.d.ts +16 -0
  282. package/dist/types/deserializer/misc/domain-list-deserializer.d.ts +15 -0
  283. package/dist/types/deserializer/misc/list-item-deserializer.d.ts +19 -0
  284. package/dist/types/deserializer/misc/list-items-deserializer.d.ts +16 -0
  285. package/dist/types/deserializer/misc/logical-expression-deserializer.d.ts +55 -0
  286. package/dist/types/deserializer/misc/modifier-deserializer.d.ts +18 -0
  287. package/dist/types/deserializer/misc/modifier-list-deserializer.d.ts +20 -0
  288. package/dist/types/deserializer/misc/parameter-list-deserializer.d.ts +18 -0
  289. package/dist/types/deserializer/misc/value-deserializer.d.ts +17 -0
  290. package/dist/types/deserializer/network/host-rule-deserializer.d.ts +18 -0
  291. package/dist/types/deserializer/network/hostname-list-deserializer.d.ts +15 -0
  292. package/dist/types/deserializer/network/network-rule-deserializer.d.ts +18 -0
  293. package/dist/types/deserializer/rule-deserializer.d.ts +17 -0
  294. package/dist/types/deserializer/syntax-deserialization-map.d.ts +2 -0
  295. package/dist/types/errors/adblock-syntax-error.d.ts +25 -0
  296. package/dist/types/errors/binary-schema-mismatch-error.d.ts +23 -0
  297. package/dist/types/errors/not-implemented-error.d.ts +14 -0
  298. package/dist/types/errors/rule-conversion-error.d.ts +14 -0
  299. package/dist/types/generator/base-generator.d.ts +12 -0
  300. package/dist/types/generator/comment/agent-comment-generator.d.ts +14 -0
  301. package/dist/types/generator/comment/agent-generator.d.ts +15 -0
  302. package/dist/types/generator/comment/comment-rule-generator.d.ts +14 -0
  303. package/dist/types/generator/comment/config-comment-generator.d.ts +14 -0
  304. package/dist/types/generator/comment/hint-comment-generator.d.ts +14 -0
  305. package/dist/types/generator/comment/hint-generator.d.ts +14 -0
  306. package/dist/types/generator/comment/index.d.ts +1 -0
  307. package/dist/types/generator/comment/metadata-comment-generator.d.ts +14 -0
  308. package/dist/types/generator/comment/pre-processor-comment-generator.d.ts +14 -0
  309. package/dist/types/generator/comment/simple-comment-generator.d.ts +14 -0
  310. package/dist/types/generator/cosmetic/body/abp-snippet-injection-body-generator.d.ts +15 -0
  311. package/dist/types/generator/cosmetic/body/adg-scriptlet-injection-body-generator.d.ts +21 -0
  312. package/dist/types/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.d.ts +21 -0
  313. package/dist/types/generator/cosmetic/cosmetic-rule-body-generator.d.ts +20 -0
  314. package/dist/types/generator/cosmetic/cosmetic-rule-generator.d.ts +28 -0
  315. package/dist/types/generator/cosmetic/cosmetic-rule-pattern-generator.d.ts +18 -0
  316. package/dist/types/generator/cosmetic/index.d.ts +1 -0
  317. package/dist/types/generator/css/adg-css-injection-generator.d.ts +15 -0
  318. package/dist/types/generator/css/ubo-selector-generator.d.ts +14 -0
  319. package/dist/types/generator/filterlist-generator.d.ts +18 -0
  320. package/dist/types/generator/index.d.ts +3 -0
  321. package/dist/types/generator/misc/domain-list-generator.d.ts +15 -0
  322. package/dist/types/generator/misc/list-items-generator.d.ts +25 -0
  323. package/dist/types/generator/misc/logical-expression-generator.d.ts +14 -0
  324. package/dist/types/generator/misc/modifier-generator.d.ts +14 -0
  325. package/dist/types/generator/misc/modifier-list-generator.d.ts +14 -0
  326. package/dist/types/generator/misc/parameter-list-generator.d.ts +15 -0
  327. package/dist/types/generator/misc/value-generator.d.ts +14 -0
  328. package/dist/types/generator/network/host-rule-generator.d.ts +14 -0
  329. package/dist/types/generator/network/index.d.ts +2 -0
  330. package/dist/types/generator/network/network-rule-generator.d.ts +14 -0
  331. package/dist/types/generator/rule-generator.d.ts +24 -0
  332. package/dist/types/index.d.ts +55 -0
  333. package/dist/types/marshalling-utils/comment/agent-comment-common.d.ts +14 -0
  334. package/dist/types/marshalling-utils/comment/agent-common.d.ts +20 -0
  335. package/dist/types/marshalling-utils/comment/config-comment-common.d.ts +42 -0
  336. package/dist/types/marshalling-utils/comment/hint-comment-common.d.ts +15 -0
  337. package/dist/types/marshalling-utils/comment/hint-common.d.ts +33 -0
  338. package/dist/types/marshalling-utils/comment/metadata-comment-common.d.ts +21 -0
  339. package/dist/types/marshalling-utils/comment/pre-processor-comment-common.d.ts +37 -0
  340. package/dist/types/marshalling-utils/comment/simple-comment-common.d.ts +15 -0
  341. package/dist/types/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.d.ts +23 -0
  342. package/dist/types/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.d.ts +9 -0
  343. package/dist/types/marshalling-utils/cosmetic/body/css-injection-body-common.d.ts +17 -0
  344. package/dist/types/marshalling-utils/cosmetic/body/element-hiding-body-common.d.ts +14 -0
  345. package/dist/types/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.d.ts +9 -0
  346. package/dist/types/marshalling-utils/cosmetic/cosmetic-rule-common.d.ts +28 -0
  347. package/dist/types/marshalling-utils/empty-rule-common.d.ts +13 -0
  348. package/dist/types/marshalling-utils/filter-list-common.d.ts +14 -0
  349. package/dist/types/marshalling-utils/invalid-rule-common.d.ts +14 -0
  350. package/dist/types/marshalling-utils/invalid-rule-error-node-common.d.ts +15 -0
  351. package/dist/types/marshalling-utils/misc/binary-type-common.d.ts +57 -0
  352. package/dist/types/marshalling-utils/misc/domain-list-common.d.ts +24 -0
  353. package/dist/types/marshalling-utils/misc/host-rule-common.d.ts +18 -0
  354. package/dist/types/marshalling-utils/misc/hostname-list-common.d.ts +14 -0
  355. package/dist/types/marshalling-utils/misc/list-item-common.d.ts +15 -0
  356. package/dist/types/marshalling-utils/misc/logical-expression-common.d.ts +47 -0
  357. package/dist/types/marshalling-utils/misc/modifier-common.d.ts +41 -0
  358. package/dist/types/marshalling-utils/misc/modifier-list-common.d.ts +14 -0
  359. package/dist/types/marshalling-utils/misc/parameter-list-common.d.ts +14 -0
  360. package/dist/types/marshalling-utils/misc/value-common.d.ts +15 -0
  361. package/dist/types/marshalling-utils/network/network-rule-common.d.ts +18 -0
  362. package/dist/types/marshalling-utils/syntax-serialization-map.d.ts +2 -0
  363. package/dist/types/nodes/index.d.ts +1183 -0
  364. package/dist/types/parser/base-parser.d.ts +16 -0
  365. package/dist/types/parser/comment/agent-comment-parser.d.ts +42 -0
  366. package/dist/types/parser/comment/agent-parser.d.ts +33 -0
  367. package/dist/types/parser/comment/comment-parser.d.ts +76 -0
  368. package/dist/types/parser/comment/config-comment-parser.d.ts +31 -0
  369. package/dist/types/parser/comment/hint-comment-parser.d.ts +33 -0
  370. package/dist/types/parser/comment/hint-parser.d.ts +30 -0
  371. package/dist/types/parser/comment/metadata-comment-parser.d.ts +29 -0
  372. package/dist/types/parser/comment/preprocessor-parser.d.ts +43 -0
  373. package/dist/types/parser/comment/simple-comment-parser.d.ts +33 -0
  374. package/dist/types/parser/cosmetic/body/abp-snippet-injection-body-parser.d.ts +34 -0
  375. package/dist/types/parser/cosmetic/body/adg-scriptlet-injection-body-parser.d.ts +47 -0
  376. package/dist/types/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.d.ts +44 -0
  377. package/dist/types/parser/cosmetic/cosmetic-rule-parser.d.ts +51 -0
  378. package/dist/types/parser/css/adg-css-injection-parser.d.ts +28 -0
  379. package/dist/types/parser/css/balancing.d.ts +36 -0
  380. package/dist/types/parser/css/constants.d.ts +10 -0
  381. package/dist/types/parser/css/css-token-stream.d.ts +210 -0
  382. package/dist/types/parser/css/ubo-selector-parser.d.ts +46 -0
  383. package/dist/types/parser/filterlist-parser.d.ts +29 -0
  384. package/dist/types/parser/index.d.ts +6 -0
  385. package/dist/types/parser/misc/app-list-parser.d.ts +22 -0
  386. package/dist/types/parser/misc/domain-list-parser.d.ts +26 -0
  387. package/dist/types/parser/misc/list-items-parser.d.ts +37 -0
  388. package/dist/types/parser/misc/logical-expression-parser.d.ts +42 -0
  389. package/dist/types/parser/misc/method-list-parser.d.ts +22 -0
  390. package/dist/types/parser/misc/modifier-list.d.ts +24 -0
  391. package/dist/types/parser/misc/modifier-parser.d.ts +21 -0
  392. package/dist/types/parser/misc/parameter-list-parser.d.ts +17 -0
  393. package/dist/types/parser/misc/stealth-option-list-parser.d.ts +22 -0
  394. package/dist/types/parser/misc/ubo-parameter-list-parser.d.ts +21 -0
  395. package/dist/types/parser/misc/value-parser.d.ts +18 -0
  396. package/dist/types/parser/network/host-rule-parser.d.ts +35 -0
  397. package/dist/types/parser/network/network-rule-parser.d.ts +31 -0
  398. package/dist/types/parser/options.d.ts +41 -0
  399. package/dist/types/parser/rule-parser.d.ts +78 -0
  400. package/dist/types/serializer/base-serializer.d.ts +15 -0
  401. package/dist/types/serializer/comment/agent-comment-serializer.d.ts +34 -0
  402. package/dist/types/serializer/comment/agent-serializer.d.ts +15 -0
  403. package/dist/types/serializer/comment/comment-rule-serializer.d.ts +68 -0
  404. package/dist/types/serializer/comment/config-comment-serializer.d.ts +25 -0
  405. package/dist/types/serializer/comment/hint-comment-serializer.d.ts +23 -0
  406. package/dist/types/serializer/comment/hint-serializer.d.ts +24 -0
  407. package/dist/types/serializer/comment/metadata-comment-serializer.d.ts +25 -0
  408. package/dist/types/serializer/comment/pre-processor-comment-serializer.d.ts +28 -0
  409. package/dist/types/serializer/comment/simple-comment-serializer.d.ts +24 -0
  410. package/dist/types/serializer/cosmetic/body/abp-snippet-injection-body-serializer.d.ts +25 -0
  411. package/dist/types/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.d.ts +25 -0
  412. package/dist/types/serializer/cosmetic/body/scriptlet-body-serializer.d.ts +17 -0
  413. package/dist/types/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.d.ts +25 -0
  414. package/dist/types/serializer/cosmetic/cosmetic-rule-serializer.d.ts +19 -0
  415. package/dist/types/serializer/cosmetic/css-injection-body-serializer.d.ts +15 -0
  416. package/dist/types/serializer/cosmetic/element-hiding-body-serializer.d.ts +15 -0
  417. package/dist/types/serializer/empty-rule-serializer.d.ts +15 -0
  418. package/dist/types/serializer/filterlist-serializer.d.ts +15 -0
  419. package/dist/types/serializer/index.d.ts +1 -0
  420. package/dist/types/serializer/invalid-rule-error-node-serializer.d.ts +15 -0
  421. package/dist/types/serializer/invalid-rule-serializer.d.ts +15 -0
  422. package/dist/types/serializer/misc/domain-list-serializer.d.ts +21 -0
  423. package/dist/types/serializer/misc/list-item-serializer.d.ts +16 -0
  424. package/dist/types/serializer/misc/list-items-serializer.d.ts +15 -0
  425. package/dist/types/serializer/misc/logical-expression-serializer.d.ts +52 -0
  426. package/dist/types/serializer/misc/modifier-list-serializer.d.ts +20 -0
  427. package/dist/types/serializer/misc/modifier-serializer.d.ts +18 -0
  428. package/dist/types/serializer/misc/parameter-list-serializer.d.ts +17 -0
  429. package/dist/types/serializer/misc/value-serializer.d.ts +17 -0
  430. package/dist/types/serializer/network/host-rule-serializer.d.ts +30 -0
  431. package/dist/types/serializer/network/hostname-list-serializer.d.ts +15 -0
  432. package/dist/types/serializer/network/network-rule-serializer.d.ts +18 -0
  433. package/dist/types/serializer/rule-serializer.d.ts +17 -0
  434. package/dist/types/utils/adblockers.d.ts +49 -0
  435. package/dist/types/utils/binary-schema-version.d.ts +9 -0
  436. package/dist/types/utils/byte-buffer.d.ts +54 -0
  437. package/dist/types/utils/categorizer.d.ts +14 -0
  438. package/dist/types/utils/clone.d.ts +15 -0
  439. package/dist/types/utils/constants.d.ts +188 -0
  440. package/dist/types/utils/cosmetic-rule-separator.d.ts +45 -0
  441. package/dist/types/utils/deep-freeze.d.ts +13 -0
  442. package/dist/types/utils/domain.d.ts +29 -0
  443. package/dist/types/utils/error.d.ts +8 -0
  444. package/dist/types/utils/index.d.ts +15 -0
  445. package/dist/types/utils/input-byte-buffer.d.ts +146 -0
  446. package/dist/types/utils/is-chromium.d.ts +7 -0
  447. package/dist/types/utils/logical-expression.d.ts +45 -0
  448. package/dist/types/utils/multi-value-map.d.ts +16 -0
  449. package/dist/types/utils/output-byte-buffer.d.ts +132 -0
  450. package/dist/types/utils/position-provider.d.ts +46 -0
  451. package/dist/types/utils/quotes.d.ts +94 -0
  452. package/dist/types/utils/regexp.d.ts +54 -0
  453. package/dist/types/utils/storage-interface.d.ts +23 -0
  454. package/dist/types/utils/string.d.ts +280 -0
  455. package/dist/types/utils/text-decoder-polyfill.d.ts +14 -0
  456. package/dist/types/utils/text-encoder-polyfill.d.ts +18 -0
  457. package/dist/types/utils/type-guards.d.ts +47 -0
  458. package/dist/types/validator/constants.d.ts +89 -0
  459. package/dist/types/validator/helpers.d.ts +37 -0
  460. package/dist/types/validator/index.d.ts +38 -0
  461. package/dist/types/validator/value.d.ts +12 -0
  462. package/dist/types/version.d.ts +5 -0
  463. package/dist/utils/adblockers.js +56 -0
  464. package/dist/utils/binary-schema-version.js +17 -0
  465. package/dist/utils/byte-buffer.js +91 -0
  466. package/dist/utils/categorizer.js +44 -0
  467. package/dist/utils/clone.js +28 -0
  468. package/dist/utils/constants.js +249 -0
  469. package/dist/utils/cosmetic-rule-separator.js +127 -0
  470. package/dist/utils/deep-freeze.js +32 -0
  471. package/dist/utils/domain.js +59 -0
  472. package/dist/utils/error.js +49 -0
  473. package/dist/utils/index.js +21 -0
  474. package/dist/utils/input-byte-buffer.js +265 -0
  475. package/dist/utils/is-chromium.js +20 -0
  476. package/dist/utils/logical-expression.js +92 -0
  477. package/dist/utils/multi-value-map.js +33 -0
  478. package/dist/utils/output-byte-buffer.js +231 -0
  479. package/dist/utils/position-provider.js +73 -0
  480. package/dist/utils/quotes.js +214 -0
  481. package/dist/utils/regexp.js +176 -0
  482. package/dist/utils/string.js +559 -0
  483. package/dist/utils/text-decoder-polyfill.js +107 -0
  484. package/dist/utils/text-encoder-polyfill.js +78 -0
  485. package/dist/utils/type-guards.js +47 -0
  486. package/dist/validator/constants.js +210 -0
  487. package/dist/validator/helpers.js +45 -0
  488. package/dist/validator/index.js +174 -0
  489. package/dist/validator/value.js +568 -0
  490. package/dist/version.js +18 -0
  491. package/package.json +61 -39
  492. package/dist/agtree.d.ts +0 -4155
  493. package/dist/agtree.js +0 -15819
  494. package/dist/agtree.mjs +0 -15720
  495. package/dist/compatibility-table-data.js +0 -12782
@@ -0,0 +1,42 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { CLOSE_SQUARE_BRACKET, EMPTY, OPEN_SQUARE_BRACKET, DOLLAR_SIGN } from '../../utils/constants.js';
8
+ import { AdblockSyntax } from '../../utils/adblockers.js';
9
+ import { BaseGenerator } from '../base-generator.js';
10
+ import { ModifierListGenerator } from '../misc/modifier-list-generator.js';
11
+ import { DomainListGenerator } from '../misc/domain-list-generator.js';
12
+
13
+ /**
14
+ * Cosmetic rule pattern generator.
15
+ */
16
+ class CosmeticRulePatternGenerator extends BaseGenerator {
17
+ /**
18
+ * Generates the rule pattern from the AST.
19
+ *
20
+ * @param node Cosmetic rule node
21
+ * @returns Raw rule pattern
22
+ * @example
23
+ * - '##.foo' → ''
24
+ * - 'example.com,example.org##.foo' → 'example.com,example.org'
25
+ * - '[$path=/foo/bar]example.com##.foo' → '[$path=/foo/bar]example.com'
26
+ */
27
+ static generate(node) {
28
+ let result = EMPTY;
29
+ // AdGuard modifiers (if any)
30
+ if (node.syntax === AdblockSyntax.Adg && node.modifiers && node.modifiers.children.length > 0) {
31
+ result += OPEN_SQUARE_BRACKET;
32
+ result += DOLLAR_SIGN;
33
+ result += ModifierListGenerator.generate(node.modifiers);
34
+ result += CLOSE_SQUARE_BRACKET;
35
+ }
36
+ // Domain list (if any)
37
+ result += DomainListGenerator.generate(node.domains);
38
+ return result;
39
+ }
40
+ }
41
+
42
+ export { CosmeticRulePatternGenerator };
@@ -0,0 +1,42 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { COLON, SPACE, SEMICOLON, CSS_MEDIA_MARKER, OPEN_CURLY_BRACKET, CLOSE_CURLY_BRACKET, EMPTY } from '../../utils/constants.js';
8
+ import { BaseGenerator } from '../base-generator.js';
9
+ import { REMOVE_PROPERTY, REMOVE_VALUE } from '../../parser/css/adg-css-injection-parser.js';
10
+
11
+ /**
12
+ * AdGuard CSS injection generator.
13
+ */
14
+ class AdgCssInjectionGenerator extends BaseGenerator {
15
+ static removeDeclaration = `${REMOVE_PROPERTY}${COLON}${SPACE}${REMOVE_VALUE}${SEMICOLON}`;
16
+ /**
17
+ * Serializes an AdGuard CSS injection node into a raw string.
18
+ *
19
+ * @param node Node to serialize.
20
+ * @returns Raw string.
21
+ */
22
+ static generate(node) {
23
+ const result = [];
24
+ if (node.mediaQueryList) {
25
+ result.push(CSS_MEDIA_MARKER, SPACE, node.mediaQueryList.value, SPACE, OPEN_CURLY_BRACKET, SPACE);
26
+ }
27
+ result.push(node.selectorList.value, SPACE, OPEN_CURLY_BRACKET, SPACE);
28
+ if (node.remove) {
29
+ result.push(AdgCssInjectionGenerator.removeDeclaration);
30
+ }
31
+ else if (node.declarationList?.value) {
32
+ result.push(node.declarationList.value);
33
+ }
34
+ result.push(SPACE, CLOSE_CURLY_BRACKET);
35
+ if (node.mediaQueryList) {
36
+ result.push(SPACE, CLOSE_CURLY_BRACKET);
37
+ }
38
+ return result.join(EMPTY);
39
+ }
40
+ }
41
+
42
+ export { AdgCssInjectionGenerator };
@@ -0,0 +1,67 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { LF, CR, CRLF, EMPTY } from '../utils/constants.js';
8
+ import { RuleGenerator } from './rule-generator.js';
9
+ import { BaseGenerator } from './base-generator.js';
10
+
11
+ /**
12
+ * Generates a serialized filter list.
13
+ */
14
+ class FilterListGenerator extends BaseGenerator {
15
+ /**
16
+ * Serializes a whole adblock filter list (list of rules).
17
+ *
18
+ * @param ast AST to generate
19
+ * @param preferRaw If `true`, then the parser will use `raws.text` property of each rule
20
+ * if it is available. Default is `false`.
21
+ * @param tolerant If `true`, errors during rule generation will be logged to the console and invalid rules
22
+ * will be skipped. If `false`, an error will be thrown on the first invalid rule. Default is `true`.
23
+ * @returns Serialized filter list
24
+ */
25
+ static generate(ast, preferRaw = false, tolerant = true) {
26
+ let result = EMPTY;
27
+ for (let i = 0; i < ast.children.length; i += 1) {
28
+ const rule = ast.children[i];
29
+ if (preferRaw && rule.raws?.text) {
30
+ result += rule.raws.text;
31
+ }
32
+ else {
33
+ try {
34
+ result += RuleGenerator.generate(rule);
35
+ }
36
+ catch (error) {
37
+ if (tolerant) {
38
+ // eslint-disable-next-line no-console
39
+ console.error(`Error when generating: ${error}`);
40
+ }
41
+ else {
42
+ throw new Error(String(error));
43
+ }
44
+ }
45
+ }
46
+ switch (rule.raws?.nl) {
47
+ case 'crlf':
48
+ result += CRLF;
49
+ break;
50
+ case 'cr':
51
+ result += CR;
52
+ break;
53
+ case 'lf':
54
+ result += LF;
55
+ break;
56
+ default:
57
+ if (i !== ast.children.length - 1) {
58
+ result += LF;
59
+ }
60
+ break;
61
+ }
62
+ }
63
+ return result;
64
+ }
65
+ }
66
+
67
+ export { FilterListGenerator };
@@ -0,0 +1,9 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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
+ export { RuleGenerator } from './rule-generator.js';
8
+ export { CosmeticRuleGenerator } from './cosmetic/cosmetic-rule-generator.js';
9
+ export { CosmeticRuleBodyGenerator } from './cosmetic/cosmetic-rule-body-generator.js';
@@ -0,0 +1,26 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { BaseGenerator } from '../base-generator.js';
8
+ import { ListItemsGenerator } from './list-items-generator.js';
9
+
10
+ /**
11
+ * Domain list generator.
12
+ */
13
+ class DomainListGenerator extends BaseGenerator {
14
+ /**
15
+ * Converts a domain list node to a string.
16
+ *
17
+ * @param node Domain list node.
18
+ *
19
+ * @returns Raw string.
20
+ */
21
+ static generate(node) {
22
+ return ListItemsGenerator.generate(node.children, node.separator);
23
+ }
24
+ }
25
+
26
+ export { DomainListGenerator };
@@ -0,0 +1,39 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { NEGATION_MARKER, EMPTY } from '../../utils/constants.js';
8
+
9
+ /**
10
+ * Utility class for generating string representations of list items.
11
+ */
12
+ class ListItemsGenerator {
13
+ /**
14
+ * Generates a string representation of a list item.
15
+ *
16
+ * @param item List item to generate.
17
+ * @template T Type of the list item.
18
+ *
19
+ * @returns String representation of the list item.
20
+ */
21
+ static generateListItem = (item) => {
22
+ return `${item.exception ? NEGATION_MARKER : EMPTY}${item.value}`;
23
+ };
24
+ /**
25
+ * Generates a string representation of a list of items.
26
+ *
27
+ * @param items List of items to generate.
28
+ * @param separator Separator character.
29
+ * @template T Type of the list items.
30
+ *
31
+ * @returns String representation of the list of items.
32
+ */
33
+ static generate = (items, separator) => {
34
+ return items.map(ListItemsGenerator.generateListItem)
35
+ .join(separator);
36
+ };
37
+ }
38
+
39
+ export { ListItemsGenerator };
@@ -0,0 +1,48 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { BaseGenerator } from '../base-generator.js';
8
+ import { OperatorValue } from '../../nodes/index.js';
9
+ import { NodeType } from '../../parser/misc/logical-expression-parser.js';
10
+
11
+ /**
12
+ * Generator for logical expression nodes.
13
+ */
14
+ class LogicalExpressionGenerator extends BaseGenerator {
15
+ /**
16
+ * Generates a string representation of the logical expression (serialization).
17
+ *
18
+ * @param node Expression node
19
+ * @returns String representation of the logical expression
20
+ */
21
+ static generate(node) {
22
+ if (node.type === NodeType.Variable) {
23
+ return node.name;
24
+ }
25
+ if (node.type === NodeType.Operator) {
26
+ const left = LogicalExpressionGenerator.generate(node.left);
27
+ const right = node.right ? LogicalExpressionGenerator.generate(node.right) : undefined;
28
+ const { operator } = node;
29
+ // Special case for NOT operator
30
+ if (operator === OperatorValue.Not) {
31
+ return `${operator}${left}`;
32
+ }
33
+ // Right operand is required for AND and OR operators
34
+ if (!right) {
35
+ throw new Error('Expected right operand');
36
+ }
37
+ return `${left} ${operator} ${right}`;
38
+ }
39
+ if (node.type === NodeType.Parenthesis) {
40
+ const expressionString = LogicalExpressionGenerator.generate(node.expression);
41
+ return `(${expressionString})`;
42
+ }
43
+ // Theoretically, this shouldn't happen if the library is used correctly
44
+ throw new Error('Unexpected node type');
45
+ }
46
+ }
47
+
48
+ export { LogicalExpressionGenerator };
@@ -0,0 +1,34 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { MODIFIER_ASSIGN_OPERATOR, EMPTY, NEGATION_MARKER } from '../../utils/constants.js';
8
+ import { BaseGenerator } from '../base-generator.js';
9
+
10
+ /**
11
+ * Generator for modifier nodes.
12
+ */
13
+ class ModifierGenerator extends BaseGenerator {
14
+ /**
15
+ * Converts a modifier AST node to a string.
16
+ *
17
+ * @param modifier Modifier AST node to convert
18
+ * @returns String representation of the modifier
19
+ */
20
+ static generate(modifier) {
21
+ let result = EMPTY;
22
+ if (modifier.exception) {
23
+ result += NEGATION_MARKER;
24
+ }
25
+ result += modifier.name.value;
26
+ if (modifier.value !== undefined) {
27
+ result += MODIFIER_ASSIGN_OPERATOR;
28
+ result += modifier.value.value;
29
+ }
30
+ return result;
31
+ }
32
+ }
33
+
34
+ export { ModifierGenerator };
@@ -0,0 +1,29 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { BaseGenerator } from '../base-generator.js';
8
+ import { MODIFIERS_SEPARATOR } from '../../utils/constants.js';
9
+ import { ModifierGenerator } from './modifier-generator.js';
10
+
11
+ /**
12
+ * Generator for modifier list nodes.
13
+ */
14
+ class ModifierListGenerator extends BaseGenerator {
15
+ /**
16
+ * Converts a modifier list AST to a string.
17
+ *
18
+ * @param ast Modifier list AST
19
+ * @returns Raw string
20
+ */
21
+ static generate(ast) {
22
+ const result = ast.children
23
+ .map(ModifierGenerator.generate)
24
+ .join(MODIFIERS_SEPARATOR);
25
+ return result;
26
+ }
27
+ }
28
+
29
+ export { ModifierListGenerator };
@@ -0,0 +1,41 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { SPACE, COMMA, EMPTY } from '../../utils/constants.js';
8
+ import { BaseGenerator } from '../base-generator.js';
9
+ import { ValueGenerator } from './value-generator.js';
10
+
11
+ /**
12
+ * Generator for parameter list nodes.
13
+ */
14
+ class ParameterListGenerator extends BaseGenerator {
15
+ /**
16
+ * Converts a parameter list AST to a string.
17
+ *
18
+ * @param params Parameter list AST
19
+ * @param separator Separator character (default: comma)
20
+ * @returns String representation of the parameter list
21
+ */
22
+ static generate(params, separator = COMMA) {
23
+ const collection = [];
24
+ let i = 0;
25
+ for (; i < params.children.length; i += 1) {
26
+ const param = params.children[i];
27
+ if (param === null) {
28
+ collection.push(EMPTY);
29
+ }
30
+ else {
31
+ collection.push(ValueGenerator.generate(param));
32
+ }
33
+ }
34
+ // join parameters with separator
35
+ // if the separator is a space, join with a single space
36
+ const result = collection.join(separator === SPACE ? separator : `${separator}${SPACE}`);
37
+ return result;
38
+ }
39
+ }
40
+
41
+ export { ParameterListGenerator };
@@ -0,0 +1,24 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { BaseGenerator } from '../base-generator.js';
8
+
9
+ /**
10
+ * Generator for value nodes.
11
+ */
12
+ class ValueGenerator extends BaseGenerator {
13
+ /**
14
+ * Converts a value node to a string.
15
+ *
16
+ * @param node Value node.
17
+ * @returns Raw string.
18
+ */
19
+ static generate(node) {
20
+ return node.value;
21
+ }
22
+ }
23
+
24
+ export { ValueGenerator };
@@ -0,0 +1,39 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { SPACE, HASHMARK, EMPTY } from '../../utils/constants.js';
8
+ import { BaseGenerator } from '../base-generator.js';
9
+
10
+ /**
11
+ * Generator for host rule nodes.
12
+ */
13
+ class HostRuleGenerator extends BaseGenerator {
14
+ /**
15
+ * Converts a host rule node to a raw string.
16
+ *
17
+ * @param node Host rule node.
18
+ * @returns Raw string.
19
+ */
20
+ static generate(node) {
21
+ const result = [];
22
+ if (node.ip) {
23
+ result.push(node.ip.value);
24
+ }
25
+ if (node.hostnames) {
26
+ result.push(SPACE);
27
+ result.push(node.hostnames.children.map(({ value }) => value).join(SPACE));
28
+ }
29
+ if (node.comment) {
30
+ result.push(SPACE);
31
+ result.push(HASHMARK);
32
+ result.push(SPACE);
33
+ result.push(node.comment.value);
34
+ }
35
+ return result.join(EMPTY);
36
+ }
37
+ }
38
+
39
+ export { HostRuleGenerator };
@@ -0,0 +1,38 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { NETWORK_RULE_SEPARATOR, EMPTY, NETWORK_RULE_EXCEPTION_MARKER } from '../../utils/constants.js';
8
+ import { BaseGenerator } from '../base-generator.js';
9
+ import { ModifierListGenerator } from '../misc/modifier-list-generator.js';
10
+
11
+ /**
12
+ * Generator for network rule nodes.
13
+ */
14
+ class NetworkRuleGenerator extends BaseGenerator {
15
+ /**
16
+ * Generates a string from a network rule AST node.
17
+ *
18
+ * @param node Network rule node to generate a string from.
19
+ * @returns Generated string representation of the network rule.
20
+ */
21
+ static generate(node) {
22
+ let result = EMPTY;
23
+ // If the rule is an exception, add the exception marker: `@@||example.org`
24
+ if (node.exception) {
25
+ result += NETWORK_RULE_EXCEPTION_MARKER;
26
+ }
27
+ // Add the pattern: `||example.org`
28
+ result += node.pattern.value;
29
+ // If there are modifiers, add a separator and the modifiers: `||example.org$important`
30
+ if (node.modifiers && node.modifiers.children.length > 0) {
31
+ result += NETWORK_RULE_SEPARATOR;
32
+ result += ModifierListGenerator.generate(node.modifiers);
33
+ }
34
+ return result;
35
+ }
36
+ }
37
+
38
+ export { NetworkRuleGenerator };
@@ -0,0 +1,65 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { BaseGenerator } from './base-generator.js';
8
+ import { RuleCategory, NetworkRuleType } from '../nodes/index.js';
9
+ import { EMPTY } from '../utils/constants.js';
10
+ import { CommentRuleGenerator } from './comment/comment-rule-generator.js';
11
+ import { CosmeticRuleGenerator } from './cosmetic/cosmetic-rule-generator.js';
12
+ import { HostRuleGenerator } from './network/host-rule-generator.js';
13
+ import { NetworkRuleGenerator } from './network/network-rule-generator.js';
14
+
15
+ /**
16
+ * RuleGenerator is responsible for converting adblock rule ASTs to their string representation.
17
+ */
18
+ class RuleGenerator extends BaseGenerator {
19
+ /**
20
+ * Converts a rule AST to a string.
21
+ *
22
+ * @param ast - Adblock rule AST
23
+ * @returns Raw string
24
+ * @example
25
+ * Take a look at the following example:
26
+ * ```js
27
+ * // Parse the rule to the AST
28
+ * const ast = RuleParser.parse("example.org##.banner");
29
+ * // Generate the rule from the AST
30
+ * const raw = RuleParser.generate(ast);
31
+ * // Print the generated rule
32
+ * console.log(raw); // "example.org##.banner"
33
+ * ```
34
+ */
35
+ static generate(ast) {
36
+ switch (ast.category) {
37
+ // Empty lines
38
+ case RuleCategory.Empty:
39
+ return EMPTY;
40
+ // Invalid rules
41
+ case RuleCategory.Invalid:
42
+ return ast.raw;
43
+ // Comment rules
44
+ case RuleCategory.Comment:
45
+ return CommentRuleGenerator.generate(ast);
46
+ // Cosmetic / non-basic rules
47
+ case RuleCategory.Cosmetic:
48
+ return CosmeticRuleGenerator.generate(ast);
49
+ // Network / basic rules
50
+ case RuleCategory.Network:
51
+ switch (ast.type) {
52
+ case NetworkRuleType.HostRule:
53
+ return HostRuleGenerator.generate(ast);
54
+ case NetworkRuleType.NetworkRule:
55
+ return NetworkRuleGenerator.generate(ast);
56
+ default:
57
+ throw new Error('Unknown network rule type');
58
+ }
59
+ default:
60
+ throw new Error('Unknown rule category');
61
+ }
62
+ }
63
+ }
64
+
65
+ export { RuleGenerator };
package/dist/index.js ADDED
@@ -0,0 +1,70 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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
+ export { RuleParser } from './parser/rule-parser.js';
8
+ export { RuleSerializer } from './serializer/rule-serializer.js';
9
+ export { RuleDeserializer } from './deserializer/rule-deserializer.js';
10
+ export { RuleGenerator } from './generator/rule-generator.js';
11
+ export { CommentMarker, CommentRuleType, CosmeticRuleSeparator, CosmeticRuleType, NetworkRuleType, RuleCategory } from './nodes/index.js';
12
+ export { AdblockSyntaxError } from './errors/adblock-syntax-error.js';
13
+ export { AgentCommentParser } from './parser/comment/agent-comment-parser.js';
14
+ export { AgentParser } from './parser/comment/agent-parser.js';
15
+ export { CommentParser } from './parser/comment/comment-parser.js';
16
+ export { ConfigCommentParser } from './parser/comment/config-comment-parser.js';
17
+ export { CosmeticRuleParser } from './parser/cosmetic/cosmetic-rule-parser.js';
18
+ export { AppListParser } from './parser/misc/app-list-parser.js';
19
+ export { DomainListParser } from './parser/misc/domain-list-parser.js';
20
+ export { MethodListParser } from './parser/misc/method-list-parser.js';
21
+ export { StealthOptionListParser } from './parser/misc/stealth-option-list-parser.js';
22
+ export { FilterListParser } from './parser/filterlist-parser.js';
23
+ export { FilterListSerializer } from './serializer/filterlist-serializer.js';
24
+ export { FilterListDeserializer } from './deserializer/filterlist-deserializer.js';
25
+ export { HintCommentParser } from './parser/comment/hint-comment-parser.js';
26
+ export { HintParser } from './parser/comment/hint-parser.js';
27
+ export { LogicalExpressionParser } from './parser/misc/logical-expression-parser.js';
28
+ export { MetadataCommentParser } from './parser/comment/metadata-comment-parser.js';
29
+ export { ModifierListParser } from './parser/misc/modifier-list.js';
30
+ export { ModifierParser } from './parser/misc/modifier-parser.js';
31
+ export { NetworkRuleParser } from './parser/network/network-rule-parser.js';
32
+ export { NotImplementedError } from './errors/not-implemented-error.js';
33
+ export { ParameterListParser } from './parser/misc/parameter-list-parser.js';
34
+ export { HostRuleParser } from './parser/network/host-rule-parser.js';
35
+ export { PreProcessorCommentParser } from './parser/comment/preprocessor-parser.js';
36
+ export { RuleConversionError } from './errors/rule-conversion-error.js';
37
+ export { BinarySchemaMismatchError } from './errors/binary-schema-mismatch-error.js';
38
+ export { modifierValidator } from './validator/index.js';
39
+ export { RawFilterListConverter } from './converter/raw-filter-list.js';
40
+ export { RuleConverter } from './converter/rule.js';
41
+ export { ADG_SCRIPTLET_MASK, AGLINT_COMMAND_PREFIX, COMMA_DOMAIN_LIST_SEPARATOR, HINT_MARKER, IF, INCLUDE, MODIFIERS_SEPARATOR, MODIFIER_ASSIGN_OPERATOR, NEGATION_MARKER, NETWORK_RULE_EXCEPTION_MARKER, NETWORK_RULE_SEPARATOR, PIPE_MODIFIER_SEPARATOR, PREPROCESSOR_MARKER, SAFARI_CB_AFFINITY, UBO_SCRIPTLET_MASK } from './utils/constants.js';
42
+ export { BINARY_SCHEMA_VERSION } from './utils/binary-schema-version.js';
43
+ export { AdblockSyntax } from './utils/adblockers.js';
44
+ export { CosmeticRuleSeparatorUtils } from './utils/cosmetic-rule-separator.js';
45
+ export { DomainUtils } from './utils/domain.js';
46
+ export { LogicalExpressionUtils } from './utils/logical-expression.js';
47
+ export { ADBLOCK_URL_SEPARATOR, ADBLOCK_URL_SEPARATOR_REGEX, ADBLOCK_URL_START, ADBLOCK_URL_START_REGEX, ADBLOCK_WILDCARD, ADBLOCK_WILDCARD_REGEX, RegExpUtils, SPECIAL_REGEX_SYMBOLS } from './utils/regexp.js';
48
+ export { QuoteType, QuoteUtils } from './utils/quotes.js';
49
+ export { PositionProvider } from './utils/position-provider.js';
50
+ export { OutputByteBuffer } from './utils/output-byte-buffer.js';
51
+ export { InputByteBuffer } from './utils/input-byte-buffer.js';
52
+ export { ByteBuffer } from './utils/byte-buffer.js';
53
+ export { encodeIntoPolyfill } from './utils/text-encoder-polyfill.js';
54
+ export { decodeTextPolyfill } from './utils/text-decoder-polyfill.js';
55
+ export { RuleCategorizer } from './utils/categorizer.js';
56
+ export { EXT_CSS_LEGACY_ATTRIBUTES, EXT_CSS_PSEUDO_CLASSES, FORBIDDEN_CSS_FUNCTIONS } from './converter/data/css.js';
57
+ export { modifiersCompatibilityTable } from './compatibility-tables/modifiers.js';
58
+ export { redirectsCompatibilityTable } from './compatibility-tables/redirects.js';
59
+ export { scriptletsCompatibilityTable } from './compatibility-tables/scriptlets.js';
60
+ export { GenericPlatform, SpecificPlatform } from './compatibility-tables/platforms.js';
61
+ import './compatibility-tables/schemas/base.js';
62
+ import './compatibility-tables/schemas/modifier.js';
63
+ import './compatibility-tables/schemas/redirect.js';
64
+ import './compatibility-tables/schemas/scriptlet.js';
65
+ export { parseRawPlatforms } from './compatibility-tables/schemas/platform.js';
66
+ export { getPlatformId, getSpecificPlatformName, isGenericPlatform } from './compatibility-tables/utils/platform-helpers.js';
67
+ export { ResourceType } from './compatibility-tables/schemas/resource-type.js';
68
+ export { getResourceTypeModifier, isValidResourceType } from './compatibility-tables/utils/resource-type-helpers.js';
69
+ export { AGTREE_VERSION } from './version.js';
70
+ export { getSyntaxSerializationMap } from './marshalling-utils/syntax-serialization-map.js';
@@ -0,0 +1,21 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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
+ /**
8
+ * Property map for binary serialization. This helps to reduce the size of the serialized data,
9
+ * as it allows us to use a single byte to represent a property.
10
+ *
11
+ * ! IMPORTANT: If you change values here, please update the {@link BINARY_SCHEMA_VERSION}!
12
+ *
13
+ * @note Only 256 values can be represented this way.
14
+ */
15
+ const AgentCommentMarshallingMap = {
16
+ Children: 1,
17
+ Start: 2,
18
+ End: 3,
19
+ };
20
+
21
+ export { AgentCommentMarshallingMap };