@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,81 @@
|
|
|
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 ruleConversionError = require('../../../errors/rule-conversion-error.js');
|
|
10
|
+
var modifiers = require('../../../ast-utils/modifiers.js');
|
|
11
|
+
var regexp = require('../../../utils/regexp.js');
|
|
12
|
+
var constants = require('../../../utils/constants.js');
|
|
13
|
+
var string = require('../../../utils/string.js');
|
|
14
|
+
var multiValueMap = require('../../../utils/multi-value-map.js');
|
|
15
|
+
var clone = require('../../../utils/clone.js');
|
|
16
|
+
var conversionResult = require('../../base-interfaces/conversion-result.js');
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @file Cosmetic rule modifier converter from uBO to ADG
|
|
20
|
+
*/
|
|
21
|
+
const UBO_MATCHES_PATH_OPERATOR = 'matches-path';
|
|
22
|
+
const ADG_PATH_MODIFIER = 'path';
|
|
23
|
+
/**
|
|
24
|
+
* Special characters in modifier regexps that should be escaped
|
|
25
|
+
*/
|
|
26
|
+
const SPECIAL_MODIFIER_REGEX_CHARS = new Set([
|
|
27
|
+
constants.OPEN_SQUARE_BRACKET,
|
|
28
|
+
constants.CLOSE_SQUARE_BRACKET,
|
|
29
|
+
constants.COMMA,
|
|
30
|
+
constants.ESCAPE_CHARACTER,
|
|
31
|
+
]);
|
|
32
|
+
/**
|
|
33
|
+
* Helper class for converting cosmetic rule modifiers from uBO to ADG
|
|
34
|
+
*/
|
|
35
|
+
class AdgCosmeticRuleModifierConverter {
|
|
36
|
+
/**
|
|
37
|
+
* Converts a uBO cosmetic rule modifier list to ADG, if possible.
|
|
38
|
+
*
|
|
39
|
+
* @param modifierList Cosmetic rule modifier list node to convert
|
|
40
|
+
* @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
|
|
41
|
+
* the converted node, and its `isConverted` flag indicates whether the original node was converted.
|
|
42
|
+
* If the node was not converted, the result will contain the original node with the same object reference
|
|
43
|
+
* @throws If the modifier list cannot be converted
|
|
44
|
+
* @see {@link https://github.com/gorhill/uBlock/wiki/Procedural-cosmetic-filters#cosmetic-filter-operators}
|
|
45
|
+
*/
|
|
46
|
+
static convertFromUbo(modifierList) {
|
|
47
|
+
const conversionMap = new multiValueMap.MultiValueMap();
|
|
48
|
+
modifierList.children.forEach((modifier, index) => {
|
|
49
|
+
// :matches-path
|
|
50
|
+
if (modifier.name.value === UBO_MATCHES_PATH_OPERATOR) {
|
|
51
|
+
if (!modifier.value) {
|
|
52
|
+
throw new ruleConversionError.RuleConversionError(`'${UBO_MATCHES_PATH_OPERATOR}' operator requires a value`);
|
|
53
|
+
}
|
|
54
|
+
const value = regexp.RegExpUtils.isRegexPattern(modifier.value.value)
|
|
55
|
+
? string.StringUtils.escapeCharacters(modifier.value.value, SPECIAL_MODIFIER_REGEX_CHARS)
|
|
56
|
+
: modifier.value.value;
|
|
57
|
+
// Convert uBO's `:matches-path(...)` operator to ADG's `$path=...` modifier
|
|
58
|
+
conversionMap.add(index, modifiers.createModifierNode(ADG_PATH_MODIFIER,
|
|
59
|
+
// We should negate the regexp if the modifier is an exception
|
|
60
|
+
modifier.exception
|
|
61
|
+
// eslint-disable-next-line max-len
|
|
62
|
+
? `${constants.REGEX_MARKER}${regexp.RegExpUtils.negateRegexPattern(regexp.RegExpUtils.patternToRegexp(value))}${constants.REGEX_MARKER}`
|
|
63
|
+
: value));
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
// Check if we have any converted modifiers
|
|
67
|
+
if (conversionMap.size) {
|
|
68
|
+
const modifierListClone = clone.clone(modifierList);
|
|
69
|
+
// Replace the original modifiers with the converted ones
|
|
70
|
+
modifierListClone.children = modifierListClone.children.map((modifier, index) => {
|
|
71
|
+
const convertedModifier = conversionMap.get(index);
|
|
72
|
+
return convertedModifier ?? modifier;
|
|
73
|
+
}).flat();
|
|
74
|
+
return conversionResult.createConversionResult(modifierListClone, true);
|
|
75
|
+
}
|
|
76
|
+
// Otherwise, just return the original modifier list
|
|
77
|
+
return conversionResult.createConversionResult(modifierList, false);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
exports.AdgCosmeticRuleModifierConverter = AdgCosmeticRuleModifierConverter;
|
|
@@ -0,0 +1,356 @@
|
|
|
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 index = require('../../nodes/index.js');
|
|
10
|
+
var ruleConverterBase = require('../base-interfaces/rule-converter-base.js');
|
|
11
|
+
var adblockers = require('../../utils/adblockers.js');
|
|
12
|
+
var quotes = require('../../utils/quotes.js');
|
|
13
|
+
var constants = require('../../utils/constants.js');
|
|
14
|
+
var scriptlets = require('../../ast-utils/scriptlets.js');
|
|
15
|
+
var conversionResult = require('../base-interfaces/conversion-result.js');
|
|
16
|
+
var clone = require('../../ast-utils/clone.js');
|
|
17
|
+
require('../../compatibility-tables/modifiers.js');
|
|
18
|
+
require('../../compatibility-tables/redirects.js');
|
|
19
|
+
var scriptlets$1 = require('../../compatibility-tables/scriptlets.js');
|
|
20
|
+
var platforms = require('../../compatibility-tables/platforms.js');
|
|
21
|
+
require('../../compatibility-tables/schemas/base.js');
|
|
22
|
+
require('../../compatibility-tables/schemas/modifier.js');
|
|
23
|
+
require('../../compatibility-tables/schemas/redirect.js');
|
|
24
|
+
require('../../compatibility-tables/schemas/scriptlet.js');
|
|
25
|
+
require('../../compatibility-tables/schemas/platform.js');
|
|
26
|
+
require('../../compatibility-tables/utils/platform-helpers.js');
|
|
27
|
+
require('../../compatibility-tables/schemas/resource-type.js');
|
|
28
|
+
require('../../compatibility-tables/utils/resource-type-helpers.js');
|
|
29
|
+
var typeGuards = require('../../utils/type-guards.js');
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @file Scriptlet injection rule converter
|
|
33
|
+
*/
|
|
34
|
+
const ABP_SCRIPTLET_PREFIX = 'abp-';
|
|
35
|
+
const UBO_SCRIPTLET_PREFIX = 'ubo-';
|
|
36
|
+
const UBO_SCRIPTLET_PREFIX_LENGTH = UBO_SCRIPTLET_PREFIX.length;
|
|
37
|
+
const UBO_SCRIPTLET_JS_SUFFIX = '.js';
|
|
38
|
+
const UBO_SCRIPTLET_JS_SUFFIX_LENGTH = UBO_SCRIPTLET_JS_SUFFIX.length;
|
|
39
|
+
const COMMA_SEPARATOR = ',';
|
|
40
|
+
const ADG_SET_CONSTANT_NAME = 'set-constant';
|
|
41
|
+
const ADG_SET_CONSTANT_EMPTY_STRING = '';
|
|
42
|
+
const ADG_SET_CONSTANT_EMPTY_ARRAY = 'emptyArr';
|
|
43
|
+
const ADG_SET_CONSTANT_EMPTY_OBJECT = 'emptyObj';
|
|
44
|
+
const UBO_SET_CONSTANT_EMPTY_STRING = '\'\'';
|
|
45
|
+
const UBO_SET_CONSTANT_EMPTY_ARRAY = '[]';
|
|
46
|
+
const UBO_SET_CONSTANT_EMPTY_OBJECT = '{}';
|
|
47
|
+
const ADG_PREVENT_FETCH_NAME = 'prevent-fetch';
|
|
48
|
+
const ADG_PREVENT_FETCH_EMPTY_STRING = '';
|
|
49
|
+
const ADG_PREVENT_FETCH_WILDCARD = '*';
|
|
50
|
+
const UBO_NO_FETCH_IF_WILDCARD = '/^/';
|
|
51
|
+
const UBO_REMOVE_CLASS_NAME = 'remove-class.js';
|
|
52
|
+
const UBO_REMOVE_ATTR_NAME = 'remove-attr.js';
|
|
53
|
+
const setConstantAdgToUboMap = {
|
|
54
|
+
[ADG_SET_CONSTANT_EMPTY_STRING]: UBO_SET_CONSTANT_EMPTY_STRING,
|
|
55
|
+
[ADG_SET_CONSTANT_EMPTY_ARRAY]: UBO_SET_CONSTANT_EMPTY_ARRAY,
|
|
56
|
+
[ADG_SET_CONSTANT_EMPTY_OBJECT]: UBO_SET_CONSTANT_EMPTY_OBJECT,
|
|
57
|
+
};
|
|
58
|
+
const REMOVE_ATTR_CLASS_APPLYING = new Set([
|
|
59
|
+
'asap',
|
|
60
|
+
'stay',
|
|
61
|
+
'complete',
|
|
62
|
+
]);
|
|
63
|
+
/**
|
|
64
|
+
* Scriptlet injection rule converter class
|
|
65
|
+
*
|
|
66
|
+
* @todo Implement `convertToUbo` and `convertToAbp`
|
|
67
|
+
*/
|
|
68
|
+
class ScriptletRuleConverter extends ruleConverterBase.RuleConverterBase {
|
|
69
|
+
/**
|
|
70
|
+
* Converts a scriptlet injection rule to AdGuard format, if possible.
|
|
71
|
+
*
|
|
72
|
+
* @param rule Rule node to convert
|
|
73
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
74
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
75
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
76
|
+
* @throws If the rule is invalid or cannot be converted
|
|
77
|
+
*/
|
|
78
|
+
static convertToAdg(rule) {
|
|
79
|
+
// Ignore AdGuard rules
|
|
80
|
+
if (rule.syntax === adblockers.AdblockSyntax.Adg) {
|
|
81
|
+
return conversionResult.createNodeConversionResult([rule], false);
|
|
82
|
+
}
|
|
83
|
+
const separator = rule.separator.value;
|
|
84
|
+
let convertedSeparator = separator;
|
|
85
|
+
convertedSeparator = rule.exception
|
|
86
|
+
? index.CosmeticRuleSeparator.AdgJsInjectionException
|
|
87
|
+
: index.CosmeticRuleSeparator.AdgJsInjection;
|
|
88
|
+
const convertedScriptlets = [];
|
|
89
|
+
for (const scriptlet of rule.body.children) {
|
|
90
|
+
// Clone the node to avoid any side effects
|
|
91
|
+
const scriptletClone = clone.cloneScriptletRuleNode(scriptlet);
|
|
92
|
+
// Remove possible quotes just to make it easier to work with the scriptlet name
|
|
93
|
+
const scriptletName = quotes.QuoteUtils.setStringQuoteType(scriptlets.getScriptletName(scriptletClone), quotes.QuoteType.None);
|
|
94
|
+
// Add prefix if it's not already there
|
|
95
|
+
let prefix;
|
|
96
|
+
// In uBO / ABP syntax, if a parameter contains the separator character, it should be escaped,
|
|
97
|
+
// but during the conversion, we need to unescape them, because AdGuard syntax uses quotes to
|
|
98
|
+
// distinguish between parameters.
|
|
99
|
+
let charToUnescape;
|
|
100
|
+
switch (rule.syntax) {
|
|
101
|
+
case adblockers.AdblockSyntax.Abp:
|
|
102
|
+
prefix = ABP_SCRIPTLET_PREFIX;
|
|
103
|
+
charToUnescape = constants.SPACE;
|
|
104
|
+
break;
|
|
105
|
+
case adblockers.AdblockSyntax.Ubo:
|
|
106
|
+
prefix = UBO_SCRIPTLET_PREFIX;
|
|
107
|
+
charToUnescape = COMMA_SEPARATOR;
|
|
108
|
+
break;
|
|
109
|
+
default:
|
|
110
|
+
prefix = constants.EMPTY;
|
|
111
|
+
}
|
|
112
|
+
if (!scriptletName.startsWith(prefix)) {
|
|
113
|
+
scriptlets.setScriptletName(scriptletClone, `${prefix}${scriptletName}`);
|
|
114
|
+
}
|
|
115
|
+
if (!typeGuards.isUndefined(charToUnescape)) {
|
|
116
|
+
scriptlets.transformAllScriptletArguments(scriptletClone, (value) => {
|
|
117
|
+
if (!typeGuards.isNull(value)) {
|
|
118
|
+
return quotes.QuoteUtils.unescapeSingleEscapedOccurrences(value, charToUnescape);
|
|
119
|
+
}
|
|
120
|
+
return value;
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
if (rule.syntax === adblockers.AdblockSyntax.Ubo) {
|
|
124
|
+
const scriptletData = scriptlets$1.scriptletsCompatibilityTable.getFirst(scriptletName, platforms.GenericPlatform.UboAny);
|
|
125
|
+
// Some scriptlets have special values that need to be converted
|
|
126
|
+
if (scriptletData
|
|
127
|
+
&& (scriptletData.name === UBO_REMOVE_CLASS_NAME
|
|
128
|
+
|| scriptletData.name === UBO_REMOVE_ATTR_NAME)
|
|
129
|
+
&& scriptletClone.children.length > 2) {
|
|
130
|
+
const selectors = [];
|
|
131
|
+
let applying = null;
|
|
132
|
+
let lastArg = scriptletClone.children.pop();
|
|
133
|
+
// The very last argument might be the 'applying' parameter
|
|
134
|
+
if (lastArg) {
|
|
135
|
+
if (REMOVE_ATTR_CLASS_APPLYING.has(lastArg.value)) {
|
|
136
|
+
applying = lastArg.value;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
selectors.push(lastArg.value);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
while (scriptletClone.children.length > 2) {
|
|
143
|
+
lastArg = scriptletClone.children.pop();
|
|
144
|
+
if (lastArg) {
|
|
145
|
+
selectors.push(lastArg.value.trim());
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Set last arg to be the combined selectors (in reverse order, because we popped them)
|
|
149
|
+
if (selectors.length > 0) {
|
|
150
|
+
scriptletClone.children.push({
|
|
151
|
+
type: 'Value',
|
|
152
|
+
value: selectors.reverse().join(', '),
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
// Push back the 'applying' parameter if it was found previously
|
|
156
|
+
if (!typeGuards.isNull(applying)) {
|
|
157
|
+
// If we don't have any selectors,
|
|
158
|
+
// we need to add an empty parameter before the 'applying' one
|
|
159
|
+
if (selectors.length === 0) {
|
|
160
|
+
scriptletClone.children.push({
|
|
161
|
+
type: 'Value',
|
|
162
|
+
value: constants.EMPTY,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
scriptletClone.children.push({
|
|
166
|
+
type: 'Value',
|
|
167
|
+
value: applying,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// ADG scriptlet parameters should be quoted, and single quoted are preferred
|
|
173
|
+
scriptlets.setScriptletQuoteType(scriptletClone, quotes.QuoteType.Single);
|
|
174
|
+
convertedScriptlets.push(scriptletClone);
|
|
175
|
+
}
|
|
176
|
+
if (rule.body.children.length === 0) {
|
|
177
|
+
const convertedScriptletNode = {
|
|
178
|
+
category: rule.category,
|
|
179
|
+
type: rule.type,
|
|
180
|
+
syntax: adblockers.AdblockSyntax.Adg,
|
|
181
|
+
exception: rule.exception,
|
|
182
|
+
domains: clone.cloneDomainListNode(rule.domains),
|
|
183
|
+
separator: {
|
|
184
|
+
type: 'Value',
|
|
185
|
+
value: convertedSeparator,
|
|
186
|
+
},
|
|
187
|
+
body: {
|
|
188
|
+
type: rule.body.type,
|
|
189
|
+
children: [],
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
|
+
if (rule.modifiers) {
|
|
193
|
+
convertedScriptletNode.modifiers = clone.cloneModifierListNode(rule.modifiers);
|
|
194
|
+
}
|
|
195
|
+
return conversionResult.createNodeConversionResult([convertedScriptletNode], true);
|
|
196
|
+
}
|
|
197
|
+
return conversionResult.createNodeConversionResult(convertedScriptlets.map((scriptlet) => {
|
|
198
|
+
const res = {
|
|
199
|
+
category: rule.category,
|
|
200
|
+
type: rule.type,
|
|
201
|
+
syntax: adblockers.AdblockSyntax.Adg,
|
|
202
|
+
exception: rule.exception,
|
|
203
|
+
domains: clone.cloneDomainListNode(rule.domains),
|
|
204
|
+
separator: {
|
|
205
|
+
type: 'Value',
|
|
206
|
+
value: convertedSeparator,
|
|
207
|
+
},
|
|
208
|
+
body: {
|
|
209
|
+
type: rule.body.type,
|
|
210
|
+
children: [scriptlet],
|
|
211
|
+
},
|
|
212
|
+
};
|
|
213
|
+
if (rule.modifiers) {
|
|
214
|
+
res.modifiers = clone.cloneModifierListNode(rule.modifiers);
|
|
215
|
+
}
|
|
216
|
+
return res;
|
|
217
|
+
}), true);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Converts a scriptlet injection rule to uBlock format, if possible.
|
|
221
|
+
*
|
|
222
|
+
* @param rule Rule node to convert
|
|
223
|
+
* @returns An object which follows the {@link NodeConversionResult} interface. Its `result` property contains
|
|
224
|
+
* the array of converted rule nodes, and its `isConverted` flag indicates whether the original rule was converted.
|
|
225
|
+
* If the rule was not converted, the result array will contain the original node with the same object reference
|
|
226
|
+
* @throws If the rule is invalid or cannot be converted
|
|
227
|
+
*/
|
|
228
|
+
static convertToUbo(rule) {
|
|
229
|
+
// Ignore uBlock rules
|
|
230
|
+
if (rule.syntax === adblockers.AdblockSyntax.Ubo) {
|
|
231
|
+
return conversionResult.createNodeConversionResult([rule], false);
|
|
232
|
+
}
|
|
233
|
+
const separator = rule.separator.value;
|
|
234
|
+
let convertedSeparator = separator;
|
|
235
|
+
convertedSeparator = rule.exception
|
|
236
|
+
? index.CosmeticRuleSeparator.ElementHidingException
|
|
237
|
+
: index.CosmeticRuleSeparator.ElementHiding;
|
|
238
|
+
const convertedScriptlets = [];
|
|
239
|
+
for (const scriptlet of rule.body.children) {
|
|
240
|
+
// Clone the node to avoid any side effects
|
|
241
|
+
const scriptletClone = clone.cloneScriptletRuleNode(scriptlet);
|
|
242
|
+
// Remove possible quotes just to make it easier to work with the scriptlet name
|
|
243
|
+
const scriptletName = quotes.QuoteUtils.setStringQuoteType(scriptlets.getScriptletName(scriptletClone), quotes.QuoteType.None);
|
|
244
|
+
let uboScriptletName;
|
|
245
|
+
if (rule.syntax === adblockers.AdblockSyntax.Adg && scriptletName.startsWith(UBO_SCRIPTLET_PREFIX)) {
|
|
246
|
+
// Special case: AdGuard syntax 'preserves' the original scriptlet name,
|
|
247
|
+
// so we need to convert it back by removing the uBO prefix
|
|
248
|
+
uboScriptletName = scriptletName.slice(UBO_SCRIPTLET_PREFIX_LENGTH);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
// Otherwise, try to find the corresponding uBO scriptlet name, or use the original one if not found
|
|
252
|
+
const uboScriptlet = scriptlets$1.scriptletsCompatibilityTable.getFirst(scriptletName, platforms.GenericPlatform.UboAny);
|
|
253
|
+
uboScriptletName = uboScriptlet?.name ?? scriptletName;
|
|
254
|
+
}
|
|
255
|
+
// Remove the '.js' suffix if it's there - its presence is not mandatory
|
|
256
|
+
if (uboScriptletName.endsWith(UBO_SCRIPTLET_JS_SUFFIX)) {
|
|
257
|
+
uboScriptletName = uboScriptletName.slice(0, -UBO_SCRIPTLET_JS_SUFFIX_LENGTH);
|
|
258
|
+
}
|
|
259
|
+
scriptlets.setScriptletName(scriptletClone, uboScriptletName);
|
|
260
|
+
scriptlets.setScriptletQuoteType(scriptletClone, quotes.QuoteType.None);
|
|
261
|
+
// Escape unescaped commas in parameters, because uBlock Origin uses them as separators.
|
|
262
|
+
// For example, the following AdGuard rule:
|
|
263
|
+
//
|
|
264
|
+
// example.com#%#//scriptlet('spoof-css', '.adsbygoogle, #ads', 'visibility', 'visible')
|
|
265
|
+
//
|
|
266
|
+
// ↓↓ should be converted to ↓↓
|
|
267
|
+
//
|
|
268
|
+
// example.com##+js(spoof-css.js, .adsbygoogle\, #ads, visibility, visible)
|
|
269
|
+
// ------------ ------------------- ---------- -------
|
|
270
|
+
// arg 0 arg 1 arg 2 arg 3
|
|
271
|
+
//
|
|
272
|
+
// and we need to escape the comma in the second argument to prevent it from being treated
|
|
273
|
+
// as two separate arguments.
|
|
274
|
+
scriptlets.transformAllScriptletArguments(scriptletClone, (value) => {
|
|
275
|
+
if (!typeGuards.isNull(value)) {
|
|
276
|
+
return quotes.QuoteUtils.escapeUnescapedOccurrences(value, COMMA_SEPARATOR);
|
|
277
|
+
}
|
|
278
|
+
return value;
|
|
279
|
+
});
|
|
280
|
+
// Unescape spaces in parameters, because uBlock Origin doesn't treat them as separators.
|
|
281
|
+
if (rule.syntax === adblockers.AdblockSyntax.Abp) {
|
|
282
|
+
scriptlets.transformAllScriptletArguments(scriptletClone, (value) => {
|
|
283
|
+
if (!typeGuards.isNull(value)) {
|
|
284
|
+
return quotes.QuoteUtils.unescapeSingleEscapedOccurrences(value, constants.SPACE);
|
|
285
|
+
}
|
|
286
|
+
return value;
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
// Some scriptlets have special values that need to be converted
|
|
290
|
+
switch (scriptletName) {
|
|
291
|
+
case ADG_SET_CONSTANT_NAME:
|
|
292
|
+
scriptlets.transformNthScriptletArgument(scriptletClone, 2, (value) => {
|
|
293
|
+
if (!typeGuards.isNull(value)) {
|
|
294
|
+
return setConstantAdgToUboMap[value] ?? value;
|
|
295
|
+
}
|
|
296
|
+
return value;
|
|
297
|
+
});
|
|
298
|
+
break;
|
|
299
|
+
case ADG_PREVENT_FETCH_NAME:
|
|
300
|
+
scriptlets.transformNthScriptletArgument(scriptletClone, 1, (value) => {
|
|
301
|
+
if (value === ADG_PREVENT_FETCH_EMPTY_STRING || value === ADG_PREVENT_FETCH_WILDCARD) {
|
|
302
|
+
return UBO_NO_FETCH_IF_WILDCARD;
|
|
303
|
+
}
|
|
304
|
+
return value;
|
|
305
|
+
});
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
convertedScriptlets.push(scriptletClone);
|
|
309
|
+
}
|
|
310
|
+
// TODO: Refactor redundant code
|
|
311
|
+
if (rule.body.children.length === 0) {
|
|
312
|
+
const convertedScriptletNode = {
|
|
313
|
+
category: rule.category,
|
|
314
|
+
type: rule.type,
|
|
315
|
+
syntax: adblockers.AdblockSyntax.Ubo,
|
|
316
|
+
exception: rule.exception,
|
|
317
|
+
domains: clone.cloneDomainListNode(rule.domains),
|
|
318
|
+
separator: {
|
|
319
|
+
type: 'Value',
|
|
320
|
+
value: convertedSeparator,
|
|
321
|
+
},
|
|
322
|
+
body: {
|
|
323
|
+
type: rule.body.type,
|
|
324
|
+
children: [],
|
|
325
|
+
},
|
|
326
|
+
};
|
|
327
|
+
if (rule.modifiers) {
|
|
328
|
+
convertedScriptletNode.modifiers = clone.cloneModifierListNode(rule.modifiers);
|
|
329
|
+
}
|
|
330
|
+
return conversionResult.createNodeConversionResult([convertedScriptletNode], true);
|
|
331
|
+
}
|
|
332
|
+
return conversionResult.createNodeConversionResult(convertedScriptlets.map((scriptlet) => {
|
|
333
|
+
const res = {
|
|
334
|
+
category: rule.category,
|
|
335
|
+
type: rule.type,
|
|
336
|
+
syntax: adblockers.AdblockSyntax.Ubo,
|
|
337
|
+
exception: rule.exception,
|
|
338
|
+
domains: clone.cloneDomainListNode(rule.domains),
|
|
339
|
+
separator: {
|
|
340
|
+
type: 'Value',
|
|
341
|
+
value: convertedSeparator,
|
|
342
|
+
},
|
|
343
|
+
body: {
|
|
344
|
+
type: rule.body.type,
|
|
345
|
+
children: [scriptlet],
|
|
346
|
+
},
|
|
347
|
+
};
|
|
348
|
+
if (rule.modifiers) {
|
|
349
|
+
res.modifiers = clone.cloneModifierListNode(rule.modifiers);
|
|
350
|
+
}
|
|
351
|
+
return res;
|
|
352
|
+
}), true);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
exports.ScriptletRuleConverter = ScriptletRuleConverter;
|
|
@@ -0,0 +1,193 @@
|
|
|
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 cssTokenizer = require('@adguard/css-tokenizer');
|
|
10
|
+
var sprintfJs = require('sprintf-js');
|
|
11
|
+
var constants = require('../../utils/constants.js');
|
|
12
|
+
var css = require('../data/css.js');
|
|
13
|
+
var baseConverter = require('../base-interfaces/base-converter.js');
|
|
14
|
+
var conversionResult = require('../base-interfaces/conversion-result.js');
|
|
15
|
+
var cssTokenStream = require('../../parser/css/css-token-stream.js');
|
|
16
|
+
|
|
17
|
+
const ERROR_MESSAGES = {
|
|
18
|
+
// eslint-disable-next-line max-len
|
|
19
|
+
INVALID_ATTRIBUTE_VALUE: `Expected '${cssTokenizer.getFormattedTokenName(cssTokenizer.TokenType.Ident)}' or '${cssTokenizer.getFormattedTokenName(cssTokenizer.TokenType.String)}' as attribute value, but got '%s' with value '%s`,
|
|
20
|
+
};
|
|
21
|
+
var PseudoClasses;
|
|
22
|
+
(function (PseudoClasses) {
|
|
23
|
+
PseudoClasses["AbpContains"] = "-abp-contains";
|
|
24
|
+
PseudoClasses["AbpHas"] = "-abp-has";
|
|
25
|
+
PseudoClasses["Contains"] = "contains";
|
|
26
|
+
PseudoClasses["Has"] = "has";
|
|
27
|
+
PseudoClasses["HasText"] = "has-text";
|
|
28
|
+
PseudoClasses["MatchesCss"] = "matches-css";
|
|
29
|
+
PseudoClasses["MatchesCssAfter"] = "matches-css-after";
|
|
30
|
+
PseudoClasses["MatchesCssBefore"] = "matches-css-before";
|
|
31
|
+
PseudoClasses["Not"] = "not";
|
|
32
|
+
})(PseudoClasses || (PseudoClasses = {}));
|
|
33
|
+
var PseudoElements;
|
|
34
|
+
(function (PseudoElements) {
|
|
35
|
+
PseudoElements["After"] = "after";
|
|
36
|
+
PseudoElements["Before"] = "before";
|
|
37
|
+
})(PseudoElements || (PseudoElements = {}));
|
|
38
|
+
const PSEUDO_ELEMENT_NAMES = new Set([
|
|
39
|
+
PseudoElements.After,
|
|
40
|
+
PseudoElements.Before,
|
|
41
|
+
]);
|
|
42
|
+
/**
|
|
43
|
+
* CSS selector converter
|
|
44
|
+
*
|
|
45
|
+
* @todo Implement `convertToUbo` and `convertToAbp`
|
|
46
|
+
*/
|
|
47
|
+
class CssSelectorConverter extends baseConverter.BaseConverter {
|
|
48
|
+
/**
|
|
49
|
+
* Converts Extended CSS elements to AdGuard-compatible ones
|
|
50
|
+
*
|
|
51
|
+
* @param selectorList Selector list to convert
|
|
52
|
+
* @returns An object which follows the {@link ConversionResult} interface. Its `result` property contains
|
|
53
|
+
* the converted node, and its `isConverted` flag indicates whether the original node was converted.
|
|
54
|
+
* If the node was not converted, the result will contain the original node with the same object reference
|
|
55
|
+
* @throws If the rule is invalid or incompatible
|
|
56
|
+
*/
|
|
57
|
+
static convertToAdg(selectorList) {
|
|
58
|
+
const stream = selectorList instanceof cssTokenStream.CssTokenStream
|
|
59
|
+
? selectorList
|
|
60
|
+
: new cssTokenStream.CssTokenStream(selectorList);
|
|
61
|
+
const converted = [];
|
|
62
|
+
const convertAndPushPseudo = (pseudo) => {
|
|
63
|
+
switch (pseudo) {
|
|
64
|
+
case PseudoClasses.AbpContains:
|
|
65
|
+
case PseudoClasses.HasText:
|
|
66
|
+
converted.push(PseudoClasses.Contains);
|
|
67
|
+
converted.push(constants.OPEN_PARENTHESIS);
|
|
68
|
+
break;
|
|
69
|
+
case PseudoClasses.AbpHas:
|
|
70
|
+
converted.push(PseudoClasses.Has);
|
|
71
|
+
converted.push(constants.OPEN_PARENTHESIS);
|
|
72
|
+
break;
|
|
73
|
+
// a bit special case:
|
|
74
|
+
// - `:matches-css-before(...)` → `:matches-css(before, ...)`
|
|
75
|
+
// - `:matches-css-after(...)` → `:matches-css(after, ...)`
|
|
76
|
+
case PseudoClasses.MatchesCssBefore:
|
|
77
|
+
case PseudoClasses.MatchesCssAfter:
|
|
78
|
+
converted.push(PseudoClasses.MatchesCss);
|
|
79
|
+
converted.push(constants.OPEN_PARENTHESIS);
|
|
80
|
+
converted.push(pseudo.substring(PseudoClasses.MatchesCss.length + 1));
|
|
81
|
+
converted.push(constants.COMMA);
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
converted.push(pseudo);
|
|
85
|
+
converted.push(constants.OPEN_PARENTHESIS);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
while (!stream.isEof()) {
|
|
90
|
+
const token = stream.getOrFail();
|
|
91
|
+
if (token.type === cssTokenizer.TokenType.Colon) {
|
|
92
|
+
// Advance colon
|
|
93
|
+
stream.advance();
|
|
94
|
+
converted.push(constants.COLON);
|
|
95
|
+
const tempToken = stream.getOrFail();
|
|
96
|
+
// Double colon is a pseudo-element
|
|
97
|
+
if (tempToken.type === cssTokenizer.TokenType.Colon) {
|
|
98
|
+
stream.advance();
|
|
99
|
+
converted.push(constants.COLON);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (tempToken.type === cssTokenizer.TokenType.Ident) {
|
|
103
|
+
const name = stream.source.slice(tempToken.start, tempToken.end);
|
|
104
|
+
if (PSEUDO_ELEMENT_NAMES.has(name)) {
|
|
105
|
+
// Add an extra colon to the name
|
|
106
|
+
converted.push(constants.COLON);
|
|
107
|
+
converted.push(name);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// Add the name as is
|
|
111
|
+
converted.push(name);
|
|
112
|
+
}
|
|
113
|
+
// Advance the names
|
|
114
|
+
stream.advance();
|
|
115
|
+
}
|
|
116
|
+
else if (tempToken.type === cssTokenizer.TokenType.Function) {
|
|
117
|
+
const name = stream.source.slice(tempToken.start, tempToken.end - 1); // omit the last parenthesis
|
|
118
|
+
// :-abp-contains(...) → :contains(...)
|
|
119
|
+
// :has-text(...) → :contains(...)
|
|
120
|
+
// :-abp-has(...) → :has(...)
|
|
121
|
+
convertAndPushPseudo(name);
|
|
122
|
+
// Advance the function name
|
|
123
|
+
stream.advance();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
else if (token.type === cssTokenizer.TokenType.OpenSquareBracket) {
|
|
127
|
+
let tempToken;
|
|
128
|
+
const { start } = token;
|
|
129
|
+
stream.advance();
|
|
130
|
+
// Converts legacy Extended CSS selectors to the modern Extended CSS syntax.
|
|
131
|
+
// For example:
|
|
132
|
+
// - `[-ext-has=...]` → `:has(...)`
|
|
133
|
+
// - `[-ext-contains=...]` → `:contains(...)`
|
|
134
|
+
// - `[-ext-matches-css-before=...]` → `:matches-css(before, ...)`
|
|
135
|
+
stream.skipWhitespace();
|
|
136
|
+
stream.expect(cssTokenizer.TokenType.Ident);
|
|
137
|
+
tempToken = stream.getOrFail();
|
|
138
|
+
let attr = stream.source.slice(tempToken.start, tempToken.end);
|
|
139
|
+
// Skip if the attribute name is not a legacy Extended CSS one
|
|
140
|
+
if (!(attr.startsWith(css.LEGACY_EXT_CSS_ATTRIBUTE_PREFIX) || attr.startsWith(css.ABP_EXT_CSS_PREFIX))) {
|
|
141
|
+
converted.push(stream.source.slice(start, tempToken.end));
|
|
142
|
+
stream.advance();
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (attr.startsWith(css.LEGACY_EXT_CSS_ATTRIBUTE_PREFIX)) {
|
|
146
|
+
attr = attr.slice(css.LEGACY_EXT_CSS_ATTRIBUTE_PREFIX.length);
|
|
147
|
+
}
|
|
148
|
+
stream.advance();
|
|
149
|
+
stream.skipWhitespace();
|
|
150
|
+
// Next token should be an equality operator (=), because Extended CSS attribute selectors
|
|
151
|
+
// do not support other operators
|
|
152
|
+
stream.expect(cssTokenizer.TokenType.Delim, { value: constants.EQUALS });
|
|
153
|
+
stream.advance();
|
|
154
|
+
// Skip optional whitespace after the operator
|
|
155
|
+
stream.skipWhitespace();
|
|
156
|
+
// Parse attribute value
|
|
157
|
+
tempToken = stream.getOrFail();
|
|
158
|
+
// According to the spec, attribute value should be an identifier or a string
|
|
159
|
+
if (tempToken.type !== cssTokenizer.TokenType.Ident && tempToken.type !== cssTokenizer.TokenType.String) {
|
|
160
|
+
throw new Error(sprintfJs.sprintf(ERROR_MESSAGES.INVALID_ATTRIBUTE_VALUE, cssTokenizer.getFormattedTokenName(tempToken.type), stream.source.slice(tempToken.start, tempToken.end)));
|
|
161
|
+
}
|
|
162
|
+
const value = stream.source.slice(tempToken.start, tempToken.end);
|
|
163
|
+
// Advance the attribute value
|
|
164
|
+
stream.advance();
|
|
165
|
+
// Skip optional whitespace after the attribute value
|
|
166
|
+
stream.skipWhitespace();
|
|
167
|
+
// Next character should be a closing square bracket
|
|
168
|
+
// We don't allow flags for Extended CSS attribute selectors
|
|
169
|
+
stream.expect(cssTokenizer.TokenType.CloseSquareBracket);
|
|
170
|
+
stream.advance();
|
|
171
|
+
converted.push(constants.COLON);
|
|
172
|
+
convertAndPushPseudo(attr);
|
|
173
|
+
let processedValue = value.slice(1, -1); // omit the quotes
|
|
174
|
+
if (attr === PseudoClasses.Has) {
|
|
175
|
+
// TODO: Optimize this to avoid double tokenization
|
|
176
|
+
processedValue = CssSelectorConverter.convertToAdg(processedValue).result;
|
|
177
|
+
}
|
|
178
|
+
converted.push(processedValue);
|
|
179
|
+
converted.push(constants.CLOSE_PARENTHESIS);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
converted.push(stream.source.slice(token.start, token.end));
|
|
183
|
+
// Advance the token
|
|
184
|
+
stream.advance();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const convertedSelectorList = converted.join(constants.EMPTY);
|
|
188
|
+
return conversionResult.createConversionResult(convertedSelectorList, stream.source !== convertedSelectorList);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
exports.CssSelectorConverter = CssSelectorConverter;
|
|
193
|
+
exports.ERROR_MESSAGES = ERROR_MESSAGES;
|