@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,69 @@
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 { MetadataCommentMarshallingMap, FREQUENT_HEADERS_DESERIALIZATION_MAP } from '../../marshalling-utils/comment/metadata-comment-common.js';
11
+ import { AdblockSyntax } from '../../utils/adblockers.js';
12
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
13
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
14
+
15
+ /* eslint-disable no-param-reassign */
16
+ /**
17
+ * `MetadataCommentDeserializer` is responsible for deserializing metadata comments.
18
+ * Metadata comments are special comments that specify some properties of the list.
19
+ *
20
+ * @example
21
+ * For example, in the case of
22
+ * ```adblock
23
+ * ! Title: My List
24
+ * ```
25
+ * the name of the header is `Title`, and the value is `My List`, which means that
26
+ * the list title is `My List`, and it can be used in the adblocker UI.
27
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#special-comments}
28
+ */
29
+ class MetadataCommentDeserializer extends BaseDeserializer {
30
+ /**
31
+ * Deserializes a metadata comment node from binary format.
32
+ *
33
+ * @param buffer ByteBuffer for reading binary data.
34
+ * @param node Destination node.
35
+ * @throws If the binary data is malformed.
36
+ */
37
+ static deserialize(buffer, node) {
38
+ buffer.assertUint8(BinaryTypeMarshallingMap.MetadataCommentRuleNode);
39
+ node.type = CommentRuleType.MetadataCommentRule;
40
+ node.category = RuleCategory.Comment;
41
+ node.syntax = AdblockSyntax.Common;
42
+ let prop = buffer.readUint8();
43
+ while (prop !== NULL) {
44
+ switch (prop) {
45
+ case MetadataCommentMarshallingMap.Marker:
46
+ ValueDeserializer.deserialize(buffer, node.marker = {});
47
+ break;
48
+ case MetadataCommentMarshallingMap.Header:
49
+ // eslint-disable-next-line max-len
50
+ ValueDeserializer.deserialize(buffer, node.header = {}, FREQUENT_HEADERS_DESERIALIZATION_MAP);
51
+ break;
52
+ case MetadataCommentMarshallingMap.Value:
53
+ ValueDeserializer.deserialize(buffer, node.value = {});
54
+ break;
55
+ case MetadataCommentMarshallingMap.Start:
56
+ node.start = buffer.readUint32();
57
+ break;
58
+ case MetadataCommentMarshallingMap.End:
59
+ node.end = buffer.readUint32();
60
+ break;
61
+ default:
62
+ throw new Error(`Invalid property: ${prop}`);
63
+ }
64
+ prop = buffer.readUint8();
65
+ }
66
+ }
67
+ }
68
+
69
+ export { MetadataCommentDeserializer };
@@ -0,0 +1,112 @@
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 { PreProcessorRuleMarshallingMap, FREQUENT_DIRECTIVES_SERIALIZATION_MAP, FREQUENT_PARAMS_SERIALIZATION_MAP } from '../../marshalling-utils/comment/pre-processor-comment-common.js';
11
+ import { AdblockSyntax } from '../../utils/adblockers.js';
12
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
13
+ import { LogicalExpressionDeserializer } from '../misc/logical-expression-deserializer.js';
14
+ import { ParameterListDeserializer } from '../misc/parameter-list-deserializer.js';
15
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
16
+ import { getSyntaxDeserializationMap } from '../syntax-deserialization-map.js';
17
+
18
+ /* eslint-disable no-param-reassign */
19
+ /**
20
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
21
+ * as it allows us to use a single byte to represent frequently used values.
22
+ */
23
+ let frequentDirectivesDeserializationMap;
24
+ const getFrequentDirectivesDeserializationMap = () => {
25
+ if (!frequentDirectivesDeserializationMap) {
26
+ frequentDirectivesDeserializationMap = new Map(Array.from(FREQUENT_DIRECTIVES_SERIALIZATION_MAP).map(([key, value]) => [value, key]));
27
+ }
28
+ return frequentDirectivesDeserializationMap;
29
+ };
30
+ /**
31
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
32
+ * as it allows us to use a single byte to represent frequently used values.
33
+ */
34
+ let frequentParamsDeserializationMap;
35
+ const getFrequentParamsDeserializationMap = () => {
36
+ if (!frequentParamsDeserializationMap) {
37
+ frequentParamsDeserializationMap = new Map(Array.from(FREQUENT_PARAMS_SERIALIZATION_MAP).map(([key, value]) => [value, key]));
38
+ }
39
+ return frequentParamsDeserializationMap;
40
+ };
41
+ /**
42
+ * `PreProcessorCommentDeserializer` is responsible for deserializing preprocessor rules.
43
+ * Pre-processor comments are special comments that are used to control the behavior of the filter list processor.
44
+ * Please note that this parser only handles general syntax for now, and does not validate the parameters at
45
+ * the parsing stage.
46
+ *
47
+ * @example
48
+ * If your rule is
49
+ * ```adblock
50
+ * !#if (adguard)
51
+ * ```
52
+ * then the directive's name is `if` and its value is `(adguard)`, but the parameter list
53
+ * is not parsed / validated further.
54
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#pre-processor-directives}
55
+ * @see {@link https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#pre-parsing-directives}
56
+ */
57
+ class PreProcessorCommentDeserializer extends BaseDeserializer {
58
+ /**
59
+ * Deserializes a pre-processor comment node from binary format.
60
+ *
61
+ * @param buffer ByteBuffer for reading binary data.
62
+ * @param node Destination node.
63
+ * @throws If the binary data is malformed.
64
+ */
65
+ static deserialize(buffer, node) {
66
+ buffer.assertUint8(BinaryTypeMarshallingMap.PreProcessorCommentRuleNode);
67
+ node.type = CommentRuleType.PreProcessorCommentRule;
68
+ node.category = RuleCategory.Comment;
69
+ node.syntax = AdblockSyntax.Common;
70
+ let prop = buffer.readUint8();
71
+ while (prop !== NULL) {
72
+ switch (prop) {
73
+ case PreProcessorRuleMarshallingMap.Name:
74
+ // eslint-disable-next-line max-len
75
+ ValueDeserializer.deserialize(buffer, node.name = {}, getFrequentDirectivesDeserializationMap());
76
+ break;
77
+ case PreProcessorRuleMarshallingMap.Syntax:
78
+ node.syntax = getSyntaxDeserializationMap().get(buffer.readUint8()) ?? AdblockSyntax.Common;
79
+ break;
80
+ case PreProcessorRuleMarshallingMap.Params:
81
+ switch (buffer.peekUint8()) {
82
+ case BinaryTypeMarshallingMap.ValueNode:
83
+ ValueDeserializer.deserialize(buffer, node.params = {});
84
+ break;
85
+ case BinaryTypeMarshallingMap.ParameterListNode:
86
+ // eslint-disable-next-line max-len
87
+ ParameterListDeserializer.deserialize(buffer, node.params = {}, getFrequentParamsDeserializationMap());
88
+ break;
89
+ case BinaryTypeMarshallingMap.ExpressionOperatorNode:
90
+ case BinaryTypeMarshallingMap.ExpressionParenthesisNode:
91
+ case BinaryTypeMarshallingMap.ExpressionVariableNode:
92
+ LogicalExpressionDeserializer.deserialize(buffer, node.params = {});
93
+ break;
94
+ default:
95
+ throw new Error(`Invalid binary type: ${prop}`);
96
+ }
97
+ break;
98
+ case PreProcessorRuleMarshallingMap.Start:
99
+ node.start = buffer.readUint32();
100
+ break;
101
+ case PreProcessorRuleMarshallingMap.End:
102
+ node.end = buffer.readUint32();
103
+ break;
104
+ default:
105
+ throw new Error(`Invalid property: ${prop}`);
106
+ }
107
+ prop = buffer.readUint8();
108
+ }
109
+ }
110
+ }
111
+
112
+ export { PreProcessorCommentDeserializer };
@@ -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 { CommentRuleType, RuleCategory } from '../../nodes/index.js';
9
+ import { BaseDeserializer } from '../base-deserializer.js';
10
+ import { AdblockSyntax } from '../../utils/adblockers.js';
11
+ import { SimpleCommentMarshallingMap } from '../../marshalling-utils/comment/simple-comment-common.js';
12
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
13
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
14
+
15
+ /* eslint-disable no-param-reassign */
16
+ /**
17
+ * `SimpleCommentDeserializer` is responsible for deserializing simple comments.
18
+ *
19
+ * Some comments have a special meaning in adblock syntax, like agent comments or hints,
20
+ * but this parser is only responsible for parsing regular comments,
21
+ * whose only purpose is to provide some human-readable information.
22
+ *
23
+ * @example
24
+ * ```adblock
25
+ * ! This is a simple comment
26
+ * # This is a simple comment, but in host-like syntax
27
+ * ```
28
+ */
29
+ class SimpleCommentDeserializer extends BaseDeserializer {
30
+ /**
31
+ * Deserializes a simple comment node from binary format.
32
+ *
33
+ * @param buffer ByteBuffer for reading binary data.
34
+ * @param node Destination node.
35
+ * @throws If the binary data is malformed.
36
+ */
37
+ static deserialize(buffer, node) {
38
+ buffer.assertUint8(BinaryTypeMarshallingMap.CommentRuleNode);
39
+ node.type = CommentRuleType.CommentRule;
40
+ node.category = RuleCategory.Comment;
41
+ node.syntax = AdblockSyntax.Common;
42
+ let prop = buffer.readUint8();
43
+ while (prop !== NULL) {
44
+ switch (prop) {
45
+ case SimpleCommentMarshallingMap.Marker:
46
+ ValueDeserializer.deserialize(buffer, node.marker = {});
47
+ break;
48
+ case SimpleCommentMarshallingMap.Text:
49
+ ValueDeserializer.deserialize(buffer, node.text = {});
50
+ break;
51
+ case SimpleCommentMarshallingMap.Start:
52
+ node.start = buffer.readUint32();
53
+ break;
54
+ case SimpleCommentMarshallingMap.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 { SimpleCommentDeserializer };
@@ -0,0 +1,131 @@
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 { DomainListDeserializer } from '../misc/domain-list-deserializer.js';
9
+ import { NULL } from '../../utils/constants.js';
10
+ import { CosmeticRuleType, RuleCategory } from '../../nodes/index.js';
11
+ import { AbpSnippetInjectionBodyDeserializer } from './scriptlet-body/abp-snippet-injection-body-deserializer.js';
12
+ import { UboScriptletInjectionBodyDeserializer } from './scriptlet-body/ubo-scriptlet-injection-body-deserializer.js';
13
+ import { AdgScriptletInjectionBodyDeserializer } from './scriptlet-body/adg-scriptlet-injection-body-deserializer.js';
14
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
15
+ import { isUndefined } from '../../utils/type-guards.js';
16
+ import { BaseDeserializer } from '../base-deserializer.js';
17
+ import { ElementHidingBodyDeserializer } from './element-hiding-body-deserializer.js';
18
+ import { CssInjectionBodyDeserializer } from './css-injection-body-deserializer.js';
19
+ import { ModifierListDeserializer } from '../misc/modifier-list-deserializer.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 { getSyntaxDeserializationMap } from '../syntax-deserialization-map.js';
23
+
24
+ /* eslint-disable no-param-reassign */
25
+ /**
26
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
27
+ * as it allows us to use a single byte to represent frequently used values.
28
+ */
29
+ let cosmeticRuleSeparatorDeserializationMap;
30
+ const getCosmeticRuleSeparatorDeserializationMap = () => {
31
+ if (!cosmeticRuleSeparatorDeserializationMap) {
32
+ cosmeticRuleSeparatorDeserializationMap = new Map(Array.from(COSMETIC_RULE_SEPARATOR_SERIALIZATION_MAP).map(([key, value]) => [value, key]));
33
+ }
34
+ return cosmeticRuleSeparatorDeserializationMap;
35
+ };
36
+ /**
37
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
38
+ * as it allows us to use a single byte to represent frequently used values.
39
+ */
40
+ const COSMETIC_RULE_TYPE_DESERIALIZATION_MAP = new Map([
41
+ [BinaryTypeMarshallingMap.ElementHidingRule, CosmeticRuleType.ElementHidingRule],
42
+ [BinaryTypeMarshallingMap.CssInjectionRule, CosmeticRuleType.CssInjectionRule],
43
+ [BinaryTypeMarshallingMap.ScriptletInjectionRule, CosmeticRuleType.ScriptletInjectionRule],
44
+ [BinaryTypeMarshallingMap.JsInjectionRule, CosmeticRuleType.JsInjectionRule],
45
+ [BinaryTypeMarshallingMap.HtmlFilteringRule, CosmeticRuleType.HtmlFilteringRule],
46
+ ]);
47
+ /**
48
+ * Deserializer for cosmetic rules.
49
+ * Converts binary data into structured cosmetic rule nodes, supporting various types
50
+ * like element hiding, CSS injection, scriptlet injection, JavaScript injection, and HTML filtering.
51
+ * Handles rule type, syntax, exceptions, separators, modifiers, and domain lists.
52
+ */
53
+ class CosmeticRuleDeserializer extends BaseDeserializer {
54
+ /**
55
+ * Deserializes a cosmetic rule node from binary format.
56
+ *
57
+ * @param buffer ByteBuffer for reading binary data.
58
+ * @param node Destination node.
59
+ */
60
+ static deserialize(buffer, node) {
61
+ const type = COSMETIC_RULE_TYPE_DESERIALIZATION_MAP.get(buffer.readUint8());
62
+ if (isUndefined(type)) {
63
+ throw new Error(`Unknown rule type: ${type}`);
64
+ }
65
+ node.type = type;
66
+ node.category = RuleCategory.Cosmetic;
67
+ const syntax = getSyntaxDeserializationMap().get(buffer.readUint8()) ?? AdblockSyntax.Common;
68
+ node.syntax = syntax;
69
+ node.modifiers = undefined;
70
+ switch (type) {
71
+ case CosmeticRuleType.ElementHidingRule:
72
+ ElementHidingBodyDeserializer.deserializeElementHidingBody(buffer, node.body = {});
73
+ break;
74
+ case CosmeticRuleType.CssInjectionRule:
75
+ CssInjectionBodyDeserializer.deserialize(buffer, node.body = {});
76
+ break;
77
+ case CosmeticRuleType.JsInjectionRule:
78
+ ValueDeserializer.deserialize(buffer, node.body = {});
79
+ break;
80
+ case CosmeticRuleType.HtmlFilteringRule:
81
+ ValueDeserializer.deserialize(buffer, node.body = {});
82
+ break;
83
+ case CosmeticRuleType.ScriptletInjectionRule:
84
+ switch (syntax) {
85
+ case AdblockSyntax.Adg:
86
+ AdgScriptletInjectionBodyDeserializer.deserialize(buffer, node.body = {});
87
+ break;
88
+ case AdblockSyntax.Abp:
89
+ AbpSnippetInjectionBodyDeserializer.deserialize(buffer, node.body = {});
90
+ break;
91
+ case AdblockSyntax.Ubo:
92
+ UboScriptletInjectionBodyDeserializer.deserialize(buffer, node.body = {});
93
+ break;
94
+ default:
95
+ throw new Error('Scriptlet rule should have an explicit syntax');
96
+ }
97
+ break;
98
+ default:
99
+ throw new Error('Unknown cosmetic rule type');
100
+ }
101
+ let prop = buffer.readUint8();
102
+ while (prop !== NULL) {
103
+ switch (prop) {
104
+ case CosmeticRuleMarshallingMap.Exception:
105
+ node.exception = buffer.readUint8() === 1;
106
+ break;
107
+ case CosmeticRuleMarshallingMap.Separator:
108
+ ValueDeserializer.deserialize(buffer, node.separator = {}, getCosmeticRuleSeparatorDeserializationMap());
109
+ break;
110
+ case CosmeticRuleMarshallingMap.Modifiers:
111
+ node.modifiers = {};
112
+ ModifierListDeserializer.deserialize(buffer, node.modifiers);
113
+ break;
114
+ case CosmeticRuleMarshallingMap.Domains:
115
+ DomainListDeserializer.deserialize(buffer, node.domains = {});
116
+ break;
117
+ case CosmeticRuleMarshallingMap.Start:
118
+ node.start = buffer.readUint32();
119
+ break;
120
+ case CosmeticRuleMarshallingMap.End:
121
+ node.end = buffer.readUint32();
122
+ break;
123
+ default:
124
+ throw new Error(`Unknown property: ${prop}`);
125
+ }
126
+ prop = buffer.readUint8();
127
+ }
128
+ }
129
+ }
130
+
131
+ export { CosmeticRuleDeserializer };
@@ -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 { ValueDeserializer } from '../misc/value-deserializer.js';
8
+ import { NULL } from '../../utils/constants.js';
9
+ import { BaseDeserializer } from '../base-deserializer.js';
10
+ import { CssInjectionRuleMarshallingMap } from '../../marshalling-utils/cosmetic/body/css-injection-body-common.js';
11
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
12
+
13
+ /**
14
+ * Deserializes CSS injection rule body nodes from binary format.
15
+ */
16
+ class CssInjectionBodyDeserializer extends BaseDeserializer {
17
+ /**
18
+ * Deserializes CSS injection rule body node from binary format.
19
+ *
20
+ * @param buffer ByteBuffer for reading binary data.
21
+ * @param node Destination node.
22
+ */
23
+ static deserialize(buffer, node) {
24
+ buffer.assertUint8(BinaryTypeMarshallingMap.CssInjectionRuleBody);
25
+ node.type = 'CssInjectionRuleBody';
26
+ node.remove = false;
27
+ let prop = buffer.readUint8();
28
+ while (prop !== NULL) {
29
+ switch (prop) {
30
+ case CssInjectionRuleMarshallingMap.MediaQueryList:
31
+ ValueDeserializer.deserialize(buffer, node.mediaQueryList = {});
32
+ break;
33
+ case CssInjectionRuleMarshallingMap.SelectorList:
34
+ ValueDeserializer.deserialize(buffer, node.selectorList = {});
35
+ break;
36
+ case CssInjectionRuleMarshallingMap.DeclarationList:
37
+ ValueDeserializer.deserialize(buffer, node.declarationList = {});
38
+ break;
39
+ case CssInjectionRuleMarshallingMap.Remove:
40
+ node.remove = true;
41
+ break;
42
+ case CssInjectionRuleMarshallingMap.Start:
43
+ node.start = buffer.readUint32();
44
+ break;
45
+ case CssInjectionRuleMarshallingMap.End:
46
+ node.end = buffer.readUint32();
47
+ break;
48
+ default:
49
+ throw new Error(`Unknown property: ${prop}`);
50
+ }
51
+ prop = buffer.readUint8();
52
+ }
53
+ }
54
+ }
55
+
56
+ export { CssInjectionBodyDeserializer };
@@ -0,0 +1,48 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 GMT)
3
+ * (c) 2024 Adguard Software Ltd.
4
+ * Released under the MIT license
5
+ * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
+ */
7
+ import { BaseDeserializer } from '../base-deserializer.js';
8
+ import { NULL } from '../../utils/constants.js';
9
+ import { ElementHidingRuleMarshallingMap } from '../../marshalling-utils/cosmetic/body/element-hiding-body-common.js';
10
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
11
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
12
+
13
+ /* eslint-disable no-param-reassign */
14
+ /**
15
+ * Deserializes element hiding rule body nodes from binary data.
16
+ * Populates the provided node with the deserialized data.
17
+ */
18
+ class ElementHidingBodyDeserializer extends BaseDeserializer {
19
+ /**
20
+ * Deserializes an element hiding rule body node from binary format.
21
+ *
22
+ * @param buffer ByteBuffer for reading binary data.
23
+ * @param node Destination node.
24
+ */
25
+ static deserializeElementHidingBody(buffer, node) {
26
+ buffer.assertUint8(BinaryTypeMarshallingMap.ElementHidingRuleBody);
27
+ node.type = 'ElementHidingRuleBody';
28
+ let prop = buffer.readUint8();
29
+ while (prop !== NULL) {
30
+ switch (prop) {
31
+ case ElementHidingRuleMarshallingMap.SelectorList:
32
+ ValueDeserializer.deserialize(buffer, node.selectorList = {});
33
+ break;
34
+ case ElementHidingRuleMarshallingMap.Start:
35
+ node.start = buffer.readUint32();
36
+ break;
37
+ case ElementHidingRuleMarshallingMap.End:
38
+ node.end = buffer.readUint32();
39
+ break;
40
+ default:
41
+ throw new Error(`Unknown property: ${prop}`);
42
+ }
43
+ prop = buffer.readUint8();
44
+ }
45
+ }
46
+ }
47
+
48
+ export { ElementHidingBodyDeserializer };
@@ -0,0 +1,39 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 GMT)
3
+ * (c) 2024 Adguard Software Ltd.
4
+ * Released under the MIT license
5
+ * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
+ */
7
+ import { BaseDeserializer } from '../../base-deserializer.js';
8
+ import { ScriptletBodyDeserializer } from './scriptlet-body-deserializer.js';
9
+ import { FREQUENT_ABP_SNIPPET_ARGS_SERIALIZATION_MAP } from '../../../marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js';
10
+
11
+ /**
12
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
13
+ * as it allows us to use a single byte to represent frequently used values.
14
+ */
15
+ let frequentAbpSnippetArgsDeserializationMap;
16
+ const getFrequentAbpSnippetArgsDeserializationMap = () => {
17
+ if (!frequentAbpSnippetArgsDeserializationMap) {
18
+ frequentAbpSnippetArgsDeserializationMap = new Map(Array.from(FREQUENT_ABP_SNIPPET_ARGS_SERIALIZATION_MAP).map(([key, value]) => [value, key]));
19
+ }
20
+ return frequentAbpSnippetArgsDeserializationMap;
21
+ };
22
+ /**
23
+ * Deserializer for ABP snippet injection rule body nodes.
24
+ * Converts binary data into a structured format using a map of frequently used arguments.
25
+ */
26
+ class AbpSnippetInjectionBodyDeserializer extends BaseDeserializer {
27
+ /**
28
+ * Deserializes a scriptlet call body node from binary format.
29
+ *
30
+ * @param buffer ByteBuffer for reading binary data.
31
+ * @param node Destination node.
32
+ * @throws If the binary data is malformed.
33
+ */
34
+ static deserialize(buffer, node) {
35
+ ScriptletBodyDeserializer.deserialize(buffer, node, getFrequentAbpSnippetArgsDeserializationMap());
36
+ }
37
+ }
38
+
39
+ export { AbpSnippetInjectionBodyDeserializer };
@@ -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 { BaseDeserializer } from '../../base-deserializer.js';
8
+ import { ScriptletBodyDeserializer } from './scriptlet-body-deserializer.js';
9
+ import { FREQUENT_ADG_SCRIPTLET_ARGS_SERIALIZATION_MAP } from '../../../marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js';
10
+
11
+ /**
12
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
13
+ * as it allows us to use a single byte to represent frequently used values.
14
+ */
15
+ let frequentAdgScriptletArgsDeserializationMap;
16
+ const getFrequentAdgScriptletArgsDeserializationMap = () => {
17
+ if (!frequentAdgScriptletArgsDeserializationMap) {
18
+ frequentAdgScriptletArgsDeserializationMap = new Map(Array.from(FREQUENT_ADG_SCRIPTLET_ARGS_SERIALIZATION_MAP).map(([key, value]) => [value, key]));
19
+ }
20
+ return frequentAdgScriptletArgsDeserializationMap;
21
+ };
22
+ /**
23
+ * Deserializer for AdGuard scriptlet injection body nodes.
24
+ * Converts binary data into a structured scriptlet call body node specific to AdGuard,
25
+ * using a predefined deserialization map for frequently used scriptlet arguments.
26
+ */
27
+ class AdgScriptletInjectionBodyDeserializer extends BaseDeserializer {
28
+ /**
29
+ * Deserializes a scriptlet call body 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
+ ScriptletBodyDeserializer.deserialize(buffer, node, getFrequentAdgScriptletArgsDeserializationMap());
37
+ }
38
+ }
39
+
40
+ export { AdgScriptletInjectionBodyDeserializer };
@@ -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 { NULL } from '../../../utils/constants.js';
8
+ import { ParameterListDeserializer } from '../../misc/parameter-list-deserializer.js';
9
+ import { BaseDeserializer } from '../../base-deserializer.js';
10
+ import { AbpSnippetBodyMarshallingMap } from '../../../marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js';
11
+ import { BinaryTypeMarshallingMap } from '../../../marshalling-utils/misc/binary-type-common.js';
12
+
13
+ /**
14
+ * Deserializes binary data into scriptlet body nodes.
15
+ * Optionally uses a map of frequently used scriptlet arguments.
16
+ */
17
+ class ScriptletBodyDeserializer extends BaseDeserializer {
18
+ /**
19
+ * Deserializes a hint rule node from binary format.
20
+ *
21
+ * @param buffer ByteBuffer for reading binary data.
22
+ * @param node Destination node.
23
+ * @param frequentScriptletArgs Map of frequently used scriptlet names / arguments
24
+ * and their serialization index (optional).
25
+ * @throws If the binary data is malformed.
26
+ */
27
+ static deserialize = (buffer, node, frequentScriptletArgs) => {
28
+ buffer.assertUint8(BinaryTypeMarshallingMap.ScriptletInjectionRuleBodyNode);
29
+ node.type = 'ScriptletInjectionRuleBody';
30
+ let prop = buffer.readUint8();
31
+ while (prop !== NULL) {
32
+ switch (prop) {
33
+ case AbpSnippetBodyMarshallingMap.Children:
34
+ node.children = new Array(buffer.readUint8());
35
+ // read children
36
+ for (let i = 0; i < node.children.length; i += 1) {
37
+ ParameterListDeserializer.deserialize(buffer, node.children[i] = {}, frequentScriptletArgs);
38
+ }
39
+ break;
40
+ case AbpSnippetBodyMarshallingMap.Start:
41
+ node.start = buffer.readUint32();
42
+ break;
43
+ case AbpSnippetBodyMarshallingMap.End:
44
+ node.end = buffer.readUint32();
45
+ break;
46
+ default:
47
+ throw new Error(`Invalid property: ${prop}`);
48
+ }
49
+ prop = buffer.readUint8();
50
+ }
51
+ };
52
+ }
53
+
54
+ export { ScriptletBodyDeserializer };
@@ -0,0 +1,38 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 GMT)
3
+ * (c) 2024 Adguard Software Ltd.
4
+ * Released under the MIT license
5
+ * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
+ */
7
+ import { BaseDeserializer } from '../../base-deserializer.js';
8
+ import { ScriptletBodyDeserializer } from './scriptlet-body-deserializer.js';
9
+ import { FREQUENT_UBO_SCRIPTLET_ARGS_SERIALIZATION_MAP } from '../../../marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js';
10
+
11
+ /**
12
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
13
+ * as it allows us to use a single byte to represent frequently used values.
14
+ */
15
+ let frequentUboScriptletArgsDeserializationMap;
16
+ const getFrequentPlatformsDeserializationMap = () => {
17
+ if (!frequentUboScriptletArgsDeserializationMap) {
18
+ frequentUboScriptletArgsDeserializationMap = new Map(Array.from(FREQUENT_UBO_SCRIPTLET_ARGS_SERIALIZATION_MAP).map(([key, value]) => [value, key]));
19
+ }
20
+ return frequentUboScriptletArgsDeserializationMap;
21
+ };
22
+ /**
23
+ * Deserializes uBlock Origin scriptlet injection body nodes from binary data.
24
+ */
25
+ class UboScriptletInjectionBodyDeserializer extends BaseDeserializer {
26
+ /**
27
+ * Deserializes a scriptlet call body node from binary format.
28
+ *
29
+ * @param buffer ByteBuffer for reading binary data.
30
+ * @param node Destination node to populate with deserialized data.
31
+ * @throws If the binary data is malformed.
32
+ */
33
+ static deserialize(buffer, node) {
34
+ ScriptletBodyDeserializer.deserialize(buffer, node, getFrequentPlatformsDeserializationMap());
35
+ }
36
+ }
37
+
38
+ export { UboScriptletInjectionBodyDeserializer, getFrequentPlatformsDeserializationMap };