@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,53 @@
1
+ /*
2
+ * AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 GMT)
3
+ * (c) 2024 Adguard Software Ltd.
4
+ * Released under the MIT license
5
+ * https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
6
+ */
7
+ import { BaseSerializer } from '../base-serializer.js';
8
+ import { isUndefined } from '../../utils/type-guards.js';
9
+ import { UINT16_MAX, NULL } from '../../utils/constants.js';
10
+ import { ValueSerializer } from '../misc/value-serializer.js';
11
+ import { HostnameListNodeMarshallingMap } from '../../marshalling-utils/misc/hostname-list-common.js';
12
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
13
+
14
+ /**
15
+ * Serializer for hostname list nodes.
16
+ */
17
+ class HostnameListSerializer extends BaseSerializer {
18
+ /**
19
+ * Serializes a hostname list node to binary format.
20
+ *
21
+ * @param node Node to serialize.
22
+ * @param buffer ByteBuffer for writing binary data.
23
+ */
24
+ static serialize(node, buffer) {
25
+ buffer.writeUint8(BinaryTypeMarshallingMap.HostnameListNode);
26
+ if (!isUndefined(node.start)) {
27
+ buffer.writeUint8(HostnameListNodeMarshallingMap.Start);
28
+ buffer.writeUint32(node.start);
29
+ }
30
+ if (!isUndefined(node.end)) {
31
+ buffer.writeUint8(HostnameListNodeMarshallingMap.End);
32
+ buffer.writeUint32(node.end);
33
+ }
34
+ const count = node.children.length;
35
+ // If there are no children, we do not write any data related to them, to avoid using unnecessary storage,
36
+ // but children is a required field, so during deserialization we should initialize it as an empty array,
37
+ // if there are no children in the binary data.
38
+ if (count) {
39
+ // note: we store the count, because re-construction of the array is faster if we know the length
40
+ if (count > UINT16_MAX) {
41
+ throw new Error(`Too many children: ${count}, the limit is ${UINT16_MAX}`);
42
+ }
43
+ buffer.writeUint8(HostnameListNodeMarshallingMap.Children);
44
+ buffer.writeUint16(count);
45
+ for (let i = 0; i < count; i += 1) {
46
+ ValueSerializer.serialize(node.children[i], buffer);
47
+ }
48
+ }
49
+ buffer.writeUint8(NULL);
50
+ }
51
+ }
52
+
53
+ export { HostnameListSerializer };
@@ -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 { isUndefined } from '../../utils/type-guards.js';
9
+ import { ValueSerializer } from '../misc/value-serializer.js';
10
+ import { BaseSerializer } from '../base-serializer.js';
11
+ import { ModifierListSerializer } from '../misc/modifier-list-serializer.js';
12
+ import { NetworkRuleMarshallingMap } from '../../marshalling-utils/network/network-rule-common.js';
13
+ import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
14
+ import { getSyntaxSerializationMap } from '../../marshalling-utils/syntax-serialization-map.js';
15
+
16
+ /**
17
+ * `NetworkRuleSerializer` is responsible for serializing network rules.
18
+ *
19
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#basic-rules}
20
+ * @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#basic}
21
+ */
22
+ class NetworkRuleSerializer extends BaseSerializer {
23
+ /**
24
+ * Serializes a network rule node to binary format.
25
+ *
26
+ * @param node Node to serialize.
27
+ * @param buffer ByteBuffer for writing binary data.
28
+ */
29
+ // TODO: add support for raws, if ever needed
30
+ static serialize(node, buffer) {
31
+ buffer.writeUint8(BinaryTypeMarshallingMap.NetworkRuleNode);
32
+ buffer.writeUint8(NetworkRuleMarshallingMap.Syntax);
33
+ buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
34
+ buffer.writeUint8(NetworkRuleMarshallingMap.Exception);
35
+ buffer.writeUint8(node.exception ? 1 : 0);
36
+ buffer.writeUint8(NetworkRuleMarshallingMap.Pattern);
37
+ ValueSerializer.serialize(node.pattern, buffer);
38
+ if (!isUndefined(node.modifiers)) {
39
+ buffer.writeUint8(NetworkRuleMarshallingMap.ModifierList);
40
+ ModifierListSerializer.serialize(node.modifiers, buffer);
41
+ }
42
+ if (!isUndefined(node.start)) {
43
+ buffer.writeUint8(NetworkRuleMarshallingMap.Start);
44
+ buffer.writeUint32(node.start);
45
+ }
46
+ if (!isUndefined(node.end)) {
47
+ buffer.writeUint8(NetworkRuleMarshallingMap.End);
48
+ buffer.writeUint32(node.end);
49
+ }
50
+ buffer.writeUint8(NULL);
51
+ }
52
+ }
53
+
54
+ export { NetworkRuleSerializer };
@@ -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 { RuleCategory, NetworkRuleType } from '../nodes/index.js';
8
+ import { BaseSerializer } from './base-serializer.js';
9
+ import { CommentRuleSerializer } from './comment/comment-rule-serializer.js';
10
+ import { CosmeticRuleSerializer } from './cosmetic/cosmetic-rule-serializer.js';
11
+ import { HostRuleSerializer } from './network/host-rule-serializer.js';
12
+ import { NetworkRuleSerializer } from './network/network-rule-serializer.js';
13
+ import { EmptyRuleSerializer } from './empty-rule-serializer.js';
14
+ import { InvalidRuleSerializer } from './invalid-rule-serializer.js';
15
+
16
+ /**
17
+ * `RuleSerializer` is responsible for serializing 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 RuleSerializer extends BaseSerializer {
22
+ /**
23
+ * Serializes a rule node to binary format.
24
+ *
25
+ * @param node Node to serialize.
26
+ * @param buffer ByteBuffer for writing binary data.
27
+ */
28
+ // TODO: add support for raws, if ever needed
29
+ static serialize(node, buffer) {
30
+ switch (node.category) {
31
+ case RuleCategory.Comment:
32
+ CommentRuleSerializer.serialize(node, buffer);
33
+ break;
34
+ case RuleCategory.Cosmetic:
35
+ CosmeticRuleSerializer.serialize(node, buffer);
36
+ break;
37
+ case RuleCategory.Network:
38
+ switch (node.type) {
39
+ case NetworkRuleType.HostRule:
40
+ HostRuleSerializer.serialize(node, buffer);
41
+ break;
42
+ case NetworkRuleType.NetworkRule:
43
+ NetworkRuleSerializer.serialize(node, buffer);
44
+ break;
45
+ default:
46
+ throw new Error('Unknown network rule type');
47
+ }
48
+ break;
49
+ case RuleCategory.Empty:
50
+ EmptyRuleSerializer.serialize(node, buffer);
51
+ break;
52
+ case RuleCategory.Invalid:
53
+ InvalidRuleSerializer.serialize(node, buffer);
54
+ break;
55
+ default:
56
+ throw new Error('Unknown rule category');
57
+ }
58
+ }
59
+ }
60
+
61
+ export { RuleSerializer };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @file Custom clone functions for AST nodes, this is probably the most efficient way to clone AST nodes.
3
+ * @todo Maybe move them to parser classes as 'clone' methods
4
+ */
5
+ import { type ParameterList, type DomainList, type ModifierList } from '../nodes';
6
+ /**
7
+ * Clones a scriptlet rule node.
8
+ *
9
+ * @param node Node to clone
10
+ * @returns Cloned node
11
+ */
12
+ export declare function cloneScriptletRuleNode(node: ParameterList): ParameterList;
13
+ /**
14
+ * Clones a domain list node.
15
+ *
16
+ * @param node Node to clone
17
+ * @returns Cloned node
18
+ */
19
+ export declare function cloneDomainListNode(node: DomainList): DomainList;
20
+ /**
21
+ * Clones a modifier list node.
22
+ *
23
+ * @param node Node to clone
24
+ * @returns Cloned node
25
+ */
26
+ export declare function cloneModifierListNode(node: ModifierList): ModifierList;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file Utility functions for working with filter list nodes
3
+ */
4
+ import { type AnyRule, type FilterList } from '../nodes';
5
+ /**
6
+ * Creates a filter list node
7
+ *
8
+ * @param rules Rules to put in the list (optional, defaults to an empty list)
9
+ * @returns Filter list node
10
+ */
11
+ export declare function createFilterListNode(rules?: AnyRule[]): FilterList;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file Utility functions for working with modifier nodes
3
+ */
4
+ import { type Modifier, type ModifierList } from '../nodes';
5
+ /**
6
+ * Creates a modifier node
7
+ *
8
+ * @param name Name of the modifier
9
+ * @param value Value of the modifier
10
+ * @param exception Whether the modifier is an exception
11
+ * @returns Modifier node
12
+ */
13
+ export declare function createModifierNode(name: string, value?: string | undefined, exception?: boolean): Modifier;
14
+ /**
15
+ * Creates a modifier list node
16
+ *
17
+ * @param modifiers Modifiers to put in the list (optional, defaults to an empty list)
18
+ * @returns Modifier list node
19
+ */
20
+ export declare function createModifierListNode(modifiers?: Modifier[]): ModifierList;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file Utility functions for working with network rule nodes
3
+ */
4
+ import { type ModifierList, type NetworkRule } from '../nodes';
5
+ import { AdblockSyntax } from '../utils/adblockers';
6
+ /**
7
+ * Creates a network rule node
8
+ *
9
+ * @param pattern Rule pattern
10
+ * @param modifiers Rule modifiers (optional, default: undefined)
11
+ * @param exception Exception rule flag (optional, default: false)
12
+ * @param syntax Adblock syntax (optional, default: Common)
13
+ * @returns Network rule node
14
+ */
15
+ export declare function createNetworkRuleNode(pattern: string, modifiers?: ModifierList | undefined, exception?: boolean, syntax?: AdblockSyntax): NetworkRule;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * @file Utility functions for working with scriptlet nodes
3
+ */
4
+ import { type ParameterList } from '../nodes';
5
+ import { type QuoteType } from '../utils/quotes';
6
+ /**
7
+ * Function to transform a parameter of the scriptlet node.
8
+ *
9
+ * @param param Parameter to transform or null if the parameter is not present.
10
+ *
11
+ * @returns Transformed parameter or null if the parameter should be removed.
12
+ */
13
+ type ParamTransformer = (param: string | null) => string | null;
14
+ /**
15
+ * Get name of the scriptlet from the scriptlet node
16
+ *
17
+ * @param scriptletNode Scriptlet node to get name of
18
+ * @returns Name of the scriptlet
19
+ * @throws If the scriptlet is empty
20
+ */
21
+ export declare function getScriptletName(scriptletNode: ParameterList): string;
22
+ /**
23
+ * Transform the nth argument of the scriptlet node
24
+ *
25
+ * @param scriptletNode Scriptlet node to transform argument of
26
+ * @param index Index of the argument to transform (index 0 is the scriptlet name)
27
+ * @param transform Function to transform the argument
28
+ */
29
+ export declare function transformNthScriptletArgument(scriptletNode: ParameterList, index: number, transform: ParamTransformer): void;
30
+ /**
31
+ * Transform all arguments of the scriptlet node
32
+ *
33
+ * @param scriptletNode Scriptlet node to transform arguments of
34
+ * @param transform Function to transform the arguments
35
+ */
36
+ export declare function transformAllScriptletArguments(scriptletNode: ParameterList, transform: ParamTransformer): void;
37
+ /**
38
+ * Set name of the scriptlet.
39
+ * Modifies input `scriptletNode` if needed.
40
+ *
41
+ * @param scriptletNode Scriptlet node to set name of
42
+ * @param name Name to set
43
+ */
44
+ export declare function setScriptletName(scriptletNode: ParameterList, name: string): void;
45
+ /**
46
+ * Set quote type of the scriptlet parameters
47
+ *
48
+ * @param scriptletNode Scriptlet node to set quote type of
49
+ * @param quoteType Preferred quote type
50
+ */
51
+ export declare function setScriptletQuoteType(scriptletNode: ParameterList, quoteType: QuoteType): void;
52
+ export {};
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Common class for the ABP snippet injection body.
3
+ * This class contains shared constants and utilities for handling ABP snippet injection bodies.
4
+ */
5
+ export declare class AbpSnippetInjectionBodyCommon {
6
+ /**
7
+ * Error messages used by the parser and generator.
8
+ */
9
+ static ERROR_MESSAGES: {
10
+ /**
11
+ * Error message indicating that an ABP snippet call is empty.
12
+ */
13
+ EMPTY_SCRIPTLET_CALL: string;
14
+ };
15
+ }
@@ -0,0 +1,10 @@
1
+ import { AdblockSyntax } from '../utils/adblockers';
2
+ /**
3
+ * Returns the adblock syntax based on the adblock name parsed from the agent type comment.
4
+ * Needed for modifiers validation of network rules by AGLint.
5
+ *
6
+ * @param name Adblock name.
7
+ *
8
+ * @returns Adblock syntax.
9
+ */
10
+ export declare const getAdblockSyntax: (name: string) => AdblockSyntax;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Known uBO-specific pseudo-class names.
3
+ */
4
+ export declare const UboPseudoName: {
5
+ readonly MatchesMedia: "matches-media";
6
+ readonly MatchesPath: "matches-path";
7
+ readonly Remove: "remove";
8
+ readonly Style: "style";
9
+ };
10
+ export type UboPseudoName = typeof UboPseudoName[keyof typeof UboPseudoName];
@@ -0,0 +1,157 @@
1
+ /**
2
+ * @file Provides common compatibility table methods.
3
+ */
4
+ import { type BaseCompatibilityDataSchema } from './schemas';
5
+ import { GenericPlatform, type SpecificPlatform } from './platforms';
6
+ import { type CompatibilityTable } from './types';
7
+ import { AdblockSyntax } from '../utils/adblockers';
8
+ /**
9
+ * Lists all supported entity records by a product.
10
+ *
11
+ * Keys are compatibility flags, values are compatibility data records.
12
+ *
13
+ * @template T Compatibility data schema.
14
+ */
15
+ export type ProductRecords<T> = {
16
+ [key: string]: T;
17
+ };
18
+ /**
19
+ * Defines a compatibility table row by product.
20
+ *
21
+ * Keys are Adblock syntaxes, values are product records.
22
+ *
23
+ * @template T Compatibility data schema.
24
+ */
25
+ export type RowByProduct<T> = {
26
+ [AdblockSyntax.Adg]: ProductRecords<T>;
27
+ [AdblockSyntax.Ubo]: ProductRecords<T>;
28
+ [AdblockSyntax.Abp]: ProductRecords<T>;
29
+ };
30
+ /**
31
+ * Defines multiple compatibility table rows by product.
32
+ *
33
+ * @template T Compatibility data schema.
34
+ */
35
+ export type RowsByProduct<T> = RowByProduct<T>[];
36
+ /**
37
+ * Single platform records type.
38
+ *
39
+ * Keys are platform enums values, values are compatibility data records.
40
+ *
41
+ * @template T Compatibility data schema.
42
+ */
43
+ type SinglePlatformRecords<T> = {
44
+ [key: string]: T;
45
+ };
46
+ /**
47
+ * Name transformer function type. This function is used to normalize compatibility data names before processing them,
48
+ * e.g. converting to lowercase, remove unnecessary prefixes, etc.
49
+ *
50
+ * @param name Compatibility data name.
51
+ *
52
+ * @returns Normalized name.
53
+ */
54
+ type NameTransformer = (name: string) => string;
55
+ /**
56
+ * Base compatibility table class which provides common methods to work with compatibility data.
57
+ *
58
+ * @template T Compatibility data schema.
59
+ */
60
+ export declare abstract class CompatibilityTableBase<T extends BaseCompatibilityDataSchema> {
61
+ /**
62
+ * Compatibility table data.
63
+ */
64
+ private data;
65
+ /**
66
+ * Optional name transformer function. If provided,
67
+ * it will be called in all methods before processing compatibility data names.
68
+ */
69
+ private readonly nameTransformer;
70
+ /**
71
+ * Creates a new instance of the common compatibility table.
72
+ *
73
+ * @param data Compatibility table data.
74
+ * @param nameTransformer Optional name transformer function.
75
+ */
76
+ constructor(data: CompatibilityTable<T>, nameTransformer?: NameTransformer | null);
77
+ /**
78
+ * Helper method to get a 'row' from the compatibility table data by name.
79
+ *
80
+ * @param name Compatibility data name.
81
+ * @returns Compatibility table row storage or `null` if not found.
82
+ */
83
+ private getRowStorage;
84
+ /**
85
+ * Checks whether a compatibility data `name` exists for any platform.
86
+ *
87
+ * @note Technically, do the same as `exists()` method with generic platform _any_
88
+ * but it is faster because it does not apply complex logic.
89
+ *
90
+ * @param name Compatibility data name.
91
+ *
92
+ * @returns True if the compatibility data exists, false otherwise.
93
+ */
94
+ existsAny(name: string): boolean;
95
+ /**
96
+ * Checks whether a compatibility data `name` exists for a specified platform.
97
+ *
98
+ * @param name Compatibility data name.
99
+ * @param platform Specific or generic platform.
100
+ *
101
+ * @returns True if the compatibility data exists, false otherwise.
102
+ */
103
+ exists(name: string, platform: SpecificPlatform | GenericPlatform): boolean;
104
+ /**
105
+ * Returns a compatibility data by name and specific platform.
106
+ *
107
+ * @param name The name of the compatibility data.
108
+ * @param platform The specific platform.
109
+ *
110
+ * @returns A single compatibility data or `null` if not found.
111
+ */
112
+ getSingle(name: string, platform: SpecificPlatform): T | null;
113
+ /**
114
+ * Returns all compatibility data records for name and specified platform.
115
+ *
116
+ * @param name Compatibility data name.
117
+ * @param platform Specific or generic platform.
118
+ *
119
+ * @returns Multiple records grouped by platforms.
120
+ * Technically, it is an object where keys are platform enums values and values are compatibility data records.
121
+ *
122
+ * @note Platform enum values can be converted to string names using {@link getSpecificPlatformName} on demand.
123
+ */
124
+ getMultiple(name: string, platform: SpecificPlatform | GenericPlatform): SinglePlatformRecords<T> | null;
125
+ /**
126
+ * Returns all compatibility data records for the specified platform.
127
+ *
128
+ * @param platform Specific or generic platform.
129
+ *
130
+ * @returns Array of multiple records grouped by platforms.
131
+ */
132
+ getAllMultiple(platform: SpecificPlatform | GenericPlatform): SinglePlatformRecords<T>[];
133
+ /**
134
+ * Returns the first compatibility data record for name and specified platform.
135
+ *
136
+ * @param name Compatibility data name.
137
+ * @param platform Specific or generic platform.
138
+ *
139
+ * @returns First found compatibility data record or `null` if not found.
140
+ */
141
+ getFirst(name: string, platform: SpecificPlatform | GenericPlatform): T | null;
142
+ /**
143
+ * Returns all compatibility data records for the specified name.
144
+ *
145
+ * @param name Compatibility data name.
146
+ *
147
+ * @returns Array of multiple records grouped by platforms.
148
+ */
149
+ getRow(name: string): T[];
150
+ /**
151
+ * Returns all compatibility data grouped by products.
152
+ *
153
+ * @returns Array of multiple records grouped by products.
154
+ */
155
+ getRowsByProduct(): RowsByProduct<T>;
156
+ }
157
+ export {};
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @file Provides compatibility table data loading.
3
+ */
4
+ import { type CompatibilityTable } from './types';
5
+ /**
6
+ * Compatibility table data for scriptlets.
7
+ */
8
+ export declare const scriptletsCompatibilityTableData: CompatibilityTable<{
9
+ name: string;
10
+ description: string | null;
11
+ aliases: string[] | null;
12
+ docs: string | null;
13
+ versionAdded: string | null;
14
+ versionRemoved: string | null;
15
+ deprecated: boolean;
16
+ deprecationMessage: string | null;
17
+ removed: boolean;
18
+ removalMessage: string | null;
19
+ parameters?: {
20
+ name: string;
21
+ debug: boolean;
22
+ pattern: string | null;
23
+ description: string | null;
24
+ default: string | null;
25
+ required: boolean;
26
+ }[] | undefined;
27
+ }>;
28
+ /**
29
+ * Compatibility table data for redirects.
30
+ */
31
+ export declare const redirectsCompatibilityTableData: CompatibilityTable<{
32
+ name: string;
33
+ description: string | null;
34
+ aliases: string[] | null;
35
+ docs: string | null;
36
+ versionAdded: string | null;
37
+ versionRemoved: string | null;
38
+ deprecated: boolean;
39
+ deprecationMessage: string | null;
40
+ removed: boolean;
41
+ removalMessage: string | null;
42
+ isBlocking: boolean;
43
+ resourceTypes: ("object" | "image" | "other" | "font" | "media" | "ping" | "script" | "stylesheet" | "websocket" | "xmlhttprequest" | "main_frame" | "sub_frame")[];
44
+ }>;
45
+ /**
46
+ * Compatibility table data for modifiers.
47
+ */
48
+ export declare const modifiersCompatibilityTableData: CompatibilityTable<{
49
+ name: string;
50
+ description: string | null;
51
+ aliases: string[] | null;
52
+ docs: string | null;
53
+ versionAdded: string | null;
54
+ versionRemoved: string | null;
55
+ deprecated: boolean;
56
+ deprecationMessage: string | null;
57
+ removed: boolean;
58
+ removalMessage: string | null;
59
+ conflicts: string[] | null;
60
+ inverseConflicts: boolean;
61
+ assignable: boolean;
62
+ negatable: boolean;
63
+ blockOnly: boolean;
64
+ exceptionOnly: boolean;
65
+ valueOptional: boolean;
66
+ valueFormat: string | null;
67
+ valueFormatFlags: string | null;
68
+ }>;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @file Compatibility tables variables and types reexport.
3
+ */
4
+ export { modifiersCompatibilityTable } from './modifiers';
5
+ export { redirectsCompatibilityTable } from './redirects';
6
+ export { scriptletsCompatibilityTable } from './scriptlets';
7
+ export * from './types';
8
+ export * from './platforms';
9
+ export type { ProductRecords, RowByProduct, RowsByProduct, } from './base';
10
+ export { parseRawPlatforms } from './schemas';
11
+ export { isGenericPlatform, getPlatformId, getSpecificPlatformName, } from './utils/platform-helpers';
12
+ export { ResourceType, } from './schemas/resource-type';
13
+ export { getResourceTypeModifier, isValidResourceType, } from './utils/resource-type-helpers';
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @file Compatibility tables for modifiers.
3
+ */
4
+ import { CompatibilityTableBase } from './base';
5
+ import { type ModifierDataSchema } from './schemas';
6
+ import { type CompatibilityTable } from './types';
7
+ /**
8
+ * Compatibility table for modifiers.
9
+ */
10
+ declare class ModifiersCompatibilityTable extends CompatibilityTableBase<ModifierDataSchema> {
11
+ /**
12
+ * Creates a new instance of the compatibility table for modifiers.
13
+ *
14
+ * @param data Compatibility table data.
15
+ */
16
+ constructor(data: CompatibilityTable<ModifierDataSchema>);
17
+ }
18
+ /**
19
+ * Compatibility table instance for modifiers.
20
+ */
21
+ export declare const modifiersCompatibilityTable: ModifiersCompatibilityTable;
22
+ export {};
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @file Provides platform enums.
3
+ * The difference between specific and generic platforms is that specific platforms are individual platforms
4
+ * (e.g. AdGuard for Windows, AdGuard for Android, etc.),
5
+ * while generic platforms are groups of specific platforms
6
+ * (e.g. AdGuard for any OS, AdGuard for any Chromium-based extension, etc.).
7
+ */
8
+ /**
9
+ * List of specific platforms.
10
+ */
11
+ export declare const SpecificPlatform: {
12
+ readonly AdgOsWindows: 1;
13
+ readonly AdgOsMac: number;
14
+ readonly AdgOsAndroid: number;
15
+ readonly AdgExtChrome: number;
16
+ readonly AdgExtOpera: number;
17
+ readonly AdgExtEdge: number;
18
+ readonly AdgExtFirefox: number;
19
+ readonly AdgCbAndroid: number;
20
+ readonly AdgCbIos: number;
21
+ readonly AdgCbSafari: number;
22
+ readonly UboExtChrome: number;
23
+ readonly UboExtOpera: number;
24
+ readonly UboExtEdge: number;
25
+ readonly UboExtFirefox: number;
26
+ readonly AbpExtChrome: number;
27
+ readonly AbpExtOpera: number;
28
+ readonly AbpExtEdge: number;
29
+ readonly AbpExtFirefox: number;
30
+ };
31
+ export type SpecificPlatform = typeof SpecificPlatform[keyof typeof SpecificPlatform];
32
+ /**
33
+ * List of generic platforms (combinations of specific platforms).
34
+ */
35
+ export declare const GenericPlatform: {
36
+ readonly AdgOsAny: number;
37
+ readonly AdgSafariAny: number;
38
+ readonly AdgExtChromium: number;
39
+ readonly AdgExtAny: number;
40
+ readonly AdgAny: number;
41
+ readonly UboExtChromium: number;
42
+ readonly UboExtAny: number;
43
+ readonly UboAny: number;
44
+ readonly AbpExtChromium: number;
45
+ readonly AbpExtAny: number;
46
+ readonly AbpAny: number;
47
+ readonly Any: number;
48
+ };
49
+ export type GenericPlatform = typeof GenericPlatform[keyof typeof GenericPlatform];