@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,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
+ /**
8
+ * @file Customized error class for conversion errors.
9
+ */
10
+ const ERROR_NAME = 'RuleConversionError';
11
+ /**
12
+ * Customized error class for conversion errors.
13
+ */
14
+ class RuleConversionError extends Error {
15
+ /**
16
+ * Constructs a new `RuleConversionError` instance.
17
+ *
18
+ * @param message Error message
19
+ */
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = ERROR_NAME;
23
+ }
24
+ }
25
+
26
+ export { RuleConversionError };
@@ -0,0 +1,27 @@
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 { NotImplementedError } from '../errors/not-implemented-error.js';
8
+
9
+ /* eslint-disable @typescript-eslint/no-unused-vars */
10
+ /**
11
+ * @file Base generator class.
12
+ */
13
+ /**
14
+ * Base class for generators. Each generator should extend this class.
15
+ */
16
+ class BaseGenerator {
17
+ /**
18
+ * Generates a string from the AST node.
19
+ *
20
+ * @param node AST node to generate a string from.
21
+ */
22
+ static generate(node) {
23
+ throw new NotImplementedError();
24
+ }
25
+ }
26
+
27
+ export { BaseGenerator };
@@ -0,0 +1,31 @@
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 { SEMICOLON, SPACE, CLOSE_SQUARE_BRACKET, OPEN_SQUARE_BRACKET } from '../../utils/constants.js';
8
+ import { BaseGenerator } from '../base-generator.js';
9
+ import { AgentGenerator } from './agent-generator.js';
10
+
11
+ /**
12
+ * Generator for agent comment rules.
13
+ */
14
+ class AgentCommentGenerator extends BaseGenerator {
15
+ /**
16
+ * Converts an adblock agent AST to a string.
17
+ *
18
+ * @param ast Agent rule AST
19
+ * @returns Raw string
20
+ */
21
+ static generate(ast) {
22
+ let result = OPEN_SQUARE_BRACKET;
23
+ result += ast.children
24
+ .map(AgentGenerator.generate)
25
+ .join(SEMICOLON + SPACE);
26
+ result += CLOSE_SQUARE_BRACKET;
27
+ return result;
28
+ }
29
+ }
30
+
31
+ export { AgentCommentGenerator };
@@ -0,0 +1,36 @@
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 { SPACE, EMPTY } from '../../utils/constants.js';
9
+ import { isUndefined } from '../../utils/type-guards.js';
10
+
11
+ /**
12
+ * Generator for adblock agent nodes.
13
+ * This class is responsible for converting adblock agent nodes into their string representation.
14
+ */
15
+ class AgentGenerator extends BaseGenerator {
16
+ /**
17
+ * Converts an adblock agent node to a string.
18
+ *
19
+ * @param value Agent node
20
+ * @returns Raw string
21
+ */
22
+ static generate(value) {
23
+ let result = EMPTY;
24
+ // Agent adblock name
25
+ result += value.adblock.value;
26
+ // Agent adblock version (if present)
27
+ if (!isUndefined(value.version)) {
28
+ // Add a space between the name and the version
29
+ result += SPACE;
30
+ result += value.version.value;
31
+ }
32
+ return result;
33
+ }
34
+ }
35
+
36
+ export { AgentGenerator };
@@ -0,0 +1,47 @@
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 { CommentRuleType } from '../../nodes/index.js';
8
+ import { BaseGenerator } from '../base-generator.js';
9
+ import { AgentCommentGenerator } from './agent-comment-generator.js';
10
+ import { HintCommentGenerator } from './hint-comment-generator.js';
11
+ import { PreProcessorCommentGenerator } from './pre-processor-comment-generator.js';
12
+ import { MetadataCommentGenerator } from './metadata-comment-generator.js';
13
+ import { ConfigCommentGenerator } from './config-comment-generator.js';
14
+ import { SimpleCommentGenerator } from './simple-comment-generator.js';
15
+
16
+ /* eslint-disable no-param-reassign */
17
+ /**
18
+ * `CommentRuleGenerator` is responsible for generating any comment-like adblock rules.
19
+ */
20
+ class CommentRuleGenerator extends BaseGenerator {
21
+ /**
22
+ * Converts a comment rule node to a string.
23
+ *
24
+ * @param node Comment rule node
25
+ * @returns Raw string
26
+ */
27
+ static generate(node) {
28
+ switch (node.type) {
29
+ case CommentRuleType.AgentCommentRule:
30
+ return AgentCommentGenerator.generate(node);
31
+ case CommentRuleType.HintCommentRule:
32
+ return HintCommentGenerator.generate(node);
33
+ case CommentRuleType.PreProcessorCommentRule:
34
+ return PreProcessorCommentGenerator.generate(node);
35
+ case CommentRuleType.MetadataCommentRule:
36
+ return MetadataCommentGenerator.generate(node);
37
+ case CommentRuleType.ConfigCommentRule:
38
+ return ConfigCommentGenerator.generate(node);
39
+ case CommentRuleType.CommentRule:
40
+ return SimpleCommentGenerator.generate(node);
41
+ default:
42
+ throw new Error('Unknown comment rule type');
43
+ }
44
+ }
45
+ }
46
+
47
+ export { CommentRuleGenerator };
@@ -0,0 +1,45 @@
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 { SPACE, COMMA, EMPTY } from '../../utils/constants.js';
9
+ import { ParameterListGenerator } from '../misc/parameter-list-generator.js';
10
+
11
+ /**
12
+ * Converts inline configuration comment nodes to their string format.
13
+ */
14
+ class ConfigCommentGenerator extends BaseGenerator {
15
+ /**
16
+ * Converts an inline configuration comment node to a string.
17
+ *
18
+ * @param node Inline configuration comment node
19
+ * @returns Raw string
20
+ */
21
+ static generate(node) {
22
+ let result = EMPTY;
23
+ result += node.marker.value;
24
+ result += SPACE;
25
+ result += node.command.value;
26
+ if (node.params) {
27
+ result += SPACE;
28
+ if (node.params.type === 'ParameterList') {
29
+ result += ParameterListGenerator.generate(node.params, COMMA);
30
+ }
31
+ else {
32
+ // Trim JSON boundaries
33
+ result += JSON.stringify(node.params.value).slice(1, -1).trim();
34
+ }
35
+ }
36
+ // Add comment within the config comment
37
+ if (node.comment) {
38
+ result += SPACE;
39
+ result += node.comment.value;
40
+ }
41
+ return result;
42
+ }
43
+ }
44
+
45
+ export { ConfigCommentGenerator };
@@ -0,0 +1,28 @@
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 { SPACE, HINT_MARKER } from '../../utils/constants.js';
9
+ import { HintGenerator } from './hint-generator.js';
10
+
11
+ /**
12
+ * Hint comment generator.
13
+ */
14
+ class HintCommentGenerator extends BaseGenerator {
15
+ /**
16
+ * Converts a hint rule node to a raw string.
17
+ *
18
+ * @param node Hint rule node
19
+ * @returns Raw string
20
+ */
21
+ static generate(node) {
22
+ let result = HINT_MARKER + SPACE;
23
+ result += node.children.map(HintGenerator.generate).join(SPACE);
24
+ return result;
25
+ }
26
+ }
27
+
28
+ export { HintCommentGenerator };
@@ -0,0 +1,33 @@
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 { OPEN_PARENTHESIS, COMMA, CLOSE_PARENTHESIS, EMPTY } from '../../utils/constants.js';
8
+ import { BaseGenerator } from '../base-generator.js';
9
+ import { ParameterListGenerator } from '../misc/parameter-list-generator.js';
10
+
11
+ /**
12
+ * Hint generator.
13
+ */
14
+ class HintGenerator extends BaseGenerator {
15
+ /**
16
+ * Generates a string representation of a hint.
17
+ *
18
+ * @param hint Hint AST node
19
+ * @returns String representation of the hint
20
+ */
21
+ static generate(hint) {
22
+ let result = EMPTY;
23
+ result += hint.name.value;
24
+ if (hint.params && hint.params.children.length > 0) {
25
+ result += OPEN_PARENTHESIS;
26
+ result += ParameterListGenerator.generate(hint.params, COMMA);
27
+ result += CLOSE_PARENTHESIS;
28
+ }
29
+ return result;
30
+ }
31
+ }
32
+
33
+ export { HintGenerator };
@@ -0,0 +1,33 @@
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, COLON, EMPTY } from '../../utils/constants.js';
8
+ import { ValueGenerator } from '../misc/value-generator.js';
9
+ import { BaseGenerator } from '../base-generator.js';
10
+
11
+ /**
12
+ * Metadata comment generator.
13
+ */
14
+ class MetadataCommentGenerator extends BaseGenerator {
15
+ /**
16
+ * Converts a metadata comment rule node to a string.
17
+ *
18
+ * @param node Metadata comment rule node.
19
+ * @returns Raw string.
20
+ */
21
+ static generate(node) {
22
+ let result = EMPTY;
23
+ result += ValueGenerator.generate(node.marker);
24
+ result += SPACE;
25
+ result += ValueGenerator.generate(node.header);
26
+ result += COLON;
27
+ result += SPACE;
28
+ result += ValueGenerator.generate(node.value);
29
+ return result;
30
+ }
31
+ }
32
+
33
+ export { MetadataCommentGenerator };
@@ -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 { SAFARI_CB_AFFINITY, SPACE, OPEN_PARENTHESIS, CLOSE_PARENTHESIS, EMPTY, PREPROCESSOR_MARKER } from '../../utils/constants.js';
8
+ import { BaseGenerator } from '../base-generator.js';
9
+ import { ValueGenerator } from '../misc/value-generator.js';
10
+ import { ParameterListGenerator } from '../misc/parameter-list-generator.js';
11
+ import { LogicalExpressionGenerator } from '../misc/logical-expression-generator.js';
12
+
13
+ /**
14
+ * Pre-processor comment generator.
15
+ */
16
+ class PreProcessorCommentGenerator extends BaseGenerator {
17
+ /**
18
+ * Converts a pre-processor comment node to a string.
19
+ *
20
+ * @param node Pre-processor comment node
21
+ * @returns Raw string
22
+ */
23
+ static generate(node) {
24
+ let result = EMPTY;
25
+ result += PREPROCESSOR_MARKER;
26
+ result += node.name.value;
27
+ if (node.params) {
28
+ // Space is not allowed after "safari_cb_affinity" directive, so we need to handle it separately.
29
+ if (node.name.value !== SAFARI_CB_AFFINITY) {
30
+ result += SPACE;
31
+ }
32
+ if (node.params.type === 'Value') {
33
+ result += ValueGenerator.generate(node.params);
34
+ }
35
+ else if (node.params.type === 'ParameterList') {
36
+ result += OPEN_PARENTHESIS;
37
+ result += ParameterListGenerator.generate(node.params);
38
+ result += CLOSE_PARENTHESIS;
39
+ }
40
+ else {
41
+ result += LogicalExpressionGenerator.generate(node.params);
42
+ }
43
+ }
44
+ return result;
45
+ }
46
+ }
47
+
48
+ export { PreProcessorCommentGenerator };
@@ -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 { EMPTY } from '../../utils/constants.js';
9
+ import { ValueGenerator } from '../misc/value-generator.js';
10
+
11
+ /**
12
+ * Simple comment generator.
13
+ */
14
+ class SimpleCommentGenerator extends BaseGenerator {
15
+ /**
16
+ * Converts a comment rule node to a string.
17
+ *
18
+ * @param node Comment rule node.
19
+ * @returns Raw string.
20
+ */
21
+ static generate(node) {
22
+ let result = EMPTY;
23
+ result += ValueGenerator.generate(node.marker);
24
+ result += ValueGenerator.generate(node.text);
25
+ return result;
26
+ }
27
+ }
28
+
29
+ export { SimpleCommentGenerator };
@@ -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 { SPACE, SEMICOLON } from '../../../utils/constants.js';
8
+ import { BaseGenerator } from '../../base-generator.js';
9
+ import { ParameterListGenerator } from '../../misc/parameter-list-generator.js';
10
+ import { AbpSnippetInjectionBodyCommon } from '../../../common/abp-snippet-injection-body-common.js';
11
+
12
+ /**
13
+ * Adblock Plus snippet injection body generator.
14
+ */
15
+ class AbpSnippetInjectionBodyGenerator extends BaseGenerator {
16
+ /**
17
+ * Generates a string representation of the Adblock Plus-style snippet call body.
18
+ *
19
+ * @param node Scriptlet injection rule body
20
+ * @returns String representation of the rule body
21
+ * @throws Error if the scriptlet call is empty
22
+ */
23
+ static generate(node) {
24
+ const result = [];
25
+ if (node.children.length === 0) {
26
+ throw new Error(AbpSnippetInjectionBodyCommon.ERROR_MESSAGES.EMPTY_SCRIPTLET_CALL);
27
+ }
28
+ for (const scriptletCall of node.children) {
29
+ if (scriptletCall.children.length === 0) {
30
+ throw new Error(AbpSnippetInjectionBodyCommon.ERROR_MESSAGES.EMPTY_SCRIPTLET_CALL);
31
+ }
32
+ result.push(ParameterListGenerator.generate(scriptletCall, SPACE));
33
+ }
34
+ return result.join(SEMICOLON + SPACE);
35
+ }
36
+ }
37
+
38
+ export { AbpSnippetInjectionBodyGenerator };
@@ -0,0 +1,43 @@
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_PARENTHESIS, EMPTY, ADG_SCRIPTLET_MASK, OPEN_PARENTHESIS } from '../../../utils/constants.js';
8
+ import { ParameterListGenerator } from '../../misc/parameter-list-generator.js';
9
+ import { BaseGenerator } from '../../base-generator.js';
10
+
11
+ /**
12
+ * AdGuard scriptlet injection body generator.
13
+ */
14
+ class AdgScriptletInjectionBodyGenerator extends BaseGenerator {
15
+ /**
16
+ * Error messages used by the generator.
17
+ */
18
+ static ERROR_MESSAGES = {
19
+ NO_MULTIPLE_SCRIPTLET_CALLS: 'ADG syntaxes does not support multiple scriptlet calls within one single rule',
20
+ };
21
+ /**
22
+ * Generates a string representation of the AdGuard scriptlet call body.
23
+ *
24
+ * @param node Scriptlet injection rule body
25
+ * @returns String representation of the rule body
26
+ * @throws Error if the scriptlet call has multiple parameters
27
+ */
28
+ static generate(node) {
29
+ const result = [];
30
+ if (node.children.length > 1) {
31
+ throw new Error(AdgScriptletInjectionBodyGenerator.ERROR_MESSAGES.NO_MULTIPLE_SCRIPTLET_CALLS);
32
+ }
33
+ result.push(ADG_SCRIPTLET_MASK);
34
+ result.push(OPEN_PARENTHESIS);
35
+ if (node.children.length > 0) {
36
+ result.push(ParameterListGenerator.generate(node.children[0]));
37
+ }
38
+ result.push(CLOSE_PARENTHESIS);
39
+ return result.join(EMPTY);
40
+ }
41
+ }
42
+
43
+ export { AdgScriptletInjectionBodyGenerator };
@@ -0,0 +1,45 @@
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 { CLOSE_PARENTHESIS, EMPTY, UBO_SCRIPTLET_MASK, OPEN_PARENTHESIS } from '../../../utils/constants.js';
9
+ import { ParameterListGenerator } from '../../misc/parameter-list-generator.js';
10
+
11
+ /**
12
+ * uBlock scriptlet injection body generator.
13
+ */
14
+ class UboScriptletInjectionBodyGenerator extends BaseGenerator {
15
+ /**
16
+ * Error messages used by the generator.
17
+ */
18
+ static ERROR_MESSAGES = {
19
+ NO_MULTIPLE_SCRIPTLET_CALLS: 'uBO syntaxes does not support multiple scriptlet calls within one single rule',
20
+ };
21
+ /**
22
+ * Generates a string representation of the uBlock scriptlet call body.
23
+ *
24
+ * @param node Scriptlet injection rule body
25
+ * @returns String representation of the rule body
26
+ * @throws Error if the scriptlet call has multiple parameters
27
+ */
28
+ static generate(node) {
29
+ const result = [];
30
+ if (node.children.length > 1) {
31
+ throw new Error(UboScriptletInjectionBodyGenerator.ERROR_MESSAGES.NO_MULTIPLE_SCRIPTLET_CALLS);
32
+ }
33
+ // During generation, we only support the modern scriptlet mask
34
+ result.push(UBO_SCRIPTLET_MASK);
35
+ result.push(OPEN_PARENTHESIS);
36
+ if (node.children.length > 0) {
37
+ const [parameterListNode] = node.children;
38
+ result.push(ParameterListGenerator.generate(parameterListNode));
39
+ }
40
+ result.push(CLOSE_PARENTHESIS);
41
+ return result.join(EMPTY);
42
+ }
43
+ }
44
+
45
+ export { UboScriptletInjectionBodyGenerator };
@@ -0,0 +1,94 @@
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 { CosmeticRuleType } from '../../nodes/index.js';
9
+ import { CLOSE_PARENTHESIS, SPACE, COLON, OPEN_PARENTHESIS, EMPTY } from '../../utils/constants.js';
10
+ import { AdblockSyntax } from '../../utils/adblockers.js';
11
+ import { AdgScriptletInjectionBodyGenerator } from './body/adg-scriptlet-injection-body-generator.js';
12
+ import { AdgCssInjectionGenerator } from '../css/adg-css-injection-generator.js';
13
+ import { AbpSnippetInjectionBodyGenerator } from './body/abp-snippet-injection-body-generator.js';
14
+ import { UboScriptletInjectionBodyGenerator } from './body/ubo-scriptlet-injection-body-generator.js';
15
+ import { UboPseudoName } from '../../common/ubo-selector-common.js';
16
+
17
+ /**
18
+ * Cosmetic rule body generator.
19
+ */
20
+ class CosmeticRuleBodyGenerator extends BaseGenerator {
21
+ /**
22
+ * Generates the rule body from the node.
23
+ *
24
+ * @param node Cosmetic rule node
25
+ * @returns Raw rule body
26
+ * @example
27
+ * - '##.foo' → '.foo'
28
+ * - 'example.com,example.org##.foo' → '.foo'
29
+ * - 'example.com#%#//scriptlet('foo')' → '//scriptlet('foo')'
30
+ *
31
+ * @throws Error if the rule type is unknown
32
+ */
33
+ static generate(node) {
34
+ let result = EMPTY;
35
+ switch (node.type) {
36
+ case CosmeticRuleType.ElementHidingRule:
37
+ result = node.body.selectorList.value;
38
+ break;
39
+ case CosmeticRuleType.CssInjectionRule:
40
+ if (node.syntax === AdblockSyntax.Adg) {
41
+ result = AdgCssInjectionGenerator.generate(node.body);
42
+ }
43
+ else if (node.syntax === AdblockSyntax.Ubo) {
44
+ if (node.body.mediaQueryList) {
45
+ result += COLON;
46
+ result += UboPseudoName.MatchesMedia;
47
+ result += OPEN_PARENTHESIS;
48
+ result += node.body.mediaQueryList.value;
49
+ result += CLOSE_PARENTHESIS;
50
+ result += SPACE;
51
+ }
52
+ result += node.body.selectorList.value;
53
+ if (node.body.remove) {
54
+ result += COLON;
55
+ result += UboPseudoName.Remove;
56
+ result += OPEN_PARENTHESIS;
57
+ result += CLOSE_PARENTHESIS;
58
+ }
59
+ else if (node.body.declarationList) {
60
+ result += COLON;
61
+ result += UboPseudoName.Style;
62
+ result += OPEN_PARENTHESIS;
63
+ result += node.body.declarationList.value;
64
+ result += CLOSE_PARENTHESIS;
65
+ }
66
+ }
67
+ break;
68
+ case CosmeticRuleType.HtmlFilteringRule:
69
+ case CosmeticRuleType.JsInjectionRule:
70
+ result = node.body.value;
71
+ break;
72
+ case CosmeticRuleType.ScriptletInjectionRule:
73
+ switch (node.syntax) {
74
+ case AdblockSyntax.Adg:
75
+ result = AdgScriptletInjectionBodyGenerator.generate(node.body);
76
+ break;
77
+ case AdblockSyntax.Abp:
78
+ result = AbpSnippetInjectionBodyGenerator.generate(node.body);
79
+ break;
80
+ case AdblockSyntax.Ubo:
81
+ result = UboScriptletInjectionBodyGenerator.generate(node.body);
82
+ break;
83
+ default:
84
+ throw new Error('Scriptlet rule should have an explicit syntax');
85
+ }
86
+ break;
87
+ default:
88
+ throw new Error('Unknown cosmetic rule type');
89
+ }
90
+ return result;
91
+ }
92
+ }
93
+
94
+ export { CosmeticRuleBodyGenerator };
@@ -0,0 +1,54 @@
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 { AdblockSyntax } from '../../utils/adblockers.js';
8
+ import { COLON, OPEN_PARENTHESIS, CLOSE_PARENTHESIS, SPACE, EMPTY } from '../../utils/constants.js';
9
+ import { BaseGenerator } from '../base-generator.js';
10
+ import { CosmeticRulePatternGenerator } from './cosmetic-rule-pattern-generator.js';
11
+ import { CosmeticRuleBodyGenerator } from './cosmetic-rule-body-generator.js';
12
+
13
+ /**
14
+ * `CosmeticRuleGenerator` is responsible for generating cosmetic rules from their AST representation.
15
+ *
16
+ * This class takes a parsed cosmetic rule Abstract Syntax Tree (AST) and converts it back into a raw string format.
17
+ * It handles the generation of the pattern, separator, uBO rule modifiers, and the rule body.
18
+ */
19
+ class CosmeticRuleGenerator extends BaseGenerator {
20
+ /**
21
+ * Converts a cosmetic rule AST into a string.
22
+ *
23
+ * @param node Cosmetic rule AST
24
+ * @returns Raw string
25
+ */
26
+ static generate(node) {
27
+ let result = EMPTY;
28
+ // Pattern
29
+ result += CosmeticRulePatternGenerator.generate(node);
30
+ // Separator
31
+ result += node.separator.value;
32
+ // uBO rule modifiers
33
+ if (node.syntax === AdblockSyntax.Ubo && node.modifiers) {
34
+ node.modifiers.children.forEach((modifier) => {
35
+ result += COLON;
36
+ result += modifier.name.value;
37
+ if (modifier.value) {
38
+ result += OPEN_PARENTHESIS;
39
+ result += modifier.value.value;
40
+ result += CLOSE_PARENTHESIS;
41
+ }
42
+ });
43
+ // If there are at least one modifier, add a space
44
+ if (node.modifiers.children.length) {
45
+ result += SPACE;
46
+ }
47
+ }
48
+ // Body
49
+ result += CosmeticRuleBodyGenerator.generate(node);
50
+ return result;
51
+ }
52
+ }
53
+
54
+ export { CosmeticRuleGenerator };