@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,73 @@
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 { NULL } from '../../utils/constants.js';
8
+ import { ValueSerializer } from '../misc/value-serializer.js';
9
+ import { isUndefined } from '../../utils/type-guards.js';
10
+ import { BaseSerializer } from '../base-serializer.js';
11
+ import { MetadataCommentMarshallingMap, FREQUENT_HEADERS_DESERIALIZATION_MAP } from '../../marshalling-utils/comment/metadata-comment-common.js';
12
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
13
+
14
+ /**
15
+ * Value map for binary serialization. This helps to reduce the size of the serialized data,
16
+ * as it allows us to use a single byte to represent frequently used values.
17
+ *
18
+ * ! IMPORTANT: If you change values here, please update the {@link BINARY_SCHEMA_VERSION}!
19
+ *
20
+ * @note Only 256 values can be represented this way.
21
+ * @note This map is generated from `FREQUENT_HEADERS_DESERIALIZATION_MAP` to keep uppercase characters
22
+ * while deserializing.
23
+ */
24
+ let frequentHeadersSerializationMap;
25
+ const getFrequentHeadersSerializationMap = () => {
26
+ if (!frequentHeadersSerializationMap) {
27
+ frequentHeadersSerializationMap = new Map(Array.from(FREQUENT_HEADERS_DESERIALIZATION_MAP.entries())
28
+ .map(([key, value]) => [value.toLowerCase(), key]));
29
+ }
30
+ return frequentHeadersSerializationMap;
31
+ };
32
+ /**
33
+ * `MetadataCommentSerializer` is responsible for serializing metadata comments.
34
+ * Metadata comments are special comments that specify some properties of the list.
35
+ *
36
+ * @example
37
+ * For example, in the case of
38
+ * ```adblock
39
+ * ! Title: My List
40
+ * ```
41
+ * the name of the header is `Title`, and the value is `My List`, which means that
42
+ * the list title is `My List`, and it can be used in the adblocker UI.
43
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#special-comments}
44
+ */
45
+ class MetadataCommentSerializer extends BaseSerializer {
46
+ /**
47
+ * Serializes a metadata comment node to binary format.
48
+ *
49
+ * @param node Node to serialize.
50
+ * @param buffer ByteBuffer for writing binary data.
51
+ */
52
+ // TODO: add support for raws, if ever needed
53
+ static serialize(node, buffer) {
54
+ buffer.writeUint8(BinaryTypeMarshallingMap.MetadataCommentRuleNode);
55
+ buffer.writeUint8(MetadataCommentMarshallingMap.Marker);
56
+ ValueSerializer.serialize(node.marker, buffer);
57
+ buffer.writeUint8(MetadataCommentMarshallingMap.Header);
58
+ ValueSerializer.serialize(node.header, buffer, getFrequentHeadersSerializationMap(), true);
59
+ buffer.writeUint8(MetadataCommentMarshallingMap.Value);
60
+ ValueSerializer.serialize(node.value, buffer);
61
+ if (!isUndefined(node.start)) {
62
+ buffer.writeUint8(MetadataCommentMarshallingMap.Start);
63
+ buffer.writeUint32(node.start);
64
+ }
65
+ if (!isUndefined(node.end)) {
66
+ buffer.writeUint8(MetadataCommentMarshallingMap.End);
67
+ buffer.writeUint32(node.end);
68
+ }
69
+ buffer.writeUint8(NULL);
70
+ }
71
+ }
72
+
73
+ export { MetadataCommentSerializer };
@@ -0,0 +1,71 @@
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 { NULL } from '../../utils/constants.js';
8
+ import { LogicalExpressionSerializer } from '../misc/logical-expression-serializer.js';
9
+ import { ParameterListSerializer } from '../misc/parameter-list-serializer.js';
10
+ import { ValueSerializer } from '../misc/value-serializer.js';
11
+ import { isUndefined } from '../../utils/type-guards.js';
12
+ import { BaseSerializer } from '../base-serializer.js';
13
+ import { PreProcessorRuleMarshallingMap, FREQUENT_DIRECTIVES_SERIALIZATION_MAP, FREQUENT_PARAMS_SERIALIZATION_MAP } from '../../marshalling-utils/comment/pre-processor-comment-common.js';
14
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
15
+ import { getSyntaxSerializationMap } from '../../marshalling-utils/syntax-serialization-map.js';
16
+
17
+ /**
18
+ * `PreProcessorSerializer` is responsible for serializing preprocessor rules.
19
+ * Pre-processor comments are special comments that are used to control the behavior of the filter list processor.
20
+ * Please note that this parser only handles general syntax for now, and does not validate the parameters at
21
+ * the parsing stage.
22
+ *
23
+ * @example
24
+ * If your rule is
25
+ * ```adblock
26
+ * !#if (adguard)
27
+ * ```
28
+ * then the directive's name is `if` and its value is `(adguard)`, but the parameter list
29
+ * is not parsed / validated further.
30
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#pre-processor-directives}
31
+ * @see {@link https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#pre-parsing-directives}
32
+ */
33
+ class PreProcessorCommentSerializer extends BaseSerializer {
34
+ /**
35
+ * Serializes a pre-processor comment node to binary format.
36
+ *
37
+ * @param node Node to serialize.
38
+ * @param buffer ByteBuffer for writing binary data.
39
+ */
40
+ // TODO: add support for raws, if ever needed
41
+ static serialize(node, buffer) {
42
+ buffer.writeUint8(BinaryTypeMarshallingMap.PreProcessorCommentRuleNode);
43
+ buffer.writeUint8(PreProcessorRuleMarshallingMap.Name);
44
+ ValueSerializer.serialize(node.name, buffer, FREQUENT_DIRECTIVES_SERIALIZATION_MAP);
45
+ buffer.writeUint8(PreProcessorRuleMarshallingMap.Syntax);
46
+ buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
47
+ if (!isUndefined(node.params)) {
48
+ buffer.writeUint8(PreProcessorRuleMarshallingMap.Params);
49
+ if (node.params.type === 'Value') {
50
+ ValueSerializer.serialize(node.params, buffer);
51
+ }
52
+ else if (node.params.type === 'ParameterList') {
53
+ ParameterListSerializer.serialize(node.params, buffer, FREQUENT_PARAMS_SERIALIZATION_MAP, true);
54
+ }
55
+ else {
56
+ LogicalExpressionSerializer.serialize(node.params, buffer);
57
+ }
58
+ }
59
+ if (!isUndefined(node.start)) {
60
+ buffer.writeUint8(PreProcessorRuleMarshallingMap.Start);
61
+ buffer.writeUint32(node.start);
62
+ }
63
+ if (!isUndefined(node.end)) {
64
+ buffer.writeUint8(PreProcessorRuleMarshallingMap.End);
65
+ buffer.writeUint32(node.end);
66
+ }
67
+ buffer.writeUint8(NULL);
68
+ }
69
+ }
70
+
71
+ export { PreProcessorCommentSerializer };
@@ -0,0 +1,52 @@
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 { NULL } from '../../utils/constants.js';
8
+ import { isUndefined } from '../../utils/type-guards.js';
9
+ import { ValueSerializer } from '../misc/value-serializer.js';
10
+ import { BaseSerializer } from '../base-serializer.js';
11
+ import { SimpleCommentMarshallingMap } from '../../marshalling-utils/comment/simple-comment-common.js';
12
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
13
+
14
+ /**
15
+ * `SimpleCommentSerializer` is responsible for serializing simple comments.
16
+ * Some comments have a special meaning in adblock syntax, like agent comments or hints,
17
+ * but this serializer is only responsible for serializing regular comments,
18
+ * whose only purpose is to provide some human-readable information.
19
+ *
20
+ * @example
21
+ * ```adblock
22
+ * ! This is a simple comment
23
+ * # This is a simple comment, but in host-like syntax
24
+ * ```
25
+ */
26
+ class SimpleCommentSerializer extends BaseSerializer {
27
+ /**
28
+ * Serializes a simple comment rule node to binary format.
29
+ *
30
+ * @param node Node to serialize.
31
+ * @param buffer ByteBuffer for writing binary data.
32
+ */
33
+ // TODO: add support for raws, if ever needed
34
+ static serialize(node, buffer) {
35
+ buffer.writeUint8(BinaryTypeMarshallingMap.CommentRuleNode);
36
+ buffer.writeUint8(SimpleCommentMarshallingMap.Marker);
37
+ ValueSerializer.serialize(node.marker, buffer);
38
+ buffer.writeUint8(SimpleCommentMarshallingMap.Text);
39
+ ValueSerializer.serialize(node.text, buffer);
40
+ if (!isUndefined(node.start)) {
41
+ buffer.writeUint8(SimpleCommentMarshallingMap.Start);
42
+ buffer.writeUint32(node.start);
43
+ }
44
+ if (!isUndefined(node.end)) {
45
+ buffer.writeUint8(SimpleCommentMarshallingMap.End);
46
+ buffer.writeUint32(node.end);
47
+ }
48
+ buffer.writeUint8(NULL);
49
+ }
50
+ }
51
+
52
+ export { SimpleCommentSerializer };
@@ -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 { BaseSerializer } from '../../base-serializer.js';
8
+ import { ScriptletBodySerializer } from './scriptlet-body-serializer.js';
9
+ import { FREQUENT_ABP_SNIPPET_ARGS_SERIALIZATION_MAP } from '../../../marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js';
10
+
11
+ /**
12
+ * `AbpSnippetInjectionBodySerializer` is responsible for serializing the body of an Adblock Plus-style snippet rule.
13
+ *
14
+ * Please note that the serializer will serialize any scriptlet rule if it is syntactically correct.
15
+ * For example, it will serialize this:
16
+ * ```adblock
17
+ * example.com#$#snippet0 arg0
18
+ * ```
19
+ *
20
+ * but it doesn't check if the scriptlet `snippet0` is actually supported by any adblocker.
21
+ *
22
+ * @see {@link https://help.eyeo.com/adblockplus/snippet-filters-tutorial}
23
+ */
24
+ class AbpSnippetInjectionBodySerializer extends BaseSerializer {
25
+ /**
26
+ * Serializes a scriptlet call body node to binary format.
27
+ *
28
+ * @param node Node to serialize.
29
+ * @param buffer ByteBuffer for writing binary data.
30
+ */
31
+ static serialize(node, buffer) {
32
+ ScriptletBodySerializer.serialize(node, buffer, FREQUENT_ABP_SNIPPET_ARGS_SERIALIZATION_MAP);
33
+ }
34
+ }
35
+
36
+ export { AbpSnippetInjectionBodySerializer };
@@ -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 { BaseSerializer } from '../../base-serializer.js';
8
+ import { ScriptletBodySerializer } from './scriptlet-body-serializer.js';
9
+ import { FREQUENT_ADG_SCRIPTLET_ARGS_SERIALIZATION_MAP } from '../../../marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js';
10
+
11
+ /**
12
+ * `AdgScriptletInjectionBodySerializer` is responsible for serializing the body of an AdGuard-style scriptlet rule.
13
+ *
14
+ * Please note that the serializer will serialize any scriptlet rule if it is syntactically correct.
15
+ * For example, it will serialize this:
16
+ * ```adblock
17
+ * example.com#%#//scriptlet('scriptlet0', 'arg0')
18
+ * ```
19
+ *
20
+ * but it doesn't check if the scriptlet `scriptlet0` is actually supported by any adblocker.
21
+ *
22
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#scriptlets}
23
+ */
24
+ class AdgScriptletInjectionBodySerializer extends BaseSerializer {
25
+ /**
26
+ * Serializes a scriptlet call body node to binary format.
27
+ *
28
+ * @param node Node to serialize.
29
+ * @param buffer ByteBuffer for writing binary data.
30
+ */
31
+ static serialize(node, buffer) {
32
+ ScriptletBodySerializer.serialize(node, buffer, FREQUENT_ADG_SCRIPTLET_ARGS_SERIALIZATION_MAP);
33
+ }
34
+ }
35
+
36
+ export { AdgScriptletInjectionBodySerializer };
@@ -0,0 +1,50 @@
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 { UINT8_MAX, NULL } from '../../../utils/constants.js';
8
+ import { ParameterListSerializer } from '../../misc/parameter-list-serializer.js';
9
+ import { isUndefined } from '../../../utils/type-guards.js';
10
+ import { BaseSerializer } from '../../base-serializer.js';
11
+ import { AbpSnippetBodyMarshallingMap } from '../../../marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js';
12
+ import { BinaryTypeMarshallingMap } from '../../../marshalling-utils/misc/binary-type-common.js';
13
+
14
+ /**
15
+ * Serializer for scriptlet injection rule body nodes.
16
+ */
17
+ class ScriptletBodySerializer extends BaseSerializer {
18
+ /**
19
+ * Serializes a scriptlet injection rule body node into a compact binary format.
20
+ *
21
+ * @param node The ScriptletInjectionRuleBody node to serialize.
22
+ * @param buffer The OutputByteBuffer used for writing the binary data.
23
+ * @param frequentScriptletArgs An optional map of frequently used scriptlet names and their arguments,
24
+ * along with their corresponding serialization index.
25
+ */
26
+ static serialize = (node, buffer, frequentScriptletArgs) => {
27
+ buffer.writeUint8(BinaryTypeMarshallingMap.ScriptletInjectionRuleBodyNode);
28
+ const { length } = node.children;
29
+ buffer.writeUint8(AbpSnippetBodyMarshallingMap.Children);
30
+ // note: we store the count, because re-construction of the array is faster if we know the length
31
+ if (length > UINT8_MAX) {
32
+ throw new Error(`Too many scriptlet children: ${length}, the limit is ${UINT8_MAX}`);
33
+ }
34
+ buffer.writeUint8(length);
35
+ for (let i = 0; i < length; i += 1) {
36
+ ParameterListSerializer.serialize(node.children[i], buffer, frequentScriptletArgs);
37
+ }
38
+ if (!isUndefined(node.start)) {
39
+ buffer.writeUint8(AbpSnippetBodyMarshallingMap.Start);
40
+ buffer.writeUint32(node.start);
41
+ }
42
+ if (!isUndefined(node.end)) {
43
+ buffer.writeUint8(AbpSnippetBodyMarshallingMap.End);
44
+ buffer.writeUint32(node.end);
45
+ }
46
+ buffer.writeUint8(NULL);
47
+ };
48
+ }
49
+
50
+ export { ScriptletBodySerializer };
@@ -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 { ScriptletBodySerializer } from './scriptlet-body-serializer.js';
8
+ import { BaseSerializer } from '../../base-serializer.js';
9
+ import { FREQUENT_UBO_SCRIPTLET_ARGS_SERIALIZATION_MAP } from '../../../marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js';
10
+
11
+ /**
12
+ * `UboScriptletInjectionBodySerializer` is responsible for serializing the body of a uBlock-style scriptlet rule.
13
+ *
14
+ * Please note that the parser will parse any scriptlet rule if it is syntactically correct.
15
+ * For example, it will parse this:
16
+ * ```adblock
17
+ * example.com##+js(scriptlet0, arg0)
18
+ * ```
19
+ *
20
+ * but it didn't check if the scriptlet `scriptlet0` actually supported by any adblocker.
21
+ *
22
+ * @see {@link https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#scriptlet-injection}
23
+ */
24
+ class UboScriptletInjectionBodySerializer extends BaseSerializer {
25
+ /**
26
+ * Serializes a scriptlet call body node to binary format.
27
+ *
28
+ * @param node Node to serialize.
29
+ * @param buffer ByteBuffer for writing binary data.
30
+ */
31
+ static serialize(node, buffer) {
32
+ ScriptletBodySerializer.serialize(node, buffer, FREQUENT_UBO_SCRIPTLET_ARGS_SERIALIZATION_MAP);
33
+ }
34
+ }
35
+
36
+ export { UboScriptletInjectionBodySerializer };
@@ -0,0 +1,120 @@
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 { DomainListSerializer } from '../misc/domain-list-serializer.js';
9
+ import { NULL } from '../../utils/constants.js';
10
+ import { CosmeticRuleType } from '../../nodes/index.js';
11
+ import { AbpSnippetInjectionBodySerializer } from './body/abp-snippet-injection-body-serializer.js';
12
+ import { UboScriptletInjectionBodySerializer } from './body/ubo-scriptlet-injection-body-serializer.js';
13
+ import { AdgScriptletInjectionBodySerializer } from './body/adg-scriptlet-injection-body-serializer.js';
14
+ import { ValueSerializer } from '../misc/value-serializer.js';
15
+ import { isUndefined } from '../../utils/type-guards.js';
16
+ import { BaseSerializer } from '../base-serializer.js';
17
+ import { ElementHidingBodySerializer } from './element-hiding-body-serializer.js';
18
+ import { CssInjectionBodySerializer } from './css-injection-body-serializer.js';
19
+ import { ModifierListSerializer } from '../misc/modifier-list-serializer.js';
20
+ import { CosmeticRuleMarshallingMap, COSMETIC_RULE_SEPARATOR_SERIALIZATION_MAP } from '../../marshalling-utils/cosmetic/cosmetic-rule-common.js';
21
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
22
+ import { getSyntaxSerializationMap } from '../../marshalling-utils/syntax-serialization-map.js';
23
+
24
+ /**
25
+ * `CosmeticRuleSerializer` is responsible for serializing cosmetic rules into a binary format.
26
+ *
27
+ * This class takes a cosmetic rule Abstract Syntax Tree (AST) and converts it into a compact binary representation.
28
+ * It handles the serialization of different types of cosmetic rules, including element hiding, CSS injection,
29
+ * JavaScript injection, HTML filtering, and scriptlet injection rules.
30
+ */
31
+ class CosmeticRuleSerializer extends BaseSerializer {
32
+ /**
33
+ * Serializes a cosmetic rule node to binary format.
34
+ *
35
+ * @param node Node to serialize.
36
+ * @param buffer ByteBuffer for writing binary data.
37
+ */
38
+ // TODO: add support for raws, if ever needed
39
+ static serialize(node, buffer) {
40
+ // specific properties
41
+ switch (node.type) {
42
+ case CosmeticRuleType.ElementHidingRule:
43
+ // rule type
44
+ buffer.writeUint8(BinaryTypeMarshallingMap.ElementHidingRule);
45
+ // syntax
46
+ buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
47
+ // rule body
48
+ ElementHidingBodySerializer.serialize(node.body, buffer);
49
+ break;
50
+ case CosmeticRuleType.CssInjectionRule:
51
+ // rule type
52
+ buffer.writeUint8(BinaryTypeMarshallingMap.CssInjectionRule);
53
+ // syntax
54
+ buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
55
+ // rule body
56
+ CssInjectionBodySerializer.serialize(node.body, buffer);
57
+ break;
58
+ case CosmeticRuleType.JsInjectionRule:
59
+ // rule type
60
+ buffer.writeUint8(BinaryTypeMarshallingMap.JsInjectionRule);
61
+ // syntax
62
+ buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
63
+ // rule body
64
+ ValueSerializer.serialize(node.body, buffer);
65
+ break;
66
+ case CosmeticRuleType.HtmlFilteringRule:
67
+ // rule type
68
+ buffer.writeUint8(BinaryTypeMarshallingMap.HtmlFilteringRule);
69
+ // syntax
70
+ buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
71
+ // rule body
72
+ ValueSerializer.serialize(node.body, buffer);
73
+ break;
74
+ case CosmeticRuleType.ScriptletInjectionRule:
75
+ // rule type
76
+ buffer.writeUint8(BinaryTypeMarshallingMap.ScriptletInjectionRule);
77
+ // syntax
78
+ buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
79
+ // rule body
80
+ switch (node.syntax) {
81
+ case AdblockSyntax.Adg:
82
+ AdgScriptletInjectionBodySerializer.serialize(node.body, buffer);
83
+ break;
84
+ case AdblockSyntax.Abp:
85
+ AbpSnippetInjectionBodySerializer.serialize(node.body, buffer);
86
+ break;
87
+ case AdblockSyntax.Ubo:
88
+ UboScriptletInjectionBodySerializer.serialize(node.body, buffer);
89
+ break;
90
+ default:
91
+ throw new Error('Scriptlet rule should have an explicit syntax');
92
+ }
93
+ break;
94
+ default:
95
+ throw new Error('Unknown cosmetic rule type');
96
+ }
97
+ // common properties
98
+ buffer.writeUint8(CosmeticRuleMarshallingMap.Exception);
99
+ buffer.writeUint8(node.exception ? 1 : 0);
100
+ buffer.writeUint8(CosmeticRuleMarshallingMap.Separator);
101
+ ValueSerializer.serialize(node.separator, buffer, COSMETIC_RULE_SEPARATOR_SERIALIZATION_MAP);
102
+ if (node.modifiers) {
103
+ buffer.writeUint8(CosmeticRuleMarshallingMap.Modifiers);
104
+ ModifierListSerializer.serialize(node.modifiers, buffer);
105
+ }
106
+ buffer.writeUint8(CosmeticRuleMarshallingMap.Domains);
107
+ DomainListSerializer.serialize(node.domains, buffer);
108
+ if (!isUndefined(node.start)) {
109
+ buffer.writeUint8(CosmeticRuleMarshallingMap.Start);
110
+ buffer.writeUint32(node.start);
111
+ }
112
+ if (!isUndefined(node.end)) {
113
+ buffer.writeUint8(CosmeticRuleMarshallingMap.End);
114
+ buffer.writeUint32(node.end);
115
+ }
116
+ buffer.writeUint8(NULL);
117
+ }
118
+ }
119
+
120
+ export { CosmeticRuleSerializer };
@@ -0,0 +1,51 @@
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 { ValueSerializer } from '../misc/value-serializer.js';
8
+ import { isUndefined } from '../../utils/type-guards.js';
9
+ import { NULL } from '../../utils/constants.js';
10
+ import { BaseSerializer } from '../base-serializer.js';
11
+ import { CssInjectionRuleMarshallingMap } from '../../marshalling-utils/cosmetic/body/css-injection-body-common.js';
12
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
13
+
14
+ /**
15
+ * Serializer for CSS injection rule body nodes.
16
+ */
17
+ class CssInjectionBodySerializer extends BaseSerializer {
18
+ /**
19
+ * Serializes a CSS injection rule body node to binary format.
20
+ *
21
+ * @param node Node to serialize.
22
+ * @param buffer ByteBuffer for writing binary data.
23
+ */
24
+ static serialize(node, buffer) {
25
+ buffer.writeUint8(BinaryTypeMarshallingMap.CssInjectionRuleBody);
26
+ if (node.mediaQueryList) {
27
+ buffer.writeUint8(CssInjectionRuleMarshallingMap.MediaQueryList);
28
+ ValueSerializer.serialize(node.mediaQueryList, buffer);
29
+ }
30
+ buffer.writeUint8(CssInjectionRuleMarshallingMap.SelectorList);
31
+ ValueSerializer.serialize(node.selectorList, buffer);
32
+ if (node.declarationList) {
33
+ buffer.writeUint8(CssInjectionRuleMarshallingMap.DeclarationList);
34
+ ValueSerializer.serialize(node.declarationList, buffer);
35
+ }
36
+ if (node.remove) {
37
+ buffer.writeUint8(CssInjectionRuleMarshallingMap.Remove);
38
+ }
39
+ if (!isUndefined(node.start)) {
40
+ buffer.writeUint8(CssInjectionRuleMarshallingMap.Start);
41
+ buffer.writeUint32(node.start);
42
+ }
43
+ if (!isUndefined(node.end)) {
44
+ buffer.writeUint8(CssInjectionRuleMarshallingMap.End);
45
+ buffer.writeUint32(node.end);
46
+ }
47
+ buffer.writeUint8(NULL);
48
+ }
49
+ }
50
+
51
+ export { CssInjectionBodySerializer };
@@ -0,0 +1,40 @@
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 { BaseSerializer } from '../base-serializer.js';
8
+ import { ValueSerializer } from '../misc/value-serializer.js';
9
+ import { isUndefined } from '../../utils/type-guards.js';
10
+ import { NULL } from '../../utils/constants.js';
11
+ import { ElementHidingRuleMarshallingMap } from '../../marshalling-utils/cosmetic/body/element-hiding-body-common.js';
12
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
13
+
14
+ /**
15
+ * Serializer for element hiding rule body nodes.
16
+ */
17
+ class ElementHidingBodySerializer extends BaseSerializer {
18
+ /**
19
+ * Serializes an element hiding rule body node to binary format.
20
+ *
21
+ * @param node Node to serialize.
22
+ * @param buffer ByteBuffer for writing binary data.
23
+ */
24
+ static serialize(node, buffer) {
25
+ buffer.writeUint8(BinaryTypeMarshallingMap.ElementHidingRuleBody);
26
+ buffer.writeUint8(ElementHidingRuleMarshallingMap.SelectorList);
27
+ ValueSerializer.serialize(node.selectorList, buffer);
28
+ if (!isUndefined(node.start)) {
29
+ buffer.writeUint8(ElementHidingRuleMarshallingMap.Start);
30
+ buffer.writeUint32(node.start);
31
+ }
32
+ if (!isUndefined(node.end)) {
33
+ buffer.writeUint8(ElementHidingRuleMarshallingMap.End);
34
+ buffer.writeUint32(node.end);
35
+ }
36
+ buffer.writeUint8(NULL);
37
+ }
38
+ }
39
+
40
+ export { ElementHidingBodySerializer };
@@ -0,0 +1,37 @@
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 { BaseSerializer } from './base-serializer.js';
8
+ import { isUndefined } from '../utils/type-guards.js';
9
+ import { NULL } from '../utils/constants.js';
10
+ import { EmptyRuleMarshallingMap } from '../marshalling-utils/empty-rule-common.js';
11
+ import { BinaryTypeMarshallingMap } from '../marshalling-utils/misc/binary-type-common.js';
12
+
13
+ /**
14
+ * Serializer for empty rule nodes.
15
+ */
16
+ class EmptyRuleSerializer extends BaseSerializer {
17
+ /**
18
+ * Serializes an empty rule node to binary format.
19
+ *
20
+ * @param node Node to serialize.
21
+ * @param buffer ByteBuffer for writing binary data.
22
+ */
23
+ static serialize(node, buffer) {
24
+ buffer.writeUint8(BinaryTypeMarshallingMap.EmptyRule);
25
+ if (!isUndefined(node.start)) {
26
+ buffer.writeUint8(EmptyRuleMarshallingMap.Start);
27
+ buffer.writeUint32(node.start);
28
+ }
29
+ if (!isUndefined(node.end)) {
30
+ buffer.writeUint8(EmptyRuleMarshallingMap.End);
31
+ buffer.writeUint32(node.end);
32
+ }
33
+ buffer.writeUint8(NULL);
34
+ }
35
+ }
36
+
37
+ export { EmptyRuleSerializer };
@@ -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 { NULL } from '../utils/constants.js';
8
+ import { isUndefined } from '../utils/type-guards.js';
9
+ import { BaseSerializer } from './base-serializer.js';
10
+ import { RuleSerializer } from './rule-serializer.js';
11
+ import { FilterListNodeMarshallingMap } from '../marshalling-utils/filter-list-common.js';
12
+ import { BinaryTypeMarshallingMap } from '../marshalling-utils/misc/binary-type-common.js';
13
+
14
+ /**
15
+ * Serializes filter list nodes to binary format.
16
+ */
17
+ class FilterListSerializer extends BaseSerializer {
18
+ /**
19
+ * Serializes a filter list node to binary format.
20
+ *
21
+ * @param node Node to serialize.
22
+ * @param buffer ByteBuffer for writing binary data.
23
+ */
24
+ // TODO: add support for raws, if ever needed
25
+ static serialize(node, buffer) {
26
+ buffer.writeUint8(BinaryTypeMarshallingMap.FilterListNode);
27
+ buffer.writeUint8(FilterListNodeMarshallingMap.Children);
28
+ const count = node.children.length;
29
+ buffer.writeUint32(count);
30
+ for (let i = 0; i < count; i += 1) {
31
+ RuleSerializer.serialize(node.children[i], buffer);
32
+ }
33
+ if (!isUndefined(node.start)) {
34
+ buffer.writeUint8(FilterListNodeMarshallingMap.Start);
35
+ buffer.writeUint32(node.start);
36
+ }
37
+ if (!isUndefined(node.end)) {
38
+ buffer.writeUint8(FilterListNodeMarshallingMap.End);
39
+ buffer.writeUint32(node.end);
40
+ }
41
+ buffer.writeUint8(NULL);
42
+ }
43
+ }
44
+
45
+ export { FilterListSerializer };
@@ -0,0 +1,7 @@
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 { RuleSerializer } from './rule-serializer.js';