@adguard/agtree 2.1.3 → 3.0.0-alpha.1
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.
- package/dist/cjs/ast-utils/clone.js +65 -0
- package/dist/cjs/ast-utils/modifiers.js +56 -0
- package/dist/cjs/ast-utils/network-rules.js +43 -0
- package/dist/cjs/ast-utils/scriptlets.js +93 -0
- package/dist/cjs/common/abp-snippet-injection-body-common.js +18 -0
- package/dist/cjs/common/agent-common.js +58 -0
- package/dist/cjs/common/ubo-selector-common.js +18 -0
- package/dist/cjs/compatibility-tables/base.js +264 -0
- package/dist/cjs/compatibility-tables/compatibility-table-data.js +15 -0
- package/dist/cjs/compatibility-tables/modifiers.js +57 -0
- package/dist/cjs/compatibility-tables/platforms.js +58 -0
- package/dist/cjs/compatibility-tables/redirects.js +102 -0
- package/dist/cjs/compatibility-tables/schemas/base.js +116 -0
- package/dist/cjs/compatibility-tables/schemas/modifier.js +107 -0
- package/dist/cjs/compatibility-tables/schemas/platform.js +71 -0
- package/dist/cjs/compatibility-tables/schemas/redirect.js +31 -0
- package/dist/cjs/compatibility-tables/schemas/resource-type.js +39 -0
- package/dist/cjs/compatibility-tables/schemas/scriptlet.js +81 -0
- package/dist/cjs/compatibility-tables/scriptlets.js +30 -0
- package/dist/cjs/compatibility-tables/utils/platform-helpers.js +112 -0
- package/dist/cjs/compatibility-tables/utils/resource-type-helpers.js +64 -0
- package/dist/cjs/compatibility-tables/utils/zod-camelcase.js +27 -0
- package/dist/cjs/converter/base-interfaces/base-converter.js +61 -0
- package/dist/cjs/converter/base-interfaces/conversion-result.js +41 -0
- package/dist/cjs/converter/base-interfaces/rule-converter-base.js +62 -0
- package/dist/cjs/converter/comment/index.js +56 -0
- package/dist/cjs/converter/cosmetic/css.js +71 -0
- package/dist/cjs/converter/cosmetic/element-hiding.js +64 -0
- package/dist/cjs/converter/cosmetic/header-removal.js +126 -0
- package/dist/cjs/converter/cosmetic/html.js +384 -0
- package/dist/cjs/converter/cosmetic/index.js +120 -0
- package/dist/cjs/converter/cosmetic/rule-modifiers/adg.js +81 -0
- package/dist/cjs/converter/cosmetic/scriptlet.js +356 -0
- package/dist/cjs/converter/css/index.js +193 -0
- package/dist/cjs/converter/data/css.js +133 -0
- package/dist/cjs/converter/filter-list.js +90 -0
- package/dist/cjs/converter/index.js +15 -0
- package/dist/cjs/converter/misc/network-rule-modifier.js +313 -0
- package/dist/cjs/converter/network/index.js +101 -0
- package/dist/cjs/converter/raw-filter-list.js +58 -0
- package/dist/cjs/converter/rule.js +83 -0
- package/dist/cjs/deserializer/base-deserializer.js +31 -0
- package/dist/cjs/deserializer/comment/agent-comment-deserializer.js +76 -0
- package/dist/cjs/deserializer/comment/agent-deserializer.js +67 -0
- package/dist/cjs/deserializer/comment/comment-rule-deserializer.js +109 -0
- package/dist/cjs/deserializer/comment/config-comment-deserializer.js +113 -0
- package/dist/cjs/deserializer/comment/hint-comment-deserializer.js +69 -0
- package/dist/cjs/deserializer/comment/hint-deserializer.js +88 -0
- package/dist/cjs/deserializer/comment/metadata-comment-deserializer.js +71 -0
- package/dist/cjs/deserializer/comment/pre-processor-comment-deserializer.js +114 -0
- package/dist/cjs/deserializer/comment/simple-comment-deserializer.js +67 -0
- package/dist/cjs/deserializer/cosmetic/cosmetic-rule-deserializer.js +127 -0
- package/dist/cjs/deserializer/cosmetic/css-injection-body-deserializer.js +55 -0
- package/dist/cjs/deserializer/cosmetic/element-hiding-body-deserializer.js +46 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +37 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +37 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +52 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +38 -0
- package/dist/cjs/deserializer/empty-rule-deserializer.js +46 -0
- package/dist/cjs/deserializer/filterlist-deserializer.js +83 -0
- package/dist/cjs/deserializer/index.js +15 -0
- package/dist/cjs/deserializer/invalid-rule-deserializer.js +48 -0
- package/dist/cjs/deserializer/invalid-rule-error-node-deserializer.js +48 -0
- package/dist/cjs/deserializer/misc/domain-list-deserializer.js +66 -0
- package/dist/cjs/deserializer/misc/list-item-deserializer.js +65 -0
- package/dist/cjs/deserializer/misc/list-items-deserializer.js +28 -0
- package/dist/cjs/deserializer/misc/logical-expression-deserializer.js +199 -0
- package/dist/cjs/deserializer/misc/modifier-deserializer.js +89 -0
- package/dist/cjs/deserializer/misc/modifier-list-deserializer.js +58 -0
- package/dist/cjs/deserializer/misc/parameter-list-deserializer.js +62 -0
- package/dist/cjs/deserializer/misc/value-deserializer.js +52 -0
- package/dist/cjs/deserializer/network/host-rule-deserializer.js +81 -0
- package/dist/cjs/deserializer/network/hostname-list-deserializer.js +50 -0
- package/dist/cjs/deserializer/network/network-rule-deserializer.js +67 -0
- package/dist/cjs/deserializer/rule-deserializer.js +67 -0
- package/dist/cjs/deserializer/syntax-deserialization-map.js +23 -0
- package/dist/cjs/errors/adblock-syntax-error.js +41 -0
- package/dist/cjs/errors/binary-schema-mismatch-error.js +39 -0
- package/dist/cjs/errors/not-implemented-error.js +33 -0
- package/dist/cjs/errors/rule-conversion-error.js +28 -0
- package/dist/cjs/generator/base-generator.js +29 -0
- package/dist/cjs/generator/comment/agent-comment-generator.js +30 -0
- package/dist/cjs/generator/comment/agent-generator.js +34 -0
- package/dist/cjs/generator/comment/comment-rule-generator.js +102 -0
- package/dist/cjs/generator/comment/config-comment-generator.js +44 -0
- package/dist/cjs/generator/comment/hint-comment-generator.js +27 -0
- package/dist/cjs/generator/comment/hint-generator.js +32 -0
- package/dist/cjs/generator/comment/metadata-comment-generator.js +32 -0
- package/dist/cjs/generator/comment/pre-processor-comment-generator.js +47 -0
- package/dist/cjs/generator/comment/simple-comment-generator.js +28 -0
- package/dist/cjs/generator/cosmetic/body/abp-snippet-injection-body-generator.js +36 -0
- package/dist/cjs/generator/cosmetic/body/adg-scriptlet-injection-body-generator.js +41 -0
- package/dist/cjs/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js +43 -0
- package/dist/cjs/generator/cosmetic/cosmetic-rule-body-generator.js +92 -0
- package/dist/cjs/generator/cosmetic/cosmetic-rule-generator.js +66 -0
- package/dist/cjs/generator/cosmetic/cosmetic-rule-pattern-generator.js +41 -0
- package/dist/cjs/generator/css/adg-css-injection-generator.js +41 -0
- package/dist/cjs/generator/filterlist-generator.js +57 -0
- package/dist/cjs/generator/index.js +17 -0
- package/dist/cjs/generator/misc/domain-list-generator.js +25 -0
- package/dist/cjs/generator/misc/list-items-generator.js +38 -0
- package/dist/cjs/generator/misc/logical-expression-generator.js +47 -0
- package/dist/cjs/generator/misc/modifier-generator.js +33 -0
- package/dist/cjs/generator/misc/modifier-list-generator.js +28 -0
- package/dist/cjs/generator/misc/parameter-list-generator.js +41 -0
- package/dist/cjs/generator/misc/value-generator.js +23 -0
- package/dist/cjs/generator/network/host-rule-generator.js +38 -0
- package/dist/cjs/generator/network/network-rule-generator.js +37 -0
- package/dist/cjs/generator/rule-generator.js +64 -0
- package/dist/cjs/index.js +201 -0
- package/dist/cjs/marshalling-utils/comment/agent-comment-common.js +22 -0
- package/dist/cjs/marshalling-utils/comment/agent-common.js +43 -0
- package/dist/cjs/marshalling-utils/comment/config-comment-common.js +58 -0
- package/dist/cjs/marshalling-utils/comment/hint-comment-common.js +23 -0
- package/dist/cjs/marshalling-utils/comment/hint-common.js +60 -0
- package/dist/cjs/marshalling-utils/comment/metadata-comment-common.js +44 -0
- package/dist/cjs/marshalling-utils/comment/pre-processor-comment-common.js +63 -0
- package/dist/cjs/marshalling-utils/comment/simple-comment-common.js +23 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +64 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +68 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/css-injection-body-common.js +25 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/element-hiding-body-common.js +22 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +116 -0
- package/dist/cjs/marshalling-utils/cosmetic/cosmetic-rule-common.js +51 -0
- package/dist/cjs/marshalling-utils/empty-rule-common.js +21 -0
- package/dist/cjs/marshalling-utils/filter-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/invalid-rule-common.js +22 -0
- package/dist/cjs/marshalling-utils/invalid-rule-error-node-common.js +23 -0
- package/dist/cjs/marshalling-utils/misc/binary-type-common.js +67 -0
- package/dist/cjs/marshalling-utils/misc/domain-list-common.js +39 -0
- package/dist/cjs/marshalling-utils/misc/host-rule-common.js +26 -0
- package/dist/cjs/marshalling-utils/misc/hostname-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/misc/list-item-common.js +23 -0
- package/dist/cjs/marshalling-utils/misc/logical-expression-common.js +89 -0
- package/dist/cjs/marshalling-utils/misc/modifier-common.js +236 -0
- package/dist/cjs/marshalling-utils/misc/modifier-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/misc/parameter-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/misc/value-common.js +23 -0
- package/dist/cjs/marshalling-utils/network/network-rule-common.js +26 -0
- package/dist/cjs/marshalling-utils/syntax-serialization-map.js +32 -0
- package/dist/cjs/nodes/index.js +180 -0
- package/dist/cjs/package.json.js +11 -0
- package/dist/cjs/parser/base-parser.js +32 -0
- package/dist/cjs/parser/comment/agent-comment-parser.js +121 -0
- package/dist/cjs/parser/comment/agent-parser.js +111 -0
- package/dist/cjs/parser/comment/comment-parser.js +110 -0
- package/dist/cjs/parser/comment/config-comment-parser.js +139 -0
- package/dist/cjs/parser/comment/hint-comment-parser.js +119 -0
- package/dist/cjs/parser/comment/hint-parser.js +131 -0
- package/dist/cjs/parser/comment/metadata-comment-parser.js +131 -0
- package/dist/cjs/parser/comment/preprocessor-parser.js +201 -0
- package/dist/cjs/parser/comment/simple-comment-parser.js +108 -0
- package/dist/cjs/parser/cosmetic/body/abp-snippet-injection-body-parser.js +81 -0
- package/dist/cjs/parser/cosmetic/body/adg-scriptlet-injection-body-parser.js +151 -0
- package/dist/cjs/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js +112 -0
- package/dist/cjs/parser/cosmetic/cosmetic-rule-parser.js +456 -0
- package/dist/cjs/parser/css/adg-css-injection-parser.js +213 -0
- package/dist/cjs/parser/css/balancing.js +97 -0
- package/dist/cjs/parser/css/constants.js +21 -0
- package/dist/cjs/parser/css/css-token-stream.js +345 -0
- package/dist/cjs/parser/css/ubo-selector-parser.js +373 -0
- package/dist/cjs/parser/filterlist-parser.js +104 -0
- package/dist/cjs/parser/index.js +21 -0
- package/dist/cjs/parser/misc/app-list-parser.js +47 -0
- package/dist/cjs/parser/misc/domain-list-parser.js +54 -0
- package/dist/cjs/parser/misc/list-items-parser.js +116 -0
- package/dist/cjs/parser/misc/logical-expression-parser.js +283 -0
- package/dist/cjs/parser/misc/method-list-parser.js +48 -0
- package/dist/cjs/parser/misc/modifier-list.js +72 -0
- package/dist/cjs/parser/misc/modifier-parser.js +91 -0
- package/dist/cjs/parser/misc/parameter-list-parser.js +74 -0
- package/dist/cjs/parser/misc/stealth-option-list-parser.js +48 -0
- package/dist/cjs/parser/misc/ubo-parameter-list-parser.js +148 -0
- package/dist/cjs/parser/misc/value-parser.js +39 -0
- package/dist/cjs/parser/network/host-rule-parser.js +151 -0
- package/dist/cjs/parser/network/network-rule-parser.js +113 -0
- package/dist/cjs/parser/options.js +25 -0
- package/dist/cjs/parser/rule-parser.js +194 -0
- package/dist/cjs/serializer/base-serializer.js +31 -0
- package/dist/cjs/serializer/comment/agent-comment-serializer.js +73 -0
- package/dist/cjs/serializer/comment/agent-serializer.js +70 -0
- package/dist/cjs/serializer/comment/comment-rule-serializer.js +107 -0
- package/dist/cjs/serializer/comment/config-comment-serializer.js +84 -0
- package/dist/cjs/serializer/comment/hint-comment-serializer.js +64 -0
- package/dist/cjs/serializer/comment/hint-serializer.js +56 -0
- package/dist/cjs/serializer/comment/metadata-comment-serializer.js +75 -0
- package/dist/cjs/serializer/comment/pre-processor-comment-serializer.js +73 -0
- package/dist/cjs/serializer/comment/simple-comment-serializer.js +54 -0
- package/dist/cjs/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +38 -0
- package/dist/cjs/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +38 -0
- package/dist/cjs/serializer/cosmetic/body/scriptlet-body-serializer.js +49 -0
- package/dist/cjs/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +38 -0
- package/dist/cjs/serializer/cosmetic/cosmetic-rule-serializer.js +131 -0
- package/dist/cjs/serializer/cosmetic/css-injection-body-serializer.js +50 -0
- package/dist/cjs/serializer/cosmetic/element-hiding-body-serializer.js +39 -0
- package/dist/cjs/serializer/empty-rule-serializer.js +36 -0
- package/dist/cjs/serializer/filterlist-serializer.js +48 -0
- package/dist/cjs/serializer/index.js +13 -0
- package/dist/cjs/serializer/invalid-rule-error-node-serializer.js +40 -0
- package/dist/cjs/serializer/invalid-rule-serializer.js +39 -0
- package/dist/cjs/serializer/misc/domain-list-serializer.js +66 -0
- package/dist/cjs/serializer/misc/list-item-serializer.js +57 -0
- package/dist/cjs/serializer/misc/list-items-serializer.js +28 -0
- package/dist/cjs/serializer/misc/logical-expression-serializer.js +138 -0
- package/dist/cjs/serializer/misc/modifier-list-serializer.js +57 -0
- package/dist/cjs/serializer/misc/modifier-serializer.js +51 -0
- package/dist/cjs/serializer/misc/parameter-list-serializer.js +51 -0
- package/dist/cjs/serializer/misc/value-serializer.js +52 -0
- package/dist/cjs/serializer/network/host-rule-serializer.js +72 -0
- package/dist/cjs/serializer/network/hostname-list-serializer.js +49 -0
- package/dist/cjs/serializer/network/network-rule-serializer.js +56 -0
- package/dist/cjs/serializer/rule-serializer.js +63 -0
- package/dist/cjs/utils/adblockers.js +57 -0
- package/dist/cjs/utils/binary-schema-version.js +19 -0
- package/dist/cjs/utils/byte-buffer.js +93 -0
- package/dist/cjs/utils/categorizer.js +46 -0
- package/dist/cjs/utils/clone.js +30 -0
- package/dist/cjs/utils/constants.js +380 -0
- package/dist/cjs/utils/cosmetic-rule-separator.js +129 -0
- package/dist/cjs/utils/deep-freeze.js +34 -0
- package/dist/cjs/utils/domain.js +60 -0
- package/dist/cjs/utils/error.js +51 -0
- package/dist/cjs/utils/index.js +69 -0
- package/dist/cjs/utils/input-byte-buffer.js +259 -0
- package/dist/cjs/utils/is-chromium.js +22 -0
- package/dist/cjs/utils/logical-expression.js +94 -0
- package/dist/cjs/utils/multi-value-map.js +35 -0
- package/dist/cjs/utils/output-byte-buffer.js +225 -0
- package/dist/cjs/utils/position-provider.js +75 -0
- package/dist/cjs/utils/quotes.js +218 -0
- package/dist/cjs/utils/regexp.js +190 -0
- package/dist/cjs/utils/string.js +560 -0
- package/dist/cjs/utils/text-decoder-polyfill.js +109 -0
- package/dist/cjs/utils/text-encoder-polyfill.js +80 -0
- package/dist/cjs/utils/type-guards.js +52 -0
- package/dist/cjs/validator/constants.js +222 -0
- package/dist/cjs/validator/helpers.js +49 -0
- package/dist/cjs/validator/index.js +176 -0
- package/dist/cjs/validator/value.js +565 -0
- package/dist/cjs/version.js +20 -0
- package/dist/esm/ast-utils/clone.mjs +61 -0
- package/dist/esm/ast-utils/modifiers.mjs +53 -0
- package/dist/esm/ast-utils/network-rules.mjs +41 -0
- package/dist/esm/ast-utils/scriptlets.mjs +87 -0
- package/dist/esm/common/abp-snippet-injection-body-common.mjs +16 -0
- package/dist/esm/common/agent-common.mjs +56 -0
- package/dist/esm/common/ubo-selector-common.mjs +18 -0
- package/dist/esm/compatibility-tables/base.mjs +262 -0
- package/dist/esm/compatibility-tables/compatibility-table-data.mjs +11 -0
- package/dist/esm/compatibility-tables/modifiers.mjs +55 -0
- package/dist/esm/compatibility-tables/platforms.mjs +58 -0
- package/dist/esm/compatibility-tables/redirects.mjs +100 -0
- package/dist/esm/compatibility-tables/schemas/base.mjs +111 -0
- package/dist/esm/compatibility-tables/schemas/modifier.mjs +105 -0
- package/dist/esm/compatibility-tables/schemas/platform.mjs +69 -0
- package/dist/esm/compatibility-tables/schemas/redirect.mjs +29 -0
- package/dist/esm/compatibility-tables/schemas/resource-type.mjs +37 -0
- package/dist/esm/compatibility-tables/schemas/scriptlet.mjs +79 -0
- package/dist/esm/compatibility-tables/scriptlets.mjs +28 -0
- package/dist/esm/compatibility-tables/utils/platform-helpers.mjs +105 -0
- package/dist/esm/compatibility-tables/utils/resource-type-helpers.mjs +61 -0
- package/dist/esm/compatibility-tables/utils/zod-camelcase.mjs +25 -0
- package/dist/esm/converter/base-interfaces/base-converter.mjs +59 -0
- package/dist/esm/converter/base-interfaces/conversion-result.mjs +38 -0
- package/dist/esm/converter/base-interfaces/rule-converter-base.mjs +60 -0
- package/dist/esm/converter/comment/index.mjs +54 -0
- package/dist/esm/converter/cosmetic/css.mjs +69 -0
- package/dist/esm/converter/cosmetic/element-hiding.mjs +62 -0
- package/dist/esm/converter/cosmetic/header-removal.mjs +123 -0
- package/dist/esm/converter/cosmetic/html.mjs +381 -0
- package/dist/esm/converter/cosmetic/index.mjs +118 -0
- package/dist/esm/converter/cosmetic/rule-modifiers/adg.mjs +79 -0
- package/dist/esm/converter/cosmetic/scriptlet.mjs +354 -0
- package/dist/esm/converter/css/index.mjs +190 -0
- package/dist/esm/converter/data/css.mjs +126 -0
- package/dist/esm/converter/filter-list.mjs +88 -0
- package/dist/esm/converter/index.mjs +8 -0
- package/dist/esm/converter/misc/network-rule-modifier.mjs +311 -0
- package/dist/esm/converter/network/index.mjs +99 -0
- package/dist/esm/converter/raw-filter-list.mjs +56 -0
- package/dist/esm/converter/rule.mjs +81 -0
- package/dist/esm/deserializer/base-deserializer.mjs +29 -0
- package/dist/esm/deserializer/comment/agent-comment-deserializer.mjs +74 -0
- package/dist/esm/deserializer/comment/agent-deserializer.mjs +65 -0
- package/dist/esm/deserializer/comment/comment-rule-deserializer.mjs +107 -0
- package/dist/esm/deserializer/comment/config-comment-deserializer.mjs +111 -0
- package/dist/esm/deserializer/comment/hint-comment-deserializer.mjs +67 -0
- package/dist/esm/deserializer/comment/hint-deserializer.mjs +85 -0
- package/dist/esm/deserializer/comment/metadata-comment-deserializer.mjs +69 -0
- package/dist/esm/deserializer/comment/pre-processor-comment-deserializer.mjs +112 -0
- package/dist/esm/deserializer/comment/simple-comment-deserializer.mjs +65 -0
- package/dist/esm/deserializer/cosmetic/cosmetic-rule-deserializer.mjs +125 -0
- package/dist/esm/deserializer/cosmetic/css-injection-body-deserializer.mjs +53 -0
- package/dist/esm/deserializer/cosmetic/element-hiding-body-deserializer.mjs +44 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.mjs +35 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.mjs +35 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.mjs +50 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.mjs +35 -0
- package/dist/esm/deserializer/empty-rule-deserializer.mjs +44 -0
- package/dist/esm/deserializer/filterlist-deserializer.mjs +81 -0
- package/dist/esm/deserializer/index.mjs +8 -0
- package/dist/esm/deserializer/invalid-rule-deserializer.mjs +46 -0
- package/dist/esm/deserializer/invalid-rule-error-node-deserializer.mjs +46 -0
- package/dist/esm/deserializer/misc/domain-list-deserializer.mjs +64 -0
- package/dist/esm/deserializer/misc/list-item-deserializer.mjs +63 -0
- package/dist/esm/deserializer/misc/list-items-deserializer.mjs +26 -0
- package/dist/esm/deserializer/misc/logical-expression-deserializer.mjs +196 -0
- package/dist/esm/deserializer/misc/modifier-deserializer.mjs +87 -0
- package/dist/esm/deserializer/misc/modifier-list-deserializer.mjs +56 -0
- package/dist/esm/deserializer/misc/parameter-list-deserializer.mjs +60 -0
- package/dist/esm/deserializer/misc/value-deserializer.mjs +50 -0
- package/dist/esm/deserializer/network/host-rule-deserializer.mjs +79 -0
- package/dist/esm/deserializer/network/hostname-list-deserializer.mjs +48 -0
- package/dist/esm/deserializer/network/network-rule-deserializer.mjs +65 -0
- package/dist/esm/deserializer/rule-deserializer.mjs +65 -0
- package/dist/esm/deserializer/syntax-deserialization-map.mjs +21 -0
- package/dist/esm/errors/adblock-syntax-error.mjs +39 -0
- package/dist/esm/errors/binary-schema-mismatch-error.mjs +37 -0
- package/dist/esm/errors/not-implemented-error.mjs +31 -0
- package/dist/esm/errors/rule-conversion-error.mjs +26 -0
- package/dist/esm/generator/base-generator.mjs +27 -0
- package/dist/esm/generator/comment/agent-comment-generator.mjs +28 -0
- package/dist/esm/generator/comment/agent-generator.mjs +32 -0
- package/dist/esm/generator/comment/comment-rule-generator.mjs +100 -0
- package/dist/esm/generator/comment/config-comment-generator.mjs +42 -0
- package/dist/esm/generator/comment/hint-comment-generator.mjs +25 -0
- package/dist/esm/generator/comment/hint-generator.mjs +30 -0
- package/dist/esm/generator/comment/metadata-comment-generator.mjs +30 -0
- package/dist/esm/generator/comment/pre-processor-comment-generator.mjs +45 -0
- package/dist/esm/generator/comment/simple-comment-generator.mjs +26 -0
- package/dist/esm/generator/cosmetic/body/abp-snippet-injection-body-generator.mjs +34 -0
- package/dist/esm/generator/cosmetic/body/adg-scriptlet-injection-body-generator.mjs +39 -0
- package/dist/esm/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.mjs +41 -0
- package/dist/esm/generator/cosmetic/cosmetic-rule-body-generator.mjs +90 -0
- package/dist/esm/generator/cosmetic/cosmetic-rule-generator.mjs +64 -0
- package/dist/esm/generator/cosmetic/cosmetic-rule-pattern-generator.mjs +39 -0
- package/dist/esm/generator/css/adg-css-injection-generator.mjs +39 -0
- package/dist/esm/generator/filterlist-generator.mjs +55 -0
- package/dist/esm/generator/index.mjs +9 -0
- package/dist/esm/generator/misc/domain-list-generator.mjs +23 -0
- package/dist/esm/generator/misc/list-items-generator.mjs +36 -0
- package/dist/esm/generator/misc/logical-expression-generator.mjs +45 -0
- package/dist/esm/generator/misc/modifier-generator.mjs +31 -0
- package/dist/esm/generator/misc/modifier-list-generator.mjs +26 -0
- package/dist/esm/generator/misc/parameter-list-generator.mjs +39 -0
- package/dist/esm/generator/misc/value-generator.mjs +21 -0
- package/dist/esm/generator/network/host-rule-generator.mjs +36 -0
- package/dist/esm/generator/network/network-rule-generator.mjs +35 -0
- package/dist/esm/generator/rule-generator.mjs +62 -0
- package/dist/esm/index.mjs +70 -0
- package/dist/esm/marshalling-utils/comment/agent-comment-common.mjs +22 -0
- package/dist/esm/marshalling-utils/comment/agent-common.mjs +41 -0
- package/dist/esm/marshalling-utils/comment/config-comment-common.mjs +56 -0
- package/dist/esm/marshalling-utils/comment/hint-comment-common.mjs +23 -0
- package/dist/esm/marshalling-utils/comment/hint-common.mjs +57 -0
- package/dist/esm/marshalling-utils/comment/metadata-comment-common.mjs +42 -0
- package/dist/esm/marshalling-utils/comment/pre-processor-comment-common.mjs +60 -0
- package/dist/esm/marshalling-utils/comment/simple-comment-common.mjs +23 -0
- package/dist/esm/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.mjs +62 -0
- package/dist/esm/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.mjs +66 -0
- package/dist/esm/marshalling-utils/cosmetic/body/css-injection-body-common.mjs +25 -0
- package/dist/esm/marshalling-utils/cosmetic/body/element-hiding-body-common.mjs +22 -0
- package/dist/esm/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.mjs +114 -0
- package/dist/esm/marshalling-utils/cosmetic/cosmetic-rule-common.mjs +49 -0
- package/dist/esm/marshalling-utils/empty-rule-common.mjs +21 -0
- package/dist/esm/marshalling-utils/filter-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/invalid-rule-common.mjs +22 -0
- package/dist/esm/marshalling-utils/invalid-rule-error-node-common.mjs +23 -0
- package/dist/esm/marshalling-utils/misc/binary-type-common.mjs +67 -0
- package/dist/esm/marshalling-utils/misc/domain-list-common.mjs +37 -0
- package/dist/esm/marshalling-utils/misc/host-rule-common.mjs +26 -0
- package/dist/esm/marshalling-utils/misc/hostname-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/misc/list-item-common.mjs +23 -0
- package/dist/esm/marshalling-utils/misc/logical-expression-common.mjs +86 -0
- package/dist/esm/marshalling-utils/misc/modifier-common.mjs +232 -0
- package/dist/esm/marshalling-utils/misc/modifier-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/misc/parameter-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/misc/value-common.mjs +23 -0
- package/dist/esm/marshalling-utils/network/network-rule-common.mjs +26 -0
- package/dist/esm/marshalling-utils/syntax-serialization-map.mjs +30 -0
- package/dist/esm/nodes/index.mjs +180 -0
- package/dist/esm/package.json.mjs +9 -0
- package/dist/esm/parser/base-parser.mjs +30 -0
- package/dist/esm/parser/comment/agent-comment-parser.mjs +119 -0
- package/dist/esm/parser/comment/agent-parser.mjs +109 -0
- package/dist/esm/parser/comment/comment-parser.mjs +108 -0
- package/dist/esm/parser/comment/config-comment-parser.mjs +137 -0
- package/dist/esm/parser/comment/hint-comment-parser.mjs +117 -0
- package/dist/esm/parser/comment/hint-parser.mjs +129 -0
- package/dist/esm/parser/comment/metadata-comment-parser.mjs +129 -0
- package/dist/esm/parser/comment/preprocessor-parser.mjs +199 -0
- package/dist/esm/parser/comment/simple-comment-parser.mjs +106 -0
- package/dist/esm/parser/cosmetic/body/abp-snippet-injection-body-parser.mjs +79 -0
- package/dist/esm/parser/cosmetic/body/adg-scriptlet-injection-body-parser.mjs +149 -0
- package/dist/esm/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.mjs +110 -0
- package/dist/esm/parser/cosmetic/cosmetic-rule-parser.mjs +453 -0
- package/dist/esm/parser/css/adg-css-injection-parser.mjs +208 -0
- package/dist/esm/parser/css/balancing.mjs +94 -0
- package/dist/esm/parser/css/constants.mjs +18 -0
- package/dist/esm/parser/css/css-token-stream.mjs +343 -0
- package/dist/esm/parser/css/ubo-selector-parser.mjs +369 -0
- package/dist/esm/parser/filterlist-parser.mjs +102 -0
- package/dist/esm/parser/index.mjs +11 -0
- package/dist/esm/parser/misc/app-list-parser.mjs +45 -0
- package/dist/esm/parser/misc/domain-list-parser.mjs +52 -0
- package/dist/esm/parser/misc/list-items-parser.mjs +113 -0
- package/dist/esm/parser/misc/logical-expression-parser.mjs +281 -0
- package/dist/esm/parser/misc/method-list-parser.mjs +46 -0
- package/dist/esm/parser/misc/modifier-list.mjs +70 -0
- package/dist/esm/parser/misc/modifier-parser.mjs +89 -0
- package/dist/esm/parser/misc/parameter-list-parser.mjs +72 -0
- package/dist/esm/parser/misc/stealth-option-list-parser.mjs +46 -0
- package/dist/esm/parser/misc/ubo-parameter-list-parser.mjs +146 -0
- package/dist/esm/parser/misc/value-parser.mjs +37 -0
- package/dist/esm/parser/network/host-rule-parser.mjs +130 -0
- package/dist/esm/parser/network/network-rule-parser.mjs +111 -0
- package/dist/esm/parser/options.mjs +23 -0
- package/dist/esm/parser/rule-parser.mjs +192 -0
- package/dist/esm/serializer/base-serializer.mjs +29 -0
- package/dist/esm/serializer/comment/agent-comment-serializer.mjs +71 -0
- package/dist/esm/serializer/comment/agent-serializer.mjs +68 -0
- package/dist/esm/serializer/comment/comment-rule-serializer.mjs +105 -0
- package/dist/esm/serializer/comment/config-comment-serializer.mjs +82 -0
- package/dist/esm/serializer/comment/hint-comment-serializer.mjs +62 -0
- package/dist/esm/serializer/comment/hint-serializer.mjs +54 -0
- package/dist/esm/serializer/comment/metadata-comment-serializer.mjs +73 -0
- package/dist/esm/serializer/comment/pre-processor-comment-serializer.mjs +71 -0
- package/dist/esm/serializer/comment/simple-comment-serializer.mjs +52 -0
- package/dist/esm/serializer/cosmetic/body/abp-snippet-injection-body-serializer.mjs +36 -0
- package/dist/esm/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.mjs +36 -0
- package/dist/esm/serializer/cosmetic/body/scriptlet-body-serializer.mjs +47 -0
- package/dist/esm/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.mjs +36 -0
- package/dist/esm/serializer/cosmetic/cosmetic-rule-serializer.mjs +129 -0
- package/dist/esm/serializer/cosmetic/css-injection-body-serializer.mjs +48 -0
- package/dist/esm/serializer/cosmetic/element-hiding-body-serializer.mjs +37 -0
- package/dist/esm/serializer/empty-rule-serializer.mjs +34 -0
- package/dist/esm/serializer/filterlist-serializer.mjs +46 -0
- package/dist/esm/serializer/index.mjs +7 -0
- package/dist/esm/serializer/invalid-rule-error-node-serializer.mjs +38 -0
- package/dist/esm/serializer/invalid-rule-serializer.mjs +37 -0
- package/dist/esm/serializer/misc/domain-list-serializer.mjs +64 -0
- package/dist/esm/serializer/misc/list-item-serializer.mjs +55 -0
- package/dist/esm/serializer/misc/list-items-serializer.mjs +26 -0
- package/dist/esm/serializer/misc/logical-expression-serializer.mjs +136 -0
- package/dist/esm/serializer/misc/modifier-list-serializer.mjs +55 -0
- package/dist/esm/serializer/misc/modifier-serializer.mjs +49 -0
- package/dist/esm/serializer/misc/parameter-list-serializer.mjs +49 -0
- package/dist/esm/serializer/misc/value-serializer.mjs +50 -0
- package/dist/esm/serializer/network/host-rule-serializer.mjs +70 -0
- package/dist/esm/serializer/network/hostname-list-serializer.mjs +47 -0
- package/dist/esm/serializer/network/network-rule-serializer.mjs +54 -0
- package/dist/esm/serializer/rule-serializer.mjs +61 -0
- package/dist/esm/utils/adblockers.mjs +57 -0
- package/dist/esm/utils/binary-schema-version.mjs +17 -0
- package/dist/esm/utils/byte-buffer.mjs +91 -0
- package/dist/esm/utils/categorizer.mjs +44 -0
- package/dist/esm/utils/clone.mjs +28 -0
- package/dist/esm/utils/constants.mjs +249 -0
- package/dist/esm/utils/cosmetic-rule-separator.mjs +127 -0
- package/dist/esm/utils/deep-freeze.mjs +32 -0
- package/dist/esm/utils/domain.mjs +56 -0
- package/dist/esm/utils/error.mjs +49 -0
- package/dist/esm/utils/index.mjs +21 -0
- package/dist/esm/utils/input-byte-buffer.mjs +257 -0
- package/dist/esm/utils/is-chromium.mjs +20 -0
- package/dist/esm/utils/logical-expression.mjs +92 -0
- package/dist/esm/utils/multi-value-map.mjs +33 -0
- package/dist/esm/utils/output-byte-buffer.mjs +223 -0
- package/dist/esm/utils/position-provider.mjs +73 -0
- package/dist/esm/utils/quotes.mjs +215 -0
- package/dist/esm/utils/regexp.mjs +176 -0
- package/dist/esm/utils/string.mjs +556 -0
- package/dist/esm/utils/text-decoder-polyfill.mjs +107 -0
- package/dist/esm/utils/text-encoder-polyfill.mjs +78 -0
- package/dist/esm/utils/type-guards.mjs +47 -0
- package/dist/esm/validator/constants.mjs +210 -0
- package/dist/esm/validator/helpers.mjs +45 -0
- package/dist/esm/validator/index.mjs +174 -0
- package/dist/esm/validator/value.mjs +563 -0
- package/dist/esm/version.mjs +18 -0
- package/dist/types/ast-utils/clone.d.ts +26 -0
- package/dist/types/ast-utils/filter-list.d.ts +11 -0
- package/dist/types/ast-utils/modifiers.d.ts +20 -0
- package/dist/types/ast-utils/network-rules.d.ts +15 -0
- package/dist/types/ast-utils/scriptlets.d.ts +52 -0
- package/dist/types/common/abp-snippet-injection-body-common.d.ts +8 -0
- package/dist/types/common/agent-common.d.ts +10 -0
- package/dist/types/common/ubo-selector-common.d.ts +9 -0
- package/dist/types/compatibility-tables/base.d.ts +157 -0
- package/dist/types/compatibility-tables/compatibility-table-data.d.ts +67 -0
- package/dist/types/compatibility-tables/index.d.ts +13 -0
- package/dist/types/compatibility-tables/modifiers.d.ts +22 -0
- package/dist/types/compatibility-tables/platforms.d.ts +47 -0
- package/dist/types/compatibility-tables/redirects.d.ts +33 -0
- package/dist/types/compatibility-tables/schemas/base.d.ts +135 -0
- package/dist/types/compatibility-tables/schemas/index.d.ts +8 -0
- package/dist/types/compatibility-tables/schemas/modifier.d.ts +31 -0
- package/dist/types/compatibility-tables/schemas/platform.d.ts +16 -0
- package/dist/types/compatibility-tables/schemas/redirect.d.ts +25 -0
- package/dist/types/compatibility-tables/schemas/resource-type.d.ts +27 -0
- package/dist/types/compatibility-tables/schemas/scriptlet.d.ts +31 -0
- package/dist/types/compatibility-tables/scriptlets.d.ts +15 -0
- package/dist/types/compatibility-tables/types.d.ts +34 -0
- package/dist/types/compatibility-tables/utils/platform-helpers.d.ts +44 -0
- package/dist/types/compatibility-tables/utils/resource-type-helpers.d.ts +20 -0
- package/dist/types/compatibility-tables/utils/zod-camelcase.d.ts +15 -0
- package/dist/types/converter/base-interfaces/base-converter.d.ts +42 -0
- package/dist/types/converter/base-interfaces/conversion-result.d.ts +43 -0
- package/dist/types/converter/base-interfaces/rule-converter-base.d.ts +44 -0
- package/dist/types/converter/comment/index.d.ts +23 -0
- package/dist/types/converter/cosmetic/css.d.ts +23 -0
- package/dist/types/converter/cosmetic/element-hiding.d.ts +23 -0
- package/dist/types/converter/cosmetic/header-removal.d.ts +37 -0
- package/dist/types/converter/cosmetic/html.d.ts +54 -0
- package/dist/types/converter/cosmetic/index.d.ts +33 -0
- package/dist/types/converter/cosmetic/rule-modifiers/adg.d.ts +21 -0
- package/dist/types/converter/cosmetic/scriptlet.d.ts +33 -0
- package/dist/types/converter/css/index.d.ts +23 -0
- package/dist/types/converter/data/css.d.ts +48 -0
- package/dist/types/converter/filter-list.d.ts +31 -0
- package/dist/types/converter/index.d.ts +5 -0
- package/dist/types/converter/misc/network-rule-modifier.d.ts +35 -0
- package/dist/types/converter/network/index.d.ts +33 -0
- package/dist/types/converter/raw-filter-list.d.ts +31 -0
- package/dist/types/converter/raw-rule.d.ts +28 -0
- package/dist/types/converter/rule.d.ts +37 -0
- package/dist/types/deserializer/base-deserializer.d.ts +15 -0
- package/dist/types/deserializer/comment/agent-comment-deserializer.d.ts +34 -0
- package/dist/types/deserializer/comment/agent-deserializer.d.ts +25 -0
- package/dist/types/deserializer/comment/comment-rule-deserializer.d.ts +69 -0
- package/dist/types/deserializer/comment/config-comment-deserializer.d.ts +27 -0
- package/dist/types/deserializer/comment/hint-comment-deserializer.d.ts +24 -0
- package/dist/types/deserializer/comment/hint-deserializer.d.ts +26 -0
- package/dist/types/deserializer/comment/metadata-comment-deserializer.d.ts +26 -0
- package/dist/types/deserializer/comment/pre-processor-comment-deserializer.d.ts +29 -0
- package/dist/types/deserializer/comment/simple-comment-deserializer.d.ts +26 -0
- package/dist/types/deserializer/cosmetic/cosmetic-rule-deserializer.d.ts +12 -0
- package/dist/types/deserializer/cosmetic/css-injection-body-deserializer.d.ts +12 -0
- package/dist/types/deserializer/cosmetic/element-hiding-body-deserializer.d.ts +12 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.d.ts +13 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.d.ts +13 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.d.ts +15 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.d.ts +14 -0
- package/dist/types/deserializer/empty-rule-deserializer.d.ts +12 -0
- package/dist/types/deserializer/filterlist-deserializer.d.ts +30 -0
- package/dist/types/deserializer/index.d.ts +2 -0
- package/dist/types/deserializer/invalid-rule-deserializer.d.ts +12 -0
- package/dist/types/deserializer/invalid-rule-error-node-deserializer.d.ts +12 -0
- package/dist/types/deserializer/misc/domain-list-deserializer.d.ts +15 -0
- package/dist/types/deserializer/misc/list-item-deserializer.d.ts +13 -0
- package/dist/types/deserializer/misc/list-items-deserializer.d.ts +12 -0
- package/dist/types/deserializer/misc/logical-expression-deserializer.d.ts +55 -0
- package/dist/types/deserializer/misc/modifier-deserializer.d.ts +18 -0
- package/dist/types/deserializer/misc/modifier-list-deserializer.d.ts +20 -0
- package/dist/types/deserializer/misc/parameter-list-deserializer.d.ts +14 -0
- package/dist/types/deserializer/misc/value-deserializer.d.ts +17 -0
- package/dist/types/deserializer/network/host-rule-deserializer.d.ts +30 -0
- package/dist/types/deserializer/network/hostname-list-deserializer.d.ts +12 -0
- package/dist/types/deserializer/network/network-rule-deserializer.d.ts +18 -0
- package/dist/types/deserializer/rule-deserializer.d.ts +17 -0
- package/dist/types/deserializer/syntax-deserialization-map.d.ts +2 -0
- package/dist/types/errors/adblock-syntax-error.d.ts +25 -0
- package/dist/types/errors/binary-schema-mismatch-error.d.ts +23 -0
- package/dist/types/errors/not-implemented-error.d.ts +14 -0
- package/dist/types/errors/rule-conversion-error.d.ts +14 -0
- package/dist/types/generator/base-generator.d.ts +12 -0
- package/dist/types/generator/comment/agent-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/agent-generator.d.ts +11 -0
- package/dist/types/generator/comment/comment-rule-generator.d.ts +67 -0
- package/dist/types/generator/comment/config-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/hint-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/hint-generator.d.ts +11 -0
- package/dist/types/generator/comment/index.d.ts +2 -0
- package/dist/types/generator/comment/metadata-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/pre-processor-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/simple-comment-generator.d.ts +11 -0
- package/dist/types/generator/cosmetic/body/abp-snippet-injection-body-generator.d.ts +11 -0
- package/dist/types/generator/cosmetic/body/adg-scriptlet-injection-body-generator.d.ts +17 -0
- package/dist/types/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.d.ts +17 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-body-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-generator.d.ts +36 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-pattern-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/index.d.ts +1 -0
- package/dist/types/generator/css/adg-css-injection-generator.d.ts +12 -0
- package/dist/types/generator/css/ubo-selector-generator.d.ts +11 -0
- package/dist/types/generator/filterlist-generator.d.ts +17 -0
- package/dist/types/generator/index.d.ts +3 -0
- package/dist/types/generator/misc/domain-list-generator.d.ts +12 -0
- package/dist/types/generator/misc/list-items-generator.d.ts +22 -0
- package/dist/types/generator/misc/logical-expression-generator.d.ts +11 -0
- package/dist/types/generator/misc/modifier-generator.d.ts +11 -0
- package/dist/types/generator/misc/modifier-list-generator.d.ts +11 -0
- package/dist/types/generator/misc/parameter-list-generator.d.ts +12 -0
- package/dist/types/generator/misc/value-generator.d.ts +11 -0
- package/dist/types/generator/network/host-rule-generator.d.ts +11 -0
- package/dist/types/generator/network/index.d.ts +2 -0
- package/dist/types/generator/network/network-rule-generator.d.ts +11 -0
- package/dist/types/generator/rule-generator.d.ts +21 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/marshalling-utils/comment/agent-comment-common.d.ts +13 -0
- package/dist/types/marshalling-utils/comment/agent-common.d.ts +19 -0
- package/dist/types/marshalling-utils/comment/config-comment-common.d.ts +40 -0
- package/dist/types/marshalling-utils/comment/hint-comment-common.d.ts +14 -0
- package/dist/types/marshalling-utils/comment/hint-common.d.ts +32 -0
- package/dist/types/marshalling-utils/comment/metadata-comment-common.d.ts +20 -0
- package/dist/types/marshalling-utils/comment/pre-processor-comment-common.d.ts +36 -0
- package/dist/types/marshalling-utils/comment/simple-comment-common.d.ts +14 -0
- package/dist/types/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.d.ts +22 -0
- package/dist/types/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.d.ts +9 -0
- package/dist/types/marshalling-utils/cosmetic/body/css-injection-body-common.d.ts +16 -0
- package/dist/types/marshalling-utils/cosmetic/body/element-hiding-body-common.d.ts +13 -0
- package/dist/types/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.d.ts +9 -0
- package/dist/types/marshalling-utils/cosmetic/cosmetic-rule-common.d.ts +27 -0
- package/dist/types/marshalling-utils/empty-rule-common.d.ts +12 -0
- package/dist/types/marshalling-utils/filter-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/invalid-rule-common.d.ts +13 -0
- package/dist/types/marshalling-utils/invalid-rule-error-node-common.d.ts +14 -0
- package/dist/types/marshalling-utils/misc/binary-type-common.d.ts +56 -0
- package/dist/types/marshalling-utils/misc/domain-list-common.d.ts +23 -0
- package/dist/types/marshalling-utils/misc/host-rule-common.d.ts +17 -0
- package/dist/types/marshalling-utils/misc/hostname-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/misc/list-item-common.d.ts +14 -0
- package/dist/types/marshalling-utils/misc/logical-expression-common.d.ts +44 -0
- package/dist/types/marshalling-utils/misc/modifier-common.d.ts +40 -0
- package/dist/types/marshalling-utils/misc/modifier-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/misc/parameter-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/misc/value-common.d.ts +14 -0
- package/dist/types/marshalling-utils/network/network-rule-common.d.ts +17 -0
- package/dist/types/marshalling-utils/syntax-serialization-map.d.ts +2 -0
- package/dist/types/nodes/index.d.ts +1177 -0
- package/dist/types/parser/base-parser.d.ts +16 -0
- package/dist/types/parser/comment/agent-comment-parser.d.ts +42 -0
- package/dist/types/parser/comment/agent-parser.d.ts +33 -0
- package/dist/types/parser/comment/comment-parser.d.ts +76 -0
- package/dist/types/parser/comment/config-comment-parser.d.ts +31 -0
- package/dist/types/parser/comment/hint-comment-parser.d.ts +33 -0
- package/dist/types/parser/comment/hint-parser.d.ts +30 -0
- package/dist/types/parser/comment/metadata-comment-parser.d.ts +29 -0
- package/dist/types/parser/comment/preprocessor-parser.d.ts +43 -0
- package/dist/types/parser/comment/simple-comment-parser.d.ts +33 -0
- package/dist/types/parser/cosmetic/body/abp-snippet-injection-body-parser.d.ts +34 -0
- package/dist/types/parser/cosmetic/body/adg-scriptlet-injection-body-parser.d.ts +47 -0
- package/dist/types/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.d.ts +44 -0
- package/dist/types/parser/cosmetic/cosmetic-rule-parser.d.ts +51 -0
- package/dist/types/parser/css/adg-css-injection-parser.d.ts +28 -0
- package/dist/types/parser/css/balancing.d.ts +36 -0
- package/dist/types/parser/css/constants.d.ts +10 -0
- package/dist/types/parser/css/css-token-stream.d.ts +210 -0
- package/dist/types/parser/css/ubo-selector-parser.d.ts +46 -0
- package/dist/types/parser/filterlist-parser.d.ts +29 -0
- package/dist/types/parser/index.d.ts +5 -0
- package/dist/types/parser/misc/app-list-parser.d.ts +22 -0
- package/dist/types/parser/misc/domain-list-parser.d.ts +26 -0
- package/dist/types/parser/misc/list-items-parser.d.ts +34 -0
- package/dist/types/parser/misc/logical-expression-parser.d.ts +41 -0
- package/dist/types/parser/misc/method-list-parser.d.ts +22 -0
- package/dist/types/parser/misc/modifier-list.d.ts +24 -0
- package/dist/types/parser/misc/modifier-parser.d.ts +21 -0
- package/dist/types/parser/misc/parameter-list-parser.d.ts +14 -0
- package/dist/types/parser/misc/stealth-option-list-parser.d.ts +22 -0
- package/dist/types/parser/misc/ubo-parameter-list-parser.d.ts +18 -0
- package/dist/types/parser/misc/value-parser.d.ts +18 -0
- package/dist/types/parser/network/host-rule-parser.d.ts +35 -0
- package/dist/types/parser/network/network-rule-parser.d.ts +31 -0
- package/dist/types/parser/options.d.ts +41 -0
- package/dist/types/parser/rule-parser.d.ts +78 -0
- package/dist/types/serializer/base-serializer.d.ts +15 -0
- package/dist/types/serializer/comment/agent-comment-serializer.d.ts +34 -0
- package/dist/types/serializer/comment/agent-serializer.d.ts +24 -0
- package/dist/types/serializer/comment/comment-rule-serializer.d.ts +68 -0
- package/dist/types/serializer/comment/config-comment-serializer.d.ts +25 -0
- package/dist/types/serializer/comment/hint-comment-serializer.d.ts +23 -0
- package/dist/types/serializer/comment/hint-serializer.d.ts +24 -0
- package/dist/types/serializer/comment/metadata-comment-serializer.d.ts +25 -0
- package/dist/types/serializer/comment/pre-processor-comment-serializer.d.ts +28 -0
- package/dist/types/serializer/comment/simple-comment-serializer.d.ts +24 -0
- package/dist/types/serializer/cosmetic/body/abp-snippet-injection-body-serializer.d.ts +25 -0
- package/dist/types/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.d.ts +25 -0
- package/dist/types/serializer/cosmetic/body/scriptlet-body-serializer.d.ts +14 -0
- package/dist/types/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.d.ts +25 -0
- package/dist/types/serializer/cosmetic/cosmetic-rule-serializer.d.ts +26 -0
- package/dist/types/serializer/cosmetic/css-injection-body-serializer.d.ts +12 -0
- package/dist/types/serializer/cosmetic/element-hiding-body-serializer.d.ts +12 -0
- package/dist/types/serializer/empty-rule-serializer.d.ts +12 -0
- package/dist/types/serializer/filterlist-serializer.d.ts +16 -0
- package/dist/types/serializer/index.d.ts +1 -0
- package/dist/types/serializer/invalid-rule-error-node-serializer.d.ts +12 -0
- package/dist/types/serializer/invalid-rule-serializer.d.ts +12 -0
- package/dist/types/serializer/misc/domain-list-serializer.d.ts +21 -0
- package/dist/types/serializer/misc/list-item-serializer.d.ts +13 -0
- package/dist/types/serializer/misc/list-items-serializer.d.ts +12 -0
- package/dist/types/serializer/misc/logical-expression-serializer.d.ts +51 -0
- package/dist/types/serializer/misc/modifier-list-serializer.d.ts +20 -0
- package/dist/types/serializer/misc/modifier-serializer.d.ts +18 -0
- package/dist/types/serializer/misc/parameter-list-serializer.d.ts +14 -0
- package/dist/types/serializer/misc/value-serializer.d.ts +17 -0
- package/dist/types/serializer/network/host-rule-serializer.d.ts +30 -0
- package/dist/types/serializer/network/hostname-list-serializer.d.ts +12 -0
- package/dist/types/serializer/network/network-rule-serializer.d.ts +18 -0
- package/dist/types/serializer/rule-serializer.d.ts +17 -0
- package/dist/types/utils/adblockers.d.ts +48 -0
- package/dist/types/utils/binary-schema-version.d.ts +9 -0
- package/dist/types/utils/byte-buffer.d.ts +54 -0
- package/dist/types/utils/categorizer.d.ts +14 -0
- package/dist/types/utils/clone.d.ts +15 -0
- package/dist/types/utils/constants.d.ts +188 -0
- package/dist/types/utils/cosmetic-rule-separator.d.ts +45 -0
- package/dist/types/utils/deep-freeze.d.ts +13 -0
- package/dist/types/utils/domain.d.ts +26 -0
- package/dist/types/utils/error.d.ts +8 -0
- package/dist/types/utils/index.d.ts +15 -0
- package/dist/types/utils/input-byte-buffer.d.ts +140 -0
- package/dist/types/utils/is-chromium.d.ts +7 -0
- package/dist/types/utils/logical-expression.d.ts +45 -0
- package/dist/types/utils/multi-value-map.d.ts +16 -0
- package/dist/types/utils/output-byte-buffer.d.ts +126 -0
- package/dist/types/utils/position-provider.d.ts +46 -0
- package/dist/types/utils/quotes.d.ts +93 -0
- package/dist/types/utils/regexp.d.ts +54 -0
- package/dist/types/utils/storage-interface.d.ts +23 -0
- package/dist/types/utils/string.d.ts +277 -0
- package/dist/types/utils/text-decoder-polyfill.d.ts +14 -0
- package/dist/types/utils/text-encoder-polyfill.d.ts +18 -0
- package/dist/types/utils/type-guards.d.ts +47 -0
- package/dist/types/validator/constants.d.ts +89 -0
- package/dist/types/validator/helpers.d.ts +37 -0
- package/dist/types/validator/index.d.ts +38 -0
- package/dist/types/validator/value.d.ts +11 -0
- package/dist/types/version.d.ts +5 -0
- package/package.json +91 -37
- package/dist/agtree.d.ts +0 -4152
- package/dist/agtree.js +0 -15741
- package/dist/agtree.mjs +0 -15642
- package/dist/compatibility-table-data.js +0 -12634
|
@@ -0,0 +1,1177 @@
|
|
|
1
|
+
import { type AdblockSyntax } from '../utils/adblockers';
|
|
2
|
+
import { type COMMA_DOMAIN_LIST_SEPARATOR, type PIPE_MODIFIER_SEPARATOR } from '../utils/constants';
|
|
3
|
+
/**
|
|
4
|
+
* Possible operators in the logical expression.
|
|
5
|
+
*/
|
|
6
|
+
export declare const enum OperatorValue {
|
|
7
|
+
Not = "!",
|
|
8
|
+
And = "&&",
|
|
9
|
+
Or = "||"
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Represents possible new line types.
|
|
13
|
+
*/
|
|
14
|
+
export type NewLine = 'crlf' | 'lf' | 'cr';
|
|
15
|
+
/**
|
|
16
|
+
* Represents any kind of logical expression node.
|
|
17
|
+
*/
|
|
18
|
+
export type AnyExpressionNode = ExpressionVariableNode | ExpressionOperatorNode | ExpressionParenthesisNode;
|
|
19
|
+
/**
|
|
20
|
+
* Represents any kind of adblock rule.
|
|
21
|
+
*/
|
|
22
|
+
export type AnyRule = EmptyRule | AnyCommentRule | AnyCosmeticRule | AnyNetworkRule | InvalidRule;
|
|
23
|
+
/**
|
|
24
|
+
* Represents any comment-like adblock rule.
|
|
25
|
+
*/
|
|
26
|
+
export type AnyCommentRule = AgentCommentRule | CommentRule | ConfigCommentRule | HintCommentRule | MetadataCommentRule | PreProcessorCommentRule;
|
|
27
|
+
/**
|
|
28
|
+
* Represents any cosmetic adblock rule.
|
|
29
|
+
*/
|
|
30
|
+
export type AnyCosmeticRule = CssInjectionRule | ElementHidingRule | ScriptletInjectionRule | HtmlFilteringRule | JsInjectionRule;
|
|
31
|
+
/**
|
|
32
|
+
* Represents any network adblock rule.
|
|
33
|
+
*/
|
|
34
|
+
export type AnyNetworkRule = NetworkRule | HostRule;
|
|
35
|
+
/**
|
|
36
|
+
* Represents the different comment markers that can be used in an adblock rule.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* - If the rule is `! This is just a comment`, then the marker will be `!`.
|
|
40
|
+
* - If the rule is `# This is just a comment`, then the marker will be `#`.
|
|
41
|
+
*/
|
|
42
|
+
export declare const enum CommentMarker {
|
|
43
|
+
/**
|
|
44
|
+
* Regular comment marker. It is supported by all ad blockers.
|
|
45
|
+
*/
|
|
46
|
+
Regular = "!",
|
|
47
|
+
/**
|
|
48
|
+
* Hashmark comment marker. It is supported by uBlock Origin and AdGuard,
|
|
49
|
+
* and also used in hosts files.
|
|
50
|
+
*/
|
|
51
|
+
Hashmark = "#"
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Represents the main categories that an adblock rule can belong to.
|
|
55
|
+
* Of course, these include additional subcategories.
|
|
56
|
+
*/
|
|
57
|
+
export declare enum RuleCategory {
|
|
58
|
+
/**
|
|
59
|
+
* Empty "rules" that are only containing whitespaces. These rules are handled just for convenience.
|
|
60
|
+
*/
|
|
61
|
+
Empty = "Empty",
|
|
62
|
+
/**
|
|
63
|
+
* Syntactically invalid rules (tolerant mode only).
|
|
64
|
+
*/
|
|
65
|
+
Invalid = "Invalid",
|
|
66
|
+
/**
|
|
67
|
+
* Comment rules, such as comment rules, metadata rules, preprocessor rules, etc.
|
|
68
|
+
*/
|
|
69
|
+
Comment = "Comment",
|
|
70
|
+
/**
|
|
71
|
+
* Cosmetic rules, such as element hiding rules, CSS rules, scriptlet rules, HTML rules, and JS rules.
|
|
72
|
+
*/
|
|
73
|
+
Cosmetic = "Cosmetic",
|
|
74
|
+
/**
|
|
75
|
+
* Network rules, such as basic network rules, header remover network rules, redirect network rules,
|
|
76
|
+
* response header filtering rules, etc.
|
|
77
|
+
*/
|
|
78
|
+
Network = "Network"
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Represents similar types of modifiers values
|
|
82
|
+
* which may be separated by a comma `,` (only for DomainList) or a pipe `|`.
|
|
83
|
+
*/
|
|
84
|
+
export declare const enum ListNodeType {
|
|
85
|
+
Unknown = "Unknown",
|
|
86
|
+
AppList = "AppList",
|
|
87
|
+
DomainList = "DomainList",
|
|
88
|
+
MethodList = "MethodList",
|
|
89
|
+
StealthOptionList = "StealthOptionList"
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Represents child items for {@link ListNodeType}.
|
|
93
|
+
*/
|
|
94
|
+
export declare enum ListItemNodeType {
|
|
95
|
+
Unknown = "Unknown",
|
|
96
|
+
App = "App",
|
|
97
|
+
Domain = "Domain",
|
|
98
|
+
Method = "Method",
|
|
99
|
+
StealthOption = "StealthOption"
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Represents possible comment types.
|
|
103
|
+
*/
|
|
104
|
+
export declare enum CommentRuleType {
|
|
105
|
+
AgentCommentRule = "AgentCommentRule",
|
|
106
|
+
CommentRule = "CommentRule",
|
|
107
|
+
ConfigCommentRule = "ConfigCommentRule",
|
|
108
|
+
HintCommentRule = "HintCommentRule",
|
|
109
|
+
MetadataCommentRule = "MetadataCommentRule",
|
|
110
|
+
PreProcessorCommentRule = "PreProcessorCommentRule"
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Represents possible cosmetic rule types.
|
|
114
|
+
*/
|
|
115
|
+
export declare enum CosmeticRuleType {
|
|
116
|
+
ElementHidingRule = "ElementHidingRule",
|
|
117
|
+
CssInjectionRule = "CssInjectionRule",
|
|
118
|
+
ScriptletInjectionRule = "ScriptletInjectionRule",
|
|
119
|
+
HtmlFilteringRule = "HtmlFilteringRule",
|
|
120
|
+
JsInjectionRule = "JsInjectionRule"
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Represents possible cosmetic rule separators.
|
|
124
|
+
*/
|
|
125
|
+
export declare const enum CosmeticRuleSeparator {
|
|
126
|
+
/**
|
|
127
|
+
* @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
|
|
128
|
+
*/
|
|
129
|
+
ElementHiding = "##",
|
|
130
|
+
/**
|
|
131
|
+
* @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
|
|
132
|
+
*/
|
|
133
|
+
ElementHidingException = "#@#",
|
|
134
|
+
/**
|
|
135
|
+
* @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
|
|
136
|
+
*/
|
|
137
|
+
ExtendedElementHiding = "#?#",
|
|
138
|
+
/**
|
|
139
|
+
* @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
|
|
140
|
+
*/
|
|
141
|
+
ExtendedElementHidingException = "#@?#",
|
|
142
|
+
/**
|
|
143
|
+
* @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
|
|
144
|
+
*/
|
|
145
|
+
AbpSnippet = "#$#",
|
|
146
|
+
/**
|
|
147
|
+
* @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_basic}
|
|
148
|
+
*/
|
|
149
|
+
AbpSnippetException = "#@$#",
|
|
150
|
+
/**
|
|
151
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#cosmetic-css-rules}
|
|
152
|
+
*/
|
|
153
|
+
AdgCssInjection = "#$#",
|
|
154
|
+
/**
|
|
155
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#cosmetic-css-rules}
|
|
156
|
+
*/
|
|
157
|
+
AdgCssInjectionException = "#@$#",
|
|
158
|
+
/**
|
|
159
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#cosmetic-css-rules}
|
|
160
|
+
*/
|
|
161
|
+
AdgExtendedCssInjection = "#$?#",
|
|
162
|
+
/**
|
|
163
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#cosmetic-css-rules}
|
|
164
|
+
*/
|
|
165
|
+
AdgExtendedCssInjectionException = "#@$?#",
|
|
166
|
+
/**
|
|
167
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#scriptlets}
|
|
168
|
+
*/
|
|
169
|
+
AdgJsInjection = "#%#",
|
|
170
|
+
/**
|
|
171
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#scriptlets}
|
|
172
|
+
*/
|
|
173
|
+
AdgJsInjectionException = "#@%#",
|
|
174
|
+
/**
|
|
175
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#html-filtering-rules}
|
|
176
|
+
*/
|
|
177
|
+
AdgHtmlFiltering = "$$",
|
|
178
|
+
/**
|
|
179
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#html-filtering-rules}
|
|
180
|
+
*/
|
|
181
|
+
AdgHtmlFilteringException = "$@$"
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Represents a basic node in the AST.
|
|
185
|
+
*/
|
|
186
|
+
export interface Node {
|
|
187
|
+
/**
|
|
188
|
+
* The type of the node. Every node should have a type.
|
|
189
|
+
*/
|
|
190
|
+
type: string;
|
|
191
|
+
/**
|
|
192
|
+
* Optionally the raw representation of the node in the source code.
|
|
193
|
+
*/
|
|
194
|
+
raw?: string;
|
|
195
|
+
/**
|
|
196
|
+
* Start offset of the node.
|
|
197
|
+
*/
|
|
198
|
+
start?: number;
|
|
199
|
+
/**
|
|
200
|
+
* End offset of the node.
|
|
201
|
+
*/
|
|
202
|
+
end?: number;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Represents a location in the source code.
|
|
206
|
+
*/
|
|
207
|
+
export interface Location {
|
|
208
|
+
/**
|
|
209
|
+
* Zero-based index of the first character of the parsed source region.
|
|
210
|
+
*/
|
|
211
|
+
offset: number;
|
|
212
|
+
/**
|
|
213
|
+
* One-based line index of the first character of the parsed source region.
|
|
214
|
+
*/
|
|
215
|
+
line: number;
|
|
216
|
+
/**
|
|
217
|
+
* One-based column index of the first character of the parsed source region.
|
|
218
|
+
*/
|
|
219
|
+
column: number;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Represents a location range in the source code.
|
|
223
|
+
*/
|
|
224
|
+
export interface LocationRange {
|
|
225
|
+
/**
|
|
226
|
+
* The start location of the node.
|
|
227
|
+
*/
|
|
228
|
+
start: Location;
|
|
229
|
+
/**
|
|
230
|
+
* The end location of the node.
|
|
231
|
+
*/
|
|
232
|
+
end: Location;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Default location for AST nodes.
|
|
236
|
+
*/
|
|
237
|
+
export declare const defaultLocation: Location;
|
|
238
|
+
/**
|
|
239
|
+
* Represents a basic value node in the AST.
|
|
240
|
+
*/
|
|
241
|
+
export interface Value<T = string> extends Node {
|
|
242
|
+
type: 'Value';
|
|
243
|
+
/**
|
|
244
|
+
* Value of the node.
|
|
245
|
+
*/
|
|
246
|
+
value: T;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Represents a raw value node.
|
|
250
|
+
*/
|
|
251
|
+
export interface Raw extends Node {
|
|
252
|
+
type: 'Raw';
|
|
253
|
+
/**
|
|
254
|
+
* Value of the node.
|
|
255
|
+
*/
|
|
256
|
+
value: string;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Represents a list of parameters.
|
|
260
|
+
*/
|
|
261
|
+
export interface ParameterList extends Node {
|
|
262
|
+
type: 'ParameterList';
|
|
263
|
+
/**
|
|
264
|
+
* List of values
|
|
265
|
+
*
|
|
266
|
+
* @note `null` values are allowed in the list, they represent empty parameters.
|
|
267
|
+
*/
|
|
268
|
+
children: (Value | null)[];
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Represents a logical expression variable node in the AST.
|
|
272
|
+
*/
|
|
273
|
+
export interface ExpressionVariableNode extends Node {
|
|
274
|
+
type: 'Variable';
|
|
275
|
+
name: string;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Represents a logical expression operator node in the AST.
|
|
279
|
+
*/
|
|
280
|
+
export interface ExpressionOperatorNode extends Node {
|
|
281
|
+
type: 'Operator';
|
|
282
|
+
operator: OperatorValue;
|
|
283
|
+
left: AnyExpressionNode;
|
|
284
|
+
right?: AnyExpressionNode;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Represents a logical expression parenthesis node in the AST.
|
|
288
|
+
*/
|
|
289
|
+
export interface ExpressionParenthesisNode extends Node {
|
|
290
|
+
type: 'Parenthesis';
|
|
291
|
+
expression: AnyExpressionNode;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Represents a filter list (list of rules).
|
|
295
|
+
*/
|
|
296
|
+
export interface FilterList extends Node {
|
|
297
|
+
type: 'FilterList';
|
|
298
|
+
/**
|
|
299
|
+
* List of rules
|
|
300
|
+
*/
|
|
301
|
+
children: AnyRule[];
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Represents a basic adblock rule. Every adblock rule should extend this interface.
|
|
305
|
+
* We don't use this interface directly, so we don't specify the `type` property.
|
|
306
|
+
*/
|
|
307
|
+
export interface RuleBase extends Node {
|
|
308
|
+
/**
|
|
309
|
+
* Syntax of the adblock rule. If we are not able to determine the syntax of the rule,
|
|
310
|
+
* we should use `AdblockSyntax.Common` as the value.
|
|
311
|
+
*/
|
|
312
|
+
syntax: AdblockSyntax;
|
|
313
|
+
/**
|
|
314
|
+
* Category of the adblock rule
|
|
315
|
+
*/
|
|
316
|
+
category: RuleCategory;
|
|
317
|
+
/**
|
|
318
|
+
* Raw data of the rule
|
|
319
|
+
*/
|
|
320
|
+
raws?: {
|
|
321
|
+
/**
|
|
322
|
+
* Original rule text
|
|
323
|
+
*/
|
|
324
|
+
text?: string;
|
|
325
|
+
/**
|
|
326
|
+
* Newline character used in the rule (if any)
|
|
327
|
+
*/
|
|
328
|
+
nl?: NewLine;
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
export interface InvalidRuleError extends Node {
|
|
332
|
+
type: 'InvalidRuleError';
|
|
333
|
+
/**
|
|
334
|
+
* Error name
|
|
335
|
+
*/
|
|
336
|
+
name: string;
|
|
337
|
+
/**
|
|
338
|
+
* Error message
|
|
339
|
+
*/
|
|
340
|
+
message: string;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Represents an invalid rule (used by tolerant mode).
|
|
344
|
+
*/
|
|
345
|
+
export interface InvalidRule extends RuleBase {
|
|
346
|
+
type: 'InvalidRule';
|
|
347
|
+
/**
|
|
348
|
+
* Category of the adblock rule
|
|
349
|
+
*/
|
|
350
|
+
category: RuleCategory.Invalid;
|
|
351
|
+
/**
|
|
352
|
+
* Raw rule text
|
|
353
|
+
*/
|
|
354
|
+
raw: string;
|
|
355
|
+
/**
|
|
356
|
+
* Error details
|
|
357
|
+
*/
|
|
358
|
+
error: InvalidRuleError;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Represents an "empty rule" (practically an empty line)
|
|
362
|
+
*/
|
|
363
|
+
export interface EmptyRule extends RuleBase {
|
|
364
|
+
/**
|
|
365
|
+
* Type of the adblock rule (should be always present)
|
|
366
|
+
*/
|
|
367
|
+
type: 'EmptyRule';
|
|
368
|
+
/**
|
|
369
|
+
* Category of the adblock rule
|
|
370
|
+
*/
|
|
371
|
+
category: RuleCategory.Empty;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Represents the basic comment rule interface.
|
|
375
|
+
*/
|
|
376
|
+
export interface CommentBase extends RuleBase {
|
|
377
|
+
category: RuleCategory.Comment;
|
|
378
|
+
type: CommentRuleType;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Represents a simple comment.
|
|
382
|
+
*
|
|
383
|
+
* @example
|
|
384
|
+
* Example rules:
|
|
385
|
+
* - ```adblock
|
|
386
|
+
* ! This is just a comment
|
|
387
|
+
* ```
|
|
388
|
+
* - ```adblock
|
|
389
|
+
* # This is just a comment
|
|
390
|
+
* ```
|
|
391
|
+
*/
|
|
392
|
+
export interface CommentRule extends CommentBase {
|
|
393
|
+
type: CommentRuleType.CommentRule;
|
|
394
|
+
/**
|
|
395
|
+
* Comment marker.
|
|
396
|
+
*
|
|
397
|
+
* @example
|
|
398
|
+
* - If the rule is `! This is just a comment`, then the marker will be `!`.
|
|
399
|
+
* - If the rule is `# This is just a comment`, then the marker will be `#`.
|
|
400
|
+
*/
|
|
401
|
+
marker: Value;
|
|
402
|
+
/**
|
|
403
|
+
* Comment text.
|
|
404
|
+
*
|
|
405
|
+
* @example
|
|
406
|
+
* If the rule is `! This is just a comment`, then the text will be `This is just a comment`.
|
|
407
|
+
*/
|
|
408
|
+
text: Value;
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Represents a metadata comment rule. This is a special comment that specifies
|
|
412
|
+
* the name and value of the metadata header.
|
|
413
|
+
*
|
|
414
|
+
* @example
|
|
415
|
+
* For example, in the case of
|
|
416
|
+
* ```adblock
|
|
417
|
+
* ! Title: My List
|
|
418
|
+
* ```
|
|
419
|
+
* the name of the header is `Title`, and the value is `My List`.
|
|
420
|
+
*/
|
|
421
|
+
export interface MetadataCommentRule extends CommentBase {
|
|
422
|
+
type: CommentRuleType.MetadataCommentRule;
|
|
423
|
+
/**
|
|
424
|
+
* Comment marker.
|
|
425
|
+
*/
|
|
426
|
+
marker: Value;
|
|
427
|
+
/**
|
|
428
|
+
* Metadata header name.
|
|
429
|
+
*/
|
|
430
|
+
header: Value;
|
|
431
|
+
/**
|
|
432
|
+
* Metadata header value (always should present).
|
|
433
|
+
*/
|
|
434
|
+
value: Value;
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Represents an AGLint configuration node.
|
|
438
|
+
*
|
|
439
|
+
* Used within config comments.
|
|
440
|
+
*
|
|
441
|
+
* @example
|
|
442
|
+
* ```adblock
|
|
443
|
+
* ! aglint "rule-1": ["warn", { "option1": "value1" }], "rule-2": "off"
|
|
444
|
+
* ! ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
|
445
|
+
* ```
|
|
446
|
+
*/
|
|
447
|
+
export interface ConfigNode extends Node {
|
|
448
|
+
type: 'ConfigNode';
|
|
449
|
+
value: object;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Represents an inline linter configuration comment.
|
|
453
|
+
*
|
|
454
|
+
* @example
|
|
455
|
+
* For example, if the comment is
|
|
456
|
+
* ```adblock
|
|
457
|
+
* ! aglint-disable some-rule another-rule
|
|
458
|
+
* ```
|
|
459
|
+
* then the command is `aglint-disable` and its params is `["some-rule", "another-rule"]`.
|
|
460
|
+
*/
|
|
461
|
+
export interface ConfigCommentRule extends CommentBase {
|
|
462
|
+
category: RuleCategory.Comment;
|
|
463
|
+
type: CommentRuleType.ConfigCommentRule;
|
|
464
|
+
/**
|
|
465
|
+
* The marker for the comment. It can be `!` or `#`. It is always the first non-whitespace character in the comment.
|
|
466
|
+
*/
|
|
467
|
+
marker: Value;
|
|
468
|
+
/**
|
|
469
|
+
* The command for the comment. It is always begins with the `aglint` prefix.
|
|
470
|
+
*
|
|
471
|
+
* @example
|
|
472
|
+
* ```adblock
|
|
473
|
+
* ! aglint-disable-next-line
|
|
474
|
+
* ```
|
|
475
|
+
*/
|
|
476
|
+
command: Value;
|
|
477
|
+
/**
|
|
478
|
+
* Params for the command. Can be a rule configuration object or a list of rule names.
|
|
479
|
+
*
|
|
480
|
+
* @example
|
|
481
|
+
* For the following comment:
|
|
482
|
+
* ```adblock
|
|
483
|
+
* ! aglint-disable some-rule another-rule
|
|
484
|
+
* ```
|
|
485
|
+
* the params would be `["some-rule", "another-rule"]`.
|
|
486
|
+
*/
|
|
487
|
+
params?: ConfigNode | ParameterList;
|
|
488
|
+
/**
|
|
489
|
+
* Config comment text. The idea is generally the same as in ESLint.
|
|
490
|
+
*
|
|
491
|
+
* @example
|
|
492
|
+
* You can use the following syntax to specify a comment for a config comment:
|
|
493
|
+
* `! aglint-enable -- this is the comment`
|
|
494
|
+
*/
|
|
495
|
+
comment?: Value;
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Represents a preprocessor comment.
|
|
499
|
+
*
|
|
500
|
+
* @example
|
|
501
|
+
* For example, if the comment is
|
|
502
|
+
* ```adblock
|
|
503
|
+
* !#if (adguard)
|
|
504
|
+
* ```
|
|
505
|
+
* then the directive's name is `if` and its value is `(adguard)`.
|
|
506
|
+
*
|
|
507
|
+
* In such a case, the parameters must be submitted for further parsing and validation, as this parser only handles
|
|
508
|
+
* the general syntax.
|
|
509
|
+
*/
|
|
510
|
+
export interface PreProcessorCommentRule extends CommentBase {
|
|
511
|
+
category: RuleCategory.Comment;
|
|
512
|
+
type: CommentRuleType.PreProcessorCommentRule;
|
|
513
|
+
/**
|
|
514
|
+
* Name of the directive
|
|
515
|
+
*/
|
|
516
|
+
name: Value;
|
|
517
|
+
/**
|
|
518
|
+
* Params (optional)
|
|
519
|
+
*/
|
|
520
|
+
params?: Value | ParameterList | AnyExpressionNode;
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Represents an adblock agent.
|
|
524
|
+
*/
|
|
525
|
+
export interface Agent extends Node {
|
|
526
|
+
type: 'Agent';
|
|
527
|
+
/**
|
|
528
|
+
* Adblock name.
|
|
529
|
+
*/
|
|
530
|
+
adblock: Value;
|
|
531
|
+
/**
|
|
532
|
+
* Adblock version (if specified).
|
|
533
|
+
*/
|
|
534
|
+
version?: Value;
|
|
535
|
+
/**
|
|
536
|
+
* Needed for network rules modifier validation.
|
|
537
|
+
*/
|
|
538
|
+
syntax: AdblockSyntax;
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Represents an agent comment rule.
|
|
542
|
+
*
|
|
543
|
+
* @example
|
|
544
|
+
* - ```adblock
|
|
545
|
+
* [Adblock Plus 2.0]
|
|
546
|
+
* ```
|
|
547
|
+
* - ```adblock
|
|
548
|
+
* [uBlock Origin 1.16.4; AdGuard 1.0]
|
|
549
|
+
* ```
|
|
550
|
+
*/
|
|
551
|
+
export interface AgentCommentRule extends RuleBase {
|
|
552
|
+
category: RuleCategory.Comment;
|
|
553
|
+
type: CommentRuleType.AgentCommentRule;
|
|
554
|
+
/**
|
|
555
|
+
* Agent list.
|
|
556
|
+
*/
|
|
557
|
+
children: Agent[];
|
|
558
|
+
}
|
|
559
|
+
/**
|
|
560
|
+
* Represents a hint.
|
|
561
|
+
*
|
|
562
|
+
* @example
|
|
563
|
+
* ```adblock
|
|
564
|
+
* !+ PLATFORM(windows, mac)
|
|
565
|
+
* ```
|
|
566
|
+
* the name would be `PLATFORM` and the params would be `["windows", "mac"]`.
|
|
567
|
+
*/
|
|
568
|
+
export interface Hint extends Node {
|
|
569
|
+
type: 'Hint';
|
|
570
|
+
/**
|
|
571
|
+
* Hint name.
|
|
572
|
+
*
|
|
573
|
+
* @example
|
|
574
|
+
* For `PLATFORM(windows, mac)` the name would be `PLATFORM`.
|
|
575
|
+
*/
|
|
576
|
+
name: Value;
|
|
577
|
+
/**
|
|
578
|
+
* Hint parameters.
|
|
579
|
+
*
|
|
580
|
+
* @example
|
|
581
|
+
* For `PLATFORM(windows, mac)` the params would be `["windows", "mac"]`.
|
|
582
|
+
*/
|
|
583
|
+
params?: ParameterList;
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* Represents a hint comment rule.
|
|
587
|
+
*
|
|
588
|
+
* There can be several hints in a hint rule.
|
|
589
|
+
*
|
|
590
|
+
* @example
|
|
591
|
+
* If the rule is
|
|
592
|
+
* ```adblock
|
|
593
|
+
* !+ NOT_OPTIMIZED PLATFORM(windows)
|
|
594
|
+
* ```
|
|
595
|
+
* then there are two hint members: `NOT_OPTIMIZED` and `PLATFORM`.
|
|
596
|
+
*/
|
|
597
|
+
export interface HintCommentRule extends RuleBase {
|
|
598
|
+
category: RuleCategory.Comment;
|
|
599
|
+
type: CommentRuleType.HintCommentRule;
|
|
600
|
+
/**
|
|
601
|
+
* Currently only AdGuard supports hints.
|
|
602
|
+
*/
|
|
603
|
+
syntax: AdblockSyntax;
|
|
604
|
+
/**
|
|
605
|
+
* List of hints.
|
|
606
|
+
*/
|
|
607
|
+
children: Hint[];
|
|
608
|
+
}
|
|
609
|
+
/**
|
|
610
|
+
* Represents a modifier list.
|
|
611
|
+
*
|
|
612
|
+
* @example
|
|
613
|
+
* If the rule is
|
|
614
|
+
* ```adblock
|
|
615
|
+
* some-rule$script,domain=example.com
|
|
616
|
+
* ```
|
|
617
|
+
* then the list of modifiers will be `script,domain=example.com`.
|
|
618
|
+
*/
|
|
619
|
+
export interface ModifierList extends Node {
|
|
620
|
+
type: 'ModifierList';
|
|
621
|
+
/**
|
|
622
|
+
* List of modifiers.
|
|
623
|
+
*/
|
|
624
|
+
children: Modifier[];
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Represents a modifier.
|
|
628
|
+
*
|
|
629
|
+
* @example
|
|
630
|
+
* If the modifier is `third-party`, the value of the modifier property
|
|
631
|
+
* will be `third-party`, but the value will remain undefined.
|
|
632
|
+
*
|
|
633
|
+
* But if the modifier is `domain=example.com`, then the modifier property will be
|
|
634
|
+
* `domain` and the value property will be `example.com`.
|
|
635
|
+
*/
|
|
636
|
+
export interface Modifier extends Node {
|
|
637
|
+
/**
|
|
638
|
+
* Modifier name
|
|
639
|
+
*/
|
|
640
|
+
name: Value;
|
|
641
|
+
/**
|
|
642
|
+
* Is this modifier an exception? For example, `~third-party` is an exception
|
|
643
|
+
*/
|
|
644
|
+
exception?: boolean;
|
|
645
|
+
/**
|
|
646
|
+
* Modifier value (optional)
|
|
647
|
+
*/
|
|
648
|
+
value?: Value;
|
|
649
|
+
}
|
|
650
|
+
/**
|
|
651
|
+
* Represents the separator used for various modifier values.
|
|
652
|
+
*
|
|
653
|
+
* @example
|
|
654
|
+
* `||example.com^$app=com.test1.app|TestApp.exe`
|
|
655
|
+
*/
|
|
656
|
+
export type PipeSeparator = typeof PIPE_MODIFIER_SEPARATOR;
|
|
657
|
+
/**
|
|
658
|
+
* Represents the separator used for basic rules domain list.
|
|
659
|
+
*
|
|
660
|
+
* @example
|
|
661
|
+
* `example.com,example.org###banner`
|
|
662
|
+
*/
|
|
663
|
+
export type CommaSeparator = typeof COMMA_DOMAIN_LIST_SEPARATOR;
|
|
664
|
+
/**
|
|
665
|
+
* Represents the separator used in a domain list.
|
|
666
|
+
*
|
|
667
|
+
* @example
|
|
668
|
+
* - `,` — for the classic domain list,
|
|
669
|
+
* - `|` — for the $domain modifier value
|
|
670
|
+
*/
|
|
671
|
+
export type DomainListSeparator = CommaSeparator | PipeSeparator;
|
|
672
|
+
/**
|
|
673
|
+
* Common interface for a list item of $app, $denyallow, $domain, $method
|
|
674
|
+
* which have similar syntax.
|
|
675
|
+
*/
|
|
676
|
+
export interface ListItem<T extends ListItemNodeType> extends Node {
|
|
677
|
+
type: T;
|
|
678
|
+
/**
|
|
679
|
+
* Value of the node.
|
|
680
|
+
*/
|
|
681
|
+
value: string;
|
|
682
|
+
/**
|
|
683
|
+
* If the value is an negated.
|
|
684
|
+
*
|
|
685
|
+
* @example
|
|
686
|
+
* `~example.com` is negated, but `example.com` is not. `~` is the exception marker here.
|
|
687
|
+
*/
|
|
688
|
+
exception: boolean;
|
|
689
|
+
}
|
|
690
|
+
/**
|
|
691
|
+
* Represents an element of the app list — $app.
|
|
692
|
+
*/
|
|
693
|
+
export type App = ListItem<ListItemNodeType.App>;
|
|
694
|
+
/**
|
|
695
|
+
* Represents an element of the domain list — $domain, $denyallow.
|
|
696
|
+
*/
|
|
697
|
+
export type Domain = ListItem<ListItemNodeType.Domain>;
|
|
698
|
+
/**
|
|
699
|
+
* Represents an element of the method list — $method.
|
|
700
|
+
*/
|
|
701
|
+
export type Method = ListItem<ListItemNodeType.Method>;
|
|
702
|
+
/**
|
|
703
|
+
* Represents an element of the stealth option list — $stealth.
|
|
704
|
+
*/
|
|
705
|
+
export type StealthOption = ListItem<ListItemNodeType.StealthOption>;
|
|
706
|
+
/**
|
|
707
|
+
* Represents any list item.
|
|
708
|
+
*/
|
|
709
|
+
export type AnyListItem = App | Domain | Method | StealthOption;
|
|
710
|
+
/**
|
|
711
|
+
* Represents a list of domains.
|
|
712
|
+
* Needed for $domain and $denyallow.
|
|
713
|
+
*
|
|
714
|
+
* @example
|
|
715
|
+
* `example.com,~example.net` or `example.com|~example.net`
|
|
716
|
+
*/
|
|
717
|
+
export interface DomainList extends Node {
|
|
718
|
+
/**
|
|
719
|
+
* Type of the node. Basically, the idea is that each main AST part should have a type
|
|
720
|
+
*/
|
|
721
|
+
type: ListNodeType.DomainList;
|
|
722
|
+
/**
|
|
723
|
+
* Separator used in the domain list.
|
|
724
|
+
*/
|
|
725
|
+
separator: DomainListSeparator;
|
|
726
|
+
/**
|
|
727
|
+
* List of domains
|
|
728
|
+
*/
|
|
729
|
+
children: Domain[];
|
|
730
|
+
}
|
|
731
|
+
/**
|
|
732
|
+
* Represents a list of apps.
|
|
733
|
+
* Needed for $app.
|
|
734
|
+
*
|
|
735
|
+
* @example
|
|
736
|
+
* `Example.exe|com.example.osx`.
|
|
737
|
+
*/
|
|
738
|
+
export interface AppList extends Node {
|
|
739
|
+
/**
|
|
740
|
+
* Type of the node. Basically, the idea is that each main AST part should have a type
|
|
741
|
+
*/
|
|
742
|
+
type: ListNodeType.AppList;
|
|
743
|
+
/**
|
|
744
|
+
* Separator used in the app list.
|
|
745
|
+
*/
|
|
746
|
+
separator: PipeSeparator;
|
|
747
|
+
/**
|
|
748
|
+
* List of apps
|
|
749
|
+
*/
|
|
750
|
+
children: App[];
|
|
751
|
+
}
|
|
752
|
+
/**
|
|
753
|
+
* Represents a list of methods.
|
|
754
|
+
* Needed for $method.
|
|
755
|
+
*
|
|
756
|
+
* @example
|
|
757
|
+
* `get|post|put`.
|
|
758
|
+
*/
|
|
759
|
+
export interface MethodList extends Node {
|
|
760
|
+
/**
|
|
761
|
+
* Type of the node. Basically, the idea is that each main AST part should have a type
|
|
762
|
+
*/
|
|
763
|
+
type: ListNodeType.MethodList;
|
|
764
|
+
/**
|
|
765
|
+
* Separator used in the method list.
|
|
766
|
+
*/
|
|
767
|
+
separator: PipeSeparator;
|
|
768
|
+
/**
|
|
769
|
+
* List of methods
|
|
770
|
+
*/
|
|
771
|
+
children: Method[];
|
|
772
|
+
}
|
|
773
|
+
/**
|
|
774
|
+
* Represents a list of stealth options.
|
|
775
|
+
* Needed for $stealth.
|
|
776
|
+
*
|
|
777
|
+
* @example
|
|
778
|
+
* `referrer|ip`.
|
|
779
|
+
*/
|
|
780
|
+
export interface StealthOptionList extends Node {
|
|
781
|
+
/**
|
|
782
|
+
* Type of the node. Basically, the idea is that each main AST part should have a type
|
|
783
|
+
*/
|
|
784
|
+
type: ListNodeType.StealthOptionList;
|
|
785
|
+
/**
|
|
786
|
+
* Separator used in the stealth option list.
|
|
787
|
+
*/
|
|
788
|
+
separator: PipeSeparator;
|
|
789
|
+
/**
|
|
790
|
+
* List of stealth options
|
|
791
|
+
*/
|
|
792
|
+
children: StealthOption[];
|
|
793
|
+
}
|
|
794
|
+
/**
|
|
795
|
+
* Represents a CSS injection body.
|
|
796
|
+
*/
|
|
797
|
+
export interface CssInjectionRuleBody extends Node {
|
|
798
|
+
type: 'CssInjectionRuleBody';
|
|
799
|
+
/**
|
|
800
|
+
* Media query, if any.
|
|
801
|
+
*
|
|
802
|
+
* @example
|
|
803
|
+
*
|
|
804
|
+
* ```text
|
|
805
|
+
* @media (max-width: 768px) { ... }
|
|
806
|
+
* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
|
807
|
+
* ```
|
|
808
|
+
*/
|
|
809
|
+
mediaQueryList?: Value;
|
|
810
|
+
/**
|
|
811
|
+
* CSS selector list.
|
|
812
|
+
*
|
|
813
|
+
* @example
|
|
814
|
+
* section:has(> .ad) { display: none; }
|
|
815
|
+
* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
|
816
|
+
* section:has(> .ad), article > p[advert] { display: none; }
|
|
817
|
+
* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
|
818
|
+
*/
|
|
819
|
+
selectorList: Value;
|
|
820
|
+
/**
|
|
821
|
+
* Declaration list.
|
|
822
|
+
*
|
|
823
|
+
* @example
|
|
824
|
+
* section:has(> .ad) { display: none; }
|
|
825
|
+
* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
|
826
|
+
* section:has(> .ad), article > p[advert] { display: none; }
|
|
827
|
+
* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
|
828
|
+
* div[ad] { padding-top: 10px; padding-bottom: 10px; }
|
|
829
|
+
* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
|
830
|
+
*/
|
|
831
|
+
declarationList?: Value;
|
|
832
|
+
/**
|
|
833
|
+
* Remove flag
|
|
834
|
+
*/
|
|
835
|
+
remove?: boolean;
|
|
836
|
+
}
|
|
837
|
+
/**
|
|
838
|
+
* Represents an element hiding rule body. There can even be several selectors in a rule,
|
|
839
|
+
* but the best practice is to place the selectors in separate rules.
|
|
840
|
+
*/
|
|
841
|
+
export interface ElementHidingRuleBody extends Node {
|
|
842
|
+
type: 'ElementHidingRuleBody';
|
|
843
|
+
/**
|
|
844
|
+
* Element hiding rule selector(s).
|
|
845
|
+
*/
|
|
846
|
+
selectorList: Value;
|
|
847
|
+
}
|
|
848
|
+
/**
|
|
849
|
+
* Represents a scriptlet injection rule body.
|
|
850
|
+
*/
|
|
851
|
+
export interface ScriptletInjectionRuleBody extends Node {
|
|
852
|
+
type: 'ScriptletInjectionRuleBody';
|
|
853
|
+
/**
|
|
854
|
+
* List of scriptlets (list of parameter lists).
|
|
855
|
+
*/
|
|
856
|
+
children: ParameterList[];
|
|
857
|
+
}
|
|
858
|
+
/**
|
|
859
|
+
* Represents an HTML filtering rule body.
|
|
860
|
+
*/
|
|
861
|
+
export interface HtmlFilteringRuleBody extends Node {
|
|
862
|
+
type: 'HtmlFilteringRuleBody';
|
|
863
|
+
/**
|
|
864
|
+
* HTML rule selector(s).
|
|
865
|
+
*/
|
|
866
|
+
body: Value;
|
|
867
|
+
}
|
|
868
|
+
/**
|
|
869
|
+
* A generic representation of a cosmetic rule.
|
|
870
|
+
*
|
|
871
|
+
* Regarding the categories, there is only a difference in the body,
|
|
872
|
+
* all other properties can be defined at this level.
|
|
873
|
+
*/
|
|
874
|
+
export interface CosmeticRule extends RuleBase {
|
|
875
|
+
category: RuleCategory.Cosmetic;
|
|
876
|
+
type: CosmeticRuleType;
|
|
877
|
+
/**
|
|
878
|
+
* List of modifiers (optional)
|
|
879
|
+
*/
|
|
880
|
+
modifiers?: ModifierList;
|
|
881
|
+
/**
|
|
882
|
+
* List of domains.
|
|
883
|
+
*/
|
|
884
|
+
domains: DomainList;
|
|
885
|
+
/**
|
|
886
|
+
* Separator between pattern and body. For example, in the following rule:
|
|
887
|
+
* ```adblock
|
|
888
|
+
* example.com##.ads
|
|
889
|
+
* ```
|
|
890
|
+
* then the separator is `##`.
|
|
891
|
+
*/
|
|
892
|
+
separator: Value;
|
|
893
|
+
/**
|
|
894
|
+
* If the rule is an exception. For example, in the following rule:
|
|
895
|
+
* ```adblock
|
|
896
|
+
* example.com#@#.ads
|
|
897
|
+
* ```
|
|
898
|
+
* then the rule is an exception and @ is the exception marker.
|
|
899
|
+
*/
|
|
900
|
+
exception: boolean;
|
|
901
|
+
/**
|
|
902
|
+
* Body of the rule. It can be a CSS rule, an element hiding rule, a scriptlet rule, etc.
|
|
903
|
+
*/
|
|
904
|
+
body: unknown;
|
|
905
|
+
}
|
|
906
|
+
/**
|
|
907
|
+
* Representation of an element hiding rule.
|
|
908
|
+
*
|
|
909
|
+
* Example rules:
|
|
910
|
+
* - ```adblock
|
|
911
|
+
* example.com##.ads
|
|
912
|
+
* ```
|
|
913
|
+
* - ```adblock
|
|
914
|
+
* example.com#@#.ads
|
|
915
|
+
* ```
|
|
916
|
+
* - ```adblock
|
|
917
|
+
* example.com#?#.ads:has(> .something)
|
|
918
|
+
* ```
|
|
919
|
+
* - ```adblock
|
|
920
|
+
* example.com#@?#.ads:has(> .something)
|
|
921
|
+
* ```
|
|
922
|
+
*/
|
|
923
|
+
export interface ElementHidingRule extends CosmeticRule {
|
|
924
|
+
type: CosmeticRuleType.ElementHidingRule;
|
|
925
|
+
body: ElementHidingRuleBody;
|
|
926
|
+
}
|
|
927
|
+
/**
|
|
928
|
+
* Representation of a CSS injection rule.
|
|
929
|
+
*
|
|
930
|
+
* Example rules (AdGuard):
|
|
931
|
+
* - ```adblock
|
|
932
|
+
* example.com#$#body { padding-top: 0 !important; }
|
|
933
|
+
* ```
|
|
934
|
+
* - ```adblock
|
|
935
|
+
* example.com#$#@media (min-width: 1024px) { body { padding-top: 0 !important; } }
|
|
936
|
+
* ```
|
|
937
|
+
* - ```adblock
|
|
938
|
+
* example.com#$?#@media (min-width: 1024px) { .something:has(.ads) { padding-top: 0 !important; } }
|
|
939
|
+
* ```
|
|
940
|
+
* - ```adblock
|
|
941
|
+
* example.com#$#.ads { remove: true; }
|
|
942
|
+
* ```
|
|
943
|
+
*
|
|
944
|
+
* Example rules (uBlock Origin):
|
|
945
|
+
* - ```adblock
|
|
946
|
+
* example.com##body:style(padding-top: 0 !important;)
|
|
947
|
+
* ```
|
|
948
|
+
* - ```adblock
|
|
949
|
+
* example.com##.ads:remove()
|
|
950
|
+
* ```
|
|
951
|
+
*/
|
|
952
|
+
export interface CssInjectionRule extends CosmeticRule {
|
|
953
|
+
type: CosmeticRuleType.CssInjectionRule;
|
|
954
|
+
body: CssInjectionRuleBody;
|
|
955
|
+
}
|
|
956
|
+
/**
|
|
957
|
+
* Representation of a scriptlet injection rule.
|
|
958
|
+
*
|
|
959
|
+
* Example rules (AdGuard):
|
|
960
|
+
* - ```adblock
|
|
961
|
+
* example.com#%#//scriptlet('scriptlet-name', 'arg0', 'arg1')
|
|
962
|
+
* ```
|
|
963
|
+
* - ```adblock
|
|
964
|
+
* example.com#@%#//scriptlet('scriptlet-name', 'arg0', 'arg1')
|
|
965
|
+
* ```
|
|
966
|
+
*
|
|
967
|
+
* Example rules (uBlock Origin):
|
|
968
|
+
* - ```adblock
|
|
969
|
+
* example.com##+js(scriptlet-name, arg0, arg1)
|
|
970
|
+
* ```
|
|
971
|
+
* - ```adblock
|
|
972
|
+
* example.com#@#+js(scriptlet-name, arg0, arg1)
|
|
973
|
+
* ```
|
|
974
|
+
*
|
|
975
|
+
* Example rules (Adblock Plus):
|
|
976
|
+
* - ```adblock
|
|
977
|
+
* example.com#$#scriptlet-name arg0 arg1
|
|
978
|
+
* ```
|
|
979
|
+
* - ```adblock
|
|
980
|
+
* example.com#@$#scriptlet-name arg0 arg1
|
|
981
|
+
* ```
|
|
982
|
+
* - ```adblock
|
|
983
|
+
* example.com#$#scriptlet0 arg00 arg01; scriptlet1 arg10 arg11
|
|
984
|
+
* ```
|
|
985
|
+
*/
|
|
986
|
+
export interface ScriptletInjectionRule extends CosmeticRule {
|
|
987
|
+
type: CosmeticRuleType.ScriptletInjectionRule;
|
|
988
|
+
body: ScriptletInjectionRuleBody;
|
|
989
|
+
}
|
|
990
|
+
/**
|
|
991
|
+
* Representation of a HTML filtering rule.
|
|
992
|
+
*
|
|
993
|
+
* Example rules (AdGuard):
|
|
994
|
+
* - ```adblock
|
|
995
|
+
* example.com$$script[tag-content="detect"]
|
|
996
|
+
* ```
|
|
997
|
+
* - ```adblock
|
|
998
|
+
* example.com$@$script[tag-content="detect"]
|
|
999
|
+
* ```
|
|
1000
|
+
*
|
|
1001
|
+
* Example rules (uBlock Origin):
|
|
1002
|
+
* - ```adblock
|
|
1003
|
+
* example.com##^script:has-text(detect)
|
|
1004
|
+
* ```
|
|
1005
|
+
* - ```adblock
|
|
1006
|
+
* example.com#@#^script:has-text(detect)
|
|
1007
|
+
* ```
|
|
1008
|
+
*/
|
|
1009
|
+
export interface HtmlFilteringRule extends CosmeticRule {
|
|
1010
|
+
type: CosmeticRuleType.HtmlFilteringRule;
|
|
1011
|
+
body: Value;
|
|
1012
|
+
}
|
|
1013
|
+
/**
|
|
1014
|
+
* Representation of a JS injection rule.
|
|
1015
|
+
*
|
|
1016
|
+
* Example rules (AdGuard):
|
|
1017
|
+
* - ```adblock
|
|
1018
|
+
* example.com#%#let a = 2;
|
|
1019
|
+
* ```
|
|
1020
|
+
* - ```adblock
|
|
1021
|
+
* example.com#@%#let a = 2;
|
|
1022
|
+
* ```
|
|
1023
|
+
*/
|
|
1024
|
+
export interface JsInjectionRule extends CosmeticRule {
|
|
1025
|
+
type: CosmeticRuleType.JsInjectionRule;
|
|
1026
|
+
body: Value;
|
|
1027
|
+
}
|
|
1028
|
+
/**
|
|
1029
|
+
* Represents the different types of network rules.
|
|
1030
|
+
*/
|
|
1031
|
+
export declare enum NetworkRuleType {
|
|
1032
|
+
NetworkRule = "NetworkRule",
|
|
1033
|
+
HostRule = "HostRule"
|
|
1034
|
+
}
|
|
1035
|
+
/**
|
|
1036
|
+
* Represents the common properties of network rules
|
|
1037
|
+
*/
|
|
1038
|
+
export interface NetworkRuleBase extends RuleBase {
|
|
1039
|
+
/**
|
|
1040
|
+
* Category of the adblock rule.
|
|
1041
|
+
*/
|
|
1042
|
+
category: RuleCategory.Network;
|
|
1043
|
+
/**
|
|
1044
|
+
* Type of the network rule.
|
|
1045
|
+
*/
|
|
1046
|
+
type: NetworkRuleType;
|
|
1047
|
+
/**
|
|
1048
|
+
* Syntax of the adblock rule. If we are not able to determine the syntax of the rule,
|
|
1049
|
+
* we should use `AdblockSyntax.Common` as the value.
|
|
1050
|
+
*/
|
|
1051
|
+
syntax: AdblockSyntax;
|
|
1052
|
+
}
|
|
1053
|
+
/**
|
|
1054
|
+
* Represents the common properties of network rules
|
|
1055
|
+
*/
|
|
1056
|
+
export interface NetworkRule extends NetworkRuleBase {
|
|
1057
|
+
/**
|
|
1058
|
+
* Type of the node.
|
|
1059
|
+
*/
|
|
1060
|
+
type: NetworkRuleType.NetworkRule;
|
|
1061
|
+
/**
|
|
1062
|
+
* If the rule is an exception rule. If the rule begins with `@@`, it means that it is an exception rule.
|
|
1063
|
+
*
|
|
1064
|
+
* @example
|
|
1065
|
+
* The following rule is an exception rule:
|
|
1066
|
+
* ```adblock
|
|
1067
|
+
* @@||example.org^
|
|
1068
|
+
* ```
|
|
1069
|
+
* since it begins with `@@`, which is the exception marker.
|
|
1070
|
+
*
|
|
1071
|
+
* But the following rule is not an exception rule:
|
|
1072
|
+
* ```adblock
|
|
1073
|
+
* ||example.org^
|
|
1074
|
+
* ```
|
|
1075
|
+
* since it does not begins with `@@`.
|
|
1076
|
+
*/
|
|
1077
|
+
exception: boolean;
|
|
1078
|
+
/**
|
|
1079
|
+
* The rule pattern.
|
|
1080
|
+
*
|
|
1081
|
+
* @example
|
|
1082
|
+
* - Let's say we have the following rule:
|
|
1083
|
+
* ```adblock
|
|
1084
|
+
* ||example.org^
|
|
1085
|
+
* ```
|
|
1086
|
+
* then the pattern of this rule is `||example.org^`.
|
|
1087
|
+
* - But let's say we have the following rule:
|
|
1088
|
+
* ```adblock
|
|
1089
|
+
* ||example.org^$third-party,script
|
|
1090
|
+
* ```
|
|
1091
|
+
* then the pattern of this rule is also `||example.org^`.
|
|
1092
|
+
*/
|
|
1093
|
+
pattern: Value;
|
|
1094
|
+
/**
|
|
1095
|
+
* The rule modifiers.
|
|
1096
|
+
*
|
|
1097
|
+
* @example
|
|
1098
|
+
* - Let's say we have the following rule:
|
|
1099
|
+
* ```adblock
|
|
1100
|
+
* ||example.org^$third-party
|
|
1101
|
+
* ```
|
|
1102
|
+
* then the modifiers of this rule are `["third-party"]`.
|
|
1103
|
+
*/
|
|
1104
|
+
modifiers?: ModifierList;
|
|
1105
|
+
}
|
|
1106
|
+
/**
|
|
1107
|
+
* Represents a list of hostnames.
|
|
1108
|
+
*/
|
|
1109
|
+
export interface HostnameList extends Node {
|
|
1110
|
+
/**
|
|
1111
|
+
* Type of the node.
|
|
1112
|
+
*/
|
|
1113
|
+
type: 'HostnameList';
|
|
1114
|
+
/**
|
|
1115
|
+
* List of hostnames.
|
|
1116
|
+
*/
|
|
1117
|
+
children: Value[];
|
|
1118
|
+
}
|
|
1119
|
+
/**
|
|
1120
|
+
* Represents the common properties of host rules.
|
|
1121
|
+
*
|
|
1122
|
+
* @see https://adguard-dns.io/kb/general/dns-filtering-syntax/#etc-hosts-syntax
|
|
1123
|
+
*/
|
|
1124
|
+
export interface HostRule extends NetworkRuleBase {
|
|
1125
|
+
/**
|
|
1126
|
+
* Type of the node.
|
|
1127
|
+
*/
|
|
1128
|
+
type: NetworkRuleType.HostRule;
|
|
1129
|
+
/**
|
|
1130
|
+
* IP address. It can be an IPv4 or IPv6 address.
|
|
1131
|
+
*
|
|
1132
|
+
* @example
|
|
1133
|
+
* ```text
|
|
1134
|
+
* 127.0.0.1 example.com example.org
|
|
1135
|
+
* ↑↑↑↑↑↑↑↑↑
|
|
1136
|
+
* ```
|
|
1137
|
+
* @note If IP is not specified in the rule, it parsed as null IP: `0.0.0.0`.
|
|
1138
|
+
*/
|
|
1139
|
+
ip: Value;
|
|
1140
|
+
/**
|
|
1141
|
+
* Hostnames.
|
|
1142
|
+
*
|
|
1143
|
+
* @example
|
|
1144
|
+
* ```text
|
|
1145
|
+
* 127.0.0.1 example.com example.org
|
|
1146
|
+
* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
|
1147
|
+
* ```
|
|
1148
|
+
*/
|
|
1149
|
+
hostnames: HostnameList;
|
|
1150
|
+
/**
|
|
1151
|
+
* Comment (optional).
|
|
1152
|
+
*
|
|
1153
|
+
* @example
|
|
1154
|
+
* ```text
|
|
1155
|
+
* 127.0.0.1 localhost # This is just a comment
|
|
1156
|
+
* ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
|
1157
|
+
* ```
|
|
1158
|
+
*/
|
|
1159
|
+
comment?: Value;
|
|
1160
|
+
}
|
|
1161
|
+
/**
|
|
1162
|
+
* Interface for parsed uBO selector.
|
|
1163
|
+
*/
|
|
1164
|
+
export interface UboSelector extends Node {
|
|
1165
|
+
/**
|
|
1166
|
+
* Node type.
|
|
1167
|
+
*/
|
|
1168
|
+
type: 'UboSelector';
|
|
1169
|
+
/**
|
|
1170
|
+
* Selector string cleaned from uBO specific syntax.
|
|
1171
|
+
*/
|
|
1172
|
+
selector: Value;
|
|
1173
|
+
/**
|
|
1174
|
+
* List of uBO modifiers applied to the selector.
|
|
1175
|
+
*/
|
|
1176
|
+
modifiers?: ModifierList;
|
|
1177
|
+
}
|