@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,56 @@
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 { createConversionResult } from './base-interfaces/conversion-result.js';
8
+ import { BaseConverter } from './base-interfaces/base-converter.js';
9
+ import { FilterListParser } from '../parser/filterlist-parser.js';
10
+ import { FilterListConverter } from './filter-list.js';
11
+ import { defaultParserOptions } from '../parser/options.js';
12
+ import { FilterListGenerator } from '../generator/filterlist-generator.js';
13
+
14
+ /**
15
+ * @file Filter list converter for raw filter lists
16
+ *
17
+ * Technically, this is a wrapper around `FilterListConverter` that works with nodes instead of strings.
18
+ */
19
+ /**
20
+ * Adblock filter list converter class.
21
+ *
22
+ * You can use this class to convert string-based filter lists, since most of the converters work with nodes.
23
+ * This class just provides an extra layer on top of the {@link FilterListConverter} and calls the parser/serializer
24
+ * before/after the conversion internally.
25
+ *
26
+ * @todo Implement `convertToUbo` and `convertToAbp`
27
+ */
28
+ class RawFilterListConverter extends BaseConverter {
29
+ /**
30
+ * Converts an adblock filter list text to AdGuard format, if possible.
31
+ *
32
+ * @param rawFilterList Raw filter list text to convert
33
+ * @param tolerant Indicates whether the converter should be tolerant to invalid rules. If enabled and a rule is
34
+ * invalid, it will be left as is. If disabled and a rule is invalid, the whole filter list will be failed.
35
+ * Defaults to `true`.
36
+ * @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
37
+ * the array of converted filter list text, and its `isConverted` flag indicates whether the original rule was
38
+ * converted. If the rule was not converted, the original filter list text will be returned
39
+ * @throws If the filter list is invalid or cannot be converted (if the tolerant mode is disabled)
40
+ */
41
+ static convertToAdg(rawFilterList, tolerant = true) {
42
+ const conversionResult = FilterListConverter.convertToAdg(FilterListParser.parse(rawFilterList, {
43
+ ...defaultParserOptions,
44
+ isLocIncluded: false,
45
+ tolerant,
46
+ }), tolerant);
47
+ // If the filter list was not converted, return the original text
48
+ if (!conversionResult.isConverted) {
49
+ return createConversionResult(rawFilterList, false);
50
+ }
51
+ // Otherwise, serialize the filter list and return the result
52
+ return createConversionResult(FilterListGenerator.generate(conversionResult.result, false, tolerant), true);
53
+ }
54
+ }
55
+
56
+ export { RawFilterListConverter };
@@ -0,0 +1,81 @@
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 { RuleCategory, NetworkRuleType } from '../nodes/index.js';
8
+ import { CommentRuleConverter } from './comment/index.js';
9
+ import { CosmeticRuleConverter } from './cosmetic/index.js';
10
+ import { NetworkRuleConverter } from './network/index.js';
11
+ import { RuleConversionError } from '../errors/rule-conversion-error.js';
12
+ import { RuleConverterBase } from './base-interfaces/rule-converter-base.js';
13
+ import { createConversionResult } from './base-interfaces/conversion-result.js';
14
+
15
+ /**
16
+ * @file Adblock rule converter
17
+ *
18
+ * This file is the entry point for all rule converters
19
+ * which automatically detects the rule type and calls
20
+ * the corresponding "sub-converter".
21
+ */
22
+ /**
23
+ * Adblock filtering rule converter class
24
+ *
25
+ * @todo Implement `convertToUbo` and `convertToAbp`
26
+ */
27
+ class RuleConverter extends RuleConverterBase {
28
+ /**
29
+ * Converts an adblock filtering rule to AdGuard format, if possible.
30
+ *
31
+ * @param rule Rule node to convert
32
+ * @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
33
+ * the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
34
+ * If the rule was not converted, the result array will contain the original node with the same object reference
35
+ * @throws If the rule is invalid or cannot be converted
36
+ */
37
+ static convertToAdg(rule) {
38
+ // Delegate conversion to the corresponding sub-converter
39
+ // based on the rule category
40
+ switch (rule.category) {
41
+ case RuleCategory.Comment:
42
+ return CommentRuleConverter.convertToAdg(rule);
43
+ case RuleCategory.Cosmetic:
44
+ return CosmeticRuleConverter.convertToAdg(rule);
45
+ case RuleCategory.Network:
46
+ // TODO: Handle hosts rules later
47
+ if (rule.type === NetworkRuleType.HostRule) {
48
+ return createConversionResult([rule], false);
49
+ }
50
+ return NetworkRuleConverter.convertToAdg(rule);
51
+ case RuleCategory.Invalid:
52
+ case RuleCategory.Empty:
53
+ // Just forward the rule as is
54
+ return createConversionResult([rule], false);
55
+ default:
56
+ // Never happens during normal operation
57
+ throw new RuleConversionError('Unknown rule category');
58
+ }
59
+ }
60
+ /**
61
+ * Converts an adblock filtering rule to uBlock Origin format, if possible.
62
+ *
63
+ * @param rule Rule node to convert
64
+ * @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
65
+ * the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
66
+ * If the rule was not converted, the result array will contain the original node with the same object reference
67
+ * @throws If the rule is invalid or cannot be converted
68
+ */
69
+ // TODO: Add support for other rule types
70
+ static convertToUbo(rule) {
71
+ if (rule.category === RuleCategory.Cosmetic) {
72
+ return CosmeticRuleConverter.convertToUbo(rule);
73
+ }
74
+ if (rule.category === RuleCategory.Network) {
75
+ return NetworkRuleConverter.convertToUbo(rule);
76
+ }
77
+ return createConversionResult([rule], false);
78
+ }
79
+ }
80
+
81
+ export { RuleConverter };
@@ -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 { NotImplementedError } from '../errors/not-implemented-error.js';
8
+
9
+ /**
10
+ * @file Base deserializer class.
11
+ */
12
+ /**
13
+ * Base class for deserializers. Each deserializer should extend this class.
14
+ */
15
+ class BaseDeserializer {
16
+ /**
17
+ * Deserializes the AST node from a byte buffer.
18
+ *
19
+ * @param buffer Input byte buffer to read from.
20
+ * @param node Destination node to write to.
21
+ * @param args Additional, parser-specific arguments, if needed.
22
+ */
23
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
+ static deserialize(buffer, node, ...args) {
25
+ throw new NotImplementedError();
26
+ }
27
+ }
28
+
29
+ export { BaseDeserializer };
@@ -0,0 +1,79 @@
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 { CommentRuleType, RuleCategory } from '../../nodes/index.js';
9
+ import { AdblockSyntax } from '../../utils/adblockers.js';
10
+ import { BaseDeserializer } from '../base-deserializer.js';
11
+ import { AgentCommentMarshallingMap } from '../../marshalling-utils/comment/agent-comment-common.js';
12
+ import { AgentDeserializer } from './agent-deserializer.js';
13
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
14
+
15
+ /* eslint-disable no-param-reassign */
16
+ /**
17
+ * `AgentCommentDeserializer` is responsible for deserializing an Adblock agent comments.
18
+ * Adblock agent comment marks that the filter list is supposed to
19
+ * be used by the specified ad blockers.
20
+ *
21
+ * @example
22
+ * - ```adblock
23
+ * [AdGuard]
24
+ * ```
25
+ * - ```adblock
26
+ * [Adblock Plus 2.0]
27
+ * ```
28
+ * - ```adblock
29
+ * [uBlock Origin]
30
+ * ```
31
+ * - ```adblock
32
+ * [uBlock Origin 1.45.3]
33
+ * ```
34
+ * - ```adblock
35
+ * [Adblock Plus 2.0; AdGuard]
36
+ * ```
37
+ */
38
+ class AgentCommentDeserializer extends BaseDeserializer {
39
+ /**
40
+ * Deserializes an agent list node from binary format.
41
+ *
42
+ * @param buffer ByteBuffer for reading binary data.
43
+ * @param node Destination node.
44
+ */
45
+ static deserialize(buffer, node) {
46
+ buffer.assertUint8(BinaryTypeMarshallingMap.AgentRuleNode);
47
+ node.type = CommentRuleType.AgentCommentRule;
48
+ node.syntax = AdblockSyntax.Common;
49
+ node.category = RuleCategory.Comment;
50
+ let prop = buffer.readUint8();
51
+ while (prop !== NULL) {
52
+ switch (prop) {
53
+ case AgentCommentMarshallingMap.Children:
54
+ node.children = new Array(buffer.readUint8());
55
+ // read children
56
+ for (let i = 0; i < node.children.length; i += 1) {
57
+ AgentDeserializer.deserialize(buffer, node.children[i] = {});
58
+ }
59
+ break;
60
+ case AgentCommentMarshallingMap.Start:
61
+ node.start = buffer.readUint32();
62
+ break;
63
+ case AgentCommentMarshallingMap.End:
64
+ node.end = buffer.readUint32();
65
+ break;
66
+ default:
67
+ throw new Error(`Invalid property: ${prop}`);
68
+ }
69
+ prop = buffer.readUint8();
70
+ }
71
+ // Maybe children are not present in the binary data,
72
+ // in this case, we should initialize it as an empty array.
73
+ if (!node.children) {
74
+ node.children = [];
75
+ }
76
+ }
77
+ }
78
+
79
+ export { AgentCommentDeserializer };
@@ -0,0 +1,65 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 GMT)
3
+ * (c) 2024 Adguard Software Ltd.
4
+ * Released under the MIT license
5
+ * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
+ */
7
+ import { NULL } from '../../utils/constants.js';
8
+ import { BaseDeserializer } from '../base-deserializer.js';
9
+ import { AgentNodeMarshallingMap, FREQUENT_AGENTS_DESERIALIZATION_MAP } from '../../marshalling-utils/comment/agent-common.js';
10
+ import { getAdblockSyntax } from '../../common/agent-common.js';
11
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
12
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
13
+
14
+ /* eslint-disable no-param-reassign */
15
+ /**
16
+ * `AgentDeserializer` is responsible for deserializing single adblock agent elements.
17
+ *
18
+ * @example
19
+ * If the adblock agent rule is
20
+ * ```adblock
21
+ * [Adblock Plus 2.0; AdGuard]
22
+ * ```
23
+ * then the adblock agents are `Adblock Plus 2.0` and `AdGuard`, and this
24
+ * class is responsible for parsing them. The rule itself is parsed by
25
+ * `AgentCommentSerializer`, which uses this class to parse single agents.
26
+ */
27
+ class AgentDeserializer extends BaseDeserializer {
28
+ /**
29
+ * Deserializes an agent node from binary format.
30
+ *
31
+ * @param buffer ByteBuffer for reading binary data.
32
+ * @param node Destination node.
33
+ * @throws If the binary data is malformed.
34
+ */
35
+ static deserialize(buffer, node) {
36
+ buffer.assertUint8(BinaryTypeMarshallingMap.AgentNode);
37
+ node.type = 'Agent';
38
+ let prop = buffer.readUint8();
39
+ while (prop !== NULL) {
40
+ switch (prop) {
41
+ case AgentNodeMarshallingMap.Adblock:
42
+ // eslint-disable-next-line max-len
43
+ ValueDeserializer.deserialize(buffer, node.adblock = {}, FREQUENT_AGENTS_DESERIALIZATION_MAP);
44
+ if (node.adblock) {
45
+ node.syntax = getAdblockSyntax(node.adblock.value);
46
+ }
47
+ break;
48
+ case AgentNodeMarshallingMap.Version:
49
+ ValueDeserializer.deserialize(buffer, node.version = {});
50
+ break;
51
+ case AgentNodeMarshallingMap.Start:
52
+ node.start = buffer.readUint32();
53
+ break;
54
+ case AgentNodeMarshallingMap.End:
55
+ node.end = buffer.readUint32();
56
+ break;
57
+ default:
58
+ throw new Error(`Invalid property: ${prop}`);
59
+ }
60
+ prop = buffer.readUint8();
61
+ }
62
+ }
63
+ }
64
+
65
+ export { AgentDeserializer };
@@ -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 { AgentCommentDeserializer } from './agent-comment-deserializer.js';
8
+ import { ConfigCommentDeserializer } from './config-comment-deserializer.js';
9
+ import { HintCommentDeserializer } from './hint-comment-deserializer.js';
10
+ import { MetadataCommentDeserializer } from './metadata-comment-deserializer.js';
11
+ import { PreProcessorCommentDeserializer } from './pre-processor-comment-deserializer.js';
12
+ import { SimpleCommentDeserializer } from './simple-comment-deserializer.js';
13
+ import { BaseDeserializer } from '../base-deserializer.js';
14
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
15
+
16
+ /**
17
+ * `CommentRuleDeserializer` is responsible for deserializing any comment-like adblock rules.
18
+ */
19
+ class CommentRuleDeserializer extends BaseDeserializer {
20
+ /**
21
+ * Deserializes a comment rule node from binary format.
22
+ *
23
+ * @param buffer ByteBuffer for reading binary data.
24
+ * @param node Destination node.
25
+ * @throws If the binary data is malformed.
26
+ */
27
+ static deserialize(buffer, node) {
28
+ const type = buffer.peekUint8();
29
+ switch (type) {
30
+ case BinaryTypeMarshallingMap.AgentRuleNode:
31
+ AgentCommentDeserializer.deserialize(buffer, node);
32
+ return;
33
+ case BinaryTypeMarshallingMap.HintRuleNode:
34
+ HintCommentDeserializer.deserialize(buffer, node);
35
+ return;
36
+ case BinaryTypeMarshallingMap.PreProcessorCommentRuleNode:
37
+ PreProcessorCommentDeserializer.deserialize(buffer, node);
38
+ return;
39
+ case BinaryTypeMarshallingMap.MetadataCommentRuleNode:
40
+ MetadataCommentDeserializer.deserialize(buffer, node);
41
+ return;
42
+ case BinaryTypeMarshallingMap.ConfigCommentRuleNode:
43
+ ConfigCommentDeserializer.deserialize(buffer, node);
44
+ return;
45
+ case BinaryTypeMarshallingMap.CommentRuleNode:
46
+ SimpleCommentDeserializer.deserialize(buffer, node);
47
+ return;
48
+ default:
49
+ throw new Error(`Unknown comment rule type: ${type}`);
50
+ }
51
+ }
52
+ }
53
+
54
+ export { CommentRuleDeserializer };
@@ -0,0 +1,111 @@
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 { CommentRuleType, RuleCategory } from '../../nodes/index.js';
9
+ import { BaseDeserializer } from '../base-deserializer.js';
10
+ import { ConfigNodeMarshallingMap, ConfigCommentRuleMarshallingMap, FREQUENT_COMMANDS_SERIALIZATION_MAP } from '../../marshalling-utils/comment/config-comment-common.js';
11
+ import { AdblockSyntax } from '../../utils/adblockers.js';
12
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
13
+ import { ParameterListDeserializer } from '../misc/parameter-list-deserializer.js';
14
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
15
+
16
+ /* eslint-disable no-param-reassign */
17
+ /**
18
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
19
+ * as it allows us to use a single byte to represent frequently used values.
20
+ */
21
+ let frequentCommandsDeserializationMap;
22
+ const getFrequentCommandsDeserializationMap = () => {
23
+ if (!frequentCommandsDeserializationMap) {
24
+ frequentCommandsDeserializationMap = new Map(Array.from(FREQUENT_COMMANDS_SERIALIZATION_MAP).map(([key, value]) => [value, key]));
25
+ }
26
+ return frequentCommandsDeserializationMap;
27
+ };
28
+ /**
29
+ * `ConfigCommentDeserializer` is responsible for deserializing inline AGLint configuration rules.
30
+ * Generally, the idea is inspired by ESLint inline configuration comments.
31
+ *
32
+ * @see {@link https://eslint.org/docs/latest/user-guide/configuring/rules#using-configuration-comments}
33
+ */
34
+ class ConfigCommentDeserializer extends BaseDeserializer {
35
+ /**
36
+ * Deserializes a metadata comment node from binary format.
37
+ *
38
+ * @param buffer ByteBuffer for reading binary data.
39
+ * @param node Destination node.
40
+ * @throws If the binary data is malformed.
41
+ */
42
+ static deserializeConfigNode(buffer, node) {
43
+ buffer.assertUint8(BinaryTypeMarshallingMap.ConfigNode);
44
+ node.type = 'ConfigNode';
45
+ let prop = buffer.readUint8();
46
+ while (prop !== NULL) {
47
+ switch (prop) {
48
+ case ConfigNodeMarshallingMap.Value:
49
+ // note: it is safe to use JSON.parse here, because we serialized it with JSON.stringify
50
+ node.value = JSON.parse(buffer.readString());
51
+ break;
52
+ case ConfigNodeMarshallingMap.Start:
53
+ node.start = buffer.readUint32();
54
+ break;
55
+ case ConfigNodeMarshallingMap.End:
56
+ node.end = buffer.readUint32();
57
+ break;
58
+ default:
59
+ throw new Error(`Invalid property: ${prop}.`);
60
+ }
61
+ prop = buffer.readUint8();
62
+ }
63
+ }
64
+ /**
65
+ * Deserializes a metadata comment node from binary format.
66
+ *
67
+ * @param buffer ByteBuffer for reading binary data.
68
+ * @param node Destination node.
69
+ * @throws If the binary data is malformed.
70
+ */
71
+ static deserialize(buffer, node) {
72
+ buffer.assertUint8(BinaryTypeMarshallingMap.ConfigCommentRuleNode);
73
+ node.type = CommentRuleType.ConfigCommentRule;
74
+ node.category = RuleCategory.Comment;
75
+ node.syntax = AdblockSyntax.Common;
76
+ let prop = buffer.readUint8();
77
+ while (prop !== NULL) {
78
+ switch (prop) {
79
+ case ConfigCommentRuleMarshallingMap.Marker:
80
+ ValueDeserializer.deserialize(buffer, node.marker = {});
81
+ break;
82
+ case ConfigCommentRuleMarshallingMap.Command:
83
+ // eslint-disable-next-line max-len
84
+ ValueDeserializer.deserialize(buffer, node.command = {}, getFrequentCommandsDeserializationMap());
85
+ break;
86
+ case ConfigCommentRuleMarshallingMap.Params:
87
+ if (buffer.peekUint8() === BinaryTypeMarshallingMap.ConfigNode) {
88
+ ConfigCommentDeserializer.deserializeConfigNode(buffer, node.params = {});
89
+ }
90
+ else {
91
+ ParameterListDeserializer.deserialize(buffer, node.params = {});
92
+ }
93
+ break;
94
+ case ConfigCommentRuleMarshallingMap.Comment:
95
+ ValueDeserializer.deserialize(buffer, node.comment = {});
96
+ break;
97
+ case ConfigCommentRuleMarshallingMap.Start:
98
+ node.start = buffer.readUint32();
99
+ break;
100
+ case ConfigCommentRuleMarshallingMap.End:
101
+ node.end = buffer.readUint32();
102
+ break;
103
+ default:
104
+ throw new Error(`Invalid property: ${prop}`);
105
+ }
106
+ prop = buffer.readUint8();
107
+ }
108
+ }
109
+ }
110
+
111
+ export { ConfigCommentDeserializer };
@@ -0,0 +1,72 @@
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 { RuleCategory, CommentRuleType } from '../../nodes/index.js';
9
+ import { HintDeserializer } from './hint-deserializer.js';
10
+ import { AdblockSyntax } from '../../utils/adblockers.js';
11
+ import { BaseDeserializer } from '../base-deserializer.js';
12
+ import { HintCommentMarshallingMap } from '../../marshalling-utils/comment/hint-comment-common.js';
13
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
14
+ import { getSyntaxDeserializationMap } from '../syntax-deserialization-map.js';
15
+
16
+ /* eslint-disable no-param-reassign */
17
+ /**
18
+ * `HintCommentDeserializer` is responsible for deserializing AdGuard hint rules.
19
+ *
20
+ * @example
21
+ * The following hint rule
22
+ * ```adblock
23
+ * !+ NOT_OPTIMIZED PLATFORM(windows)
24
+ * ```
25
+ * contains two hints: `NOT_OPTIMIZED` and `PLATFORM`.
26
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#hints}
27
+ */
28
+ class HintCommentDeserializer extends BaseDeserializer {
29
+ /**
30
+ * Deserializes a hint rule node from binary format.
31
+ *
32
+ * @param buffer ByteBuffer for reading binary data.
33
+ * @param node Destination node.
34
+ * @throws If the binary data is malformed.
35
+ */
36
+ static deserialize(buffer, node) {
37
+ buffer.assertUint8(BinaryTypeMarshallingMap.HintRuleNode);
38
+ node.category = RuleCategory.Comment;
39
+ node.type = CommentRuleType.HintCommentRule;
40
+ let prop = buffer.readUint8();
41
+ while (prop !== NULL) {
42
+ switch (prop) {
43
+ case HintCommentMarshallingMap.Syntax:
44
+ node.syntax = getSyntaxDeserializationMap().get(buffer.readUint8()) ?? AdblockSyntax.Common;
45
+ break;
46
+ case HintCommentMarshallingMap.Children:
47
+ node.children = new Array(buffer.readUint8());
48
+ // read children
49
+ for (let i = 0; i < node.children.length; i += 1) {
50
+ HintDeserializer.deserialize(buffer, node.children[i] = {});
51
+ }
52
+ break;
53
+ case HintCommentMarshallingMap.Start:
54
+ node.start = buffer.readUint32();
55
+ break;
56
+ case HintCommentMarshallingMap.End:
57
+ node.end = buffer.readUint32();
58
+ break;
59
+ default:
60
+ throw new Error(`Invalid property: ${prop}`);
61
+ }
62
+ prop = buffer.readUint8();
63
+ }
64
+ // Maybe children are not present in the binary data,
65
+ // in this case, we should initialize it as an empty array.
66
+ if (!node.children) {
67
+ node.children = [];
68
+ }
69
+ }
70
+ }
71
+
72
+ export { HintCommentDeserializer };
@@ -0,0 +1,85 @@
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 { BaseDeserializer } from '../base-deserializer.js';
9
+ import { HintNodeMarshallingMap, FREQUENT_HINTS_SERIALIZATION_MAP, FREQUENT_PLATFORMS_SERIALIZATION_MAP } from '../../marshalling-utils/comment/hint-common.js';
10
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
11
+ import { ParameterListDeserializer } from '../misc/parameter-list-deserializer.js';
12
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
13
+
14
+ /* eslint-disable no-param-reassign */
15
+ /**
16
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
17
+ * as it allows us to use a single byte to represent frequently used values.
18
+ */
19
+ let frequentHintsDeserializationMap;
20
+ const getFrequentHintsDeserializationMap = () => {
21
+ if (!frequentHintsDeserializationMap) {
22
+ frequentHintsDeserializationMap = new Map(Array.from(FREQUENT_HINTS_SERIALIZATION_MAP).map(([key, value]) => [value, key]));
23
+ }
24
+ return frequentHintsDeserializationMap;
25
+ };
26
+ /**
27
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
28
+ * as it allows us to use a single byte to represent frequently used values.
29
+ */
30
+ let frequentPlatformsDeserializationMap;
31
+ const getFrequentPlatformsDeserializationMap = () => {
32
+ if (!frequentPlatformsDeserializationMap) {
33
+ frequentPlatformsDeserializationMap = new Map(Array.from(FREQUENT_PLATFORMS_SERIALIZATION_MAP).map(([key, value]) => [value, key]));
34
+ }
35
+ return frequentPlatformsDeserializationMap;
36
+ };
37
+ /**
38
+ * `HintDeserializer` is responsible for deserializing AdGuard hints.
39
+ *
40
+ * @example
41
+ * If the hint rule is
42
+ * ```adblock
43
+ * !+ NOT_OPTIMIZED PLATFORM(windows)
44
+ * ```
45
+ * then the hints are `NOT_OPTIMIZED` and `PLATFORM(windows)`, and this
46
+ * class is responsible for parsing them. The rule itself is parsed by
47
+ * the `HintRuleParser`, which uses this class to parse single hints.
48
+ */
49
+ class HintDeserializer extends BaseDeserializer {
50
+ /**
51
+ * Deserializes a hint node from binary format.
52
+ *
53
+ * @param buffer ByteBuffer for reading binary data.
54
+ * @param node Destination node.
55
+ * @throws If the binary data is malformed.
56
+ */
57
+ static deserialize(buffer, node) {
58
+ buffer.assertUint8(BinaryTypeMarshallingMap.HintNode);
59
+ node.type = 'Hint';
60
+ let prop = buffer.readUint8();
61
+ while (prop !== NULL) {
62
+ switch (prop) {
63
+ case HintNodeMarshallingMap.Name:
64
+ // eslint-disable-next-line max-len
65
+ ValueDeserializer.deserialize(buffer, node.name = {}, getFrequentHintsDeserializationMap());
66
+ break;
67
+ case HintNodeMarshallingMap.Params:
68
+ // eslint-disable-next-line max-len
69
+ ParameterListDeserializer.deserialize(buffer, node.params = {}, getFrequentPlatformsDeserializationMap());
70
+ break;
71
+ case HintNodeMarshallingMap.Start:
72
+ node.start = buffer.readUint32();
73
+ break;
74
+ case HintNodeMarshallingMap.End:
75
+ node.end = buffer.readUint32();
76
+ break;
77
+ default:
78
+ throw new Error(`Invalid property: ${prop}`);
79
+ }
80
+ prop = buffer.readUint8();
81
+ }
82
+ }
83
+ }
84
+
85
+ export { HintDeserializer, getFrequentPlatformsDeserializationMap };