@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,105 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { SpecificPlatform, GenericPlatform } from '../platforms.mjs';
|
|
8
|
+
|
|
9
|
+
/* eslint-disable no-bitwise */
|
|
10
|
+
/**
|
|
11
|
+
* @file Provides platform mapping and helper functions.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Map of specific platforms string names to their corresponding enum values.
|
|
15
|
+
*/
|
|
16
|
+
const SPECIFIC_PLATFORM_MAP = new Map([
|
|
17
|
+
['adg_os_windows', SpecificPlatform.AdgOsWindows],
|
|
18
|
+
['adg_os_mac', SpecificPlatform.AdgOsMac],
|
|
19
|
+
['adg_os_android', SpecificPlatform.AdgOsAndroid],
|
|
20
|
+
['adg_ext_chrome', SpecificPlatform.AdgExtChrome],
|
|
21
|
+
['adg_ext_opera', SpecificPlatform.AdgExtOpera],
|
|
22
|
+
['adg_ext_edge', SpecificPlatform.AdgExtEdge],
|
|
23
|
+
['adg_ext_firefox', SpecificPlatform.AdgExtFirefox],
|
|
24
|
+
['adg_cb_android', SpecificPlatform.AdgCbAndroid],
|
|
25
|
+
['adg_cb_ios', SpecificPlatform.AdgCbIos],
|
|
26
|
+
['adg_cb_safari', SpecificPlatform.AdgCbSafari],
|
|
27
|
+
['ubo_ext_chrome', SpecificPlatform.UboExtChrome],
|
|
28
|
+
['ubo_ext_opera', SpecificPlatform.UboExtOpera],
|
|
29
|
+
['ubo_ext_edge', SpecificPlatform.UboExtEdge],
|
|
30
|
+
['ubo_ext_firefox', SpecificPlatform.UboExtFirefox],
|
|
31
|
+
['abp_ext_chrome', SpecificPlatform.AbpExtChrome],
|
|
32
|
+
['abp_ext_opera', SpecificPlatform.AbpExtOpera],
|
|
33
|
+
['abp_ext_edge', SpecificPlatform.AbpExtEdge],
|
|
34
|
+
['abp_ext_firefox', SpecificPlatform.AbpExtFirefox],
|
|
35
|
+
]);
|
|
36
|
+
/**
|
|
37
|
+
* Map of specific platforms enum values to their corresponding string names.
|
|
38
|
+
*
|
|
39
|
+
* @note Reverse of {@link SPECIFIC_PLATFORM_MAP}.
|
|
40
|
+
*/
|
|
41
|
+
const SPECIFIC_PLATFORM_MAP_REVERSE = new Map([...SPECIFIC_PLATFORM_MAP].map(([key, value]) => [value, key]));
|
|
42
|
+
/**
|
|
43
|
+
* Map of generic platforms string names to their corresponding enum values.
|
|
44
|
+
*/
|
|
45
|
+
const GENERIC_PLATFORM_MAP = new Map([
|
|
46
|
+
['adg_os_any', GenericPlatform.AdgOsAny],
|
|
47
|
+
['adg_safari_any', GenericPlatform.AdgSafariAny],
|
|
48
|
+
['adg_ext_chromium', GenericPlatform.AdgExtChromium],
|
|
49
|
+
['adg_ext_any', GenericPlatform.AdgExtAny],
|
|
50
|
+
['adg_any', GenericPlatform.AdgAny],
|
|
51
|
+
['ubo_ext_chromium', GenericPlatform.UboExtChromium],
|
|
52
|
+
['ubo_ext_any', GenericPlatform.UboExtAny],
|
|
53
|
+
['ubo_any', GenericPlatform.UboAny],
|
|
54
|
+
['abp_ext_chromium', GenericPlatform.AbpExtChromium],
|
|
55
|
+
['abp_ext_any', GenericPlatform.AbpExtAny],
|
|
56
|
+
['abp_any', GenericPlatform.AbpAny],
|
|
57
|
+
['any', GenericPlatform.Any],
|
|
58
|
+
]);
|
|
59
|
+
/**
|
|
60
|
+
* Check if the platform is a generic platform.
|
|
61
|
+
*
|
|
62
|
+
* @param platform Platform to check.
|
|
63
|
+
*
|
|
64
|
+
* @returns True if the platform is a generic platform, false otherwise.
|
|
65
|
+
*/
|
|
66
|
+
const isGenericPlatform = (platform) => {
|
|
67
|
+
// if more than one bit is set, it's a generic platform
|
|
68
|
+
return !!(platform & (platform - 1));
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Returns the platform enum value for the given platform string name.
|
|
72
|
+
*
|
|
73
|
+
* @param platform Platform string name, e.g., 'adg_os_windows'.
|
|
74
|
+
*
|
|
75
|
+
* @returns Specific or generic platform enum value.
|
|
76
|
+
* @throws Error if the platform is unknown.
|
|
77
|
+
*/
|
|
78
|
+
const getPlatformId = (platform) => {
|
|
79
|
+
const specificPlatform = SPECIFIC_PLATFORM_MAP.get(platform);
|
|
80
|
+
if (specificPlatform) {
|
|
81
|
+
return specificPlatform;
|
|
82
|
+
}
|
|
83
|
+
const genericPlatform = GENERIC_PLATFORM_MAP.get(platform);
|
|
84
|
+
if (genericPlatform) {
|
|
85
|
+
return genericPlatform;
|
|
86
|
+
}
|
|
87
|
+
throw new Error(`Unknown platform: ${platform}`);
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Returns the specific platform string name for the given platform enum value.
|
|
91
|
+
*
|
|
92
|
+
* @param platform Specific platform enum value.
|
|
93
|
+
*
|
|
94
|
+
* @returns Specific platform string name, e.g., 'adg_os_windows'.
|
|
95
|
+
* @throws Error if the platform is unknown.
|
|
96
|
+
*/
|
|
97
|
+
const getSpecificPlatformName = (platform) => {
|
|
98
|
+
const specificPlatform = SPECIFIC_PLATFORM_MAP_REVERSE.get(platform);
|
|
99
|
+
if (!specificPlatform) {
|
|
100
|
+
throw new Error(`Unknown platform: ${platform}`);
|
|
101
|
+
}
|
|
102
|
+
return specificPlatform;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export { GENERIC_PLATFORM_MAP, SPECIFIC_PLATFORM_MAP, SPECIFIC_PLATFORM_MAP_REVERSE, getPlatformId, getSpecificPlatformName, isGenericPlatform };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { isNull } from '../../utils/type-guards.mjs';
|
|
8
|
+
import { modifiersCompatibilityTable } from '../modifiers.mjs';
|
|
9
|
+
import { ResourceType } from '../schemas/resource-type.mjs';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Map of resource types to their corresponding adblock modifier names.
|
|
13
|
+
*
|
|
14
|
+
* @note Record type is used to ensure that all resource types are present in the map.
|
|
15
|
+
*/
|
|
16
|
+
const RESOURCE_TYPE_MODIFIER_MAP = Object.freeze({
|
|
17
|
+
[ResourceType.MainFrame]: 'document',
|
|
18
|
+
[ResourceType.SubFrame]: 'subdocument',
|
|
19
|
+
[ResourceType.Stylesheet]: 'stylesheet',
|
|
20
|
+
[ResourceType.Script]: 'script',
|
|
21
|
+
[ResourceType.Image]: 'image',
|
|
22
|
+
[ResourceType.Font]: 'font',
|
|
23
|
+
[ResourceType.Object]: 'object',
|
|
24
|
+
[ResourceType.XmlHttpRequest]: 'xmlhttprequest',
|
|
25
|
+
[ResourceType.Ping]: 'ping',
|
|
26
|
+
[ResourceType.Media]: 'media',
|
|
27
|
+
[ResourceType.WebSocket]: 'websocket',
|
|
28
|
+
[ResourceType.Other]: 'other',
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* Gets the adblock modifier name for the given resource type.
|
|
32
|
+
*
|
|
33
|
+
* @param resourceType Resource type to get the modifier name for.
|
|
34
|
+
* @param platform Platform to get the modifier for.
|
|
35
|
+
*
|
|
36
|
+
* @returns A string containing the adblock modifier name for the given resource type
|
|
37
|
+
* or `null` if the modifier could not be found.
|
|
38
|
+
*/
|
|
39
|
+
const getResourceTypeModifier = (resourceType, platform) => {
|
|
40
|
+
const modifierName = RESOURCE_TYPE_MODIFIER_MAP[resourceType];
|
|
41
|
+
if (!modifierName) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const modifierData = modifiersCompatibilityTable.getFirst(modifierName, platform);
|
|
45
|
+
if (isNull(modifierData)) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
return modifierData.name;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Checks if the given resource type is valid.
|
|
52
|
+
*
|
|
53
|
+
* @param resourceType Resource type to check.
|
|
54
|
+
*
|
|
55
|
+
* @returns `true` if the resource type is valid, `false` otherwise.
|
|
56
|
+
*/
|
|
57
|
+
const isValidResourceType = (resourceType) => {
|
|
58
|
+
return Object.values(ResourceType).includes(resourceType);
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
export { getResourceTypeModifier, isValidResourceType };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import camelCaseKeys from 'camelcase-keys';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @file Zod camelCase utility.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Transforms Zod schema to camelCase.
|
|
14
|
+
*
|
|
15
|
+
* @param zod Zod schema.
|
|
16
|
+
*
|
|
17
|
+
* @returns Zod schema with camelCase properties.
|
|
18
|
+
*
|
|
19
|
+
* @see {@link https://github.com/colinhacks/zod/issues/486#issuecomment-1501097361}
|
|
20
|
+
*/
|
|
21
|
+
const zodToCamelCase = (zod) => {
|
|
22
|
+
return zod.transform((val) => camelCaseKeys(val));
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export { zodToCamelCase };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { NotImplementedError } from '../../errors/not-implemented-error.mjs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @file Base class for converters
|
|
11
|
+
*
|
|
12
|
+
* TS doesn't support abstract static methods, so we should use
|
|
13
|
+
* a workaround and extend this class instead of implementing it
|
|
14
|
+
*/
|
|
15
|
+
/* eslint-disable jsdoc/require-returns-check */
|
|
16
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
17
|
+
/**
|
|
18
|
+
* Basic class for rule converters
|
|
19
|
+
*/
|
|
20
|
+
class BaseConverter {
|
|
21
|
+
/**
|
|
22
|
+
* Converts some data to AdGuard format
|
|
23
|
+
*
|
|
24
|
+
* @param data Data to convert
|
|
25
|
+
* @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
|
|
26
|
+
* the converted node, and its `isConverted` flag indicates whether the original node was converted.
|
|
27
|
+
* If the node was not converted, the result will contain the original node with the same object reference
|
|
28
|
+
* @throws If the data is invalid or incompatible
|
|
29
|
+
*/
|
|
30
|
+
static convertToAdg(data) {
|
|
31
|
+
throw new NotImplementedError();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Converts some data to Adblock Plus format
|
|
35
|
+
*
|
|
36
|
+
* @param data Data to convert
|
|
37
|
+
* @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
|
|
38
|
+
* the converted node, and its `isConverted` flag indicates whether the original node was converted.
|
|
39
|
+
* If the node was not converted, the result will contain the original node with the same object reference
|
|
40
|
+
* @throws If the data is invalid or incompatible
|
|
41
|
+
*/
|
|
42
|
+
static convertToAbp(data) {
|
|
43
|
+
throw new NotImplementedError();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Converts some data to uBlock Origin format
|
|
47
|
+
*
|
|
48
|
+
* @param data Data to convert
|
|
49
|
+
* @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
|
|
50
|
+
* the converted node, and its `isConverted` flag indicates whether the original node was converted.
|
|
51
|
+
* If the node was not converted, the result will contain the original node with the same object reference
|
|
52
|
+
* @throws If the data is invalid or incompatible
|
|
53
|
+
*/
|
|
54
|
+
static convertToUbo(data) {
|
|
55
|
+
throw new NotImplementedError();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { BaseConverter };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* @file Conversion result interface and helper functions
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Helper function to create a generic conversion result.
|
|
12
|
+
*
|
|
13
|
+
* @param result Conversion result
|
|
14
|
+
* @param isConverted Indicates whether the input item was converted
|
|
15
|
+
* @template T Type of the item to convert
|
|
16
|
+
* @template U Type of the conversion result (defaults to `T`, but can be `T[]` as well)
|
|
17
|
+
* @returns Generic conversion result
|
|
18
|
+
*/
|
|
19
|
+
// eslint-disable-next-line max-len
|
|
20
|
+
function createConversionResult(result, isConverted) {
|
|
21
|
+
return {
|
|
22
|
+
result,
|
|
23
|
+
isConverted,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Helper function to create a node conversion result.
|
|
28
|
+
*
|
|
29
|
+
* @param nodes Array of nodes
|
|
30
|
+
* @param isConverted Indicates whether the input item was converted
|
|
31
|
+
* @template T Type of the node (extends `Node`)
|
|
32
|
+
* @returns Node conversion result
|
|
33
|
+
*/
|
|
34
|
+
function createNodeConversionResult(nodes, isConverted) {
|
|
35
|
+
return createConversionResult(nodes, isConverted);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { createConversionResult, createNodeConversionResult };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { NotImplementedError } from '../../errors/not-implemented-error.mjs';
|
|
8
|
+
import { BaseConverter } from './base-converter.mjs';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @file Base class for rule converters
|
|
12
|
+
*
|
|
13
|
+
* TS doesn't support abstract static methods, so we should use
|
|
14
|
+
* a workaround and extend this class instead of implementing it
|
|
15
|
+
*/
|
|
16
|
+
/* eslint-disable jsdoc/require-returns-check */
|
|
17
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
18
|
+
/**
|
|
19
|
+
* Basic class for rule converters
|
|
20
|
+
*/
|
|
21
|
+
class RuleConverterBase extends BaseConverter {
|
|
22
|
+
/**
|
|
23
|
+
* Converts an adblock filtering rule to AdGuard format, if possible.
|
|
24
|
+
*
|
|
25
|
+
* @param rule Rule node to convert
|
|
26
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
27
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
28
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
29
|
+
* @throws If the rule is invalid or cannot be converted
|
|
30
|
+
*/
|
|
31
|
+
static convertToAdg(rule) {
|
|
32
|
+
throw new NotImplementedError();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Converts an adblock filtering rule to Adblock Plus format, if possible.
|
|
36
|
+
*
|
|
37
|
+
* @param rule Rule node to convert
|
|
38
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
39
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
40
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
41
|
+
* @throws If the rule is invalid or cannot be converted
|
|
42
|
+
*/
|
|
43
|
+
static convertToAbp(rule) {
|
|
44
|
+
throw new NotImplementedError();
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Converts an adblock filtering rule to uBlock Origin format, if possible.
|
|
48
|
+
*
|
|
49
|
+
* @param rule Rule node to convert
|
|
50
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
51
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
52
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
53
|
+
* @throws If the rule is invalid or cannot be converted
|
|
54
|
+
*/
|
|
55
|
+
static convertToUbo(rule) {
|
|
56
|
+
throw new NotImplementedError();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export { RuleConverterBase };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { CommentRuleType, CommentMarker } from '../../nodes/index.mjs';
|
|
8
|
+
import { SPACE } from '../../utils/constants.mjs';
|
|
9
|
+
import { RuleConverterBase } from '../base-interfaces/rule-converter-base.mjs';
|
|
10
|
+
import { clone } from '../../utils/clone.mjs';
|
|
11
|
+
import { createNodeConversionResult } from '../base-interfaces/conversion-result.mjs';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @file Comment rule converter
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Comment rule converter class
|
|
18
|
+
*
|
|
19
|
+
* @todo Implement `convertToUbo` and `convertToAbp`
|
|
20
|
+
*/
|
|
21
|
+
class CommentRuleConverter extends RuleConverterBase {
|
|
22
|
+
/**
|
|
23
|
+
* Converts a comment rule to AdGuard format, if possible.
|
|
24
|
+
*
|
|
25
|
+
* @param rule Rule node to convert
|
|
26
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
27
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
28
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
29
|
+
* @throws If the rule is invalid or cannot be converted
|
|
30
|
+
*/
|
|
31
|
+
static convertToAdg(rule) {
|
|
32
|
+
// TODO: Add support for other comment types, if needed
|
|
33
|
+
// Main task is # -> ! conversion
|
|
34
|
+
switch (rule.type) {
|
|
35
|
+
case CommentRuleType.CommentRule:
|
|
36
|
+
// Check if the rule needs to be converted
|
|
37
|
+
if (rule.type === CommentRuleType.CommentRule && rule.marker.value === CommentMarker.Hashmark) {
|
|
38
|
+
// Add a ! to the beginning of the comment
|
|
39
|
+
// TODO: Replace with custom clone method
|
|
40
|
+
const ruleClone = clone(rule);
|
|
41
|
+
ruleClone.marker.value = CommentMarker.Regular;
|
|
42
|
+
// Add the hashmark to the beginning of the comment text
|
|
43
|
+
ruleClone.text.value = `${SPACE}${CommentMarker.Hashmark}${ruleClone.text.value}`;
|
|
44
|
+
return createNodeConversionResult([ruleClone], true);
|
|
45
|
+
}
|
|
46
|
+
return createNodeConversionResult([rule], false);
|
|
47
|
+
// Leave any other comment rule as is
|
|
48
|
+
default:
|
|
49
|
+
return createNodeConversionResult([rule], false);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { CommentRuleConverter };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { CosmeticRuleSeparator } from '../../nodes/index.mjs';
|
|
8
|
+
import { RuleConverterBase } from '../base-interfaces/rule-converter-base.mjs';
|
|
9
|
+
import { CssSelectorConverter } from '../css/index.mjs';
|
|
10
|
+
import { AdblockSyntax } from '../../utils/adblockers.mjs';
|
|
11
|
+
import { clone } from '../../utils/clone.mjs';
|
|
12
|
+
import { createNodeConversionResult } from '../base-interfaces/conversion-result.mjs';
|
|
13
|
+
import { CssTokenStream } from '../../parser/css/css-token-stream.mjs';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @file CSS injection rule converter
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* CSS injection rule converter class
|
|
20
|
+
*
|
|
21
|
+
* @todo Implement `convertToUbo` and `convertToAbp`
|
|
22
|
+
*/
|
|
23
|
+
class CssInjectionRuleConverter extends RuleConverterBase {
|
|
24
|
+
/**
|
|
25
|
+
* Converts a CSS injection rule to AdGuard format, if possible.
|
|
26
|
+
*
|
|
27
|
+
* @param rule Rule node to convert
|
|
28
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
29
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
30
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
31
|
+
* @throws If the rule is invalid or cannot be converted
|
|
32
|
+
*/
|
|
33
|
+
static convertToAdg(rule) {
|
|
34
|
+
const separator = rule.separator.value;
|
|
35
|
+
let convertedSeparator = separator;
|
|
36
|
+
const stream = new CssTokenStream(rule.body.selectorList.value);
|
|
37
|
+
const convertedSelectorList = CssSelectorConverter.convertToAdg(stream);
|
|
38
|
+
// Change the separator if the rule contains ExtendedCSS elements,
|
|
39
|
+
// but do not force non-extended CSS separator if the rule does not contain any ExtendedCSS selectors,
|
|
40
|
+
// because sometimes we use it to force executing ExtendedCSS library.
|
|
41
|
+
if (stream.hasAnySelectorExtendedCssNodeStrict() || rule.body.remove) {
|
|
42
|
+
convertedSeparator = rule.exception
|
|
43
|
+
? CosmeticRuleSeparator.AdgExtendedCssInjectionException
|
|
44
|
+
: CosmeticRuleSeparator.AdgExtendedCssInjection;
|
|
45
|
+
}
|
|
46
|
+
else if (rule.syntax !== AdblockSyntax.Adg) {
|
|
47
|
+
// If the original rule syntax is not AdGuard, use the default separator
|
|
48
|
+
// e.g. if the input rule is from uBO, we need to convert ## to #$#.
|
|
49
|
+
convertedSeparator = rule.exception
|
|
50
|
+
? CosmeticRuleSeparator.AdgCssInjectionException
|
|
51
|
+
: CosmeticRuleSeparator.AdgCssInjection;
|
|
52
|
+
}
|
|
53
|
+
// Check if the rule needs to be converted
|
|
54
|
+
if (!(rule.syntax === AdblockSyntax.Common || rule.syntax === AdblockSyntax.Adg)
|
|
55
|
+
|| separator !== convertedSeparator
|
|
56
|
+
|| convertedSelectorList.isConverted) {
|
|
57
|
+
// TODO: Replace with custom clone method
|
|
58
|
+
const ruleClone = clone(rule);
|
|
59
|
+
ruleClone.syntax = AdblockSyntax.Adg;
|
|
60
|
+
ruleClone.separator.value = convertedSeparator;
|
|
61
|
+
ruleClone.body.selectorList.value = convertedSelectorList.result;
|
|
62
|
+
return createNodeConversionResult([ruleClone], true);
|
|
63
|
+
}
|
|
64
|
+
// Otherwise, return the original rule
|
|
65
|
+
return createNodeConversionResult([rule], false);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { CssInjectionRuleConverter };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { CosmeticRuleSeparator } from '../../nodes/index.mjs';
|
|
8
|
+
import { RuleConverterBase } from '../base-interfaces/rule-converter-base.mjs';
|
|
9
|
+
import { CssSelectorConverter } from '../css/index.mjs';
|
|
10
|
+
import { AdblockSyntax } from '../../utils/adblockers.mjs';
|
|
11
|
+
import { clone } from '../../utils/clone.mjs';
|
|
12
|
+
import { createNodeConversionResult } from '../base-interfaces/conversion-result.mjs';
|
|
13
|
+
import { CssTokenStream } from '../../parser/css/css-token-stream.mjs';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @file Element hiding rule converter
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Element hiding rule converter class
|
|
20
|
+
*
|
|
21
|
+
* @todo Implement `convertToUbo` and `convertToAbp`
|
|
22
|
+
*/
|
|
23
|
+
class ElementHidingRuleConverter extends RuleConverterBase {
|
|
24
|
+
/**
|
|
25
|
+
* Converts an element hiding rule to AdGuard format, if possible.
|
|
26
|
+
*
|
|
27
|
+
* @param rule Rule node to convert
|
|
28
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
29
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
30
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
31
|
+
* @throws If the rule is invalid or cannot be converted
|
|
32
|
+
*/
|
|
33
|
+
static convertToAdg(rule) {
|
|
34
|
+
const separator = rule.separator.value;
|
|
35
|
+
let convertedSeparator = separator;
|
|
36
|
+
const stream = new CssTokenStream(rule.body.selectorList.value);
|
|
37
|
+
const convertedSelectorList = CssSelectorConverter.convertToAdg(stream);
|
|
38
|
+
// Change the separator if the rule contains ExtendedCSS elements,
|
|
39
|
+
// but do not force non-extended CSS separator if the rule does not contain any ExtendedCSS selectors,
|
|
40
|
+
// because sometimes we use it to force executing ExtendedCSS library.
|
|
41
|
+
if (stream.hasAnySelectorExtendedCssNodeStrict()) {
|
|
42
|
+
convertedSeparator = rule.exception
|
|
43
|
+
? CosmeticRuleSeparator.ExtendedElementHidingException
|
|
44
|
+
: CosmeticRuleSeparator.ExtendedElementHiding;
|
|
45
|
+
}
|
|
46
|
+
// Check if the rule needs to be converted
|
|
47
|
+
if (!(rule.syntax === AdblockSyntax.Common || rule.syntax === AdblockSyntax.Adg)
|
|
48
|
+
|| separator !== convertedSeparator
|
|
49
|
+
|| convertedSelectorList.isConverted) {
|
|
50
|
+
// TODO: Replace with custom clone method
|
|
51
|
+
const ruleClone = clone(rule);
|
|
52
|
+
ruleClone.syntax = AdblockSyntax.Adg;
|
|
53
|
+
ruleClone.separator.value = convertedSeparator;
|
|
54
|
+
ruleClone.body.selectorList.value = convertedSelectorList.result;
|
|
55
|
+
return createNodeConversionResult([ruleClone], true);
|
|
56
|
+
}
|
|
57
|
+
// Otherwise, return the original rule
|
|
58
|
+
return createNodeConversionResult([rule], false);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { ElementHidingRuleConverter };
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { TokenType, getFormattedTokenName } from '@adguard/css-tokenizer';
|
|
8
|
+
import { sprintf } from 'sprintf-js';
|
|
9
|
+
import { RuleConversionError } from '../../errors/rule-conversion-error.mjs';
|
|
10
|
+
import { RuleCategory, CosmeticRuleType } from '../../nodes/index.mjs';
|
|
11
|
+
import { RuleConverterBase } from '../base-interfaces/rule-converter-base.mjs';
|
|
12
|
+
import { createModifierListNode, createModifierNode } from '../../ast-utils/modifiers.mjs';
|
|
13
|
+
import { UBO_HTML_MASK, EMPTY } from '../../utils/constants.mjs';
|
|
14
|
+
import { ADBLOCK_URL_START, ADBLOCK_URL_SEPARATOR } from '../../utils/regexp.mjs';
|
|
15
|
+
import { createNetworkRuleNode } from '../../ast-utils/network-rules.mjs';
|
|
16
|
+
import { AdblockSyntax } from '../../utils/adblockers.mjs';
|
|
17
|
+
import { createNodeConversionResult } from '../base-interfaces/conversion-result.mjs';
|
|
18
|
+
import { CssTokenStream } from '../../parser/css/css-token-stream.mjs';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @file Converter for request header removal rules
|
|
22
|
+
*/
|
|
23
|
+
const UBO_RESPONSEHEADER_FN = 'responseheader';
|
|
24
|
+
const ADG_REMOVEHEADER_MODIFIER = 'removeheader';
|
|
25
|
+
const ERROR_MESSAGES = {
|
|
26
|
+
EMPTY_PARAMETER: `Empty parameter for '${UBO_RESPONSEHEADER_FN}' function`,
|
|
27
|
+
EXPECTED_END_OF_RULE: "Expected end of rule, but got '%s'",
|
|
28
|
+
MULTIPLE_DOMAINS_NOT_SUPPORTED: 'Multiple domains are not supported yet',
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Converter for request header removal rules
|
|
32
|
+
*
|
|
33
|
+
* @todo Implement `convertToUbo` (ABP currently doesn't support header removal rules)
|
|
34
|
+
*/
|
|
35
|
+
class HeaderRemovalRuleConverter extends RuleConverterBase {
|
|
36
|
+
/**
|
|
37
|
+
* Converts a header removal rule to AdGuard syntax, if possible.
|
|
38
|
+
*
|
|
39
|
+
* @param rule Rule node to convert
|
|
40
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
41
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
42
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
43
|
+
* @throws If the rule is invalid or cannot be converted
|
|
44
|
+
* @example
|
|
45
|
+
* If the input rule is:
|
|
46
|
+
* ```adblock
|
|
47
|
+
* example.com##^responseheader(header-name)
|
|
48
|
+
* ```
|
|
49
|
+
* The output will be:
|
|
50
|
+
* ```adblock
|
|
51
|
+
* ||example.com^$removeheader=header-name
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
static convertToAdg(rule) {
|
|
55
|
+
// TODO: Add support for ABP syntax once it starts supporting header removal rules
|
|
56
|
+
// Leave the rule as is if it's not a header removal rule
|
|
57
|
+
if (rule.category !== RuleCategory.Cosmetic || rule.type !== CosmeticRuleType.HtmlFilteringRule) {
|
|
58
|
+
return createNodeConversionResult([rule], false);
|
|
59
|
+
}
|
|
60
|
+
const stream = new CssTokenStream(rule.body.value);
|
|
61
|
+
let token;
|
|
62
|
+
// Skip leading whitespace
|
|
63
|
+
stream.skipWhitespace();
|
|
64
|
+
// Next token should be the `^` followed by a `responseheader` function
|
|
65
|
+
token = stream.get();
|
|
66
|
+
if (!token || token.type !== TokenType.Delim || rule.body.value[token.start] !== UBO_HTML_MASK) {
|
|
67
|
+
return createNodeConversionResult([rule], false);
|
|
68
|
+
}
|
|
69
|
+
stream.advance();
|
|
70
|
+
token = stream.get();
|
|
71
|
+
if (!token) {
|
|
72
|
+
return createNodeConversionResult([rule], false);
|
|
73
|
+
}
|
|
74
|
+
const functionName = rule.body.value.slice(token.start, token.end - 1);
|
|
75
|
+
if (functionName !== UBO_RESPONSEHEADER_FN) {
|
|
76
|
+
return createNodeConversionResult([rule], false);
|
|
77
|
+
}
|
|
78
|
+
// Parse the parameter
|
|
79
|
+
const paramStart = token.end;
|
|
80
|
+
stream.skipUntilBalanced();
|
|
81
|
+
const paramEnd = stream.getOrFail().end;
|
|
82
|
+
const param = rule.body.value.slice(paramStart, paramEnd - 1).trim();
|
|
83
|
+
// Do not allow empty parameter
|
|
84
|
+
if (param.length === 0) {
|
|
85
|
+
throw new RuleConversionError(ERROR_MESSAGES.EMPTY_PARAMETER);
|
|
86
|
+
}
|
|
87
|
+
stream.expect(TokenType.CloseParenthesis);
|
|
88
|
+
stream.advance();
|
|
89
|
+
// Skip trailing whitespace after the function call
|
|
90
|
+
stream.skipWhitespace();
|
|
91
|
+
// Expect the end of the rule - so nothing should be left in the stream
|
|
92
|
+
if (!stream.isEof()) {
|
|
93
|
+
token = stream.getOrFail();
|
|
94
|
+
throw new RuleConversionError(sprintf(ERROR_MESSAGES.EXPECTED_END_OF_RULE, getFormattedTokenName(token.type)));
|
|
95
|
+
}
|
|
96
|
+
// Prepare network rule pattern
|
|
97
|
+
const pattern = [];
|
|
98
|
+
if (rule.domains.children.length === 1) {
|
|
99
|
+
// If the rule has only one domain, we can use a simple network rule pattern:
|
|
100
|
+
// ||single-domain-from-the-rule^
|
|
101
|
+
pattern.push(ADBLOCK_URL_START, rule.domains.children[0].value, ADBLOCK_URL_SEPARATOR);
|
|
102
|
+
}
|
|
103
|
+
else if (rule.domains.children.length > 1) {
|
|
104
|
+
// TODO: Add support for multiple domains, for example:
|
|
105
|
+
// example.com,example.org,example.net##^responseheader(header-name)
|
|
106
|
+
// We should consider allowing $domain with $removeheader modifier,
|
|
107
|
+
// for example:
|
|
108
|
+
// $removeheader=header-name,domain=example.com|example.org|example.net
|
|
109
|
+
throw new RuleConversionError(ERROR_MESSAGES.MULTIPLE_DOMAINS_NOT_SUPPORTED);
|
|
110
|
+
}
|
|
111
|
+
// Prepare network rule modifiers
|
|
112
|
+
const modifiers = createModifierListNode();
|
|
113
|
+
modifiers.children.push(createModifierNode(ADG_REMOVEHEADER_MODIFIER, param));
|
|
114
|
+
// Construct the network rule
|
|
115
|
+
return createNodeConversionResult([
|
|
116
|
+
createNetworkRuleNode(pattern.join(EMPTY), modifiers,
|
|
117
|
+
// Copy the exception flag
|
|
118
|
+
rule.exception, AdblockSyntax.Adg),
|
|
119
|
+
], true);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export { ERROR_MESSAGES, HeaderRemovalRuleConverter };
|