@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,87 @@
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 { ValueDeserializer } from './value-deserializer.js';
9
+ import { BaseDeserializer } from '../base-deserializer.js';
10
+ import { ModifierNodeMarshallingMap, FREQUENT_MODIFIERS_SERIALIZATION_MAP, FREQUENT_REDIRECT_MODIFIERS_SERIALIZATION_MAP } from '../../marshalling-utils/misc/modifier-common.js';
11
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
12
+
13
+ /* eslint-disable no-param-reassign */
14
+ /**
15
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
16
+ * as it allows us to use a single byte to represent frequently used values.
17
+ *
18
+ * @note Only 256 values can be represented this way.
19
+ */
20
+ let frequentModifiersDeserializationMap;
21
+ const getFrequentModifiersDeserializationMap = () => {
22
+ if (!frequentModifiersDeserializationMap) {
23
+ frequentModifiersDeserializationMap = new Map(Array.from(FREQUENT_MODIFIERS_SERIALIZATION_MAP).map(([key, value]) => [value, key]));
24
+ }
25
+ return frequentModifiersDeserializationMap;
26
+ };
27
+ /**
28
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
29
+ * as it allows us to use a single byte to represent frequently used values.
30
+ */
31
+ let frequentValuesDeserializationMaps;
32
+ const getFrequentValuesDeserializationMaps = () => {
33
+ if (!frequentValuesDeserializationMaps) {
34
+ frequentValuesDeserializationMaps = new Map(Array.from(FREQUENT_REDIRECT_MODIFIERS_SERIALIZATION_MAP, ([modifier, valueMap]) => [modifier, new Map(Array.from(valueMap, ([key, value]) => [value, key]))]));
35
+ }
36
+ return frequentValuesDeserializationMaps;
37
+ };
38
+ /**
39
+ * `ModifierDeserializer` is responsible for deserializing modifiers.
40
+ *
41
+ * @example
42
+ * `match-case`, `~third-party`, `domain=example.com|~example.org`
43
+ */
44
+ class ModifierDeserializer extends BaseDeserializer {
45
+ /**
46
+ * Deserializes a modifier node from binary format.
47
+ *
48
+ * @param buffer ByteBuffer for reading binary data.
49
+ * @param node Destination node.
50
+ */
51
+ static deserialize(buffer, node) {
52
+ buffer.assertUint8(BinaryTypeMarshallingMap.ModifierNode);
53
+ node.type = 'Modifier';
54
+ let prop = buffer.readUint8();
55
+ while (prop !== NULL) {
56
+ switch (prop) {
57
+ case ModifierNodeMarshallingMap.Name:
58
+ // eslint-disable-next-line max-len
59
+ ValueDeserializer.deserialize(buffer, node.name = {}, getFrequentModifiersDeserializationMap());
60
+ break;
61
+ case ModifierNodeMarshallingMap.Value:
62
+ if (node.name) {
63
+ // eslint-disable-next-line max-len
64
+ ValueDeserializer.deserialize(buffer, node.value = {}, getFrequentValuesDeserializationMaps().get(node.name.value));
65
+ }
66
+ else {
67
+ ValueDeserializer.deserialize(buffer, node.value = {});
68
+ }
69
+ break;
70
+ case ModifierNodeMarshallingMap.Exception:
71
+ node.exception = buffer.readUint8() === 1;
72
+ break;
73
+ case ModifierNodeMarshallingMap.Start:
74
+ node.start = buffer.readUint32();
75
+ break;
76
+ case ModifierNodeMarshallingMap.End:
77
+ node.end = buffer.readUint32();
78
+ break;
79
+ default:
80
+ throw new Error(`Invalid property: ${prop}.`);
81
+ }
82
+ prop = buffer.readUint8();
83
+ }
84
+ }
85
+ }
86
+
87
+ export { ModifierDeserializer };
@@ -0,0 +1,61 @@
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 { ModifierDeserializer } from './modifier-deserializer.js';
10
+ import { ModifierListNodeMarshallingMap } from '../../marshalling-utils/misc/modifier-list-common.js';
11
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
12
+
13
+ /* eslint-disable no-param-reassign */
14
+ /**
15
+ * `ModifierListDeserializer` is responsible for deserializing modifier lists. Please note that the name is not
16
+ * uniform, "modifiers" are also known as "options".
17
+ *
18
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#basic-rules-modifiers}
19
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#non-basic-rules-modifiers}
20
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#options}
21
+ */
22
+ class ModifierListDeserializer extends BaseDeserializer {
23
+ /**
24
+ * Deserializes a modifier list node from binary format.
25
+ *
26
+ * @param buffer ByteBuffer for reading binary data.
27
+ * @param node Destination node.
28
+ */
29
+ static deserialize(buffer, node) {
30
+ buffer.assertUint8(BinaryTypeMarshallingMap.ModifierListNode);
31
+ node.type = 'ModifierList';
32
+ let prop = buffer.readUint8();
33
+ while (prop !== NULL) {
34
+ switch (prop) {
35
+ case ModifierListNodeMarshallingMap.Children:
36
+ node.children = new Array(buffer.readUint16());
37
+ // read children
38
+ for (let i = 0; i < node.children.length; i += 1) {
39
+ ModifierDeserializer.deserialize(buffer, node.children[i] = {});
40
+ }
41
+ break;
42
+ case ModifierListNodeMarshallingMap.Start:
43
+ node.start = buffer.readUint32();
44
+ break;
45
+ case ModifierListNodeMarshallingMap.End:
46
+ node.end = buffer.readUint32();
47
+ break;
48
+ default:
49
+ throw new Error(`Invalid property: ${prop}.`);
50
+ }
51
+ prop = buffer.readUint8();
52
+ }
53
+ // Maybe children are not present in the binary data,
54
+ // in this case, we should initialize it as an empty array.
55
+ if (!node.children) {
56
+ node.children = [];
57
+ }
58
+ }
59
+ }
60
+
61
+ export { ModifierListDeserializer };
@@ -0,0 +1,64 @@
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 { ValueDeserializer } from './value-deserializer.js';
9
+ import { BaseDeserializer } from '../base-deserializer.js';
10
+ import { ParameterListNodeMarshallingMap } from '../../marshalling-utils/misc/parameter-list-common.js';
11
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
12
+
13
+ /**
14
+ * Deserializes binary data into parameter list nodes.
15
+ * Optionally uses a map of frequent values for optimization.
16
+ */
17
+ class ParameterListDeserializer extends BaseDeserializer {
18
+ /**
19
+ * Deserializes a parameter list node from binary format.
20
+ *
21
+ * @param buffer ByteBuffer for reading binary data.
22
+ * @param node Destination node.
23
+ * @param frequentValuesMap Optional map of frequent values.
24
+ * @throws If the binary data is malformed.
25
+ */
26
+ static deserialize(buffer, node, frequentValuesMap) {
27
+ buffer.assertUint8(BinaryTypeMarshallingMap.ParameterListNode);
28
+ node.type = 'ParameterList';
29
+ let prop = buffer.readUint8();
30
+ while (prop !== NULL) {
31
+ switch (prop) {
32
+ case ParameterListNodeMarshallingMap.Children:
33
+ node.children = new Array(buffer.readUint32());
34
+ // read children
35
+ for (let i = 0; i < node.children.length; i += 1) {
36
+ switch (buffer.peekUint8()) {
37
+ case BinaryTypeMarshallingMap.Null:
38
+ buffer.readUint8();
39
+ node.children[i] = null;
40
+ break;
41
+ case BinaryTypeMarshallingMap.ValueNode:
42
+ // eslint-disable-next-line max-len
43
+ ValueDeserializer.deserialize(buffer, node.children[i] = {}, frequentValuesMap);
44
+ break;
45
+ default:
46
+ throw new Error(`Invalid child type: ${buffer.peekUint8()}`);
47
+ }
48
+ }
49
+ break;
50
+ case ParameterListNodeMarshallingMap.Start:
51
+ node.start = buffer.readUint32();
52
+ break;
53
+ case ParameterListNodeMarshallingMap.End:
54
+ node.end = buffer.readUint32();
55
+ break;
56
+ default:
57
+ throw new Error(`Invalid property: ${prop}`);
58
+ }
59
+ prop = buffer.readUint8();
60
+ }
61
+ }
62
+ }
63
+
64
+ export { ParameterListDeserializer };
@@ -0,0 +1,50 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 GMT)
3
+ * (c) 2024 Adguard Software Ltd.
4
+ * Released under the MIT license
5
+ * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
+ */
7
+ import { NULL, EMPTY } from '../../utils/constants.js';
8
+ import { BaseDeserializer } from '../base-deserializer.js';
9
+ import { ValueNodeMarshallingMap } from '../../marshalling-utils/misc/value-common.js';
10
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
11
+
12
+ /**
13
+ * Value deserializer.
14
+ */
15
+ class ValueDeserializer extends BaseDeserializer {
16
+ /**
17
+ * Deserializes a value node from binary format.
18
+ *
19
+ * @param buffer ByteBuffer for reading binary data.
20
+ * @param node Destination node.
21
+ * @param frequentValuesMap Optional map of frequent values.
22
+ * @throws If the binary data is malformed.
23
+ */
24
+ static deserialize(buffer, node, frequentValuesMap) {
25
+ buffer.assertUint8(BinaryTypeMarshallingMap.ValueNode);
26
+ node.type = 'Value';
27
+ let prop = buffer.readUint8();
28
+ while (prop !== NULL) {
29
+ switch (prop) {
30
+ case ValueNodeMarshallingMap.Value:
31
+ node.value = buffer.readString();
32
+ break;
33
+ case ValueNodeMarshallingMap.FrequentValue:
34
+ node.value = frequentValuesMap?.get(buffer.readUint8()) ?? EMPTY;
35
+ break;
36
+ case ValueNodeMarshallingMap.Start:
37
+ node.start = buffer.readUint32();
38
+ break;
39
+ case ValueNodeMarshallingMap.End:
40
+ node.end = buffer.readUint32();
41
+ break;
42
+ default:
43
+ throw new Error(`Invalid property: ${prop}`);
44
+ }
45
+ prop = buffer.readUint8();
46
+ }
47
+ }
48
+ }
49
+
50
+ export { ValueDeserializer };
@@ -0,0 +1,67 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 GMT)
3
+ * (c) 2024 Adguard Software Ltd.
4
+ * Released under the MIT license
5
+ * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
+ */
7
+ import { NULL } from '../../utils/constants.js';
8
+ import { RuleCategory, NetworkRuleType } from '../../nodes/index.js';
9
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
10
+ import { HostnameListDeserializer } from './hostname-list-deserializer.js';
11
+ import { BaseDeserializer } from '../base-deserializer.js';
12
+ import { HostRuleMarshallingMap } from '../../marshalling-utils/misc/host-rule-common.js';
13
+ import { AdblockSyntax } from '../../utils/adblockers.js';
14
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
15
+ import { getSyntaxDeserializationMap } from '../syntax-deserialization-map.js';
16
+
17
+ /* eslint-disable no-param-reassign */
18
+ /**
19
+ * `HostRuleDeserializer` is responsible for deserializing hosts-like rules.
20
+ *
21
+ * HostRule is a structure for simple host-level rules (i.e. /etc/hosts syntax).
22
+ * It also supports "just domain" syntax. In this case, the IP will be set to 0.0.0.0.
23
+ */
24
+ class HostRuleDeserializer extends BaseDeserializer {
25
+ /**
26
+ * Deserializes a host rule node from binary format.
27
+ *
28
+ * @param buffer Input byte buffer to read from.
29
+ * @param node Destination node to write to.
30
+ */
31
+ static deserialize(buffer, node) {
32
+ buffer.assertUint8(BinaryTypeMarshallingMap.HostRuleNode);
33
+ node.category = RuleCategory.Network;
34
+ node.type = NetworkRuleType.HostRule;
35
+ let prop = buffer.readUint8();
36
+ while (prop !== NULL) {
37
+ switch (prop) {
38
+ case HostRuleMarshallingMap.Syntax:
39
+ node.syntax = getSyntaxDeserializationMap().get(buffer.readUint8()) ?? AdblockSyntax.Common;
40
+ break;
41
+ case HostRuleMarshallingMap.Ip:
42
+ node.ip = {};
43
+ ValueDeserializer.deserialize(buffer, node.ip);
44
+ break;
45
+ case HostRuleMarshallingMap.HostnameList:
46
+ node.hostnames = {};
47
+ HostnameListDeserializer.deserialize(buffer, node.hostnames);
48
+ break;
49
+ case HostRuleMarshallingMap.Comment:
50
+ node.comment = {};
51
+ ValueDeserializer.deserialize(buffer, node.comment);
52
+ break;
53
+ case HostRuleMarshallingMap.Start:
54
+ node.start = buffer.readUint32();
55
+ break;
56
+ case HostRuleMarshallingMap.End:
57
+ node.end = buffer.readUint32();
58
+ break;
59
+ default:
60
+ throw new Error(`Invalid property: ${prop}.`);
61
+ }
62
+ prop = buffer.readUint8();
63
+ }
64
+ }
65
+ }
66
+
67
+ export { HostRuleDeserializer };
@@ -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 { BaseDeserializer } from '../base-deserializer.js';
8
+ import { NULL } from '../../utils/constants.js';
9
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
10
+ import { HostnameListNodeMarshallingMap } from '../../marshalling-utils/misc/hostname-list-common.js';
11
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
12
+
13
+ /* eslint-disable no-param-reassign */
14
+ /**
15
+ * Deserializes hostname list nodes from binary format.
16
+ */
17
+ class HostnameListDeserializer extends BaseDeserializer {
18
+ /**
19
+ * Deserializes a hostname list node from binary format.
20
+ *
21
+ * @param buffer ByteBuffer for reading binary data.
22
+ * @param node Destination node.
23
+ */
24
+ static deserialize(buffer, node) {
25
+ buffer.assertUint8(BinaryTypeMarshallingMap.HostnameListNode);
26
+ node.type = 'HostnameList';
27
+ let prop = buffer.readUint8();
28
+ while (prop !== NULL) {
29
+ switch (prop) {
30
+ case HostnameListNodeMarshallingMap.Children:
31
+ node.children = new Array(buffer.readUint16());
32
+ // read children
33
+ for (let i = 0; i < node.children.length; i += 1) {
34
+ ValueDeserializer.deserialize(buffer, node.children[i] = {});
35
+ }
36
+ break;
37
+ case HostnameListNodeMarshallingMap.Start:
38
+ node.start = buffer.readUint32();
39
+ break;
40
+ case HostnameListNodeMarshallingMap.End:
41
+ node.end = buffer.readUint32();
42
+ break;
43
+ default:
44
+ throw new Error(`Unknown property: ${prop}`);
45
+ }
46
+ prop = buffer.readUint8();
47
+ }
48
+ // Maybe children are not present in the binary data,
49
+ // in this case, we should initialize it as an empty array.
50
+ if (!node.children) {
51
+ node.children = [];
52
+ }
53
+ }
54
+ }
55
+
56
+ export { HostnameListDeserializer };
@@ -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 { NetworkRuleType, RuleCategory } from '../../nodes/index.js';
9
+ import { ValueDeserializer } from '../misc/value-deserializer.js';
10
+ import { BaseDeserializer } from '../base-deserializer.js';
11
+ import { ModifierListDeserializer } from '../misc/modifier-list-deserializer.js';
12
+ import { NetworkRuleMarshallingMap } from '../../marshalling-utils/network/network-rule-common.js';
13
+ import { AdblockSyntax } from '../../utils/adblockers.js';
14
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
15
+ import { getSyntaxDeserializationMap } from '../syntax-deserialization-map.js';
16
+
17
+ /* eslint-disable no-param-reassign */
18
+ /**
19
+ * `NetworkRuleDeserializer` is responsible for deserializing network rules.
20
+ *
21
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#basic-rules}
22
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#basic}
23
+ */
24
+ class NetworkRuleDeserializer extends BaseDeserializer {
25
+ /**
26
+ * Deserializes a network rule node from binary format.
27
+ *
28
+ * @param buffer ByteBuffer for reading binary data.
29
+ * @param node Destination node.
30
+ */
31
+ static deserialize(buffer, node) {
32
+ buffer.assertUint8(BinaryTypeMarshallingMap.NetworkRuleNode);
33
+ node.type = NetworkRuleType.NetworkRule;
34
+ node.category = RuleCategory.Network;
35
+ node.modifiers = undefined;
36
+ let prop = buffer.readUint8();
37
+ while (prop !== NULL) {
38
+ switch (prop) {
39
+ case NetworkRuleMarshallingMap.Syntax:
40
+ node.syntax = getSyntaxDeserializationMap().get(buffer.readUint8()) ?? AdblockSyntax.Common;
41
+ break;
42
+ case NetworkRuleMarshallingMap.Exception:
43
+ node.exception = buffer.readUint8() === 1;
44
+ break;
45
+ case NetworkRuleMarshallingMap.Pattern:
46
+ ValueDeserializer.deserialize(buffer, node.pattern = {});
47
+ break;
48
+ case NetworkRuleMarshallingMap.ModifierList:
49
+ ModifierListDeserializer.deserialize(buffer, node.modifiers = {});
50
+ break;
51
+ case NetworkRuleMarshallingMap.Start:
52
+ node.start = buffer.readUint32();
53
+ break;
54
+ case NetworkRuleMarshallingMap.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 { NetworkRuleDeserializer };
@@ -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 { BaseDeserializer } from './base-deserializer.js';
8
+ import { CommentRuleDeserializer } from './comment/comment-rule-deserializer.js';
9
+ import { CosmeticRuleDeserializer } from './cosmetic/cosmetic-rule-deserializer.js';
10
+ import { HostRuleDeserializer } from './network/host-rule-deserializer.js';
11
+ import { NetworkRuleDeserializer } from './network/network-rule-deserializer.js';
12
+ import { EmptyRuleDeserializer } from './empty-rule-deserializer.js';
13
+ import { InvalidRuleDeserializer } from './invalid-rule-deserializer.js';
14
+ import { BinaryTypeMarshallingMap } from '../marshalling-utils/misc/binary-type-common.js';
15
+
16
+ /**
17
+ * `RuleDeserializer` is responsible for deserializing the rules.
18
+ *
19
+ * It automatically determines the category and syntax of the rule, so you can pass any kind of rule to it.
20
+ */
21
+ class RuleDeserializer extends BaseDeserializer {
22
+ /**
23
+ * Deserializes a rule node from binary format.
24
+ *
25
+ * @param buffer ByteBuffer for reading binary data.
26
+ * @param node Destination node.
27
+ */
28
+ static deserialize(buffer, node) {
29
+ // lookup instead of storing +1 byte
30
+ const type = buffer.peekUint8();
31
+ switch (type) {
32
+ case BinaryTypeMarshallingMap.AgentRuleNode:
33
+ case BinaryTypeMarshallingMap.HintRuleNode:
34
+ case BinaryTypeMarshallingMap.PreProcessorCommentRuleNode:
35
+ case BinaryTypeMarshallingMap.MetadataCommentRuleNode:
36
+ case BinaryTypeMarshallingMap.ConfigCommentRuleNode:
37
+ case BinaryTypeMarshallingMap.CommentRuleNode:
38
+ CommentRuleDeserializer.deserialize(buffer, node);
39
+ break;
40
+ case BinaryTypeMarshallingMap.ElementHidingRule:
41
+ case BinaryTypeMarshallingMap.CssInjectionRule:
42
+ case BinaryTypeMarshallingMap.ScriptletInjectionRule:
43
+ case BinaryTypeMarshallingMap.HtmlFilteringRule:
44
+ case BinaryTypeMarshallingMap.JsInjectionRule:
45
+ CosmeticRuleDeserializer.deserialize(buffer, node);
46
+ break;
47
+ case BinaryTypeMarshallingMap.NetworkRuleNode:
48
+ NetworkRuleDeserializer.deserialize(buffer, node);
49
+ break;
50
+ case BinaryTypeMarshallingMap.HostRuleNode:
51
+ HostRuleDeserializer.deserialize(buffer, node);
52
+ break;
53
+ case BinaryTypeMarshallingMap.EmptyRule:
54
+ EmptyRuleDeserializer.deserialize(buffer, node);
55
+ break;
56
+ case BinaryTypeMarshallingMap.InvalidRule:
57
+ InvalidRuleDeserializer.deserialize(buffer, node);
58
+ break;
59
+ default:
60
+ throw new Error('Unknown rule category');
61
+ }
62
+ }
63
+ }
64
+
65
+ export { RuleDeserializer };
@@ -0,0 +1,21 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 GMT)
3
+ * (c) 2024 Adguard Software Ltd.
4
+ * Released under the MIT license
5
+ * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
+ */
7
+ import { getSyntaxSerializationMap } from '../marshalling-utils/syntax-serialization-map.js';
8
+
9
+ /**
10
+ * Value map for binary deserialization. This helps to reduce the size of the serialized data,
11
+ * as it allows us to use a single byte to represent frequently used values.
12
+ */
13
+ let syntaxDeserializationMap;
14
+ const getSyntaxDeserializationMap = () => {
15
+ if (!syntaxDeserializationMap) {
16
+ syntaxDeserializationMap = new Map(Array.from(getSyntaxSerializationMap(), ([key, value]) => [value, key]));
17
+ }
18
+ return syntaxDeserializationMap;
19
+ };
20
+
21
+ export { getSyntaxDeserializationMap };
@@ -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
+ /**
8
+ * @file Customized syntax error class for Adblock Filter Parser.
9
+ */
10
+ const ERROR_NAME = 'AdblockSyntaxError';
11
+ /**
12
+ * Customized syntax error class for Adblock Filter Parser,
13
+ * which contains the location range of the error.
14
+ */
15
+ class AdblockSyntaxError extends SyntaxError {
16
+ /**
17
+ * Start offset of the error.
18
+ */
19
+ start;
20
+ /**
21
+ * End offset of the error.
22
+ */
23
+ end;
24
+ /**
25
+ * Constructs a new `AdblockSyntaxError` instance.
26
+ *
27
+ * @param message Error message.
28
+ * @param start Start offset of the error.
29
+ * @param end End offset of the error.
30
+ */
31
+ constructor(message, start, end) {
32
+ super(message);
33
+ this.name = ERROR_NAME;
34
+ this.start = start;
35
+ this.end = end;
36
+ }
37
+ }
38
+
39
+ export { AdblockSyntaxError };
@@ -0,0 +1,37 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 GMT)
3
+ * (c) 2024 Adguard Software Ltd.
4
+ * Released under the MIT license
5
+ * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
+ */
7
+ /**
8
+ * @file Customized error for binary schema mismatch.
9
+ */
10
+ const ERROR_NAME = 'BinarySchemaMismatchError';
11
+ /**
12
+ * Customized error for binary schema mismatch.
13
+ */
14
+ class BinarySchemaMismatchError extends Error {
15
+ /**
16
+ * Expected schema version.
17
+ */
18
+ expectedVersion;
19
+ /**
20
+ * Actual schema version.
21
+ */
22
+ actualVersion;
23
+ /**
24
+ * Constructs a new `BinarySchemaMismatchError` instance.
25
+ *
26
+ * @param expectedVersion Expected schema version.
27
+ * @param actualVersion Actual schema version.
28
+ */
29
+ constructor(expectedVersion, actualVersion) {
30
+ super(`Expected schema version ${expectedVersion}, but got ${actualVersion}`);
31
+ this.name = ERROR_NAME;
32
+ this.expectedVersion = expectedVersion;
33
+ this.actualVersion = actualVersion;
34
+ }
35
+ }
36
+
37
+ export { BinarySchemaMismatchError };
@@ -0,0 +1,31 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 GMT)
3
+ * (c) 2024 Adguard Software Ltd.
4
+ * Released under the MIT license
5
+ * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
+ */
7
+ /**
8
+ * @file Customized error class for not implemented features.
9
+ */
10
+ const ERROR_NAME = 'NotImplementedError';
11
+ const BASE_MESSAGE = 'Not implemented';
12
+ /**
13
+ * Customized error class for not implemented features.
14
+ */
15
+ class NotImplementedError extends Error {
16
+ /**
17
+ * Constructs a new `NotImplementedError` instance.
18
+ *
19
+ * @param message Additional error message (optional)
20
+ */
21
+ constructor(message = undefined) {
22
+ // Prepare the full error message
23
+ const fullMessage = message
24
+ ? `${BASE_MESSAGE}: ${message}`
25
+ : BASE_MESSAGE;
26
+ super(fullMessage);
27
+ this.name = ERROR_NAME;
28
+ }
29
+ }
30
+
31
+ export { NotImplementedError };