@adguard/agtree 2.1.3 → 3.0.0

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 (734) hide show
  1. package/dist/cjs/ast-utils/clone.js +65 -0
  2. package/dist/cjs/ast-utils/modifiers.js +56 -0
  3. package/dist/cjs/ast-utils/network-rules.js +43 -0
  4. package/dist/cjs/ast-utils/scriptlets.js +93 -0
  5. package/dist/cjs/common/abp-snippet-injection-body-common.js +18 -0
  6. package/dist/cjs/common/agent-common.js +58 -0
  7. package/dist/cjs/common/ubo-selector-common.js +18 -0
  8. package/dist/cjs/compatibility-tables/base.js +264 -0
  9. package/dist/cjs/compatibility-tables/compatibility-table-data.js +15 -0
  10. package/dist/cjs/compatibility-tables/modifiers.js +57 -0
  11. package/dist/cjs/compatibility-tables/platforms.js +58 -0
  12. package/dist/cjs/compatibility-tables/redirects.js +102 -0
  13. package/dist/cjs/compatibility-tables/schemas/base.js +116 -0
  14. package/dist/cjs/compatibility-tables/schemas/modifier.js +107 -0
  15. package/dist/cjs/compatibility-tables/schemas/platform.js +71 -0
  16. package/dist/cjs/compatibility-tables/schemas/redirect.js +31 -0
  17. package/dist/cjs/compatibility-tables/schemas/resource-type.js +39 -0
  18. package/dist/cjs/compatibility-tables/schemas/scriptlet.js +81 -0
  19. package/dist/cjs/compatibility-tables/scriptlets.js +30 -0
  20. package/dist/cjs/compatibility-tables/utils/platform-helpers.js +112 -0
  21. package/dist/cjs/compatibility-tables/utils/resource-type-helpers.js +64 -0
  22. package/dist/cjs/compatibility-tables/utils/zod-camelcase.js +27 -0
  23. package/dist/cjs/converter/base-interfaces/base-converter.js +61 -0
  24. package/dist/cjs/converter/base-interfaces/conversion-result.js +41 -0
  25. package/dist/cjs/converter/base-interfaces/rule-converter-base.js +62 -0
  26. package/dist/cjs/converter/comment/index.js +56 -0
  27. package/dist/cjs/converter/cosmetic/css.js +71 -0
  28. package/dist/cjs/converter/cosmetic/element-hiding.js +64 -0
  29. package/dist/cjs/converter/cosmetic/header-removal.js +126 -0
  30. package/dist/cjs/converter/cosmetic/html.js +384 -0
  31. package/dist/cjs/converter/cosmetic/index.js +120 -0
  32. package/dist/cjs/converter/cosmetic/rule-modifiers/adg.js +81 -0
  33. package/dist/cjs/converter/cosmetic/scriptlet.js +356 -0
  34. package/dist/cjs/converter/css/index.js +193 -0
  35. package/dist/cjs/converter/data/css.js +133 -0
  36. package/dist/cjs/converter/filter-list.js +90 -0
  37. package/dist/cjs/converter/index.js +15 -0
  38. package/dist/cjs/converter/misc/network-rule-modifier.js +313 -0
  39. package/dist/cjs/converter/network/index.js +101 -0
  40. package/dist/cjs/converter/raw-filter-list.js +58 -0
  41. package/dist/cjs/converter/rule.js +83 -0
  42. package/dist/cjs/deserializer/base-deserializer.js +31 -0
  43. package/dist/cjs/deserializer/comment/agent-comment-deserializer.js +76 -0
  44. package/dist/cjs/deserializer/comment/agent-deserializer.js +67 -0
  45. package/dist/cjs/deserializer/comment/comment-rule-deserializer.js +109 -0
  46. package/dist/cjs/deserializer/comment/config-comment-deserializer.js +113 -0
  47. package/dist/cjs/deserializer/comment/hint-comment-deserializer.js +69 -0
  48. package/dist/cjs/deserializer/comment/hint-deserializer.js +88 -0
  49. package/dist/cjs/deserializer/comment/metadata-comment-deserializer.js +71 -0
  50. package/dist/cjs/deserializer/comment/pre-processor-comment-deserializer.js +114 -0
  51. package/dist/cjs/deserializer/comment/simple-comment-deserializer.js +67 -0
  52. package/dist/cjs/deserializer/cosmetic/cosmetic-rule-deserializer.js +127 -0
  53. package/dist/cjs/deserializer/cosmetic/css-injection-body-deserializer.js +55 -0
  54. package/dist/cjs/deserializer/cosmetic/element-hiding-body-deserializer.js +46 -0
  55. package/dist/cjs/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +37 -0
  56. package/dist/cjs/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +37 -0
  57. package/dist/cjs/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +52 -0
  58. package/dist/cjs/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +38 -0
  59. package/dist/cjs/deserializer/empty-rule-deserializer.js +46 -0
  60. package/dist/cjs/deserializer/filterlist-deserializer.js +83 -0
  61. package/dist/cjs/deserializer/index.js +15 -0
  62. package/dist/cjs/deserializer/invalid-rule-deserializer.js +48 -0
  63. package/dist/cjs/deserializer/invalid-rule-error-node-deserializer.js +48 -0
  64. package/dist/cjs/deserializer/misc/domain-list-deserializer.js +66 -0
  65. package/dist/cjs/deserializer/misc/list-item-deserializer.js +65 -0
  66. package/dist/cjs/deserializer/misc/list-items-deserializer.js +28 -0
  67. package/dist/cjs/deserializer/misc/logical-expression-deserializer.js +199 -0
  68. package/dist/cjs/deserializer/misc/modifier-deserializer.js +89 -0
  69. package/dist/cjs/deserializer/misc/modifier-list-deserializer.js +58 -0
  70. package/dist/cjs/deserializer/misc/parameter-list-deserializer.js +62 -0
  71. package/dist/cjs/deserializer/misc/value-deserializer.js +52 -0
  72. package/dist/cjs/deserializer/network/host-rule-deserializer.js +81 -0
  73. package/dist/cjs/deserializer/network/hostname-list-deserializer.js +50 -0
  74. package/dist/cjs/deserializer/network/network-rule-deserializer.js +67 -0
  75. package/dist/cjs/deserializer/rule-deserializer.js +67 -0
  76. package/dist/cjs/deserializer/syntax-deserialization-map.js +23 -0
  77. package/dist/cjs/errors/adblock-syntax-error.js +41 -0
  78. package/dist/cjs/errors/binary-schema-mismatch-error.js +39 -0
  79. package/dist/cjs/errors/not-implemented-error.js +33 -0
  80. package/dist/cjs/errors/rule-conversion-error.js +28 -0
  81. package/dist/cjs/generator/base-generator.js +29 -0
  82. package/dist/cjs/generator/comment/agent-comment-generator.js +30 -0
  83. package/dist/cjs/generator/comment/agent-generator.js +34 -0
  84. package/dist/cjs/generator/comment/comment-rule-generator.js +102 -0
  85. package/dist/cjs/generator/comment/config-comment-generator.js +44 -0
  86. package/dist/cjs/generator/comment/hint-comment-generator.js +27 -0
  87. package/dist/cjs/generator/comment/hint-generator.js +32 -0
  88. package/dist/cjs/generator/comment/metadata-comment-generator.js +32 -0
  89. package/dist/cjs/generator/comment/pre-processor-comment-generator.js +47 -0
  90. package/dist/cjs/generator/comment/simple-comment-generator.js +28 -0
  91. package/dist/cjs/generator/cosmetic/body/abp-snippet-injection-body-generator.js +36 -0
  92. package/dist/cjs/generator/cosmetic/body/adg-scriptlet-injection-body-generator.js +41 -0
  93. package/dist/cjs/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js +43 -0
  94. package/dist/cjs/generator/cosmetic/cosmetic-rule-body-generator.js +92 -0
  95. package/dist/cjs/generator/cosmetic/cosmetic-rule-generator.js +66 -0
  96. package/dist/cjs/generator/cosmetic/cosmetic-rule-pattern-generator.js +41 -0
  97. package/dist/cjs/generator/css/adg-css-injection-generator.js +41 -0
  98. package/dist/cjs/generator/filterlist-generator.js +57 -0
  99. package/dist/cjs/generator/index.js +17 -0
  100. package/dist/cjs/generator/misc/domain-list-generator.js +25 -0
  101. package/dist/cjs/generator/misc/list-items-generator.js +38 -0
  102. package/dist/cjs/generator/misc/logical-expression-generator.js +47 -0
  103. package/dist/cjs/generator/misc/modifier-generator.js +33 -0
  104. package/dist/cjs/generator/misc/modifier-list-generator.js +28 -0
  105. package/dist/cjs/generator/misc/parameter-list-generator.js +41 -0
  106. package/dist/cjs/generator/misc/value-generator.js +23 -0
  107. package/dist/cjs/generator/network/host-rule-generator.js +38 -0
  108. package/dist/cjs/generator/network/network-rule-generator.js +37 -0
  109. package/dist/cjs/generator/rule-generator.js +64 -0
  110. package/dist/cjs/index.js +201 -0
  111. package/dist/cjs/marshalling-utils/comment/agent-comment-common.js +22 -0
  112. package/dist/cjs/marshalling-utils/comment/agent-common.js +43 -0
  113. package/dist/cjs/marshalling-utils/comment/config-comment-common.js +58 -0
  114. package/dist/cjs/marshalling-utils/comment/hint-comment-common.js +23 -0
  115. package/dist/cjs/marshalling-utils/comment/hint-common.js +60 -0
  116. package/dist/cjs/marshalling-utils/comment/metadata-comment-common.js +44 -0
  117. package/dist/cjs/marshalling-utils/comment/pre-processor-comment-common.js +63 -0
  118. package/dist/cjs/marshalling-utils/comment/simple-comment-common.js +23 -0
  119. package/dist/cjs/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +64 -0
  120. package/dist/cjs/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +68 -0
  121. package/dist/cjs/marshalling-utils/cosmetic/body/css-injection-body-common.js +25 -0
  122. package/dist/cjs/marshalling-utils/cosmetic/body/element-hiding-body-common.js +22 -0
  123. package/dist/cjs/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +116 -0
  124. package/dist/cjs/marshalling-utils/cosmetic/cosmetic-rule-common.js +51 -0
  125. package/dist/cjs/marshalling-utils/empty-rule-common.js +21 -0
  126. package/dist/cjs/marshalling-utils/filter-list-common.js +22 -0
  127. package/dist/cjs/marshalling-utils/invalid-rule-common.js +22 -0
  128. package/dist/cjs/marshalling-utils/invalid-rule-error-node-common.js +23 -0
  129. package/dist/cjs/marshalling-utils/misc/binary-type-common.js +67 -0
  130. package/dist/cjs/marshalling-utils/misc/domain-list-common.js +39 -0
  131. package/dist/cjs/marshalling-utils/misc/host-rule-common.js +26 -0
  132. package/dist/cjs/marshalling-utils/misc/hostname-list-common.js +22 -0
  133. package/dist/cjs/marshalling-utils/misc/list-item-common.js +23 -0
  134. package/dist/cjs/marshalling-utils/misc/logical-expression-common.js +89 -0
  135. package/dist/cjs/marshalling-utils/misc/modifier-common.js +236 -0
  136. package/dist/cjs/marshalling-utils/misc/modifier-list-common.js +22 -0
  137. package/dist/cjs/marshalling-utils/misc/parameter-list-common.js +22 -0
  138. package/dist/cjs/marshalling-utils/misc/value-common.js +23 -0
  139. package/dist/cjs/marshalling-utils/network/network-rule-common.js +26 -0
  140. package/dist/cjs/marshalling-utils/syntax-serialization-map.js +32 -0
  141. package/dist/cjs/nodes/index.js +180 -0
  142. package/dist/cjs/package.json.js +11 -0
  143. package/dist/cjs/parser/base-parser.js +32 -0
  144. package/dist/cjs/parser/comment/agent-comment-parser.js +121 -0
  145. package/dist/cjs/parser/comment/agent-parser.js +111 -0
  146. package/dist/cjs/parser/comment/comment-parser.js +110 -0
  147. package/dist/cjs/parser/comment/config-comment-parser.js +139 -0
  148. package/dist/cjs/parser/comment/hint-comment-parser.js +119 -0
  149. package/dist/cjs/parser/comment/hint-parser.js +131 -0
  150. package/dist/cjs/parser/comment/metadata-comment-parser.js +131 -0
  151. package/dist/cjs/parser/comment/preprocessor-parser.js +201 -0
  152. package/dist/cjs/parser/comment/simple-comment-parser.js +108 -0
  153. package/dist/cjs/parser/cosmetic/body/abp-snippet-injection-body-parser.js +81 -0
  154. package/dist/cjs/parser/cosmetic/body/adg-scriptlet-injection-body-parser.js +151 -0
  155. package/dist/cjs/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js +112 -0
  156. package/dist/cjs/parser/cosmetic/cosmetic-rule-parser.js +456 -0
  157. package/dist/cjs/parser/css/adg-css-injection-parser.js +213 -0
  158. package/dist/cjs/parser/css/balancing.js +97 -0
  159. package/dist/cjs/parser/css/constants.js +21 -0
  160. package/dist/cjs/parser/css/css-token-stream.js +345 -0
  161. package/dist/cjs/parser/css/ubo-selector-parser.js +373 -0
  162. package/dist/cjs/parser/filterlist-parser.js +104 -0
  163. package/dist/cjs/parser/index.js +21 -0
  164. package/dist/cjs/parser/misc/app-list-parser.js +47 -0
  165. package/dist/cjs/parser/misc/domain-list-parser.js +54 -0
  166. package/dist/cjs/parser/misc/list-items-parser.js +116 -0
  167. package/dist/cjs/parser/misc/logical-expression-parser.js +283 -0
  168. package/dist/cjs/parser/misc/method-list-parser.js +48 -0
  169. package/dist/cjs/parser/misc/modifier-list.js +72 -0
  170. package/dist/cjs/parser/misc/modifier-parser.js +91 -0
  171. package/dist/cjs/parser/misc/parameter-list-parser.js +74 -0
  172. package/dist/cjs/parser/misc/stealth-option-list-parser.js +48 -0
  173. package/dist/cjs/parser/misc/ubo-parameter-list-parser.js +148 -0
  174. package/dist/cjs/parser/misc/value-parser.js +39 -0
  175. package/dist/cjs/parser/network/host-rule-parser.js +151 -0
  176. package/dist/cjs/parser/network/network-rule-parser.js +113 -0
  177. package/dist/cjs/parser/options.js +25 -0
  178. package/dist/cjs/parser/rule-parser.js +194 -0
  179. package/dist/cjs/serializer/base-serializer.js +31 -0
  180. package/dist/cjs/serializer/comment/agent-comment-serializer.js +73 -0
  181. package/dist/cjs/serializer/comment/agent-serializer.js +70 -0
  182. package/dist/cjs/serializer/comment/comment-rule-serializer.js +107 -0
  183. package/dist/cjs/serializer/comment/config-comment-serializer.js +84 -0
  184. package/dist/cjs/serializer/comment/hint-comment-serializer.js +64 -0
  185. package/dist/cjs/serializer/comment/hint-serializer.js +56 -0
  186. package/dist/cjs/serializer/comment/metadata-comment-serializer.js +75 -0
  187. package/dist/cjs/serializer/comment/pre-processor-comment-serializer.js +73 -0
  188. package/dist/cjs/serializer/comment/simple-comment-serializer.js +54 -0
  189. package/dist/cjs/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +38 -0
  190. package/dist/cjs/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +38 -0
  191. package/dist/cjs/serializer/cosmetic/body/scriptlet-body-serializer.js +49 -0
  192. package/dist/cjs/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +38 -0
  193. package/dist/cjs/serializer/cosmetic/cosmetic-rule-serializer.js +131 -0
  194. package/dist/cjs/serializer/cosmetic/css-injection-body-serializer.js +50 -0
  195. package/dist/cjs/serializer/cosmetic/element-hiding-body-serializer.js +39 -0
  196. package/dist/cjs/serializer/empty-rule-serializer.js +36 -0
  197. package/dist/cjs/serializer/filterlist-serializer.js +48 -0
  198. package/dist/cjs/serializer/index.js +13 -0
  199. package/dist/cjs/serializer/invalid-rule-error-node-serializer.js +40 -0
  200. package/dist/cjs/serializer/invalid-rule-serializer.js +39 -0
  201. package/dist/cjs/serializer/misc/domain-list-serializer.js +66 -0
  202. package/dist/cjs/serializer/misc/list-item-serializer.js +57 -0
  203. package/dist/cjs/serializer/misc/list-items-serializer.js +28 -0
  204. package/dist/cjs/serializer/misc/logical-expression-serializer.js +138 -0
  205. package/dist/cjs/serializer/misc/modifier-list-serializer.js +57 -0
  206. package/dist/cjs/serializer/misc/modifier-serializer.js +51 -0
  207. package/dist/cjs/serializer/misc/parameter-list-serializer.js +51 -0
  208. package/dist/cjs/serializer/misc/value-serializer.js +52 -0
  209. package/dist/cjs/serializer/network/host-rule-serializer.js +72 -0
  210. package/dist/cjs/serializer/network/hostname-list-serializer.js +49 -0
  211. package/dist/cjs/serializer/network/network-rule-serializer.js +56 -0
  212. package/dist/cjs/serializer/rule-serializer.js +63 -0
  213. package/dist/cjs/utils/adblockers.js +57 -0
  214. package/dist/cjs/utils/binary-schema-version.js +19 -0
  215. package/dist/cjs/utils/byte-buffer.js +93 -0
  216. package/dist/cjs/utils/categorizer.js +46 -0
  217. package/dist/cjs/utils/clone.js +30 -0
  218. package/dist/cjs/utils/constants.js +380 -0
  219. package/dist/cjs/utils/cosmetic-rule-separator.js +129 -0
  220. package/dist/cjs/utils/deep-freeze.js +34 -0
  221. package/dist/cjs/utils/domain.js +60 -0
  222. package/dist/cjs/utils/error.js +51 -0
  223. package/dist/cjs/utils/index.js +69 -0
  224. package/dist/cjs/utils/input-byte-buffer.js +259 -0
  225. package/dist/cjs/utils/is-chromium.js +22 -0
  226. package/dist/cjs/utils/logical-expression.js +94 -0
  227. package/dist/cjs/utils/multi-value-map.js +35 -0
  228. package/dist/cjs/utils/output-byte-buffer.js +225 -0
  229. package/dist/cjs/utils/position-provider.js +75 -0
  230. package/dist/cjs/utils/quotes.js +218 -0
  231. package/dist/cjs/utils/regexp.js +190 -0
  232. package/dist/cjs/utils/string.js +560 -0
  233. package/dist/cjs/utils/text-decoder-polyfill.js +109 -0
  234. package/dist/cjs/utils/text-encoder-polyfill.js +80 -0
  235. package/dist/cjs/utils/type-guards.js +52 -0
  236. package/dist/cjs/validator/constants.js +222 -0
  237. package/dist/cjs/validator/helpers.js +49 -0
  238. package/dist/cjs/validator/index.js +176 -0
  239. package/dist/cjs/validator/value.js +565 -0
  240. package/dist/cjs/version.js +20 -0
  241. package/dist/esm/ast-utils/clone.mjs +61 -0
  242. package/dist/esm/ast-utils/modifiers.mjs +53 -0
  243. package/dist/esm/ast-utils/network-rules.mjs +41 -0
  244. package/dist/esm/ast-utils/scriptlets.mjs +87 -0
  245. package/dist/esm/common/abp-snippet-injection-body-common.mjs +16 -0
  246. package/dist/esm/common/agent-common.mjs +56 -0
  247. package/dist/esm/common/ubo-selector-common.mjs +18 -0
  248. package/dist/esm/compatibility-tables/base.mjs +262 -0
  249. package/dist/esm/compatibility-tables/compatibility-table-data.mjs +11 -0
  250. package/dist/esm/compatibility-tables/modifiers.mjs +55 -0
  251. package/dist/esm/compatibility-tables/platforms.mjs +58 -0
  252. package/dist/esm/compatibility-tables/redirects.mjs +100 -0
  253. package/dist/esm/compatibility-tables/schemas/base.mjs +111 -0
  254. package/dist/esm/compatibility-tables/schemas/modifier.mjs +105 -0
  255. package/dist/esm/compatibility-tables/schemas/platform.mjs +69 -0
  256. package/dist/esm/compatibility-tables/schemas/redirect.mjs +29 -0
  257. package/dist/esm/compatibility-tables/schemas/resource-type.mjs +37 -0
  258. package/dist/esm/compatibility-tables/schemas/scriptlet.mjs +79 -0
  259. package/dist/esm/compatibility-tables/scriptlets.mjs +28 -0
  260. package/dist/esm/compatibility-tables/utils/platform-helpers.mjs +105 -0
  261. package/dist/esm/compatibility-tables/utils/resource-type-helpers.mjs +61 -0
  262. package/dist/esm/compatibility-tables/utils/zod-camelcase.mjs +25 -0
  263. package/dist/esm/converter/base-interfaces/base-converter.mjs +59 -0
  264. package/dist/esm/converter/base-interfaces/conversion-result.mjs +38 -0
  265. package/dist/esm/converter/base-interfaces/rule-converter-base.mjs +60 -0
  266. package/dist/esm/converter/comment/index.mjs +54 -0
  267. package/dist/esm/converter/cosmetic/css.mjs +69 -0
  268. package/dist/esm/converter/cosmetic/element-hiding.mjs +62 -0
  269. package/dist/esm/converter/cosmetic/header-removal.mjs +123 -0
  270. package/dist/esm/converter/cosmetic/html.mjs +381 -0
  271. package/dist/esm/converter/cosmetic/index.mjs +118 -0
  272. package/dist/esm/converter/cosmetic/rule-modifiers/adg.mjs +79 -0
  273. package/dist/esm/converter/cosmetic/scriptlet.mjs +354 -0
  274. package/dist/esm/converter/css/index.mjs +190 -0
  275. package/dist/esm/converter/data/css.mjs +126 -0
  276. package/dist/esm/converter/filter-list.mjs +88 -0
  277. package/dist/esm/converter/index.mjs +8 -0
  278. package/dist/esm/converter/misc/network-rule-modifier.mjs +311 -0
  279. package/dist/esm/converter/network/index.mjs +99 -0
  280. package/dist/esm/converter/raw-filter-list.mjs +56 -0
  281. package/dist/esm/converter/rule.mjs +81 -0
  282. package/dist/esm/deserializer/base-deserializer.mjs +29 -0
  283. package/dist/esm/deserializer/comment/agent-comment-deserializer.mjs +74 -0
  284. package/dist/esm/deserializer/comment/agent-deserializer.mjs +65 -0
  285. package/dist/esm/deserializer/comment/comment-rule-deserializer.mjs +107 -0
  286. package/dist/esm/deserializer/comment/config-comment-deserializer.mjs +111 -0
  287. package/dist/esm/deserializer/comment/hint-comment-deserializer.mjs +67 -0
  288. package/dist/esm/deserializer/comment/hint-deserializer.mjs +85 -0
  289. package/dist/esm/deserializer/comment/metadata-comment-deserializer.mjs +69 -0
  290. package/dist/esm/deserializer/comment/pre-processor-comment-deserializer.mjs +112 -0
  291. package/dist/esm/deserializer/comment/simple-comment-deserializer.mjs +65 -0
  292. package/dist/esm/deserializer/cosmetic/cosmetic-rule-deserializer.mjs +125 -0
  293. package/dist/esm/deserializer/cosmetic/css-injection-body-deserializer.mjs +53 -0
  294. package/dist/esm/deserializer/cosmetic/element-hiding-body-deserializer.mjs +44 -0
  295. package/dist/esm/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.mjs +35 -0
  296. package/dist/esm/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.mjs +35 -0
  297. package/dist/esm/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.mjs +50 -0
  298. package/dist/esm/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.mjs +35 -0
  299. package/dist/esm/deserializer/empty-rule-deserializer.mjs +44 -0
  300. package/dist/esm/deserializer/filterlist-deserializer.mjs +81 -0
  301. package/dist/esm/deserializer/index.mjs +8 -0
  302. package/dist/esm/deserializer/invalid-rule-deserializer.mjs +46 -0
  303. package/dist/esm/deserializer/invalid-rule-error-node-deserializer.mjs +46 -0
  304. package/dist/esm/deserializer/misc/domain-list-deserializer.mjs +64 -0
  305. package/dist/esm/deserializer/misc/list-item-deserializer.mjs +63 -0
  306. package/dist/esm/deserializer/misc/list-items-deserializer.mjs +26 -0
  307. package/dist/esm/deserializer/misc/logical-expression-deserializer.mjs +196 -0
  308. package/dist/esm/deserializer/misc/modifier-deserializer.mjs +87 -0
  309. package/dist/esm/deserializer/misc/modifier-list-deserializer.mjs +56 -0
  310. package/dist/esm/deserializer/misc/parameter-list-deserializer.mjs +60 -0
  311. package/dist/esm/deserializer/misc/value-deserializer.mjs +50 -0
  312. package/dist/esm/deserializer/network/host-rule-deserializer.mjs +79 -0
  313. package/dist/esm/deserializer/network/hostname-list-deserializer.mjs +48 -0
  314. package/dist/esm/deserializer/network/network-rule-deserializer.mjs +65 -0
  315. package/dist/esm/deserializer/rule-deserializer.mjs +65 -0
  316. package/dist/esm/deserializer/syntax-deserialization-map.mjs +21 -0
  317. package/dist/esm/errors/adblock-syntax-error.mjs +39 -0
  318. package/dist/esm/errors/binary-schema-mismatch-error.mjs +37 -0
  319. package/dist/esm/errors/not-implemented-error.mjs +31 -0
  320. package/dist/esm/errors/rule-conversion-error.mjs +26 -0
  321. package/dist/esm/generator/base-generator.mjs +27 -0
  322. package/dist/esm/generator/comment/agent-comment-generator.mjs +28 -0
  323. package/dist/esm/generator/comment/agent-generator.mjs +32 -0
  324. package/dist/esm/generator/comment/comment-rule-generator.mjs +100 -0
  325. package/dist/esm/generator/comment/config-comment-generator.mjs +42 -0
  326. package/dist/esm/generator/comment/hint-comment-generator.mjs +25 -0
  327. package/dist/esm/generator/comment/hint-generator.mjs +30 -0
  328. package/dist/esm/generator/comment/metadata-comment-generator.mjs +30 -0
  329. package/dist/esm/generator/comment/pre-processor-comment-generator.mjs +45 -0
  330. package/dist/esm/generator/comment/simple-comment-generator.mjs +26 -0
  331. package/dist/esm/generator/cosmetic/body/abp-snippet-injection-body-generator.mjs +34 -0
  332. package/dist/esm/generator/cosmetic/body/adg-scriptlet-injection-body-generator.mjs +39 -0
  333. package/dist/esm/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.mjs +41 -0
  334. package/dist/esm/generator/cosmetic/cosmetic-rule-body-generator.mjs +90 -0
  335. package/dist/esm/generator/cosmetic/cosmetic-rule-generator.mjs +64 -0
  336. package/dist/esm/generator/cosmetic/cosmetic-rule-pattern-generator.mjs +39 -0
  337. package/dist/esm/generator/css/adg-css-injection-generator.mjs +39 -0
  338. package/dist/esm/generator/filterlist-generator.mjs +55 -0
  339. package/dist/esm/generator/index.mjs +9 -0
  340. package/dist/esm/generator/misc/domain-list-generator.mjs +23 -0
  341. package/dist/esm/generator/misc/list-items-generator.mjs +36 -0
  342. package/dist/esm/generator/misc/logical-expression-generator.mjs +45 -0
  343. package/dist/esm/generator/misc/modifier-generator.mjs +31 -0
  344. package/dist/esm/generator/misc/modifier-list-generator.mjs +26 -0
  345. package/dist/esm/generator/misc/parameter-list-generator.mjs +39 -0
  346. package/dist/esm/generator/misc/value-generator.mjs +21 -0
  347. package/dist/esm/generator/network/host-rule-generator.mjs +36 -0
  348. package/dist/esm/generator/network/network-rule-generator.mjs +35 -0
  349. package/dist/esm/generator/rule-generator.mjs +62 -0
  350. package/dist/esm/index.mjs +70 -0
  351. package/dist/esm/marshalling-utils/comment/agent-comment-common.mjs +22 -0
  352. package/dist/esm/marshalling-utils/comment/agent-common.mjs +41 -0
  353. package/dist/esm/marshalling-utils/comment/config-comment-common.mjs +56 -0
  354. package/dist/esm/marshalling-utils/comment/hint-comment-common.mjs +23 -0
  355. package/dist/esm/marshalling-utils/comment/hint-common.mjs +57 -0
  356. package/dist/esm/marshalling-utils/comment/metadata-comment-common.mjs +42 -0
  357. package/dist/esm/marshalling-utils/comment/pre-processor-comment-common.mjs +60 -0
  358. package/dist/esm/marshalling-utils/comment/simple-comment-common.mjs +23 -0
  359. package/dist/esm/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.mjs +62 -0
  360. package/dist/esm/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.mjs +66 -0
  361. package/dist/esm/marshalling-utils/cosmetic/body/css-injection-body-common.mjs +25 -0
  362. package/dist/esm/marshalling-utils/cosmetic/body/element-hiding-body-common.mjs +22 -0
  363. package/dist/esm/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.mjs +114 -0
  364. package/dist/esm/marshalling-utils/cosmetic/cosmetic-rule-common.mjs +49 -0
  365. package/dist/esm/marshalling-utils/empty-rule-common.mjs +21 -0
  366. package/dist/esm/marshalling-utils/filter-list-common.mjs +22 -0
  367. package/dist/esm/marshalling-utils/invalid-rule-common.mjs +22 -0
  368. package/dist/esm/marshalling-utils/invalid-rule-error-node-common.mjs +23 -0
  369. package/dist/esm/marshalling-utils/misc/binary-type-common.mjs +67 -0
  370. package/dist/esm/marshalling-utils/misc/domain-list-common.mjs +37 -0
  371. package/dist/esm/marshalling-utils/misc/host-rule-common.mjs +26 -0
  372. package/dist/esm/marshalling-utils/misc/hostname-list-common.mjs +22 -0
  373. package/dist/esm/marshalling-utils/misc/list-item-common.mjs +23 -0
  374. package/dist/esm/marshalling-utils/misc/logical-expression-common.mjs +86 -0
  375. package/dist/esm/marshalling-utils/misc/modifier-common.mjs +232 -0
  376. package/dist/esm/marshalling-utils/misc/modifier-list-common.mjs +22 -0
  377. package/dist/esm/marshalling-utils/misc/parameter-list-common.mjs +22 -0
  378. package/dist/esm/marshalling-utils/misc/value-common.mjs +23 -0
  379. package/dist/esm/marshalling-utils/network/network-rule-common.mjs +26 -0
  380. package/dist/esm/marshalling-utils/syntax-serialization-map.mjs +30 -0
  381. package/dist/esm/nodes/index.mjs +180 -0
  382. package/dist/esm/package.json.mjs +9 -0
  383. package/dist/esm/parser/base-parser.mjs +30 -0
  384. package/dist/esm/parser/comment/agent-comment-parser.mjs +119 -0
  385. package/dist/esm/parser/comment/agent-parser.mjs +109 -0
  386. package/dist/esm/parser/comment/comment-parser.mjs +108 -0
  387. package/dist/esm/parser/comment/config-comment-parser.mjs +137 -0
  388. package/dist/esm/parser/comment/hint-comment-parser.mjs +117 -0
  389. package/dist/esm/parser/comment/hint-parser.mjs +129 -0
  390. package/dist/esm/parser/comment/metadata-comment-parser.mjs +129 -0
  391. package/dist/esm/parser/comment/preprocessor-parser.mjs +199 -0
  392. package/dist/esm/parser/comment/simple-comment-parser.mjs +106 -0
  393. package/dist/esm/parser/cosmetic/body/abp-snippet-injection-body-parser.mjs +79 -0
  394. package/dist/esm/parser/cosmetic/body/adg-scriptlet-injection-body-parser.mjs +149 -0
  395. package/dist/esm/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.mjs +110 -0
  396. package/dist/esm/parser/cosmetic/cosmetic-rule-parser.mjs +453 -0
  397. package/dist/esm/parser/css/adg-css-injection-parser.mjs +208 -0
  398. package/dist/esm/parser/css/balancing.mjs +94 -0
  399. package/dist/esm/parser/css/constants.mjs +18 -0
  400. package/dist/esm/parser/css/css-token-stream.mjs +343 -0
  401. package/dist/esm/parser/css/ubo-selector-parser.mjs +369 -0
  402. package/dist/esm/parser/filterlist-parser.mjs +102 -0
  403. package/dist/esm/parser/index.mjs +11 -0
  404. package/dist/esm/parser/misc/app-list-parser.mjs +45 -0
  405. package/dist/esm/parser/misc/domain-list-parser.mjs +52 -0
  406. package/dist/esm/parser/misc/list-items-parser.mjs +113 -0
  407. package/dist/esm/parser/misc/logical-expression-parser.mjs +281 -0
  408. package/dist/esm/parser/misc/method-list-parser.mjs +46 -0
  409. package/dist/esm/parser/misc/modifier-list.mjs +70 -0
  410. package/dist/esm/parser/misc/modifier-parser.mjs +89 -0
  411. package/dist/esm/parser/misc/parameter-list-parser.mjs +72 -0
  412. package/dist/esm/parser/misc/stealth-option-list-parser.mjs +46 -0
  413. package/dist/esm/parser/misc/ubo-parameter-list-parser.mjs +146 -0
  414. package/dist/esm/parser/misc/value-parser.mjs +37 -0
  415. package/dist/esm/parser/network/host-rule-parser.mjs +130 -0
  416. package/dist/esm/parser/network/network-rule-parser.mjs +111 -0
  417. package/dist/esm/parser/options.mjs +23 -0
  418. package/dist/esm/parser/rule-parser.mjs +192 -0
  419. package/dist/esm/serializer/base-serializer.mjs +29 -0
  420. package/dist/esm/serializer/comment/agent-comment-serializer.mjs +71 -0
  421. package/dist/esm/serializer/comment/agent-serializer.mjs +68 -0
  422. package/dist/esm/serializer/comment/comment-rule-serializer.mjs +105 -0
  423. package/dist/esm/serializer/comment/config-comment-serializer.mjs +82 -0
  424. package/dist/esm/serializer/comment/hint-comment-serializer.mjs +62 -0
  425. package/dist/esm/serializer/comment/hint-serializer.mjs +54 -0
  426. package/dist/esm/serializer/comment/metadata-comment-serializer.mjs +73 -0
  427. package/dist/esm/serializer/comment/pre-processor-comment-serializer.mjs +71 -0
  428. package/dist/esm/serializer/comment/simple-comment-serializer.mjs +52 -0
  429. package/dist/esm/serializer/cosmetic/body/abp-snippet-injection-body-serializer.mjs +36 -0
  430. package/dist/esm/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.mjs +36 -0
  431. package/dist/esm/serializer/cosmetic/body/scriptlet-body-serializer.mjs +47 -0
  432. package/dist/esm/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.mjs +36 -0
  433. package/dist/esm/serializer/cosmetic/cosmetic-rule-serializer.mjs +129 -0
  434. package/dist/esm/serializer/cosmetic/css-injection-body-serializer.mjs +48 -0
  435. package/dist/esm/serializer/cosmetic/element-hiding-body-serializer.mjs +37 -0
  436. package/dist/esm/serializer/empty-rule-serializer.mjs +34 -0
  437. package/dist/esm/serializer/filterlist-serializer.mjs +46 -0
  438. package/dist/esm/serializer/index.mjs +7 -0
  439. package/dist/esm/serializer/invalid-rule-error-node-serializer.mjs +38 -0
  440. package/dist/esm/serializer/invalid-rule-serializer.mjs +37 -0
  441. package/dist/esm/serializer/misc/domain-list-serializer.mjs +64 -0
  442. package/dist/esm/serializer/misc/list-item-serializer.mjs +55 -0
  443. package/dist/esm/serializer/misc/list-items-serializer.mjs +26 -0
  444. package/dist/esm/serializer/misc/logical-expression-serializer.mjs +136 -0
  445. package/dist/esm/serializer/misc/modifier-list-serializer.mjs +55 -0
  446. package/dist/esm/serializer/misc/modifier-serializer.mjs +49 -0
  447. package/dist/esm/serializer/misc/parameter-list-serializer.mjs +49 -0
  448. package/dist/esm/serializer/misc/value-serializer.mjs +50 -0
  449. package/dist/esm/serializer/network/host-rule-serializer.mjs +70 -0
  450. package/dist/esm/serializer/network/hostname-list-serializer.mjs +47 -0
  451. package/dist/esm/serializer/network/network-rule-serializer.mjs +54 -0
  452. package/dist/esm/serializer/rule-serializer.mjs +61 -0
  453. package/dist/esm/utils/adblockers.mjs +57 -0
  454. package/dist/esm/utils/binary-schema-version.mjs +17 -0
  455. package/dist/esm/utils/byte-buffer.mjs +91 -0
  456. package/dist/esm/utils/categorizer.mjs +44 -0
  457. package/dist/esm/utils/clone.mjs +28 -0
  458. package/dist/esm/utils/constants.mjs +249 -0
  459. package/dist/esm/utils/cosmetic-rule-separator.mjs +127 -0
  460. package/dist/esm/utils/deep-freeze.mjs +32 -0
  461. package/dist/esm/utils/domain.mjs +56 -0
  462. package/dist/esm/utils/error.mjs +49 -0
  463. package/dist/esm/utils/index.mjs +21 -0
  464. package/dist/esm/utils/input-byte-buffer.mjs +257 -0
  465. package/dist/esm/utils/is-chromium.mjs +20 -0
  466. package/dist/esm/utils/logical-expression.mjs +92 -0
  467. package/dist/esm/utils/multi-value-map.mjs +33 -0
  468. package/dist/esm/utils/output-byte-buffer.mjs +223 -0
  469. package/dist/esm/utils/position-provider.mjs +73 -0
  470. package/dist/esm/utils/quotes.mjs +215 -0
  471. package/dist/esm/utils/regexp.mjs +176 -0
  472. package/dist/esm/utils/string.mjs +556 -0
  473. package/dist/esm/utils/text-decoder-polyfill.mjs +107 -0
  474. package/dist/esm/utils/text-encoder-polyfill.mjs +78 -0
  475. package/dist/esm/utils/type-guards.mjs +47 -0
  476. package/dist/esm/validator/constants.mjs +210 -0
  477. package/dist/esm/validator/helpers.mjs +45 -0
  478. package/dist/esm/validator/index.mjs +174 -0
  479. package/dist/esm/validator/value.mjs +563 -0
  480. package/dist/esm/version.mjs +18 -0
  481. package/dist/types/ast-utils/clone.d.ts +26 -0
  482. package/dist/types/ast-utils/filter-list.d.ts +11 -0
  483. package/dist/types/ast-utils/modifiers.d.ts +20 -0
  484. package/dist/types/ast-utils/network-rules.d.ts +15 -0
  485. package/dist/types/ast-utils/scriptlets.d.ts +52 -0
  486. package/dist/types/common/abp-snippet-injection-body-common.d.ts +8 -0
  487. package/dist/types/common/agent-common.d.ts +10 -0
  488. package/dist/types/common/ubo-selector-common.d.ts +9 -0
  489. package/dist/types/compatibility-tables/base.d.ts +157 -0
  490. package/dist/types/compatibility-tables/compatibility-table-data.d.ts +67 -0
  491. package/dist/types/compatibility-tables/index.d.ts +13 -0
  492. package/dist/types/compatibility-tables/modifiers.d.ts +22 -0
  493. package/dist/types/compatibility-tables/platforms.d.ts +47 -0
  494. package/dist/types/compatibility-tables/redirects.d.ts +33 -0
  495. package/dist/types/compatibility-tables/schemas/base.d.ts +135 -0
  496. package/dist/types/compatibility-tables/schemas/index.d.ts +8 -0
  497. package/dist/types/compatibility-tables/schemas/modifier.d.ts +31 -0
  498. package/dist/types/compatibility-tables/schemas/platform.d.ts +16 -0
  499. package/dist/types/compatibility-tables/schemas/redirect.d.ts +25 -0
  500. package/dist/types/compatibility-tables/schemas/resource-type.d.ts +27 -0
  501. package/dist/types/compatibility-tables/schemas/scriptlet.d.ts +31 -0
  502. package/dist/types/compatibility-tables/scriptlets.d.ts +15 -0
  503. package/dist/types/compatibility-tables/types.d.ts +34 -0
  504. package/dist/types/compatibility-tables/utils/platform-helpers.d.ts +44 -0
  505. package/dist/types/compatibility-tables/utils/resource-type-helpers.d.ts +20 -0
  506. package/dist/types/compatibility-tables/utils/zod-camelcase.d.ts +15 -0
  507. package/dist/types/converter/base-interfaces/base-converter.d.ts +42 -0
  508. package/dist/types/converter/base-interfaces/conversion-result.d.ts +43 -0
  509. package/dist/types/converter/base-interfaces/rule-converter-base.d.ts +44 -0
  510. package/dist/types/converter/comment/index.d.ts +23 -0
  511. package/dist/types/converter/cosmetic/css.d.ts +23 -0
  512. package/dist/types/converter/cosmetic/element-hiding.d.ts +23 -0
  513. package/dist/types/converter/cosmetic/header-removal.d.ts +37 -0
  514. package/dist/types/converter/cosmetic/html.d.ts +54 -0
  515. package/dist/types/converter/cosmetic/index.d.ts +33 -0
  516. package/dist/types/converter/cosmetic/rule-modifiers/adg.d.ts +21 -0
  517. package/dist/types/converter/cosmetic/scriptlet.d.ts +33 -0
  518. package/dist/types/converter/css/index.d.ts +23 -0
  519. package/dist/types/converter/data/css.d.ts +48 -0
  520. package/dist/types/converter/filter-list.d.ts +31 -0
  521. package/dist/types/converter/index.d.ts +5 -0
  522. package/dist/types/converter/misc/network-rule-modifier.d.ts +35 -0
  523. package/dist/types/converter/network/index.d.ts +33 -0
  524. package/dist/types/converter/raw-filter-list.d.ts +31 -0
  525. package/dist/types/converter/raw-rule.d.ts +28 -0
  526. package/dist/types/converter/rule.d.ts +37 -0
  527. package/dist/types/deserializer/base-deserializer.d.ts +15 -0
  528. package/dist/types/deserializer/comment/agent-comment-deserializer.d.ts +34 -0
  529. package/dist/types/deserializer/comment/agent-deserializer.d.ts +25 -0
  530. package/dist/types/deserializer/comment/comment-rule-deserializer.d.ts +69 -0
  531. package/dist/types/deserializer/comment/config-comment-deserializer.d.ts +27 -0
  532. package/dist/types/deserializer/comment/hint-comment-deserializer.d.ts +24 -0
  533. package/dist/types/deserializer/comment/hint-deserializer.d.ts +26 -0
  534. package/dist/types/deserializer/comment/metadata-comment-deserializer.d.ts +26 -0
  535. package/dist/types/deserializer/comment/pre-processor-comment-deserializer.d.ts +29 -0
  536. package/dist/types/deserializer/comment/simple-comment-deserializer.d.ts +26 -0
  537. package/dist/types/deserializer/cosmetic/cosmetic-rule-deserializer.d.ts +12 -0
  538. package/dist/types/deserializer/cosmetic/css-injection-body-deserializer.d.ts +12 -0
  539. package/dist/types/deserializer/cosmetic/element-hiding-body-deserializer.d.ts +12 -0
  540. package/dist/types/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.d.ts +13 -0
  541. package/dist/types/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.d.ts +13 -0
  542. package/dist/types/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.d.ts +15 -0
  543. package/dist/types/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.d.ts +14 -0
  544. package/dist/types/deserializer/empty-rule-deserializer.d.ts +12 -0
  545. package/dist/types/deserializer/filterlist-deserializer.d.ts +30 -0
  546. package/dist/types/deserializer/index.d.ts +2 -0
  547. package/dist/types/deserializer/invalid-rule-deserializer.d.ts +12 -0
  548. package/dist/types/deserializer/invalid-rule-error-node-deserializer.d.ts +12 -0
  549. package/dist/types/deserializer/misc/domain-list-deserializer.d.ts +15 -0
  550. package/dist/types/deserializer/misc/list-item-deserializer.d.ts +13 -0
  551. package/dist/types/deserializer/misc/list-items-deserializer.d.ts +12 -0
  552. package/dist/types/deserializer/misc/logical-expression-deserializer.d.ts +55 -0
  553. package/dist/types/deserializer/misc/modifier-deserializer.d.ts +18 -0
  554. package/dist/types/deserializer/misc/modifier-list-deserializer.d.ts +20 -0
  555. package/dist/types/deserializer/misc/parameter-list-deserializer.d.ts +14 -0
  556. package/dist/types/deserializer/misc/value-deserializer.d.ts +17 -0
  557. package/dist/types/deserializer/network/host-rule-deserializer.d.ts +30 -0
  558. package/dist/types/deserializer/network/hostname-list-deserializer.d.ts +12 -0
  559. package/dist/types/deserializer/network/network-rule-deserializer.d.ts +18 -0
  560. package/dist/types/deserializer/rule-deserializer.d.ts +17 -0
  561. package/dist/types/deserializer/syntax-deserialization-map.d.ts +2 -0
  562. package/dist/types/errors/adblock-syntax-error.d.ts +25 -0
  563. package/dist/types/errors/binary-schema-mismatch-error.d.ts +23 -0
  564. package/dist/types/errors/not-implemented-error.d.ts +14 -0
  565. package/dist/types/errors/rule-conversion-error.d.ts +14 -0
  566. package/dist/types/generator/base-generator.d.ts +12 -0
  567. package/dist/types/generator/comment/agent-comment-generator.d.ts +11 -0
  568. package/dist/types/generator/comment/agent-generator.d.ts +11 -0
  569. package/dist/types/generator/comment/comment-rule-generator.d.ts +67 -0
  570. package/dist/types/generator/comment/config-comment-generator.d.ts +11 -0
  571. package/dist/types/generator/comment/hint-comment-generator.d.ts +11 -0
  572. package/dist/types/generator/comment/hint-generator.d.ts +11 -0
  573. package/dist/types/generator/comment/index.d.ts +2 -0
  574. package/dist/types/generator/comment/metadata-comment-generator.d.ts +11 -0
  575. package/dist/types/generator/comment/pre-processor-comment-generator.d.ts +11 -0
  576. package/dist/types/generator/comment/simple-comment-generator.d.ts +11 -0
  577. package/dist/types/generator/cosmetic/body/abp-snippet-injection-body-generator.d.ts +11 -0
  578. package/dist/types/generator/cosmetic/body/adg-scriptlet-injection-body-generator.d.ts +17 -0
  579. package/dist/types/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.d.ts +17 -0
  580. package/dist/types/generator/cosmetic/cosmetic-rule-body-generator.d.ts +15 -0
  581. package/dist/types/generator/cosmetic/cosmetic-rule-generator.d.ts +36 -0
  582. package/dist/types/generator/cosmetic/cosmetic-rule-pattern-generator.d.ts +15 -0
  583. package/dist/types/generator/cosmetic/index.d.ts +1 -0
  584. package/dist/types/generator/css/adg-css-injection-generator.d.ts +12 -0
  585. package/dist/types/generator/css/ubo-selector-generator.d.ts +11 -0
  586. package/dist/types/generator/filterlist-generator.d.ts +17 -0
  587. package/dist/types/generator/index.d.ts +3 -0
  588. package/dist/types/generator/misc/domain-list-generator.d.ts +12 -0
  589. package/dist/types/generator/misc/list-items-generator.d.ts +22 -0
  590. package/dist/types/generator/misc/logical-expression-generator.d.ts +11 -0
  591. package/dist/types/generator/misc/modifier-generator.d.ts +11 -0
  592. package/dist/types/generator/misc/modifier-list-generator.d.ts +11 -0
  593. package/dist/types/generator/misc/parameter-list-generator.d.ts +12 -0
  594. package/dist/types/generator/misc/value-generator.d.ts +11 -0
  595. package/dist/types/generator/network/host-rule-generator.d.ts +11 -0
  596. package/dist/types/generator/network/index.d.ts +2 -0
  597. package/dist/types/generator/network/network-rule-generator.d.ts +11 -0
  598. package/dist/types/generator/rule-generator.d.ts +21 -0
  599. package/dist/types/index.d.ts +55 -0
  600. package/dist/types/marshalling-utils/comment/agent-comment-common.d.ts +13 -0
  601. package/dist/types/marshalling-utils/comment/agent-common.d.ts +19 -0
  602. package/dist/types/marshalling-utils/comment/config-comment-common.d.ts +40 -0
  603. package/dist/types/marshalling-utils/comment/hint-comment-common.d.ts +14 -0
  604. package/dist/types/marshalling-utils/comment/hint-common.d.ts +32 -0
  605. package/dist/types/marshalling-utils/comment/metadata-comment-common.d.ts +20 -0
  606. package/dist/types/marshalling-utils/comment/pre-processor-comment-common.d.ts +36 -0
  607. package/dist/types/marshalling-utils/comment/simple-comment-common.d.ts +14 -0
  608. package/dist/types/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.d.ts +22 -0
  609. package/dist/types/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.d.ts +9 -0
  610. package/dist/types/marshalling-utils/cosmetic/body/css-injection-body-common.d.ts +16 -0
  611. package/dist/types/marshalling-utils/cosmetic/body/element-hiding-body-common.d.ts +13 -0
  612. package/dist/types/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.d.ts +9 -0
  613. package/dist/types/marshalling-utils/cosmetic/cosmetic-rule-common.d.ts +27 -0
  614. package/dist/types/marshalling-utils/empty-rule-common.d.ts +12 -0
  615. package/dist/types/marshalling-utils/filter-list-common.d.ts +13 -0
  616. package/dist/types/marshalling-utils/invalid-rule-common.d.ts +13 -0
  617. package/dist/types/marshalling-utils/invalid-rule-error-node-common.d.ts +14 -0
  618. package/dist/types/marshalling-utils/misc/binary-type-common.d.ts +56 -0
  619. package/dist/types/marshalling-utils/misc/domain-list-common.d.ts +23 -0
  620. package/dist/types/marshalling-utils/misc/host-rule-common.d.ts +17 -0
  621. package/dist/types/marshalling-utils/misc/hostname-list-common.d.ts +13 -0
  622. package/dist/types/marshalling-utils/misc/list-item-common.d.ts +14 -0
  623. package/dist/types/marshalling-utils/misc/logical-expression-common.d.ts +44 -0
  624. package/dist/types/marshalling-utils/misc/modifier-common.d.ts +40 -0
  625. package/dist/types/marshalling-utils/misc/modifier-list-common.d.ts +13 -0
  626. package/dist/types/marshalling-utils/misc/parameter-list-common.d.ts +13 -0
  627. package/dist/types/marshalling-utils/misc/value-common.d.ts +14 -0
  628. package/dist/types/marshalling-utils/network/network-rule-common.d.ts +17 -0
  629. package/dist/types/marshalling-utils/syntax-serialization-map.d.ts +2 -0
  630. package/dist/types/nodes/index.d.ts +1177 -0
  631. package/dist/types/parser/base-parser.d.ts +16 -0
  632. package/dist/types/parser/comment/agent-comment-parser.d.ts +42 -0
  633. package/dist/types/parser/comment/agent-parser.d.ts +33 -0
  634. package/dist/types/parser/comment/comment-parser.d.ts +76 -0
  635. package/dist/types/parser/comment/config-comment-parser.d.ts +31 -0
  636. package/dist/types/parser/comment/hint-comment-parser.d.ts +33 -0
  637. package/dist/types/parser/comment/hint-parser.d.ts +30 -0
  638. package/dist/types/parser/comment/metadata-comment-parser.d.ts +29 -0
  639. package/dist/types/parser/comment/preprocessor-parser.d.ts +43 -0
  640. package/dist/types/parser/comment/simple-comment-parser.d.ts +33 -0
  641. package/dist/types/parser/cosmetic/body/abp-snippet-injection-body-parser.d.ts +34 -0
  642. package/dist/types/parser/cosmetic/body/adg-scriptlet-injection-body-parser.d.ts +47 -0
  643. package/dist/types/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.d.ts +44 -0
  644. package/dist/types/parser/cosmetic/cosmetic-rule-parser.d.ts +51 -0
  645. package/dist/types/parser/css/adg-css-injection-parser.d.ts +28 -0
  646. package/dist/types/parser/css/balancing.d.ts +36 -0
  647. package/dist/types/parser/css/constants.d.ts +10 -0
  648. package/dist/types/parser/css/css-token-stream.d.ts +210 -0
  649. package/dist/types/parser/css/ubo-selector-parser.d.ts +46 -0
  650. package/dist/types/parser/filterlist-parser.d.ts +29 -0
  651. package/dist/types/parser/index.d.ts +5 -0
  652. package/dist/types/parser/misc/app-list-parser.d.ts +22 -0
  653. package/dist/types/parser/misc/domain-list-parser.d.ts +26 -0
  654. package/dist/types/parser/misc/list-items-parser.d.ts +34 -0
  655. package/dist/types/parser/misc/logical-expression-parser.d.ts +41 -0
  656. package/dist/types/parser/misc/method-list-parser.d.ts +22 -0
  657. package/dist/types/parser/misc/modifier-list.d.ts +24 -0
  658. package/dist/types/parser/misc/modifier-parser.d.ts +21 -0
  659. package/dist/types/parser/misc/parameter-list-parser.d.ts +14 -0
  660. package/dist/types/parser/misc/stealth-option-list-parser.d.ts +22 -0
  661. package/dist/types/parser/misc/ubo-parameter-list-parser.d.ts +18 -0
  662. package/dist/types/parser/misc/value-parser.d.ts +18 -0
  663. package/dist/types/parser/network/host-rule-parser.d.ts +35 -0
  664. package/dist/types/parser/network/network-rule-parser.d.ts +31 -0
  665. package/dist/types/parser/options.d.ts +41 -0
  666. package/dist/types/parser/rule-parser.d.ts +78 -0
  667. package/dist/types/serializer/base-serializer.d.ts +15 -0
  668. package/dist/types/serializer/comment/agent-comment-serializer.d.ts +34 -0
  669. package/dist/types/serializer/comment/agent-serializer.d.ts +24 -0
  670. package/dist/types/serializer/comment/comment-rule-serializer.d.ts +68 -0
  671. package/dist/types/serializer/comment/config-comment-serializer.d.ts +25 -0
  672. package/dist/types/serializer/comment/hint-comment-serializer.d.ts +23 -0
  673. package/dist/types/serializer/comment/hint-serializer.d.ts +24 -0
  674. package/dist/types/serializer/comment/metadata-comment-serializer.d.ts +25 -0
  675. package/dist/types/serializer/comment/pre-processor-comment-serializer.d.ts +28 -0
  676. package/dist/types/serializer/comment/simple-comment-serializer.d.ts +24 -0
  677. package/dist/types/serializer/cosmetic/body/abp-snippet-injection-body-serializer.d.ts +25 -0
  678. package/dist/types/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.d.ts +25 -0
  679. package/dist/types/serializer/cosmetic/body/scriptlet-body-serializer.d.ts +14 -0
  680. package/dist/types/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.d.ts +25 -0
  681. package/dist/types/serializer/cosmetic/cosmetic-rule-serializer.d.ts +26 -0
  682. package/dist/types/serializer/cosmetic/css-injection-body-serializer.d.ts +12 -0
  683. package/dist/types/serializer/cosmetic/element-hiding-body-serializer.d.ts +12 -0
  684. package/dist/types/serializer/empty-rule-serializer.d.ts +12 -0
  685. package/dist/types/serializer/filterlist-serializer.d.ts +16 -0
  686. package/dist/types/serializer/index.d.ts +1 -0
  687. package/dist/types/serializer/invalid-rule-error-node-serializer.d.ts +12 -0
  688. package/dist/types/serializer/invalid-rule-serializer.d.ts +12 -0
  689. package/dist/types/serializer/misc/domain-list-serializer.d.ts +21 -0
  690. package/dist/types/serializer/misc/list-item-serializer.d.ts +13 -0
  691. package/dist/types/serializer/misc/list-items-serializer.d.ts +12 -0
  692. package/dist/types/serializer/misc/logical-expression-serializer.d.ts +51 -0
  693. package/dist/types/serializer/misc/modifier-list-serializer.d.ts +20 -0
  694. package/dist/types/serializer/misc/modifier-serializer.d.ts +18 -0
  695. package/dist/types/serializer/misc/parameter-list-serializer.d.ts +14 -0
  696. package/dist/types/serializer/misc/value-serializer.d.ts +17 -0
  697. package/dist/types/serializer/network/host-rule-serializer.d.ts +30 -0
  698. package/dist/types/serializer/network/hostname-list-serializer.d.ts +12 -0
  699. package/dist/types/serializer/network/network-rule-serializer.d.ts +18 -0
  700. package/dist/types/serializer/rule-serializer.d.ts +17 -0
  701. package/dist/types/utils/adblockers.d.ts +48 -0
  702. package/dist/types/utils/binary-schema-version.d.ts +9 -0
  703. package/dist/types/utils/byte-buffer.d.ts +54 -0
  704. package/dist/types/utils/categorizer.d.ts +14 -0
  705. package/dist/types/utils/clone.d.ts +15 -0
  706. package/dist/types/utils/constants.d.ts +188 -0
  707. package/dist/types/utils/cosmetic-rule-separator.d.ts +45 -0
  708. package/dist/types/utils/deep-freeze.d.ts +13 -0
  709. package/dist/types/utils/domain.d.ts +26 -0
  710. package/dist/types/utils/error.d.ts +8 -0
  711. package/dist/types/utils/index.d.ts +15 -0
  712. package/dist/types/utils/input-byte-buffer.d.ts +140 -0
  713. package/dist/types/utils/is-chromium.d.ts +7 -0
  714. package/dist/types/utils/logical-expression.d.ts +45 -0
  715. package/dist/types/utils/multi-value-map.d.ts +16 -0
  716. package/dist/types/utils/output-byte-buffer.d.ts +126 -0
  717. package/dist/types/utils/position-provider.d.ts +46 -0
  718. package/dist/types/utils/quotes.d.ts +93 -0
  719. package/dist/types/utils/regexp.d.ts +54 -0
  720. package/dist/types/utils/storage-interface.d.ts +23 -0
  721. package/dist/types/utils/string.d.ts +277 -0
  722. package/dist/types/utils/text-decoder-polyfill.d.ts +14 -0
  723. package/dist/types/utils/text-encoder-polyfill.d.ts +18 -0
  724. package/dist/types/utils/type-guards.d.ts +47 -0
  725. package/dist/types/validator/constants.d.ts +89 -0
  726. package/dist/types/validator/helpers.d.ts +37 -0
  727. package/dist/types/validator/index.d.ts +38 -0
  728. package/dist/types/validator/value.d.ts +11 -0
  729. package/dist/types/version.d.ts +5 -0
  730. package/package.json +91 -37
  731. package/dist/agtree.d.ts +0 -4152
  732. package/dist/agtree.js +0 -15741
  733. package/dist/agtree.mjs +0 -15642
  734. package/dist/compatibility-table-data.js +0 -12634
