@adguard/agtree 2.1.2 → 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 -15710
- package/dist/agtree.mjs +0 -15611
- package/dist/compatibility-table-data.js +0 -12634
|
@@ -0,0 +1,80 @@
|
|
|
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
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
/* eslint-disable no-param-reassign */
|
|
10
|
+
/* eslint-disable no-bitwise */
|
|
11
|
+
/**
|
|
12
|
+
* @file Utility for encoding strings to byte sequences.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Checks if the given code point is an ASCII code point.
|
|
16
|
+
*
|
|
17
|
+
* @param codePoint Code point to check.
|
|
18
|
+
* @returns `true` if the given code point is an ASCII code point, `false` otherwise.
|
|
19
|
+
* @see {@link https://infra.spec.whatwg.org/#ascii-code-point}
|
|
20
|
+
*/
|
|
21
|
+
const isAsciiCodePoint = (codePoint) => {
|
|
22
|
+
return codePoint >= 0x0000 && codePoint <= 0x007F;
|
|
23
|
+
};
|
|
24
|
+
const OFFSETS = [0xC0, 0xE0, 0xF0];
|
|
25
|
+
/**
|
|
26
|
+
* Encodes an UTF-8 string into a byte sequence according to the WHATWG spec.
|
|
27
|
+
*
|
|
28
|
+
* @param str String to encode.
|
|
29
|
+
* @param buffer Buffer to write the encoded bytes to.
|
|
30
|
+
* @returns Number of bytes written to the buffer.
|
|
31
|
+
* @see {@link https://encoding.spec.whatwg.org/#utf-8-encoder}
|
|
32
|
+
* @note Bytes written maybe larger than the string length, but never smaller.
|
|
33
|
+
* For example, the string '你好' has a length of 2, but its byte representation has a length of 6.
|
|
34
|
+
*/
|
|
35
|
+
const encodeIntoPolyfill = (str, buffer) => {
|
|
36
|
+
const { length } = buffer;
|
|
37
|
+
let read = 0;
|
|
38
|
+
let written = 0;
|
|
39
|
+
for (let i = 0; i < str.length;) {
|
|
40
|
+
const codePoint = str.codePointAt(i) || 0;
|
|
41
|
+
let bytesNeeded = 1;
|
|
42
|
+
if (isAsciiCodePoint(codePoint)) {
|
|
43
|
+
if (written >= length)
|
|
44
|
+
break; // Stop if no space in buffer
|
|
45
|
+
buffer[written] = codePoint;
|
|
46
|
+
written += 1;
|
|
47
|
+
read += 1; // Increment read for ASCII
|
|
48
|
+
i += 1;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
if (codePoint >= 0x0080 && codePoint <= 0x07FF) {
|
|
52
|
+
bytesNeeded = 2;
|
|
53
|
+
}
|
|
54
|
+
else if (codePoint >= 0x0800 && codePoint <= 0xFFFF) {
|
|
55
|
+
bytesNeeded = 3;
|
|
56
|
+
}
|
|
57
|
+
else if (codePoint >= 0x10000 && codePoint <= 0x10FFFF) {
|
|
58
|
+
bytesNeeded = 4;
|
|
59
|
+
}
|
|
60
|
+
if (written + bytesNeeded - 1 >= length) {
|
|
61
|
+
// Stop if no space for the whole encoding
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
let count = bytesNeeded - 1;
|
|
65
|
+
const offset = OFFSETS[bytesNeeded - 2];
|
|
66
|
+
buffer[written] = (codePoint >> (6 * count)) + offset;
|
|
67
|
+
written += 1;
|
|
68
|
+
while (count > 0) {
|
|
69
|
+
buffer[written] = 0x80 | ((codePoint >> (6 * (count - 1))) & 0x3F);
|
|
70
|
+
written += 1;
|
|
71
|
+
count -= 1;
|
|
72
|
+
}
|
|
73
|
+
read += codePoint >= 0x10000 ? 2 : 1; // Increment read by 1 or 2 depending on code point
|
|
74
|
+
i += codePoint >= 0x10000 ? 2 : 1; // Move i by 1 or 2
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return { read, written };
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
exports.encodeIntoPolyfill = encodeIntoPolyfill;
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Checks whether the given value is undefined.
|
|
11
|
+
*
|
|
12
|
+
* @param value Value to check.
|
|
13
|
+
*
|
|
14
|
+
* @returns `true` if the value is 'undefined', `false` otherwise.
|
|
15
|
+
*/
|
|
16
|
+
const isUndefined = (value) => {
|
|
17
|
+
return typeof value === 'undefined';
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Checks whether the given value is null.
|
|
21
|
+
*
|
|
22
|
+
* @param value Value to check.
|
|
23
|
+
*
|
|
24
|
+
* @returns `true` if the value is 'null', `false` otherwise.
|
|
25
|
+
*/
|
|
26
|
+
const isNull = (value) => {
|
|
27
|
+
return value === null;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Checks whether the given value is a string.
|
|
31
|
+
*
|
|
32
|
+
* @param value Value to check.
|
|
33
|
+
* @returns `true` if the value is a string, `false` otherwise.
|
|
34
|
+
*/
|
|
35
|
+
const isString = (value) => {
|
|
36
|
+
return typeof value === 'string';
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Checks whether the given value is an array of Uint8Arrays.
|
|
40
|
+
*
|
|
41
|
+
* @param value Value to check.
|
|
42
|
+
*
|
|
43
|
+
* @returns True if the value type is an array of Uint8Arrays.
|
|
44
|
+
*/
|
|
45
|
+
const isArrayOfUint8Arrays = (value) => {
|
|
46
|
+
return Array.isArray(value) && value.every((chunk) => chunk instanceof Uint8Array);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
exports.isArrayOfUint8Arrays = isArrayOfUint8Arrays;
|
|
50
|
+
exports.isNull = isNull;
|
|
51
|
+
exports.isString = isString;
|
|
52
|
+
exports.isUndefined = isUndefined;
|
|
@@ -0,0 +1,222 @@
|
|
|
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
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var adblockers = require('../utils/adblockers.js');
|
|
10
|
+
var constants = require('../utils/constants.js');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Prefixes for different adblockers to describe the platform-specific modifiers data
|
|
14
|
+
* stored in the yaml files.
|
|
15
|
+
*/
|
|
16
|
+
const BLOCKER_PREFIX = {
|
|
17
|
+
[adblockers.AdblockSyntax.Adg]: 'adg_',
|
|
18
|
+
[adblockers.AdblockSyntax.Ubo]: 'ubo_',
|
|
19
|
+
[adblockers.AdblockSyntax.Abp]: 'abp_',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Set of all allowed characters for app name except the dot `.`.
|
|
23
|
+
*/
|
|
24
|
+
const APP_NAME_ALLOWED_CHARS = new Set([
|
|
25
|
+
...constants.CAPITAL_LETTERS,
|
|
26
|
+
...constants.SMALL_LETTERS,
|
|
27
|
+
...constants.NUMBERS,
|
|
28
|
+
constants.UNDERSCORE,
|
|
29
|
+
]);
|
|
30
|
+
/**
|
|
31
|
+
* Allowed methods for $method modifier.
|
|
32
|
+
*
|
|
33
|
+
* @see {@link https://adguard.app/kb/general/ad-filtering/create-own-filters/#method-modifier}
|
|
34
|
+
*/
|
|
35
|
+
const ALLOWED_METHODS = new Set([
|
|
36
|
+
'connect',
|
|
37
|
+
'delete',
|
|
38
|
+
'get',
|
|
39
|
+
'head',
|
|
40
|
+
'options',
|
|
41
|
+
'patch',
|
|
42
|
+
'post',
|
|
43
|
+
'put',
|
|
44
|
+
'trace',
|
|
45
|
+
]);
|
|
46
|
+
/**
|
|
47
|
+
* Allowed stealth options for $stealth modifier.
|
|
48
|
+
*
|
|
49
|
+
* @see {@link https://adguard.app/kb/general/ad-filtering/create-own-filters/#stealth-modifier}
|
|
50
|
+
*/
|
|
51
|
+
const ALLOWED_STEALTH_OPTIONS = new Set([
|
|
52
|
+
'searchqueries',
|
|
53
|
+
'donottrack',
|
|
54
|
+
'3p-cookie',
|
|
55
|
+
'1p-cookie',
|
|
56
|
+
'3p-cache',
|
|
57
|
+
'3p-auth',
|
|
58
|
+
'webrtc',
|
|
59
|
+
'push',
|
|
60
|
+
'location',
|
|
61
|
+
'flash',
|
|
62
|
+
'java',
|
|
63
|
+
'referrer',
|
|
64
|
+
'useragent',
|
|
65
|
+
'ip',
|
|
66
|
+
'xclientdata',
|
|
67
|
+
'dpi',
|
|
68
|
+
]);
|
|
69
|
+
/**
|
|
70
|
+
* Allowed CSP directives for $csp modifier.
|
|
71
|
+
*
|
|
72
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy#directives}
|
|
73
|
+
*/
|
|
74
|
+
const ALLOWED_CSP_DIRECTIVES = new Set([
|
|
75
|
+
'base-uri',
|
|
76
|
+
'child-src',
|
|
77
|
+
'connect-src',
|
|
78
|
+
'default-src',
|
|
79
|
+
'fenced-frame-src',
|
|
80
|
+
'font-src',
|
|
81
|
+
'form-action',
|
|
82
|
+
'frame-ancestors',
|
|
83
|
+
'frame-src',
|
|
84
|
+
'img-src',
|
|
85
|
+
'manifest-src',
|
|
86
|
+
'media-src',
|
|
87
|
+
'navigate-to',
|
|
88
|
+
'object-src',
|
|
89
|
+
'plugin-types',
|
|
90
|
+
'prefetch-src',
|
|
91
|
+
'referrer',
|
|
92
|
+
'report-to',
|
|
93
|
+
'report-uri',
|
|
94
|
+
'require-trusted-types-for',
|
|
95
|
+
'sandbox',
|
|
96
|
+
'script-src',
|
|
97
|
+
'script-src-attr',
|
|
98
|
+
'script-src-elem',
|
|
99
|
+
'style-src',
|
|
100
|
+
'style-src-attr',
|
|
101
|
+
'style-src-elem',
|
|
102
|
+
'trusted-types',
|
|
103
|
+
'upgrade-insecure-requests',
|
|
104
|
+
'worker-src',
|
|
105
|
+
]);
|
|
106
|
+
/**
|
|
107
|
+
* Allowed directives for $permissions modifier.
|
|
108
|
+
*
|
|
109
|
+
* @see {@link https://adguard.app/kb/general/ad-filtering/create-own-filters/#permissions-modifier}
|
|
110
|
+
*/
|
|
111
|
+
const ALLOWED_PERMISSION_DIRECTIVES = new Set([
|
|
112
|
+
'accelerometer',
|
|
113
|
+
'ambient-light-sensor',
|
|
114
|
+
'autoplay',
|
|
115
|
+
'battery',
|
|
116
|
+
'browsing-topics',
|
|
117
|
+
'camera',
|
|
118
|
+
'display-capture',
|
|
119
|
+
'document-domain',
|
|
120
|
+
'encrypted-media',
|
|
121
|
+
'execution-while-not-rendered',
|
|
122
|
+
'execution-while-out-of-viewport',
|
|
123
|
+
'fullscreen',
|
|
124
|
+
'gamepad',
|
|
125
|
+
'geolocation',
|
|
126
|
+
'gyroscope',
|
|
127
|
+
'hid',
|
|
128
|
+
'identity-credentials-get',
|
|
129
|
+
'idle-detection',
|
|
130
|
+
'join-ad-interest-group',
|
|
131
|
+
'local-fonts',
|
|
132
|
+
'magnetometer',
|
|
133
|
+
'microphone',
|
|
134
|
+
'midi',
|
|
135
|
+
'payment',
|
|
136
|
+
'picture-in-picture',
|
|
137
|
+
'publickey-credentials-create',
|
|
138
|
+
'publickey-credentials-get',
|
|
139
|
+
'run-ad-auction',
|
|
140
|
+
'screen-wake-lock',
|
|
141
|
+
'serial',
|
|
142
|
+
'speaker-selection',
|
|
143
|
+
'storage-access',
|
|
144
|
+
'usb',
|
|
145
|
+
'web-share',
|
|
146
|
+
'xr-spatial-tracking',
|
|
147
|
+
]);
|
|
148
|
+
/**
|
|
149
|
+
* One of available tokens for $permission modifier value.
|
|
150
|
+
*
|
|
151
|
+
* @see {@link https://w3c.github.io/webappsec-permissions-policy/#structured-header-serialization}
|
|
152
|
+
*/
|
|
153
|
+
const PERMISSIONS_TOKEN_SELF = 'self';
|
|
154
|
+
/**
|
|
155
|
+
* One of allowlist values for $permissions modifier.
|
|
156
|
+
*
|
|
157
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Permissions_Policy#allowlists}
|
|
158
|
+
*/
|
|
159
|
+
const EMPTY_PERMISSIONS_ALLOWLIST = `${constants.OPEN_PARENTHESIS}${constants.CLOSE_PARENTHESIS}`;
|
|
160
|
+
/**
|
|
161
|
+
* Allowed directives for $referrerpolicy modifier.
|
|
162
|
+
*
|
|
163
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy}
|
|
164
|
+
*/
|
|
165
|
+
const REFERRER_POLICY_DIRECTIVES = new Set([
|
|
166
|
+
'no-referrer',
|
|
167
|
+
'no-referrer-when-downgrade',
|
|
168
|
+
'origin',
|
|
169
|
+
'origin-when-cross-origin',
|
|
170
|
+
'same-origin',
|
|
171
|
+
'strict-origin',
|
|
172
|
+
'strict-origin-when-cross-origin',
|
|
173
|
+
'unsafe-url',
|
|
174
|
+
]);
|
|
175
|
+
/**
|
|
176
|
+
* Prefixes for error messages used in modifier validation.
|
|
177
|
+
*/
|
|
178
|
+
const VALIDATION_ERROR_PREFIX = {
|
|
179
|
+
BLOCK_ONLY: 'Only blocking rules may contain the modifier',
|
|
180
|
+
EXCEPTION_ONLY: 'Only exception rules may contain the modifier',
|
|
181
|
+
INVALID_CSP_DIRECTIVES: 'Invalid CSP directives for the modifier',
|
|
182
|
+
INVALID_LIST_VALUES: 'Invalid values for the modifier',
|
|
183
|
+
INVALID_NOOP: 'Invalid noop modifier',
|
|
184
|
+
INVALID_PERMISSION_DIRECTIVE: 'Invalid Permissions-Policy directive for the modifier',
|
|
185
|
+
INVALID_PERMISSION_ORIGINS: 'Origins in the value is invalid for the modifier and the directive',
|
|
186
|
+
INVALID_PERMISSION_ORIGIN_QUOTES: 'Double quotes should be used for origins in the value of the modifier',
|
|
187
|
+
INVALID_REFERRER_POLICY_DIRECTIVE: 'Invalid Referrer-Policy directive for the modifier',
|
|
188
|
+
MIXED_NEGATIONS: 'Simultaneous usage of negated and not negated values is forbidden for the modifier',
|
|
189
|
+
NO_CSP_VALUE: 'No CSP value for the modifier and the directive',
|
|
190
|
+
NO_CSP_DIRECTIVE_QUOTE: 'CSP directives should no be quoted for the modifier',
|
|
191
|
+
NO_UNESCAPED_PERMISSION_COMMA: 'Unescaped comma in the value is not allowed for the modifier',
|
|
192
|
+
// TODO: implement later for $scp and $permissions
|
|
193
|
+
// NO_VALUE_ONLY_FOR_EXCEPTION: 'Modifier without value can be used only in exception rules',
|
|
194
|
+
NOT_EXISTENT: 'Non-existent modifier',
|
|
195
|
+
NOT_NEGATABLE_MODIFIER: 'Non-negatable modifier',
|
|
196
|
+
NOT_NEGATABLE_VALUE: 'Values cannot be negated for the modifier',
|
|
197
|
+
NOT_SUPPORTED: 'The adblocker does not support the modifier',
|
|
198
|
+
REMOVED: 'Removed and no longer supported modifier',
|
|
199
|
+
VALUE_FORBIDDEN: 'Value is not allowed for the modifier',
|
|
200
|
+
VALUE_INVALID: 'Value is invalid for the modifier',
|
|
201
|
+
VALUE_REQUIRED: 'Value is required for the modifier',
|
|
202
|
+
};
|
|
203
|
+
/**
|
|
204
|
+
* Prefixes for error messages related to issues in the source YAML files' data.
|
|
205
|
+
*/
|
|
206
|
+
const SOURCE_DATA_ERROR_PREFIX = {
|
|
207
|
+
INVALID_VALUE_FORMAT_REGEXP: "Invalid regular expression in 'value_format' for the modifier",
|
|
208
|
+
NO_DEPRECATION_MESSAGE: "Property 'deprecation_message' is required for the 'deprecated' modifier",
|
|
209
|
+
NO_VALUE_FORMAT_FOR_ASSIGNABLE: "Property 'value_format' should be specified for the assignable modifier",
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
exports.ALLOWED_CSP_DIRECTIVES = ALLOWED_CSP_DIRECTIVES;
|
|
213
|
+
exports.ALLOWED_METHODS = ALLOWED_METHODS;
|
|
214
|
+
exports.ALLOWED_PERMISSION_DIRECTIVES = ALLOWED_PERMISSION_DIRECTIVES;
|
|
215
|
+
exports.ALLOWED_STEALTH_OPTIONS = ALLOWED_STEALTH_OPTIONS;
|
|
216
|
+
exports.APP_NAME_ALLOWED_CHARS = APP_NAME_ALLOWED_CHARS;
|
|
217
|
+
exports.BLOCKER_PREFIX = BLOCKER_PREFIX;
|
|
218
|
+
exports.EMPTY_PERMISSIONS_ALLOWLIST = EMPTY_PERMISSIONS_ALLOWLIST;
|
|
219
|
+
exports.PERMISSIONS_TOKEN_SELF = PERMISSIONS_TOKEN_SELF;
|
|
220
|
+
exports.REFERRER_POLICY_DIRECTIVES = REFERRER_POLICY_DIRECTIVES;
|
|
221
|
+
exports.SOURCE_DATA_ERROR_PREFIX = SOURCE_DATA_ERROR_PREFIX;
|
|
222
|
+
exports.VALIDATION_ERROR_PREFIX = VALIDATION_ERROR_PREFIX;
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants$1 = require('../utils/constants.js');
|
|
10
|
+
var constants = require('./constants.js');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Validates the noop modifier (i.e. only underscores).
|
|
14
|
+
*
|
|
15
|
+
* @param value Value of the modifier.
|
|
16
|
+
*
|
|
17
|
+
* @returns True if the modifier is valid, false otherwise.
|
|
18
|
+
*/
|
|
19
|
+
const isValidNoopModifier = (value) => {
|
|
20
|
+
return value.split('').every((char) => char === constants$1.UNDERSCORE);
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Returns invalid validation result with given error message.
|
|
24
|
+
*
|
|
25
|
+
* @param error Error message.
|
|
26
|
+
*
|
|
27
|
+
* @returns Validation result `{ valid: false, error }`.
|
|
28
|
+
*/
|
|
29
|
+
const getInvalidValidationResult = (error) => {
|
|
30
|
+
return {
|
|
31
|
+
valid: false,
|
|
32
|
+
error,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Returns invalid validation result which uses {@link VALIDATION_ERROR_PREFIX.VALUE_REQUIRED} as prefix
|
|
37
|
+
* and specifies the given `modifierName` in the error message.
|
|
38
|
+
*
|
|
39
|
+
* @param modifierName Modifier name.
|
|
40
|
+
*
|
|
41
|
+
* @returns Validation result `{ valid: false, error }`.
|
|
42
|
+
*/
|
|
43
|
+
const getValueRequiredValidationResult = (modifierName) => {
|
|
44
|
+
return getInvalidValidationResult(`${constants.VALIDATION_ERROR_PREFIX.VALUE_REQUIRED}: '${modifierName}'`);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
exports.getInvalidValidationResult = getInvalidValidationResult;
|
|
48
|
+
exports.getValueRequiredValidationResult = getValueRequiredValidationResult;
|
|
49
|
+
exports.isValidNoopModifier = isValidNoopModifier;
|
|
@@ -0,0 +1,176 @@
|
|
|
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
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var adblockers = require('../utils/adblockers.js');
|
|
10
|
+
var constants = require('../utils/constants.js');
|
|
11
|
+
var constants$1 = require('./constants.js');
|
|
12
|
+
var helpers = require('./helpers.js');
|
|
13
|
+
var value = require('./value.js');
|
|
14
|
+
var clone = require('../utils/clone.js');
|
|
15
|
+
var modifiers = require('../compatibility-tables/modifiers.js');
|
|
16
|
+
var platforms = require('../compatibility-tables/platforms.js');
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @file Validator for modifiers.
|
|
20
|
+
*/
|
|
21
|
+
const convertSyntaxToGenericPlatform = (syntax) => {
|
|
22
|
+
switch (syntax) {
|
|
23
|
+
case adblockers.AdblockSyntax.Adg:
|
|
24
|
+
return platforms.GenericPlatform.AdgAny;
|
|
25
|
+
case adblockers.AdblockSyntax.Ubo:
|
|
26
|
+
return platforms.GenericPlatform.UboAny;
|
|
27
|
+
case adblockers.AdblockSyntax.Abp:
|
|
28
|
+
return platforms.GenericPlatform.AbpAny;
|
|
29
|
+
default:
|
|
30
|
+
throw new Error(`Unknown syntax: ${syntax}`);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Fully checks whether the given `modifier` valid for given blocker `syntax`:
|
|
35
|
+
* is it supported by the blocker, deprecated, assignable, negatable, etc.
|
|
36
|
+
*
|
|
37
|
+
* @param syntax Adblock syntax to check the modifier for.
|
|
38
|
+
* 'Common' is not supported, it should be specific — 'AdGuard', 'uBlockOrigin', or 'AdblockPlus'.
|
|
39
|
+
* @param modifier Parsed modifier AST node.
|
|
40
|
+
* @param isException Whether the modifier is used in exception rule.
|
|
41
|
+
* Needed to check whether the modifier is allowed only in blocking or exception rules.
|
|
42
|
+
*
|
|
43
|
+
* @returns Result of modifier validation.
|
|
44
|
+
*/
|
|
45
|
+
const validateForSpecificSyntax = (syntax, modifier, isException) => {
|
|
46
|
+
if (syntax === adblockers.AdblockSyntax.Common) {
|
|
47
|
+
throw new Error(`Syntax should be specific, '${adblockers.AdblockSyntax.Common}' is not supported`);
|
|
48
|
+
}
|
|
49
|
+
const modifierName = modifier.name.value;
|
|
50
|
+
const blockerPrefix = constants$1.BLOCKER_PREFIX[syntax];
|
|
51
|
+
if (!blockerPrefix) {
|
|
52
|
+
throw new Error(`Unknown syntax: ${syntax}`);
|
|
53
|
+
}
|
|
54
|
+
// needed for validation of negation, assignment, etc.
|
|
55
|
+
const specificBlockerData = modifiers.modifiersCompatibilityTable.getFirst(modifierName, convertSyntaxToGenericPlatform(syntax));
|
|
56
|
+
// if no specific blocker data is found
|
|
57
|
+
if (!specificBlockerData) {
|
|
58
|
+
return helpers.getInvalidValidationResult(`${constants$1.VALIDATION_ERROR_PREFIX.NOT_SUPPORTED}: '${modifierName}'`);
|
|
59
|
+
}
|
|
60
|
+
// e.g. 'object-subrequest'
|
|
61
|
+
if (specificBlockerData.removed) {
|
|
62
|
+
return helpers.getInvalidValidationResult(`${constants$1.VALIDATION_ERROR_PREFIX.REMOVED}: '${modifierName}'`);
|
|
63
|
+
}
|
|
64
|
+
if (specificBlockerData.deprecated) {
|
|
65
|
+
if (!specificBlockerData.deprecationMessage) {
|
|
66
|
+
throw new Error(`${constants$1.SOURCE_DATA_ERROR_PREFIX.NO_DEPRECATION_MESSAGE}: '${modifierName}'`);
|
|
67
|
+
}
|
|
68
|
+
// prepare the message which is multiline in the yaml file
|
|
69
|
+
const warn = specificBlockerData.deprecationMessage.replace(constants.NEWLINE, constants.SPACE);
|
|
70
|
+
return {
|
|
71
|
+
valid: true,
|
|
72
|
+
warn,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
if (specificBlockerData.blockOnly && isException) {
|
|
76
|
+
return helpers.getInvalidValidationResult(`${constants$1.VALIDATION_ERROR_PREFIX.BLOCK_ONLY}: '${modifierName}'`);
|
|
77
|
+
}
|
|
78
|
+
if (specificBlockerData.exceptionOnly && !isException) {
|
|
79
|
+
return helpers.getInvalidValidationResult(`${constants$1.VALIDATION_ERROR_PREFIX.EXCEPTION_ONLY}: '${modifierName}'`);
|
|
80
|
+
}
|
|
81
|
+
// e.g. '~domain=example.com'
|
|
82
|
+
if (!specificBlockerData.negatable && modifier.exception) {
|
|
83
|
+
return helpers.getInvalidValidationResult(`${constants$1.VALIDATION_ERROR_PREFIX.NOT_NEGATABLE_MODIFIER}: '${modifierName}'`);
|
|
84
|
+
}
|
|
85
|
+
// e.g. 'domain'
|
|
86
|
+
if (specificBlockerData.assignable) {
|
|
87
|
+
if (!modifier.value) {
|
|
88
|
+
// TODO: ditch value_optional after custom validators are implemented for value_format for all modifiers.
|
|
89
|
+
// This checking should be done in each separate custom validator,
|
|
90
|
+
// because $csp and $permissions without value can be used only in extension rules,
|
|
91
|
+
// but $cookie with no value can be used in both blocking and exception rules.
|
|
92
|
+
/**
|
|
93
|
+
* Some assignable modifiers can be used without a value,
|
|
94
|
+
* e.g. '@@||example.com^$cookie'.
|
|
95
|
+
*/
|
|
96
|
+
if (specificBlockerData.valueOptional) {
|
|
97
|
+
return { valid: true };
|
|
98
|
+
}
|
|
99
|
+
// for other assignable modifiers the value is required
|
|
100
|
+
return helpers.getValueRequiredValidationResult(modifierName);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* TODO: consider to return `{ valid: true, warn: 'Modifier value may be specified' }` (???)
|
|
104
|
+
* for $stealth modifier without a value
|
|
105
|
+
* but only after the extension will support value for $stealth:
|
|
106
|
+
* https://github.com/AdguardTeam/AdguardBrowserExtension/issues/2107
|
|
107
|
+
*/
|
|
108
|
+
if (!specificBlockerData.valueFormat) {
|
|
109
|
+
throw new Error(`${constants$1.SOURCE_DATA_ERROR_PREFIX.NO_VALUE_FORMAT_FOR_ASSIGNABLE}: '${modifierName}'`);
|
|
110
|
+
}
|
|
111
|
+
return value.validateValue(modifier, specificBlockerData.valueFormat);
|
|
112
|
+
}
|
|
113
|
+
if (modifier?.value) {
|
|
114
|
+
// e.g. 'third-party=true'
|
|
115
|
+
return helpers.getInvalidValidationResult(`${constants$1.VALIDATION_ERROR_PREFIX.VALUE_FORBIDDEN}: '${modifierName}'`);
|
|
116
|
+
}
|
|
117
|
+
return { valid: true };
|
|
118
|
+
};
|
|
119
|
+
// TODO: move to modifier.ts and use index.ts only for exporting
|
|
120
|
+
/**
|
|
121
|
+
* Modifier validator class.
|
|
122
|
+
*/
|
|
123
|
+
class ModifierValidator {
|
|
124
|
+
/**
|
|
125
|
+
* Simply checks whether the modifier exists in any adblocker.
|
|
126
|
+
*
|
|
127
|
+
* **Deprecated** and **removed** modifiers are considered as **existent**.
|
|
128
|
+
*
|
|
129
|
+
* @param modifier Already parsed modifier AST node.
|
|
130
|
+
*
|
|
131
|
+
* @returns True if modifier exists, false otherwise.
|
|
132
|
+
*/
|
|
133
|
+
// eslint-disable-next-line class-methods-use-this
|
|
134
|
+
exists = (modifier) => {
|
|
135
|
+
return modifiers.modifiersCompatibilityTable.existsAny(modifier.name.value);
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Checks whether the given `modifier` is valid for specified `syntax`.
|
|
139
|
+
*
|
|
140
|
+
* For `Common` syntax it simply checks whether the modifier exists.
|
|
141
|
+
* For specific syntax the validation is more complex —
|
|
142
|
+
* deprecated, assignable, negatable and other requirements are checked.
|
|
143
|
+
*
|
|
144
|
+
* @param syntax Adblock syntax to check the modifier for.
|
|
145
|
+
* @param rawModifier Modifier AST node.
|
|
146
|
+
* @param isException Whether the modifier is used in exception rule, default to false.
|
|
147
|
+
* Needed to check whether the modifier is allowed only in blocking or exception rules.
|
|
148
|
+
*
|
|
149
|
+
* @returns Result of modifier validation.
|
|
150
|
+
*/
|
|
151
|
+
validate = (syntax, rawModifier, isException = false) => {
|
|
152
|
+
const modifier = clone.clone(rawModifier);
|
|
153
|
+
// special case: handle noop modifier which may be used as multiple underscores (not just one)
|
|
154
|
+
// https://adguard.com/kb/general/ad-filtering/create-own-filters/#noop-modifier
|
|
155
|
+
if (modifier.name.value.startsWith(constants.UNDERSCORE)) {
|
|
156
|
+
// check whether the modifier value contains something else besides underscores
|
|
157
|
+
if (!helpers.isValidNoopModifier(modifier.name.value)) {
|
|
158
|
+
return helpers.getInvalidValidationResult(`${constants$1.VALIDATION_ERROR_PREFIX.INVALID_NOOP}: '${modifier.name.value}'`);
|
|
159
|
+
}
|
|
160
|
+
// otherwise, replace the modifier value with single underscore.
|
|
161
|
+
// it is needed to check whether the modifier is supported by specific adblocker due to the syntax
|
|
162
|
+
modifier.name.value = constants.UNDERSCORE;
|
|
163
|
+
}
|
|
164
|
+
if (!this.exists(modifier)) {
|
|
165
|
+
return helpers.getInvalidValidationResult(`${constants$1.VALIDATION_ERROR_PREFIX.NOT_EXISTENT}: '${modifier.name.value}'`);
|
|
166
|
+
}
|
|
167
|
+
// for 'Common' syntax we cannot check something more
|
|
168
|
+
if (syntax === adblockers.AdblockSyntax.Common) {
|
|
169
|
+
return { valid: true };
|
|
170
|
+
}
|
|
171
|
+
return validateForSpecificSyntax(syntax, modifier, isException);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
const modifierValidator = new ModifierValidator();
|
|
175
|
+
|
|
176
|
+
exports.modifierValidator = modifierValidator;
|