@adguard/agtree 2.1.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,88 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { RuleConverter } from './rule.mjs';
|
|
8
|
+
import { clone } from '../utils/clone.mjs';
|
|
9
|
+
import { MultiValueMap } from '../utils/multi-value-map.mjs';
|
|
10
|
+
import { createConversionResult } from './base-interfaces/conversion-result.mjs';
|
|
11
|
+
import { BaseConverter } from './base-interfaces/base-converter.mjs';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @file Adblock filter list converter
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Adblock filter list converter class
|
|
18
|
+
*
|
|
19
|
+
* This class just provides an extra layer on top of the {@link RuleConverter}
|
|
20
|
+
* and can be used to convert entire filter lists.
|
|
21
|
+
*
|
|
22
|
+
* @todo Implement `convertToUbo` and `convertToAbp`
|
|
23
|
+
* @todo Implement tolerant mode, which will allow to convert a filter list
|
|
24
|
+
* even if some of its rules are invalid
|
|
25
|
+
*/
|
|
26
|
+
class FilterListConverter extends BaseConverter {
|
|
27
|
+
/**
|
|
28
|
+
* Converts an adblock filter list to AdGuard format, if possible.
|
|
29
|
+
*
|
|
30
|
+
* @param filterListNode Filter list node to convert
|
|
31
|
+
* @param tolerant Indicates whether the converter should be tolerant to invalid rules. If enabled and a rule is
|
|
32
|
+
* invalid, it will be left as is. If disabled and a rule is invalid, the whole filter list will be failed.
|
|
33
|
+
* Defaults to `true`.
|
|
34
|
+
* @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
|
|
35
|
+
* the converted node, and its `isConverted` flag indicates whether the original node was converted.
|
|
36
|
+
* If the node was not converted, the result will contain the original node with the same object reference
|
|
37
|
+
* @throws If the filter list is invalid or cannot be converted (if the tolerant mode is disabled)
|
|
38
|
+
*/
|
|
39
|
+
static convertToAdg(filterListNode, tolerant = true) {
|
|
40
|
+
// Prepare a map to store the converted rules by their index in the filter list
|
|
41
|
+
const conversionMap = new MultiValueMap();
|
|
42
|
+
// Iterate over the filtering rules and convert them one by one, then add them to the result (one conversion may
|
|
43
|
+
// result in multiple rules)
|
|
44
|
+
for (let i = 0; i < filterListNode.children.length; i += 1) {
|
|
45
|
+
try {
|
|
46
|
+
const convertedRules = RuleConverter.convertToAdg(filterListNode.children[i]);
|
|
47
|
+
// Add the converted rules to the map if they were converted
|
|
48
|
+
if (convertedRules.isConverted) {
|
|
49
|
+
conversionMap.add(i, ...convertedRules.result);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
// If the tolerant mode is disabled, we should throw an error, this will fail the whole filter list
|
|
54
|
+
// conversion.
|
|
55
|
+
// Otherwise, we just ignore the error and leave the rule as is
|
|
56
|
+
if (!tolerant) {
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// If the conversion map is empty, it means that no rules were converted, so we can return the original filter
|
|
62
|
+
// list
|
|
63
|
+
if (conversionMap.size === 0) {
|
|
64
|
+
return createConversionResult(filterListNode, false);
|
|
65
|
+
}
|
|
66
|
+
// Otherwise, create a new filter list node with the converted rules
|
|
67
|
+
const convertedFilterList = {
|
|
68
|
+
type: 'FilterList',
|
|
69
|
+
children: [],
|
|
70
|
+
};
|
|
71
|
+
// Iterate over the original rules again and add them to the converted filter list, replacing the converted
|
|
72
|
+
// rules with the new ones at the specified indexes
|
|
73
|
+
for (let i = 0; i < filterListNode.children.length; i += 1) {
|
|
74
|
+
const rules = conversionMap.get(i);
|
|
75
|
+
if (rules) {
|
|
76
|
+
convertedFilterList.children.push(...rules);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// We clone the unconverted rules to avoid mutating the original filter list if we return the converted
|
|
80
|
+
// one
|
|
81
|
+
convertedFilterList.children.push(clone(filterListNode.children[i]));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return createConversionResult(convertedFilterList, true);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export { FilterListConverter };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
export { RawFilterListConverter } from './raw-filter-list.mjs';
|
|
8
|
+
export { RuleConverter } from './rule.mjs';
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { SEMICOLON, SPACE } from '../../utils/constants.mjs';
|
|
8
|
+
import { createModifierNode } from '../../ast-utils/modifiers.mjs';
|
|
9
|
+
import { BaseConverter } from '../base-interfaces/base-converter.mjs';
|
|
10
|
+
import { RuleConversionError } from '../../errors/rule-conversion-error.mjs';
|
|
11
|
+
import { MultiValueMap } from '../../utils/multi-value-map.mjs';
|
|
12
|
+
import { createConversionResult } from '../base-interfaces/conversion-result.mjs';
|
|
13
|
+
import { cloneModifierListNode } from '../../ast-utils/clone.mjs';
|
|
14
|
+
import { modifiersCompatibilityTable } from '../../compatibility-tables/modifiers.mjs';
|
|
15
|
+
import { redirectsCompatibilityTable } from '../../compatibility-tables/redirects.mjs';
|
|
16
|
+
import '../../compatibility-tables/scriptlets.mjs';
|
|
17
|
+
import { GenericPlatform } from '../../compatibility-tables/platforms.mjs';
|
|
18
|
+
import '../../compatibility-tables/schemas/base.mjs';
|
|
19
|
+
import '../../compatibility-tables/schemas/modifier.mjs';
|
|
20
|
+
import '../../compatibility-tables/schemas/redirect.mjs';
|
|
21
|
+
import '../../compatibility-tables/schemas/scriptlet.mjs';
|
|
22
|
+
import '../../compatibility-tables/schemas/platform.mjs';
|
|
23
|
+
import '../../compatibility-tables/utils/platform-helpers.mjs';
|
|
24
|
+
import '../../compatibility-tables/schemas/resource-type.mjs';
|
|
25
|
+
import { isValidResourceType } from '../../compatibility-tables/utils/resource-type-helpers.mjs';
|
|
26
|
+
import { isUndefined } from '../../utils/type-guards.mjs';
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @file Network rule modifier list converter.
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* @see {@link https://adguard.com/kb/general/ad-filtering/create-own-filters/#csp-modifier}
|
|
33
|
+
*/
|
|
34
|
+
const CSP_MODIFIER = 'csp';
|
|
35
|
+
const CSP_SEPARATOR = SEMICOLON + SPACE;
|
|
36
|
+
/**
|
|
37
|
+
* @see {@link https://adguard.com/kb/general/ad-filtering/create-own-filters/#csp-modifier}
|
|
38
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy}
|
|
39
|
+
*/
|
|
40
|
+
const COMMON_CSP_PARAMS = '\'self\' \'unsafe-eval\' http: https: data: blob: mediastream: filesystem:';
|
|
41
|
+
/**
|
|
42
|
+
* @see {@link https://help.adblockplus.org/hc/en-us/articles/360062733293#rewrite}
|
|
43
|
+
*/
|
|
44
|
+
const ABP_REWRITE_MODIFIER = 'rewrite';
|
|
45
|
+
/**
|
|
46
|
+
* @see {@link https://adguard.com/kb/general/ad-filtering/create-own-filters/#redirect-modifier}
|
|
47
|
+
*/
|
|
48
|
+
const REDIRECT_MODIFIER = 'redirect';
|
|
49
|
+
/**
|
|
50
|
+
* @see {@link https://adguard.com/kb/general/ad-filtering/create-own-filters/#redirect-rule-modifier}
|
|
51
|
+
*/
|
|
52
|
+
const REDIRECT_RULE_MODIFIER = 'redirect-rule';
|
|
53
|
+
/**
|
|
54
|
+
* @see {@link https://github.com/gorhill/uBlock/wiki/Resources-Library#empty-redirect-resources}
|
|
55
|
+
*/
|
|
56
|
+
const UBO_NOOP_TEXT_RESOURCE = 'noop.txt';
|
|
57
|
+
/**
|
|
58
|
+
* Redirect-related modifiers.
|
|
59
|
+
*/
|
|
60
|
+
const REDIRECT_MODIFIERS = new Set([
|
|
61
|
+
ABP_REWRITE_MODIFIER,
|
|
62
|
+
REDIRECT_MODIFIER,
|
|
63
|
+
REDIRECT_RULE_MODIFIER,
|
|
64
|
+
]);
|
|
65
|
+
/**
|
|
66
|
+
* Conversion map for ADG network rule modifiers.
|
|
67
|
+
*/
|
|
68
|
+
const ADG_CONVERSION_MAP = new Map([
|
|
69
|
+
['1p', [{ name: () => 'third-party', exception: (actual) => !actual }]],
|
|
70
|
+
['3p', [{ name: () => 'third-party' }]],
|
|
71
|
+
['css', [{ name: () => 'stylesheet' }]],
|
|
72
|
+
['doc', [{ name: () => 'document' }]],
|
|
73
|
+
['ehide', [{ name: () => 'elemhide' }]],
|
|
74
|
+
['empty', [{ name: () => 'redirect', value: () => 'nooptext' }]],
|
|
75
|
+
['first-party', [{ name: () => 'third-party', exception: (actual) => !actual }]],
|
|
76
|
+
['frame', [{ name: () => 'subdocument' }]],
|
|
77
|
+
['ghide', [{ name: () => 'generichide' }]],
|
|
78
|
+
['inline-font', [{ name: () => CSP_MODIFIER, value: () => `font-src ${COMMON_CSP_PARAMS}` }]],
|
|
79
|
+
['inline-script', [{ name: () => CSP_MODIFIER, value: () => `script-src ${COMMON_CSP_PARAMS}` }]],
|
|
80
|
+
['mp4', [{ name: () => 'redirect', value: () => 'noopmp4-1s' }, { name: () => 'media', value: () => undefined }]],
|
|
81
|
+
['queryprune', [{ name: () => 'removeparam' }]],
|
|
82
|
+
['shide', [{ name: () => 'specifichide' }]],
|
|
83
|
+
['xhr', [{ name: () => 'xmlhttprequest' }]],
|
|
84
|
+
]);
|
|
85
|
+
/**
|
|
86
|
+
* Helper class for converting network rule modifier lists.
|
|
87
|
+
*
|
|
88
|
+
* @todo Implement `convertToUbo` and `convertToAbp`
|
|
89
|
+
*/
|
|
90
|
+
class NetworkRuleModifierListConverter extends BaseConverter {
|
|
91
|
+
/**
|
|
92
|
+
* Converts a network rule modifier list to AdGuard format, if possible.
|
|
93
|
+
*
|
|
94
|
+
* @param modifierList Network rule modifier list node to convert
|
|
95
|
+
* @param isException If `true`, the rule is an exception rule
|
|
96
|
+
* @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
|
|
97
|
+
* the converted node, and its `isConverted` flag indicates whether the original node was converted.
|
|
98
|
+
* If the node was not converted, the result will contain the original node with the same object reference
|
|
99
|
+
* @throws If the conversion is not possible
|
|
100
|
+
*/
|
|
101
|
+
static convertToAdg(modifierList, isException = false) {
|
|
102
|
+
const conversionMap = new MultiValueMap();
|
|
103
|
+
// Special case: $csp modifier
|
|
104
|
+
let cspCount = 0;
|
|
105
|
+
modifierList.children.forEach((modifierNode, index) => {
|
|
106
|
+
const modifierConversions = ADG_CONVERSION_MAP.get(modifierNode.name.value);
|
|
107
|
+
if (modifierConversions) {
|
|
108
|
+
for (const modifierConversion of modifierConversions) {
|
|
109
|
+
const name = modifierConversion.name(modifierNode.name.value);
|
|
110
|
+
const exception = modifierConversion.exception
|
|
111
|
+
// If the exception value is undefined in the original modifier, it
|
|
112
|
+
// means that the modifier isn't negated
|
|
113
|
+
? modifierConversion.exception(modifierNode.exception || false)
|
|
114
|
+
: modifierNode.exception;
|
|
115
|
+
const value = modifierConversion.value
|
|
116
|
+
? modifierConversion.value(modifierNode.value?.value)
|
|
117
|
+
: modifierNode.value?.value;
|
|
118
|
+
// Check if the name or the value is different from the original modifier
|
|
119
|
+
// If so, add the converted modifier to the list
|
|
120
|
+
if (name !== modifierNode.name.value || value !== modifierNode.value?.value) {
|
|
121
|
+
conversionMap.add(index, createModifierNode(name, value, exception));
|
|
122
|
+
}
|
|
123
|
+
// Special case: $csp modifier
|
|
124
|
+
if (name === CSP_MODIFIER) {
|
|
125
|
+
cspCount += 1;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// Handle special case: resource redirection modifiers
|
|
131
|
+
if (REDIRECT_MODIFIERS.has(modifierNode.name.value)) {
|
|
132
|
+
// Redirect modifiers can't be negated
|
|
133
|
+
if (modifierNode.exception === true) {
|
|
134
|
+
throw new RuleConversionError(`Modifier '${modifierNode.name.value}' cannot be negated`);
|
|
135
|
+
}
|
|
136
|
+
// Convert the redirect resource name to ADG format
|
|
137
|
+
const redirectResource = modifierNode.value?.value;
|
|
138
|
+
// Special case: for exception rules, $redirect without value is allowed,
|
|
139
|
+
// and in this case it means an exception for all redirects
|
|
140
|
+
if (!redirectResource && !isException) {
|
|
141
|
+
throw new RuleConversionError(`No redirect resource specified for '${modifierNode.name.value}' modifier`);
|
|
142
|
+
}
|
|
143
|
+
// Leave $redirect and $redirect-rule modifiers as is, but convert $rewrite to $redirect
|
|
144
|
+
const modifierName = modifierNode.name.value === ABP_REWRITE_MODIFIER
|
|
145
|
+
? REDIRECT_MODIFIER
|
|
146
|
+
: modifierNode.name.value;
|
|
147
|
+
const convertedRedirectResource = redirectResource
|
|
148
|
+
? redirectsCompatibilityTable.getFirst(redirectResource, GenericPlatform.AdgAny)?.name
|
|
149
|
+
: undefined;
|
|
150
|
+
// Check if the modifier name or the redirect resource name is different from the original modifier.
|
|
151
|
+
// If so, add the converted modifier to the list
|
|
152
|
+
if (modifierName !== modifierNode.name.value
|
|
153
|
+
|| (convertedRedirectResource !== undefined && convertedRedirectResource !== redirectResource)) {
|
|
154
|
+
conversionMap.add(index, createModifierNode(modifierName,
|
|
155
|
+
// If the redirect resource name is unknown, fall back to the original one
|
|
156
|
+
// Later, the validator will throw an error if the resource name is invalid
|
|
157
|
+
convertedRedirectResource || redirectResource, modifierNode.exception));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
// Prepare the result if there are any converted modifiers or $csp modifiers
|
|
162
|
+
if (conversionMap.size || cspCount) {
|
|
163
|
+
const modifierListClone = cloneModifierListNode(modifierList);
|
|
164
|
+
// Replace the original modifiers with the converted ones
|
|
165
|
+
// One modifier may be replaced with multiple modifiers, so we need to flatten the array
|
|
166
|
+
modifierListClone.children = modifierListClone.children.map((modifierNode, index) => {
|
|
167
|
+
const conversionRecord = conversionMap.get(index);
|
|
168
|
+
if (conversionRecord) {
|
|
169
|
+
return conversionRecord;
|
|
170
|
+
}
|
|
171
|
+
return modifierNode;
|
|
172
|
+
}).flat();
|
|
173
|
+
// Special case: $csp modifier: merge multiple $csp modifiers into one
|
|
174
|
+
// and put it at the end of the modifier list
|
|
175
|
+
if (cspCount) {
|
|
176
|
+
const cspValues = [];
|
|
177
|
+
modifierListClone.children = modifierListClone.children.filter((modifierNode) => {
|
|
178
|
+
if (modifierNode.name.value === CSP_MODIFIER) {
|
|
179
|
+
if (!modifierNode.value?.value) {
|
|
180
|
+
throw new RuleConversionError('$csp modifier value is missing');
|
|
181
|
+
}
|
|
182
|
+
cspValues.push(modifierNode.value?.value);
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
return true;
|
|
186
|
+
});
|
|
187
|
+
modifierListClone.children.push(createModifierNode(CSP_MODIFIER, cspValues.join(CSP_SEPARATOR)));
|
|
188
|
+
}
|
|
189
|
+
// Before returning the result, remove duplicated modifiers
|
|
190
|
+
modifierListClone.children = modifierListClone.children.filter((modifierNode, index, self) => self.findIndex((m) => m.name.value === modifierNode.name.value
|
|
191
|
+
&& m.exception === modifierNode.exception
|
|
192
|
+
&& m.value?.value === modifierNode.value?.value) === index);
|
|
193
|
+
return createConversionResult(modifierListClone, true);
|
|
194
|
+
}
|
|
195
|
+
return createConversionResult(modifierList, false);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Converts a network rule modifier list to uBlock format, if possible.
|
|
199
|
+
*
|
|
200
|
+
* @param modifierList Network rule modifier list node to convert
|
|
201
|
+
* @param isException If `true`, the rule is an exception rule
|
|
202
|
+
* @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
|
|
203
|
+
* the converted node, and its `isConverted` flag indicates whether the original node was converted.
|
|
204
|
+
* If the node was not converted, the result will contain the original node with the same object reference
|
|
205
|
+
* @throws If the conversion is not possible
|
|
206
|
+
*/
|
|
207
|
+
// TODO: Optimize
|
|
208
|
+
static convertToUbo(modifierList, isException = false) {
|
|
209
|
+
const conversionMap = new MultiValueMap();
|
|
210
|
+
const resourceTypeModifiersToAdd = new Set();
|
|
211
|
+
modifierList.children.forEach((modifierNode, index) => {
|
|
212
|
+
const originalModifierName = modifierNode.name.value;
|
|
213
|
+
const modifierData = modifiersCompatibilityTable.getFirst(originalModifierName, GenericPlatform.UboAny);
|
|
214
|
+
// Handle special case: resource redirection modifiers
|
|
215
|
+
if (REDIRECT_MODIFIERS.has(originalModifierName)) {
|
|
216
|
+
// Redirect modifiers cannot be negated
|
|
217
|
+
if (modifierNode.exception === true) {
|
|
218
|
+
throw new RuleConversionError(`Modifier '${modifierNode.name.value}' cannot be negated`);
|
|
219
|
+
}
|
|
220
|
+
// Convert the redirect resource name to uBO format
|
|
221
|
+
const redirectResourceName = modifierNode.value?.value;
|
|
222
|
+
// Special case: for exception rules, $redirect without value is allowed,
|
|
223
|
+
// and in this case it means an exception for all redirects
|
|
224
|
+
if (!redirectResourceName && !isException) {
|
|
225
|
+
throw new RuleConversionError(`No redirect resource specified for '${modifierNode.name.value}' modifier`);
|
|
226
|
+
}
|
|
227
|
+
if (!redirectResourceName) {
|
|
228
|
+
// Jump to the next modifier if the redirect resource is not specified
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
// Leave $redirect and $redirect-rule modifiers as is, but convert $rewrite to $redirect
|
|
232
|
+
const modifierName = modifierNode.name.value === ABP_REWRITE_MODIFIER
|
|
233
|
+
? REDIRECT_MODIFIER
|
|
234
|
+
: modifierNode.name.value;
|
|
235
|
+
const convertedRedirectResourceData = redirectsCompatibilityTable.getFirst(redirectResourceName, GenericPlatform.UboAny);
|
|
236
|
+
const convertedRedirectResourceName = convertedRedirectResourceData?.name ?? redirectResourceName;
|
|
237
|
+
// uBlock requires the $redirect modifier to have a resource type
|
|
238
|
+
// https://github.com/AdguardTeam/Scriptlets/issues/101
|
|
239
|
+
if (convertedRedirectResourceData?.resourceTypes?.length) {
|
|
240
|
+
// Convert the resource types to uBO modifiers
|
|
241
|
+
const uboResourceTypeModifiers = redirectsCompatibilityTable.getResourceTypeModifiers(convertedRedirectResourceData, GenericPlatform.UboAny);
|
|
242
|
+
// Special case: noop text resource
|
|
243
|
+
// If any of resource type is already present, we don't need to add other resource types,
|
|
244
|
+
// otherwise, add all resource types
|
|
245
|
+
// TODO: Optimize this logic
|
|
246
|
+
// Check if the current resource is the noop text resource
|
|
247
|
+
const isNoopTextResource = convertedRedirectResourceName === UBO_NOOP_TEXT_RESOURCE;
|
|
248
|
+
// Determine if there are any valid resource types already present
|
|
249
|
+
const hasValidResourceType = modifierList.children.some((modifier) => {
|
|
250
|
+
const name = modifier.name.value;
|
|
251
|
+
if (!isValidResourceType(name)) {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
const convertedModifierData = modifiersCompatibilityTable.getFirst(name, GenericPlatform.UboAny);
|
|
255
|
+
return uboResourceTypeModifiers.has(convertedModifierData?.name ?? name);
|
|
256
|
+
});
|
|
257
|
+
// If it's not the noop text resource or if no valid resource types are present
|
|
258
|
+
if (!isNoopTextResource || !hasValidResourceType) {
|
|
259
|
+
uboResourceTypeModifiers.forEach((resourceType) => {
|
|
260
|
+
resourceTypeModifiersToAdd.add(resourceType);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// Check if the modifier name or the redirect resource name is different from the original modifier.
|
|
265
|
+
// If so, add the converted modifier to the list
|
|
266
|
+
if (modifierName !== originalModifierName
|
|
267
|
+
|| (!isUndefined(convertedRedirectResourceName)
|
|
268
|
+
&& convertedRedirectResourceName !== redirectResourceName)) {
|
|
269
|
+
conversionMap.add(index, createModifierNode(modifierName,
|
|
270
|
+
// If the redirect resource name is unknown, fall back to the original one
|
|
271
|
+
// Later, the validator will throw an error if the resource name is invalid
|
|
272
|
+
convertedRedirectResourceName || redirectResourceName, modifierNode.exception));
|
|
273
|
+
}
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
// Generic modifier conversion
|
|
277
|
+
if (modifierData && modifierData.name !== originalModifierName) {
|
|
278
|
+
conversionMap.add(index, createModifierNode(modifierData.name, modifierNode.value?.value, modifierNode.exception));
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
// Prepare the result if there are any converted modifiers or $csp modifiers
|
|
282
|
+
if (conversionMap.size || resourceTypeModifiersToAdd.size) {
|
|
283
|
+
const modifierListClone = cloneModifierListNode(modifierList);
|
|
284
|
+
// Replace the original modifiers with the converted ones
|
|
285
|
+
// One modifier may be replaced with multiple modifiers, so we need to flatten the array
|
|
286
|
+
modifierListClone.children = modifierListClone.children.map((modifierNode, index) => {
|
|
287
|
+
const conversionRecord = conversionMap.get(index);
|
|
288
|
+
if (conversionRecord) {
|
|
289
|
+
return conversionRecord;
|
|
290
|
+
}
|
|
291
|
+
return modifierNode;
|
|
292
|
+
}).flat();
|
|
293
|
+
// Before returning the result, remove duplicated modifiers
|
|
294
|
+
modifierListClone.children = modifierListClone.children.filter((modifierNode, index, self) => self.findIndex((m) => m.name.value === modifierNode.name.value
|
|
295
|
+
&& m.exception === modifierNode.exception
|
|
296
|
+
&& m.value?.value === modifierNode.value?.value) === index);
|
|
297
|
+
if (resourceTypeModifiersToAdd.size) {
|
|
298
|
+
const modifierNameSet = new Set(modifierList.children.map((m) => m.name.value));
|
|
299
|
+
resourceTypeModifiersToAdd.forEach((resourceType) => {
|
|
300
|
+
if (!modifierNameSet.has(resourceType)) {
|
|
301
|
+
modifierListClone.children.push(createModifierNode(resourceType));
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
return createConversionResult(modifierListClone, true);
|
|
306
|
+
}
|
|
307
|
+
return createConversionResult(modifierList, false);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
export { NetworkRuleModifierListConverter };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { NetworkRuleType, RuleCategory } from '../../nodes/index.mjs';
|
|
8
|
+
import { NetworkRuleModifierListConverter } from '../misc/network-rule-modifier.mjs';
|
|
9
|
+
import { RuleConverterBase } from '../base-interfaces/rule-converter-base.mjs';
|
|
10
|
+
import { createNodeConversionResult } from '../base-interfaces/conversion-result.mjs';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @file Network rule converter
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Network rule converter class (also known as "basic rule converter")
|
|
17
|
+
*
|
|
18
|
+
* @todo Implement `convertToUbo` and `convertToAbp`
|
|
19
|
+
*/
|
|
20
|
+
class NetworkRuleConverter extends RuleConverterBase {
|
|
21
|
+
/**
|
|
22
|
+
* Converts a network rule to AdGuard format, if possible.
|
|
23
|
+
*
|
|
24
|
+
* @param rule Rule node to convert
|
|
25
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
26
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
27
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
28
|
+
* @throws If the rule is invalid or cannot be converted
|
|
29
|
+
*/
|
|
30
|
+
static convertToAdg(rule) {
|
|
31
|
+
// TODO: add support for host rules
|
|
32
|
+
if (rule.type !== NetworkRuleType.NetworkRule) {
|
|
33
|
+
throw new Error(`Invalid rule type: ${rule.type}`);
|
|
34
|
+
}
|
|
35
|
+
if (rule.modifiers) {
|
|
36
|
+
const modifiers = NetworkRuleModifierListConverter.convertToAdg(rule.modifiers, rule.exception);
|
|
37
|
+
// If the object reference is different, it means that the modifiers were converted
|
|
38
|
+
// In this case, we should clone the entire rule and replace the modifiers with the converted ones
|
|
39
|
+
if (modifiers.isConverted) {
|
|
40
|
+
return {
|
|
41
|
+
result: [{
|
|
42
|
+
category: RuleCategory.Network,
|
|
43
|
+
type: NetworkRuleType.NetworkRule,
|
|
44
|
+
syntax: rule.syntax,
|
|
45
|
+
exception: rule.exception,
|
|
46
|
+
pattern: {
|
|
47
|
+
type: 'Value',
|
|
48
|
+
value: rule.pattern.value,
|
|
49
|
+
},
|
|
50
|
+
modifiers: modifiers.result,
|
|
51
|
+
}],
|
|
52
|
+
isConverted: true,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// If the modifiers were not converted, return the original rule
|
|
57
|
+
return createNodeConversionResult([rule], false);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Converts a network rule to uBlock format, if possible.
|
|
61
|
+
*
|
|
62
|
+
* @param rule Rule node to convert
|
|
63
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
64
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
65
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
66
|
+
* @throws If the rule is invalid or cannot be converted
|
|
67
|
+
*/
|
|
68
|
+
static convertToUbo(rule) {
|
|
69
|
+
// TODO: add support for host rules
|
|
70
|
+
if (rule.type !== NetworkRuleType.NetworkRule) {
|
|
71
|
+
throw new Error(`Invalid rule type: ${rule.type}`);
|
|
72
|
+
}
|
|
73
|
+
if (rule.modifiers) {
|
|
74
|
+
const modifiers = NetworkRuleModifierListConverter.convertToUbo(rule.modifiers, rule.exception);
|
|
75
|
+
// If the object reference is different, it means that the modifiers were converted
|
|
76
|
+
// In this case, we should clone the entire rule and replace the modifiers with the converted ones
|
|
77
|
+
if (modifiers.isConverted) {
|
|
78
|
+
return {
|
|
79
|
+
result: [{
|
|
80
|
+
category: RuleCategory.Network,
|
|
81
|
+
type: NetworkRuleType.NetworkRule,
|
|
82
|
+
syntax: rule.syntax,
|
|
83
|
+
exception: rule.exception,
|
|
84
|
+
pattern: {
|
|
85
|
+
type: 'Value',
|
|
86
|
+
value: rule.pattern.value,
|
|
87
|
+
},
|
|
88
|
+
modifiers: modifiers.result,
|
|
89
|
+
}],
|
|
90
|
+
isConverted: true,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// If the modifiers were not converted, return the original rule
|
|
95
|
+
return createNodeConversionResult([rule], false);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export { NetworkRuleConverter };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { createConversionResult } from './base-interfaces/conversion-result.mjs';
|
|
8
|
+
import { BaseConverter } from './base-interfaces/base-converter.mjs';
|
|
9
|
+
import { FilterListParser } from '../parser/filterlist-parser.mjs';
|
|
10
|
+
import { FilterListConverter } from './filter-list.mjs';
|
|
11
|
+
import { defaultParserOptions } from '../parser/options.mjs';
|
|
12
|
+
import { FilterListGenerator } from '../generator/filterlist-generator.mjs';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @file Filter list converter for raw filter lists
|
|
16
|
+
*
|
|
17
|
+
* Technically, this is a wrapper around `FilterListConverter` that works with nodes instead of strings.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Adblock filter list converter class.
|
|
21
|
+
*
|
|
22
|
+
* You can use this class to convert string-based filter lists, since most of the converters work with nodes.
|
|
23
|
+
* This class just provides an extra layer on top of the {@link FilterListConverter} and calls the parser/serializer
|
|
24
|
+
* before/after the conversion internally.
|
|
25
|
+
*
|
|
26
|
+
* @todo Implement `convertToUbo` and `convertToAbp`
|
|
27
|
+
*/
|
|
28
|
+
class RawFilterListConverter extends BaseConverter {
|
|
29
|
+
/**
|
|
30
|
+
* Converts an adblock filter list text to AdGuard format, if possible.
|
|
31
|
+
*
|
|
32
|
+
* @param rawFilterList Raw filter list text to convert
|
|
33
|
+
* @param tolerant Indicates whether the converter should be tolerant to invalid rules. If enabled and a rule is
|
|
34
|
+
* invalid, it will be left as is. If disabled and a rule is invalid, the whole filter list will be failed.
|
|
35
|
+
* Defaults to `true`.
|
|
36
|
+
* @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
|
|
37
|
+
* the array of converted filter list text, and its `isConverted` flag indicates whether the original rule was
|
|
38
|
+
* converted. If the rule was not converted, the original filter list text will be returned
|
|
39
|
+
* @throws If the filter list is invalid or cannot be converted (if the tolerant mode is disabled)
|
|
40
|
+
*/
|
|
41
|
+
static convertToAdg(rawFilterList, tolerant = true) {
|
|
42
|
+
const conversionResult = FilterListConverter.convertToAdg(FilterListParser.parse(rawFilterList, {
|
|
43
|
+
...defaultParserOptions,
|
|
44
|
+
isLocIncluded: false,
|
|
45
|
+
tolerant,
|
|
46
|
+
}), tolerant);
|
|
47
|
+
// If the filter list was not converted, return the original text
|
|
48
|
+
if (!conversionResult.isConverted) {
|
|
49
|
+
return createConversionResult(rawFilterList, false);
|
|
50
|
+
}
|
|
51
|
+
// Otherwise, serialize the filter list and return the result
|
|
52
|
+
return createConversionResult(FilterListGenerator.generate(conversionResult.result), true);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export { RawFilterListConverter };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
import { RuleCategory, NetworkRuleType } from '../nodes/index.mjs';
|
|
8
|
+
import { CommentRuleConverter } from './comment/index.mjs';
|
|
9
|
+
import { CosmeticRuleConverter } from './cosmetic/index.mjs';
|
|
10
|
+
import { NetworkRuleConverter } from './network/index.mjs';
|
|
11
|
+
import { RuleConversionError } from '../errors/rule-conversion-error.mjs';
|
|
12
|
+
import { RuleConverterBase } from './base-interfaces/rule-converter-base.mjs';
|
|
13
|
+
import { createConversionResult } from './base-interfaces/conversion-result.mjs';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @file Adblock rule converter
|
|
17
|
+
*
|
|
18
|
+
* This file is the entry point for all rule converters
|
|
19
|
+
* which automatically detects the rule type and calls
|
|
20
|
+
* the corresponding "sub-converter".
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Adblock filtering rule converter class
|
|
24
|
+
*
|
|
25
|
+
* @todo Implement `convertToUbo` and `convertToAbp`
|
|
26
|
+
*/
|
|
27
|
+
class RuleConverter extends RuleConverterBase {
|
|
28
|
+
/**
|
|
29
|
+
* Converts an adblock filtering rule to AdGuard format, if possible.
|
|
30
|
+
*
|
|
31
|
+
* @param rule Rule node to convert
|
|
32
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
33
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
34
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
35
|
+
* @throws If the rule is invalid or cannot be converted
|
|
36
|
+
*/
|
|
37
|
+
static convertToAdg(rule) {
|
|
38
|
+
// Delegate conversion to the corresponding sub-converter
|
|
39
|
+
// based on the rule category
|
|
40
|
+
switch (rule.category) {
|
|
41
|
+
case RuleCategory.Comment:
|
|
42
|
+
return CommentRuleConverter.convertToAdg(rule);
|
|
43
|
+
case RuleCategory.Cosmetic:
|
|
44
|
+
return CosmeticRuleConverter.convertToAdg(rule);
|
|
45
|
+
case RuleCategory.Network:
|
|
46
|
+
// TODO: Handle hosts rules later
|
|
47
|
+
if (rule.type === NetworkRuleType.HostRule) {
|
|
48
|
+
return createConversionResult([rule], false);
|
|
49
|
+
}
|
|
50
|
+
return NetworkRuleConverter.convertToAdg(rule);
|
|
51
|
+
case RuleCategory.Invalid:
|
|
52
|
+
case RuleCategory.Empty:
|
|
53
|
+
// Just forward the rule as is
|
|
54
|
+
return createConversionResult([rule], false);
|
|
55
|
+
default:
|
|
56
|
+
// Never happens during normal operation
|
|
57
|
+
throw new RuleConversionError('Unknown rule category');
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Converts an adblock filtering rule to uBlock Origin format, if possible.
|
|
62
|
+
*
|
|
63
|
+
* @param rule Rule node to convert
|
|
64
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
65
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
66
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
67
|
+
* @throws If the rule is invalid or cannot be converted
|
|
68
|
+
*/
|
|
69
|
+
// TODO: Add support for other rule types
|
|
70
|
+
static convertToUbo(rule) {
|
|
71
|
+
if (rule.category === RuleCategory.Cosmetic) {
|
|
72
|
+
return CosmeticRuleConverter.convertToUbo(rule);
|
|
73
|
+
}
|
|
74
|
+
if (rule.category === RuleCategory.Network) {
|
|
75
|
+
return NetworkRuleConverter.convertToUbo(rule);
|
|
76
|
+
}
|
|
77
|
+
return createConversionResult([rule], false);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export { RuleConverter };
|