@@ -0,0 +1,201 @@
1
+ /*
2
+ * AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 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
+ 'use strict';
8
+
9
+ var adblockers = require('../../utils/adblockers.js');
10
+ var constants = require('../../utils/constants.js');
11
+ var string = require('../../utils/string.js');
12
+ var index = require('../../nodes/index.js');
13
+ var logicalExpressionParser = require('../misc/logical-expression-parser.js');
14
+ var adblockSyntaxError = require('../../errors/adblock-syntax-error.js');
15
+ var parameterListParser = require('../misc/parameter-list-parser.js');
16
+ var options = require('../options.js');
17
+ var baseParser = require('../base-parser.js');
18
+ var valueParser = require('../misc/value-parser.js');
19
+
20
+ /**
21
+ * Pre-processor directives
22
+ *
23
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#pre-processor-directives}
24
+ * @see {@link https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#pre-parsing-directives}
25
+ */
26
+ /**
27
+ * `PreProcessorParser` is responsible for parsing preprocessor rules.
28
+ * Pre-processor comments are special comments that are used to control the behavior of the filter list processor.
29
+ * Please note that this parser only handles general syntax for now, and does not validate the parameters at
30
+ * the parsing stage.
31
+ *
32
+ * @example
33
+ * If your rule is
34
+ * ```adblock
35
+ * !#if (adguard)
36
+ * ```
37
+ * then the directive's name is `if` and its value is `(adguard)`, but the parameter list
38
+ * is not parsed / validated further.
39
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#pre-processor-directives}
40
+ * @see {@link https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#pre-parsing-directives}
41
+ */
42
+ class PreProcessorCommentParser extends baseParser.BaseParser {
43
+ /**
44
+ * Determines whether the rule is a pre-processor rule.
45
+ *
46
+ * @param raw Raw rule
47
+ * @returns `true` if the rule is a pre-processor rule, `false` otherwise
48
+ */
49
+ static isPreProcessorRule(raw) {
50
+ const trimmed = raw.trim();
51
+ // Avoid this case: !##... (commonly used in AdGuard filters)
52
+ return trimmed.startsWith(constants.PREPROCESSOR_MARKER) && trimmed[constants.PREPROCESSOR_MARKER_LEN] !== constants.HASHMARK;
53
+ }
54
+ /**
55
+ * Parses a raw rule as a pre-processor comment.
56
+ *
57
+ * @param raw Raw input to parse.
58
+ * @param options Global parser options.
59
+ * @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
60
+ * @returns
61
+ * Pre-processor comment AST or null (if the raw rule cannot be parsed as a pre-processor comment)
62
+ */
63
+ static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
64
+ // Ignore non-pre-processor rules
65
+ if (!PreProcessorCommentParser.isPreProcessorRule(raw)) {
66
+ return null;
67
+ }
68
+ let offset = 0;
69
+ // Ignore whitespace characters before the rule (if any)
70
+ offset = string.StringUtils.skipWS(raw, offset);
71
+ // Ignore the pre-processor marker
72
+ offset += constants.PREPROCESSOR_MARKER_LEN;
73
+ // Ignore whitespace characters after the pre-processor marker (if any)
74
+ // Note: this is incorrect according to the spec, but we do it for tolerance
75
+ offset = string.StringUtils.skipWS(raw, offset);
76
+ // Directive name should start at this offset, so we save this offset now
77
+ const nameStart = offset;
78
+ // Consume directive name, so parse the sequence until the first
79
+ // whitespace / opening parenthesis / end of string
80
+ while (offset < raw.length) {
81
+ const ch = raw[offset];
82
+ if (ch === constants.PREPROCESSOR_SEPARATOR || ch === constants.OPEN_PARENTHESIS) {
83
+ break;
84
+ }
85
+ offset += 1;
86
+ }
87
+ // Save name end offset
88
+ const nameEnd = offset;
89
+ // Create name node
90
+ const name = valueParser.ValueParser.parse(raw.slice(nameStart, nameEnd), options$1, baseOffset + nameStart);
91
+ // Ignore whitespace characters after the directive name (if any)
92
+ // Note: this may incorrect according to the spec, but we do it for tolerance
93
+ offset = string.StringUtils.skipWS(raw, offset);
94
+ // If the directive name is "safari_cb_affinity", then we have a special case
95
+ if (name.value === constants.SAFARI_CB_AFFINITY) {
96
+ // Throw error if there are spaces after the directive name
97
+ if (offset > nameEnd) {
98
+ throw new adblockSyntaxError.AdblockSyntaxError(`Unexpected whitespace after "${constants.SAFARI_CB_AFFINITY}" directive name`, baseOffset + nameEnd, baseOffset + offset);
99
+ }
100
+ // safari_cb_affinity directive optionally accepts a parameter list
101
+ // So at this point we should check if there are parameters or not
102
+ // (cb_affinity directive followed by an opening parenthesis or if we
103
+ // skip the whitespace we reach the end of the string)
104
+ if (string.StringUtils.skipWS(raw, offset) !== raw.length) {
105
+ if (raw[offset] !== constants.OPEN_PARENTHESIS) {
106
+ throw new adblockSyntaxError.AdblockSyntaxError(`Unexpected character '${raw[offset]}' after '${constants.SAFARI_CB_AFFINITY}' directive name`, baseOffset + offset, baseOffset + offset + 1);
107
+ }
108
+ // If we have parameters, then we should parse them
109
+ // Note: we don't validate the parameters at this stage
110
+ // Ignore opening parenthesis
111
+ offset += 1;
112
+ // Save parameter list start offset
113
+ const parameterListStart = offset;
114
+ // Check for closing parenthesis
115
+ const closingParenthesesIndex = string.StringUtils.skipWSBack(raw);
116
+ if (closingParenthesesIndex === -1 || raw[closingParenthesesIndex] !== constants.CLOSE_PARENTHESIS) {
117
+ throw new adblockSyntaxError.AdblockSyntaxError(`Missing closing parenthesis for '${constants.SAFARI_CB_AFFINITY}' directive`, baseOffset + offset, baseOffset + raw.length);
118
+ }
119
+ // Save parameter list end offset
120
+ const parameterListEnd = closingParenthesesIndex;
121
+ // Parse parameters between the opening and closing parentheses
122
+ const result = {
123
+ type: index.CommentRuleType.PreProcessorCommentRule,
124
+ category: index.RuleCategory.Comment,
125
+ syntax: adblockers.AdblockSyntax.Adg,
126
+ name,
127
+ // comma separated list of parameters
128
+ params: parameterListParser.ParameterListParser.parse(raw.slice(parameterListStart, parameterListEnd), options$1, baseOffset + parameterListStart, constants.COMMA),
129
+ };
130
+ if (options$1.includeRaws) {
131
+ result.raws = {
132
+ text: raw,
133
+ };
134
+ }
135
+ if (options$1.isLocIncluded) {
136
+ result.start = baseOffset;
137
+ result.end = baseOffset + raw.length;
138
+ }
139
+ return result;
140
+ }
141
+ }
142
+ // If we reached the end of the string, then we have a directive without parameters
143
+ // (e.g. "!#safari_cb_affinity" or "!#endif")
144
+ // No need to continue parsing in this case.
145
+ if (offset === raw.length) {
146
+ // Throw error if the directive name is "if" or "include", because these directives
147
+ // should have parameters
148
+ if (name.value === constants.IF || name.value === constants.INCLUDE) {
149
+ throw new adblockSyntaxError.AdblockSyntaxError(`Directive "${name.value}" requires parameters`, baseOffset, baseOffset + raw.length);
150
+ }
151
+ const result = {
152
+ type: index.CommentRuleType.PreProcessorCommentRule,
153
+ category: index.RuleCategory.Comment,
154
+ syntax: adblockers.AdblockSyntax.Common,
155
+ name,
156
+ };
157
+ if (options$1.includeRaws) {
158
+ result.raws = {
159
+ text: raw,
160
+ };
161
+ }
162
+ if (options$1.isLocIncluded) {
163
+ result.start = baseOffset;
164
+ result.end = baseOffset + raw.length;
165
+ }
166
+ return result;
167
+ }
168
+ // Get start and end offsets of the directive parameters
169
+ const paramsStart = offset;
170
+ const paramsEnd = string.StringUtils.skipWSBack(raw) + 1;
171
+ // Prepare parameters node
172
+ let params;
173
+ // Parse parameters. Handle "if" and "safari_cb_affinity" directives
174
+ // separately.
175
+ if (name.value === constants.IF) {
176
+ params = logicalExpressionParser.LogicalExpressionParser.parse(raw.slice(paramsStart, paramsEnd), options$1, baseOffset + paramsStart);
177
+ }
178
+ else {
179
+ params = valueParser.ValueParser.parse(raw.slice(paramsStart, paramsEnd), options$1, baseOffset + paramsStart);
180
+ }
181
+ const result = {
182
+ type: index.CommentRuleType.PreProcessorCommentRule,
183
+ category: index.RuleCategory.Comment,
184
+ syntax: adblockers.AdblockSyntax.Common,
185
+ name,
186
+ params,
187
+ };
188
+ if (options$1.includeRaws) {
189
+ result.raws = {
190
+ text: raw,
191
+ };
192
+ }
193
+ if (options$1.isLocIncluded) {
194
+ result.start = baseOffset;
195
+ result.end = baseOffset + raw.length;
196
+ }
197
+ return result;
198
+ }
199
+ }
200
+
201
+ exports.PreProcessorCommentParser = PreProcessorCommentParser;
@@ -0,0 +1,108 @@
1
+ /*
2
+ * AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 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
+ 'use strict';
8
+
9
+ var adblockers = require('../../utils/adblockers.js');
10
+ var cosmeticRuleSeparator = require('../../utils/cosmetic-rule-separator.js');
11
+ var string = require('../../utils/string.js');
12
+ var index = require('../../nodes/index.js');
13
+ var baseParser = require('../base-parser.js');
14
+ var valueParser = require('../misc/value-parser.js');
15
+ var options = require('../options.js');
16
+
17
+ /**
18
+ * `SimpleCommentParser` is responsible for parsing simple comments.
19
+ * Some comments have a special meaning in adblock syntax, like agent comments or hints,
20
+ * but this parser is only responsible for parsing regular comments,
21
+ * whose only purpose is to provide some human-readable information.
22
+ *
23
+ * @example
24
+ * ```adblock
25
+ * ! This is a simple comment
26
+ * # This is a simple comment, but in host-like syntax
27
+ * ```
28
+ */
29
+ class SimpleCommentParser extends baseParser.BaseParser {
30
+ /**
31
+ * Checks if the raw rule is a simple comment.
32
+ *
33
+ * @param raw Raw input to check.
34
+ * @returns `true` if the input is a simple comment, `false` otherwise.
35
+ * @note This method does not check for adblock agent comments.
36
+ */
37
+ static isSimpleComment(raw) {
38
+ const trimmed = raw.trim();
39
+ // Exclamation mark based comments
40
+ if (trimmed.startsWith(index.CommentMarker.Regular)) {
41
+ return true;
42
+ }
43
+ // Hashmark based comments
44
+ // Note: in this case, we must be sure that we do not mistakenly parse a cosmetic rule as a #-like comment,
45
+ // since most cosmetic rule separators also start with #
46
+ if (trimmed.startsWith(index.CommentMarker.Hashmark)) {
47
+ const result = cosmeticRuleSeparator.CosmeticRuleSeparatorUtils.find(trimmed);
48
+ // If we cannot find a separator, it means that the rule is definitely a comment
49
+ if (result === null) {
50
+ return true;
51
+ }
52
+ // Otherwise, we must check if the separator is followed by a valid selector
53
+ const { end } = result;
54
+ // No valid selector
55
+ if (!trimmed[end + 1]
56
+ || string.StringUtils.isWhitespace(trimmed[end + 1])
57
+ || (trimmed[end + 1] === index.CommentMarker.Hashmark && trimmed[end + 2] === index.CommentMarker.Hashmark)) {
58
+ return true;
59
+ }
60
+ }
61
+ return false;
62
+ }
63
+ /**
64
+ * Parses a raw rule as a simple comment.
65
+ *
66
+ * @param raw Raw input to parse.
67
+ * @param options Global parser options.
68
+ * @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
69
+ * @returns Comment rule node or null (if the raw rule cannot be parsed as a simple comment).
70
+ */
71
+ static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
72
+ // Ignore non-comment rules
73
+ if (!this.isSimpleComment(raw)) {
74
+ return null;
75
+ }
76
+ // If we are here, it means that the rule is a regular comment
77
+ let offset = 0;
78
+ // Skip leading whitespace (if any)
79
+ offset = string.StringUtils.skipWS(raw, offset);
80
+ // Get comment marker
81
+ const marker = valueParser.ValueParser.parse(raw[offset], options$1, baseOffset + offset);
82
+ // Skip marker
83
+ offset += 1;
84
+ // Get comment text
85
+ const text = valueParser.ValueParser.parse(raw.slice(offset), options$1, baseOffset + offset);
86
+ // Regular comment rule
87
+ const result = {
88
+ category: index.RuleCategory.Comment,
89
+ type: index.CommentRuleType.CommentRule,
90
+ // TODO: Change syntax when hashmark is used
91
+ syntax: adblockers.AdblockSyntax.Common,
92
+ marker,
93
+ text,
94
+ };
95
+ if (options$1.includeRaws) {
96
+ result.raws = {
97
+ text: raw,
98
+ };
99
+ }
100
+ if (options$1.isLocIncluded) {
101
+ result.start = baseOffset;
102
+ result.end = baseOffset + raw.length;
103
+ }
104
+ return result;
105
+ }
106
+ }
107
+
108
+ exports.SimpleCommentParser = SimpleCommentParser;
@@ -0,0 +1,81 @@
1
+ /*
2
+ * AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 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
+ 'use strict';
8
+
9
+ var constants = require('../../../utils/constants.js');
10
+ var string = require('../../../utils/string.js');
11
+ var adblockSyntaxError = require('../../../errors/adblock-syntax-error.js');
12
+ var parameterListParser = require('../../misc/parameter-list-parser.js');
13
+ var options = require('../../options.js');
14
+ var baseParser = require('../../base-parser.js');
15
+ var abpSnippetInjectionBodyCommon = require('../../../common/abp-snippet-injection-body-common.js');
16
+
17
+ /**
18
+ * @file uBlock scriptlet injection body parser
19
+ */
20
+ /**
21
+ * `AbpSnippetInjectionBodyParser` is responsible for parsing the body of an Adblock Plus-style snippet rule.
22
+ *
23
+ * Please note that the parser will parse any scriptlet rule if it is syntactically correct.
24
+ * For example, it will parse this:
25
+ * ```adblock
26
+ * example.com#$#snippet0 arg0
27
+ * ```
28
+ *
29
+ * but it didn't check if the scriptlet `snippet0` actually supported by any adblocker.
30
+ *
31
+ * @see {@link https://help.eyeo.com/adblockplus/snippet-filters-tutorial}
32
+ */
33
+ class AbpSnippetInjectionBodyParser extends baseParser.BaseParser {
34
+ /**
35
+ * Parses the body of an Adblock Plus-style snippet rule.
36
+ *
37
+ * @param raw Raw input to parse.
38
+ * @param options Global parser options.
39
+ * @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
40
+ * @returns Node of the parsed scriptlet call body
41
+ * @throws If the body is syntactically incorrect
42
+ * @example
43
+ * ```
44
+ * #$#snippet0 arg0
45
+ * ```
46
+ */
47
+ static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
48
+ const result = {
49
+ type: 'ScriptletInjectionRuleBody',
50
+ children: [],
51
+ };
52
+ if (options$1.isLocIncluded) {
53
+ result.start = baseOffset;
54
+ result.end = baseOffset + raw.length;
55
+ }
56
+ let offset = 0;
57
+ // Skip leading spaces
58
+ offset = string.StringUtils.skipWS(raw, offset);
59
+ while (offset < raw.length) {
60
+ offset = string.StringUtils.skipWS(raw, offset);
61
+ const scriptletCallStart = offset;
62
+ // Find the next semicolon or the end of the string
63
+ let semicolonIndex = string.StringUtils.findUnescapedNonStringNonRegexChar(raw, constants.SEMICOLON, offset);
64
+ if (semicolonIndex === -1) {
65
+ semicolonIndex = raw.length;
66
+ }
67
+ const scriptletCallEnd = Math.max(string.StringUtils.skipWSBack(raw, semicolonIndex - 1) + 1, scriptletCallStart);
68
+ const params = parameterListParser.ParameterListParser.parse(raw.slice(scriptletCallStart, scriptletCallEnd), options$1, baseOffset + scriptletCallStart, constants.SPACE);
69
+ // Parse the scriptlet call
70
+ result.children.push(params);
71
+ // Skip the semicolon
72
+ offset = semicolonIndex + 1;
73
+ }
74
+ if (result.children.length === 0) {
75
+ throw new adblockSyntaxError.AdblockSyntaxError(abpSnippetInjectionBodyCommon.AbpSnippetInjectionBodyCommon.ERROR_MESSAGES.EMPTY_SCRIPTLET_CALL, baseOffset, baseOffset + raw.length);
76
+ }
77
+ return result;
78
+ }
79
+ }
80
+
81
+ exports.AbpSnippetInjectionBodyParser = AbpSnippetInjectionBodyParser;
@@ -0,0 +1,151 @@
1
+ /*
2
+ * AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 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
+ 'use strict';
8
+
9
+ var sprintfJs = require('sprintf-js');
10
+ var constants = require('../../../utils/constants.js');
11
+ var string = require('../../../utils/string.js');
12
+ var adblockSyntaxError = require('../../../errors/adblock-syntax-error.js');
13
+ var options = require('../../options.js');
14
+ var baseParser = require('../../base-parser.js');
15
+ var valueParser = require('../../misc/value-parser.js');
16
+ var typeGuards = require('../../../utils/type-guards.js');
17
+
18
+ /**
19
+ * @file AdGuard scriptlet injection body parser
20
+ */
21
+ /**
22
+ * `AdgScriptletInjectionBodyParser` is responsible for parsing the body of an AdGuard-style scriptlet rule.
23
+ *
24
+ * Please note that the parser will parse any scriptlet rule if it is syntactically correct.
25
+ * For example, it will parse this:
26
+ * ```adblock
27
+ * example.com#%#//scriptlet('scriptlet0', 'arg0')
28
+ * ```
29
+ *
30
+ * but it didn't check if the scriptlet `scriptlet0` actually supported by any adblocker.
31
+ *
32
+ * @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#scriptlets}
33
+ */
34
+ class AdgScriptletInjectionBodyParser extends baseParser.BaseParser {
35
+ /**
36
+ * Error messages used by the parser.
37
+ */
38
+ static ERROR_MESSAGES = {
39
+ NO_SCRIPTLET_MASK: `Invalid ADG scriptlet call, no scriptlet call mask '${constants.ADG_SCRIPTLET_MASK}' found`,
40
+ NO_OPENING_PARENTHESIS: `Invalid ADG scriptlet call, no opening parentheses '${constants.OPEN_PARENTHESIS}' found`,
41
+ NO_CLOSING_PARENTHESIS: `Invalid ADG scriptlet call, no closing parentheses '${constants.CLOSE_PARENTHESIS}' found`,
42
+ WHITESPACE_AFTER_MASK: 'Invalid ADG scriptlet call, whitespace is not allowed after the scriptlet call mask',
43
+ NO_INCONSISTENT_QUOTES: 'Invalid ADG scriptlet call, inconsistent quotes',
44
+ NO_UNCLOSED_PARAMETER: 'Invalid ADG scriptlet call, unclosed parameter',
45
+ EXPECTED_QUOTE: "Invalid ADG scriptlet call, expected quote, got '%s'",
46
+ EXPECTED_COMMA: "Invalid ADG scriptlet call, expected comma, got '%s'",
47
+ };
48
+ /**
49
+ * Parses the body of an AdGuard-style scriptlet rule.
50
+ *
51
+ * @param raw Raw input to parse.
52
+ * @param options Global parser options.
53
+ * @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
54
+ * @returns Node of the parsed scriptlet call body
55
+ * @throws If the body is syntactically incorrect
56
+ * @example
57
+ * ```
58
+ * //scriptlet('scriptlet0', 'arg0')
59
+ * ```
60
+ */
61
+ static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
62
+ let offset = 0;
63
+ // Skip leading spaces
64
+ offset = string.StringUtils.skipWS(raw, offset);
65
+ // Scriptlet call should start with "//scriptlet"
66
+ if (!raw.startsWith(constants.ADG_SCRIPTLET_MASK, offset)) {
67
+ throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_SCRIPTLET_MASK, baseOffset + offset, baseOffset + raw.length);
68
+ }
69
+ offset += constants.ADG_SCRIPTLET_MASK.length;
70
+ // Whitespace is not allowed after the mask
71
+ if (raw[offset] === constants.SPACE) {
72
+ throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.WHITESPACE_AFTER_MASK, baseOffset + offset, baseOffset + raw.length);
73
+ }
74
+ // Parameter list should be wrapped in parentheses
75
+ if (raw[offset] !== constants.OPEN_PARENTHESIS) {
76
+ throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_OPENING_PARENTHESIS, baseOffset + offset, baseOffset + raw.length);
77
+ }
78
+ // Save the offset of the opening parentheses
79
+ const openingParenthesesIndex = offset;
80
+ // Skip whitespace from the end
81
+ const closingParenthesesIndex = string.StringUtils.skipWSBack(raw, raw.length - 1);
82
+ // Closing parentheses should be present
83
+ if (raw[closingParenthesesIndex] !== constants.CLOSE_PARENTHESIS
84
+ || raw[closingParenthesesIndex - 1] === constants.ESCAPE_CHARACTER) {
85
+ throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_CLOSING_PARENTHESIS, baseOffset + offset, baseOffset + raw.length);
86
+ }
87
+ // Skip space, if any
88
+ offset = string.StringUtils.skipWS(raw, offset + 1);
89
+ const result = {
90
+ type: 'ScriptletInjectionRuleBody',
91
+ children: [],
92
+ };
93
+ if (options$1.isLocIncluded) {
94
+ result.start = baseOffset;
95
+ result.end = baseOffset + raw.length;
96
+ }
97
+ // Special case: empty scriptlet call, like `//scriptlet()`, `//scriptlet( )` etc.
98
+ if (string.StringUtils.skipWS(raw, openingParenthesesIndex + 1) === closingParenthesesIndex) {
99
+ return result;
100
+ }
101
+ let detectedQuote = null;
102
+ const parameterList = {
103
+ type: 'ParameterList',
104
+ children: [],
105
+ };
106
+ if (options$1.isLocIncluded) {
107
+ parameterList.start = baseOffset + openingParenthesesIndex + 1;
108
+ parameterList.end = baseOffset + closingParenthesesIndex;
109
+ }
110
+ while (offset < closingParenthesesIndex) {
111
+ // Skip whitespace
112
+ offset = string.StringUtils.skipWS(raw, offset);
113
+ // Expect comma if not first parameter
114
+ if (parameterList.children.length > 0) {
115
+ if (raw[offset] !== constants.COMMA) {
116
+ throw new adblockSyntaxError.AdblockSyntaxError(sprintfJs.sprintf(AdgScriptletInjectionBodyParser.ERROR_MESSAGES.EXPECTED_COMMA, raw[offset]), baseOffset + offset, baseOffset + raw.length);
117
+ }
118
+ // Eat the comma
119
+ offset += 1;
120
+ // Skip whitespace
121
+ offset = string.StringUtils.skipWS(raw, offset);
122
+ }
123
+ // Next character should be a quote
124
+ if (raw[offset] === constants.SINGLE_QUOTE || raw[offset] === constants.DOUBLE_QUOTE) {
125
+ if (typeGuards.isNull(detectedQuote)) {
126
+ detectedQuote = raw[offset];
127
+ }
128
+ else if (detectedQuote !== raw[offset]) {
129
+ throw new adblockSyntaxError.AdblockSyntaxError(AdgScriptletInjectionBodyParser.ERROR_MESSAGES.NO_INCONSISTENT_QUOTES, baseOffset + offset, baseOffset + raw.length);
130
+ }
131
+ // Find next unescaped same quote
132
+ const closingQuoteIndex = string.StringUtils.findNextUnescapedCharacter(raw, detectedQuote, offset + 1);
133
+ if (closingQuoteIndex === -1) {
134
+ throw new adblockSyntaxError.AdblockSyntaxError(AdgScriptletInjectionBodyParser.ERROR_MESSAGES.NO_UNCLOSED_PARAMETER, baseOffset + offset, baseOffset + raw.length);
135
+ }
136
+ // Save the parameter
137
+ const parameter = valueParser.ValueParser.parse(raw.slice(offset, closingQuoteIndex + 1), options$1, baseOffset + offset);
138
+ parameterList.children.push(parameter);
139
+ // Move after the closing quote
140
+ offset = string.StringUtils.skipWS(raw, closingQuoteIndex + 1);
141
+ }
142
+ else {
143
+ throw new adblockSyntaxError.AdblockSyntaxError(sprintfJs.sprintf(AdgScriptletInjectionBodyParser.ERROR_MESSAGES.EXPECTED_QUOTE, raw[offset]), baseOffset + offset, baseOffset + raw.length);
144
+ }
145
+ }
146
+ result.children.push(parameterList);
147
+ return result;
148
+ }
149
+ }
150
+
151
+ exports.AdgScriptletInjectionBodyParser = AdgScriptletInjectionBodyParser;
@@ -0,0 +1,112 @@
1
+ /*
2
+ * AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 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
+ 'use strict';
8
+
9
+ var constants = require('../../../utils/constants.js');
10
+ var string = require('../../../utils/string.js');
11
+ var adblockSyntaxError = require('../../../errors/adblock-syntax-error.js');
12
+ var options = require('../../options.js');
13
+ var baseParser = require('../../base-parser.js');
14
+ var uboParameterListParser = require('../../misc/ubo-parameter-list-parser.js');
15
+
16
+ /**
17
+ * @file uBlock scriptlet injection body parser
18
+ */
19
+ /**
20
+ * `UboScriptletInjectionBodyParser` is responsible for parsing the body of a uBlock-style scriptlet rule.
21
+ *
22
+ * Please note that the parser will parse any scriptlet rule if it is syntactically correct.
23
+ * For example, it will parse this:
24
+ * ```adblock
25
+ * example.com##+js(scriptlet0, arg0)
26
+ * ```
27
+ *
28
+ * but it didn't check if the scriptlet `scriptlet0` actually supported by any adblocker.
29
+ *
30
+ * @see {@link https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#scriptlet-injection}
31
+ */
32
+ class UboScriptletInjectionBodyParser extends baseParser.BaseParser {
33
+ /**
34
+ * Error messages used by the parser.
35
+ */
36
+ static ERROR_MESSAGES = {
37
+ NO_SCRIPTLET_MASK: `Invalid uBO scriptlet call, no scriptlet call mask '${constants.UBO_SCRIPTLET_MASK}' found`,
38
+ NO_OPENING_PARENTHESIS: `Invalid uBO scriptlet call, no opening parentheses '${constants.OPEN_PARENTHESIS}' found`,
39
+ NO_CLOSING_PARENTHESIS: `Invalid uBO scriptlet call, no closing parentheses '${constants.CLOSE_PARENTHESIS}' found`,
40
+ NO_SCRIPTLET_NAME: 'Invalid uBO scriptlet call, no scriptlet name specified',
41
+ WHITESPACE_AFTER_MASK: 'Invalid uBO scriptlet call, whitespace is not allowed after the scriptlet call mask',
42
+ };
43
+ /**
44
+ * Parses the body of a uBlock-style scriptlet rule.
45
+ *
46
+ * @param raw Raw input to parse.
47
+ * @param options Global parser options.
48
+ * @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
49
+ * @returns Node of the parsed scriptlet call body
50
+ * @throws If the body is syntactically incorrect
51
+ * @example
52
+ * ```
53
+ * ##+js(scriptlet0, arg0)
54
+ * ```
55
+ */
56
+ static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
57
+ let offset = 0;
58
+ // Skip leading spaces
59
+ offset = string.StringUtils.skipWS(raw, offset);
60
+ let scriptletMaskLength = 0;
61
+ if (raw.startsWith(constants.UBO_SCRIPTLET_MASK, offset)) {
62
+ scriptletMaskLength = constants.UBO_SCRIPTLET_MASK.length;
63
+ }
64
+ else if (raw.startsWith(constants.UBO_SCRIPTLET_MASK_LEGACY, offset)) {
65
+ scriptletMaskLength = constants.UBO_SCRIPTLET_MASK_LEGACY.length;
66
+ }
67
+ // Scriptlet call should start with "+js"
68
+ if (!scriptletMaskLength) {
69
+ throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_SCRIPTLET_MASK, baseOffset + offset, baseOffset + raw.length);
70
+ }
71
+ offset += scriptletMaskLength;
72
+ // Whitespace is not allowed after the mask
73
+ if (raw[offset] === constants.SPACE) {
74
+ throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.WHITESPACE_AFTER_MASK, baseOffset + offset, baseOffset + raw.length);
75
+ }
76
+ // Parameter list should be wrapped in parentheses
77
+ if (raw[offset] !== constants.OPEN_PARENTHESIS) {
78
+ throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_OPENING_PARENTHESIS, baseOffset + offset, baseOffset + raw.length);
79
+ }
80
+ // Save the offset of the opening parentheses
81
+ const openingParenthesesIndex = offset;
82
+ // Skip whitespace from the end
83
+ const closingParenthesesIndex = string.StringUtils.skipWSBack(raw, raw.length - 1);
84
+ // Closing parentheses should be present
85
+ if (raw[closingParenthesesIndex] !== constants.CLOSE_PARENTHESIS
86
+ || raw[closingParenthesesIndex - 1] === constants.ESCAPE_CHARACTER) {
87
+ throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_CLOSING_PARENTHESIS, baseOffset + offset, baseOffset + raw.length);
88
+ }
89
+ const result = {
90
+ type: 'ScriptletInjectionRuleBody',
91
+ children: [],
92
+ };
93
+ if (options$1.isLocIncluded) {
94
+ result.start = baseOffset;
95
+ result.end = baseOffset + raw.length;
96
+ }
97
+ // Special case: empty scriptlet call, like +js(), +js( ), etc.
98
+ if (string.StringUtils.skipWS(raw, openingParenthesesIndex + 1) === closingParenthesesIndex) {
99
+ return result;
100
+ }
101
+ // Parse parameter list
102
+ const params = uboParameterListParser.UboParameterListParser.parse(raw.slice(openingParenthesesIndex + 1, closingParenthesesIndex), options$1, baseOffset + openingParenthesesIndex + 1, constants.COMMA);
103
+ // Do not allow parameters without scriptlet: +js(, arg0, arg1)
104
+ if (params.children.length > 0 && params.children[0] === null) {
105
+ throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_SCRIPTLET_NAME, baseOffset + offset, baseOffset + raw.length);
106
+ }
107
+ result.children.push(params);
108
+ return result;
109
+ }
110
+ }
111
+
112
+ exports.UboScriptletInjectionBodyParser = UboScriptletInjectionBodyParser;