@adguard/agtree 2.1.3 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ast-utils/clone.js +65 -0
- package/dist/cjs/ast-utils/modifiers.js +56 -0
- package/dist/cjs/ast-utils/network-rules.js +43 -0
- package/dist/cjs/ast-utils/scriptlets.js +93 -0
- package/dist/cjs/common/abp-snippet-injection-body-common.js +18 -0
- package/dist/cjs/common/agent-common.js +58 -0
- package/dist/cjs/common/ubo-selector-common.js +18 -0
- package/dist/cjs/compatibility-tables/base.js +264 -0
- package/dist/cjs/compatibility-tables/compatibility-table-data.js +15 -0
- package/dist/cjs/compatibility-tables/modifiers.js +57 -0
- package/dist/cjs/compatibility-tables/platforms.js +58 -0
- package/dist/cjs/compatibility-tables/redirects.js +102 -0
- package/dist/cjs/compatibility-tables/schemas/base.js +116 -0
- package/dist/cjs/compatibility-tables/schemas/modifier.js +107 -0
- package/dist/cjs/compatibility-tables/schemas/platform.js +71 -0
- package/dist/cjs/compatibility-tables/schemas/redirect.js +31 -0
- package/dist/cjs/compatibility-tables/schemas/resource-type.js +39 -0
- package/dist/cjs/compatibility-tables/schemas/scriptlet.js +81 -0
- package/dist/cjs/compatibility-tables/scriptlets.js +30 -0
- package/dist/cjs/compatibility-tables/utils/platform-helpers.js +112 -0
- package/dist/cjs/compatibility-tables/utils/resource-type-helpers.js +64 -0
- package/dist/cjs/compatibility-tables/utils/zod-camelcase.js +27 -0
- package/dist/cjs/converter/base-interfaces/base-converter.js +61 -0
- package/dist/cjs/converter/base-interfaces/conversion-result.js +41 -0
- package/dist/cjs/converter/base-interfaces/rule-converter-base.js +62 -0
- package/dist/cjs/converter/comment/index.js +56 -0
- package/dist/cjs/converter/cosmetic/css.js +71 -0
- package/dist/cjs/converter/cosmetic/element-hiding.js +64 -0
- package/dist/cjs/converter/cosmetic/header-removal.js +126 -0
- package/dist/cjs/converter/cosmetic/html.js +384 -0
- package/dist/cjs/converter/cosmetic/index.js +120 -0
- package/dist/cjs/converter/cosmetic/rule-modifiers/adg.js +81 -0
- package/dist/cjs/converter/cosmetic/scriptlet.js +356 -0
- package/dist/cjs/converter/css/index.js +193 -0
- package/dist/cjs/converter/data/css.js +133 -0
- package/dist/cjs/converter/filter-list.js +90 -0
- package/dist/cjs/converter/index.js +15 -0
- package/dist/cjs/converter/misc/network-rule-modifier.js +313 -0
- package/dist/cjs/converter/network/index.js +101 -0
- package/dist/cjs/converter/raw-filter-list.js +58 -0
- package/dist/cjs/converter/rule.js +83 -0
- package/dist/cjs/deserializer/base-deserializer.js +31 -0
- package/dist/cjs/deserializer/comment/agent-comment-deserializer.js +76 -0
- package/dist/cjs/deserializer/comment/agent-deserializer.js +67 -0
- package/dist/cjs/deserializer/comment/comment-rule-deserializer.js +109 -0
- package/dist/cjs/deserializer/comment/config-comment-deserializer.js +113 -0
- package/dist/cjs/deserializer/comment/hint-comment-deserializer.js +69 -0
- package/dist/cjs/deserializer/comment/hint-deserializer.js +88 -0
- package/dist/cjs/deserializer/comment/metadata-comment-deserializer.js +71 -0
- package/dist/cjs/deserializer/comment/pre-processor-comment-deserializer.js +114 -0
- package/dist/cjs/deserializer/comment/simple-comment-deserializer.js +67 -0
- package/dist/cjs/deserializer/cosmetic/cosmetic-rule-deserializer.js +127 -0
- package/dist/cjs/deserializer/cosmetic/css-injection-body-deserializer.js +55 -0
- package/dist/cjs/deserializer/cosmetic/element-hiding-body-deserializer.js +46 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +37 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +37 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +52 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +38 -0
- package/dist/cjs/deserializer/empty-rule-deserializer.js +46 -0
- package/dist/cjs/deserializer/filterlist-deserializer.js +83 -0
- package/dist/cjs/deserializer/index.js +15 -0
- package/dist/cjs/deserializer/invalid-rule-deserializer.js +48 -0
- package/dist/cjs/deserializer/invalid-rule-error-node-deserializer.js +48 -0
- package/dist/cjs/deserializer/misc/domain-list-deserializer.js +66 -0
- package/dist/cjs/deserializer/misc/list-item-deserializer.js +65 -0
- package/dist/cjs/deserializer/misc/list-items-deserializer.js +28 -0
- package/dist/cjs/deserializer/misc/logical-expression-deserializer.js +199 -0
- package/dist/cjs/deserializer/misc/modifier-deserializer.js +89 -0
- package/dist/cjs/deserializer/misc/modifier-list-deserializer.js +58 -0
- package/dist/cjs/deserializer/misc/parameter-list-deserializer.js +62 -0
- package/dist/cjs/deserializer/misc/value-deserializer.js +52 -0
- package/dist/cjs/deserializer/network/host-rule-deserializer.js +81 -0
- package/dist/cjs/deserializer/network/hostname-list-deserializer.js +50 -0
- package/dist/cjs/deserializer/network/network-rule-deserializer.js +67 -0
- package/dist/cjs/deserializer/rule-deserializer.js +67 -0
- package/dist/cjs/deserializer/syntax-deserialization-map.js +23 -0
- package/dist/cjs/errors/adblock-syntax-error.js +41 -0
- package/dist/cjs/errors/binary-schema-mismatch-error.js +39 -0
- package/dist/cjs/errors/not-implemented-error.js +33 -0
- package/dist/cjs/errors/rule-conversion-error.js +28 -0
- package/dist/cjs/generator/base-generator.js +29 -0
- package/dist/cjs/generator/comment/agent-comment-generator.js +30 -0
- package/dist/cjs/generator/comment/agent-generator.js +34 -0
- package/dist/cjs/generator/comment/comment-rule-generator.js +102 -0
- package/dist/cjs/generator/comment/config-comment-generator.js +44 -0
- package/dist/cjs/generator/comment/hint-comment-generator.js +27 -0
- package/dist/cjs/generator/comment/hint-generator.js +32 -0
- package/dist/cjs/generator/comment/metadata-comment-generator.js +32 -0
- package/dist/cjs/generator/comment/pre-processor-comment-generator.js +47 -0
- package/dist/cjs/generator/comment/simple-comment-generator.js +28 -0
- package/dist/cjs/generator/cosmetic/body/abp-snippet-injection-body-generator.js +36 -0
- package/dist/cjs/generator/cosmetic/body/adg-scriptlet-injection-body-generator.js +41 -0
- package/dist/cjs/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js +43 -0
- package/dist/cjs/generator/cosmetic/cosmetic-rule-body-generator.js +92 -0
- package/dist/cjs/generator/cosmetic/cosmetic-rule-generator.js +66 -0
- package/dist/cjs/generator/cosmetic/cosmetic-rule-pattern-generator.js +41 -0
- package/dist/cjs/generator/css/adg-css-injection-generator.js +41 -0
- package/dist/cjs/generator/filterlist-generator.js +57 -0
- package/dist/cjs/generator/index.js +17 -0
- package/dist/cjs/generator/misc/domain-list-generator.js +25 -0
- package/dist/cjs/generator/misc/list-items-generator.js +38 -0
- package/dist/cjs/generator/misc/logical-expression-generator.js +47 -0
- package/dist/cjs/generator/misc/modifier-generator.js +33 -0
- package/dist/cjs/generator/misc/modifier-list-generator.js +28 -0
- package/dist/cjs/generator/misc/parameter-list-generator.js +41 -0
- package/dist/cjs/generator/misc/value-generator.js +23 -0
- package/dist/cjs/generator/network/host-rule-generator.js +38 -0
- package/dist/cjs/generator/network/network-rule-generator.js +37 -0
- package/dist/cjs/generator/rule-generator.js +64 -0
- package/dist/cjs/index.js +201 -0
- package/dist/cjs/marshalling-utils/comment/agent-comment-common.js +22 -0
- package/dist/cjs/marshalling-utils/comment/agent-common.js +43 -0
- package/dist/cjs/marshalling-utils/comment/config-comment-common.js +58 -0
- package/dist/cjs/marshalling-utils/comment/hint-comment-common.js +23 -0
- package/dist/cjs/marshalling-utils/comment/hint-common.js +60 -0
- package/dist/cjs/marshalling-utils/comment/metadata-comment-common.js +44 -0
- package/dist/cjs/marshalling-utils/comment/pre-processor-comment-common.js +63 -0
- package/dist/cjs/marshalling-utils/comment/simple-comment-common.js +23 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +64 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +68 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/css-injection-body-common.js +25 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/element-hiding-body-common.js +22 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +116 -0
- package/dist/cjs/marshalling-utils/cosmetic/cosmetic-rule-common.js +51 -0
- package/dist/cjs/marshalling-utils/empty-rule-common.js +21 -0
- package/dist/cjs/marshalling-utils/filter-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/invalid-rule-common.js +22 -0
- package/dist/cjs/marshalling-utils/invalid-rule-error-node-common.js +23 -0
- package/dist/cjs/marshalling-utils/misc/binary-type-common.js +67 -0
- package/dist/cjs/marshalling-utils/misc/domain-list-common.js +39 -0
- package/dist/cjs/marshalling-utils/misc/host-rule-common.js +26 -0
- package/dist/cjs/marshalling-utils/misc/hostname-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/misc/list-item-common.js +23 -0
- package/dist/cjs/marshalling-utils/misc/logical-expression-common.js +89 -0
- package/dist/cjs/marshalling-utils/misc/modifier-common.js +236 -0
- package/dist/cjs/marshalling-utils/misc/modifier-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/misc/parameter-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/misc/value-common.js +23 -0
- package/dist/cjs/marshalling-utils/network/network-rule-common.js +26 -0
- package/dist/cjs/marshalling-utils/syntax-serialization-map.js +32 -0
- package/dist/cjs/nodes/index.js +180 -0
- package/dist/cjs/package.json.js +11 -0
- package/dist/cjs/parser/base-parser.js +32 -0
- package/dist/cjs/parser/comment/agent-comment-parser.js +121 -0
- package/dist/cjs/parser/comment/agent-parser.js +111 -0
- package/dist/cjs/parser/comment/comment-parser.js +110 -0
- package/dist/cjs/parser/comment/config-comment-parser.js +139 -0
- package/dist/cjs/parser/comment/hint-comment-parser.js +119 -0
- package/dist/cjs/parser/comment/hint-parser.js +131 -0
- package/dist/cjs/parser/comment/metadata-comment-parser.js +131 -0
- package/dist/cjs/parser/comment/preprocessor-parser.js +201 -0
- package/dist/cjs/parser/comment/simple-comment-parser.js +108 -0
- package/dist/cjs/parser/cosmetic/body/abp-snippet-injection-body-parser.js +81 -0
- package/dist/cjs/parser/cosmetic/body/adg-scriptlet-injection-body-parser.js +151 -0
- package/dist/cjs/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js +112 -0
- package/dist/cjs/parser/cosmetic/cosmetic-rule-parser.js +456 -0
- package/dist/cjs/parser/css/adg-css-injection-parser.js +213 -0
- package/dist/cjs/parser/css/balancing.js +97 -0
- package/dist/cjs/parser/css/constants.js +21 -0
- package/dist/cjs/parser/css/css-token-stream.js +345 -0
- package/dist/cjs/parser/css/ubo-selector-parser.js +373 -0
- package/dist/cjs/parser/filterlist-parser.js +104 -0
- package/dist/cjs/parser/index.js +21 -0
- package/dist/cjs/parser/misc/app-list-parser.js +47 -0
- package/dist/cjs/parser/misc/domain-list-parser.js +54 -0
- package/dist/cjs/parser/misc/list-items-parser.js +116 -0
- package/dist/cjs/parser/misc/logical-expression-parser.js +283 -0
- package/dist/cjs/parser/misc/method-list-parser.js +48 -0
- package/dist/cjs/parser/misc/modifier-list.js +72 -0
- package/dist/cjs/parser/misc/modifier-parser.js +91 -0
- package/dist/cjs/parser/misc/parameter-list-parser.js +74 -0
- package/dist/cjs/parser/misc/stealth-option-list-parser.js +48 -0
- package/dist/cjs/parser/misc/ubo-parameter-list-parser.js +148 -0
- package/dist/cjs/parser/misc/value-parser.js +39 -0
- package/dist/cjs/parser/network/host-rule-parser.js +151 -0
- package/dist/cjs/parser/network/network-rule-parser.js +113 -0
- package/dist/cjs/parser/options.js +25 -0
- package/dist/cjs/parser/rule-parser.js +194 -0
- package/dist/cjs/serializer/base-serializer.js +31 -0
- package/dist/cjs/serializer/comment/agent-comment-serializer.js +73 -0
- package/dist/cjs/serializer/comment/agent-serializer.js +70 -0
- package/dist/cjs/serializer/comment/comment-rule-serializer.js +107 -0
- package/dist/cjs/serializer/comment/config-comment-serializer.js +84 -0
- package/dist/cjs/serializer/comment/hint-comment-serializer.js +64 -0
- package/dist/cjs/serializer/comment/hint-serializer.js +56 -0
- package/dist/cjs/serializer/comment/metadata-comment-serializer.js +75 -0
- package/dist/cjs/serializer/comment/pre-processor-comment-serializer.js +73 -0
- package/dist/cjs/serializer/comment/simple-comment-serializer.js +54 -0
- package/dist/cjs/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +38 -0
- package/dist/cjs/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +38 -0
- package/dist/cjs/serializer/cosmetic/body/scriptlet-body-serializer.js +49 -0
- package/dist/cjs/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +38 -0
- package/dist/cjs/serializer/cosmetic/cosmetic-rule-serializer.js +131 -0
- package/dist/cjs/serializer/cosmetic/css-injection-body-serializer.js +50 -0
- package/dist/cjs/serializer/cosmetic/element-hiding-body-serializer.js +39 -0
- package/dist/cjs/serializer/empty-rule-serializer.js +36 -0
- package/dist/cjs/serializer/filterlist-serializer.js +48 -0
- package/dist/cjs/serializer/index.js +13 -0
- package/dist/cjs/serializer/invalid-rule-error-node-serializer.js +40 -0
- package/dist/cjs/serializer/invalid-rule-serializer.js +39 -0
- package/dist/cjs/serializer/misc/domain-list-serializer.js +66 -0
- package/dist/cjs/serializer/misc/list-item-serializer.js +57 -0
- package/dist/cjs/serializer/misc/list-items-serializer.js +28 -0
- package/dist/cjs/serializer/misc/logical-expression-serializer.js +138 -0
- package/dist/cjs/serializer/misc/modifier-list-serializer.js +57 -0
- package/dist/cjs/serializer/misc/modifier-serializer.js +51 -0
- package/dist/cjs/serializer/misc/parameter-list-serializer.js +51 -0
- package/dist/cjs/serializer/misc/value-serializer.js +52 -0
- package/dist/cjs/serializer/network/host-rule-serializer.js +72 -0
- package/dist/cjs/serializer/network/hostname-list-serializer.js +49 -0
- package/dist/cjs/serializer/network/network-rule-serializer.js +56 -0
- package/dist/cjs/serializer/rule-serializer.js +63 -0
- package/dist/cjs/utils/adblockers.js +57 -0
- package/dist/cjs/utils/binary-schema-version.js +19 -0
- package/dist/cjs/utils/byte-buffer.js +93 -0
- package/dist/cjs/utils/categorizer.js +46 -0
- package/dist/cjs/utils/clone.js +30 -0
- package/dist/cjs/utils/constants.js +380 -0
- package/dist/cjs/utils/cosmetic-rule-separator.js +129 -0
- package/dist/cjs/utils/deep-freeze.js +34 -0
- package/dist/cjs/utils/domain.js +60 -0
- package/dist/cjs/utils/error.js +51 -0
- package/dist/cjs/utils/index.js +69 -0
- package/dist/cjs/utils/input-byte-buffer.js +259 -0
- package/dist/cjs/utils/is-chromium.js +22 -0
- package/dist/cjs/utils/logical-expression.js +94 -0
- package/dist/cjs/utils/multi-value-map.js +35 -0
- package/dist/cjs/utils/output-byte-buffer.js +225 -0
- package/dist/cjs/utils/position-provider.js +75 -0
- package/dist/cjs/utils/quotes.js +218 -0
- package/dist/cjs/utils/regexp.js +190 -0
- package/dist/cjs/utils/string.js +560 -0
- package/dist/cjs/utils/text-decoder-polyfill.js +109 -0
- package/dist/cjs/utils/text-encoder-polyfill.js +80 -0
- package/dist/cjs/utils/type-guards.js +52 -0
- package/dist/cjs/validator/constants.js +222 -0
- package/dist/cjs/validator/helpers.js +49 -0
- package/dist/cjs/validator/index.js +176 -0
- package/dist/cjs/validator/value.js +565 -0
- package/dist/cjs/version.js +20 -0
- package/dist/esm/ast-utils/clone.mjs +61 -0
- package/dist/esm/ast-utils/modifiers.mjs +53 -0
- package/dist/esm/ast-utils/network-rules.mjs +41 -0
- package/dist/esm/ast-utils/scriptlets.mjs +87 -0
- package/dist/esm/common/abp-snippet-injection-body-common.mjs +16 -0
- package/dist/esm/common/agent-common.mjs +56 -0
- package/dist/esm/common/ubo-selector-common.mjs +18 -0
- package/dist/esm/compatibility-tables/base.mjs +262 -0
- package/dist/esm/compatibility-tables/compatibility-table-data.mjs +11 -0
- package/dist/esm/compatibility-tables/modifiers.mjs +55 -0
- package/dist/esm/compatibility-tables/platforms.mjs +58 -0
- package/dist/esm/compatibility-tables/redirects.mjs +100 -0
- package/dist/esm/compatibility-tables/schemas/base.mjs +111 -0
- package/dist/esm/compatibility-tables/schemas/modifier.mjs +105 -0
- package/dist/esm/compatibility-tables/schemas/platform.mjs +69 -0
- package/dist/esm/compatibility-tables/schemas/redirect.mjs +29 -0
- package/dist/esm/compatibility-tables/schemas/resource-type.mjs +37 -0
- package/dist/esm/compatibility-tables/schemas/scriptlet.mjs +79 -0
- package/dist/esm/compatibility-tables/scriptlets.mjs +28 -0
- package/dist/esm/compatibility-tables/utils/platform-helpers.mjs +105 -0
- package/dist/esm/compatibility-tables/utils/resource-type-helpers.mjs +61 -0
- package/dist/esm/compatibility-tables/utils/zod-camelcase.mjs +25 -0
- package/dist/esm/converter/base-interfaces/base-converter.mjs +59 -0
- package/dist/esm/converter/base-interfaces/conversion-result.mjs +38 -0
- package/dist/esm/converter/base-interfaces/rule-converter-base.mjs +60 -0
- package/dist/esm/converter/comment/index.mjs +54 -0
- package/dist/esm/converter/cosmetic/css.mjs +69 -0
- package/dist/esm/converter/cosmetic/element-hiding.mjs +62 -0
- package/dist/esm/converter/cosmetic/header-removal.mjs +123 -0
- package/dist/esm/converter/cosmetic/html.mjs +381 -0
- package/dist/esm/converter/cosmetic/index.mjs +118 -0
- package/dist/esm/converter/cosmetic/rule-modifiers/adg.mjs +79 -0
- package/dist/esm/converter/cosmetic/scriptlet.mjs +354 -0
- package/dist/esm/converter/css/index.mjs +190 -0
- package/dist/esm/converter/data/css.mjs +126 -0
- package/dist/esm/converter/filter-list.mjs +88 -0
- package/dist/esm/converter/index.mjs +8 -0
- package/dist/esm/converter/misc/network-rule-modifier.mjs +311 -0
- package/dist/esm/converter/network/index.mjs +99 -0
- package/dist/esm/converter/raw-filter-list.mjs +56 -0
- package/dist/esm/converter/rule.mjs +81 -0
- package/dist/esm/deserializer/base-deserializer.mjs +29 -0
- package/dist/esm/deserializer/comment/agent-comment-deserializer.mjs +74 -0
- package/dist/esm/deserializer/comment/agent-deserializer.mjs +65 -0
- package/dist/esm/deserializer/comment/comment-rule-deserializer.mjs +107 -0
- package/dist/esm/deserializer/comment/config-comment-deserializer.mjs +111 -0
- package/dist/esm/deserializer/comment/hint-comment-deserializer.mjs +67 -0
- package/dist/esm/deserializer/comment/hint-deserializer.mjs +85 -0
- package/dist/esm/deserializer/comment/metadata-comment-deserializer.mjs +69 -0
- package/dist/esm/deserializer/comment/pre-processor-comment-deserializer.mjs +112 -0
- package/dist/esm/deserializer/comment/simple-comment-deserializer.mjs +65 -0
- package/dist/esm/deserializer/cosmetic/cosmetic-rule-deserializer.mjs +125 -0
- package/dist/esm/deserializer/cosmetic/css-injection-body-deserializer.mjs +53 -0
- package/dist/esm/deserializer/cosmetic/element-hiding-body-deserializer.mjs +44 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.mjs +35 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.mjs +35 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.mjs +50 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.mjs +35 -0
- package/dist/esm/deserializer/empty-rule-deserializer.mjs +44 -0
- package/dist/esm/deserializer/filterlist-deserializer.mjs +81 -0
- package/dist/esm/deserializer/index.mjs +8 -0
- package/dist/esm/deserializer/invalid-rule-deserializer.mjs +46 -0
- package/dist/esm/deserializer/invalid-rule-error-node-deserializer.mjs +46 -0
- package/dist/esm/deserializer/misc/domain-list-deserializer.mjs +64 -0
- package/dist/esm/deserializer/misc/list-item-deserializer.mjs +63 -0
- package/dist/esm/deserializer/misc/list-items-deserializer.mjs +26 -0
- package/dist/esm/deserializer/misc/logical-expression-deserializer.mjs +196 -0
- package/dist/esm/deserializer/misc/modifier-deserializer.mjs +87 -0
- package/dist/esm/deserializer/misc/modifier-list-deserializer.mjs +56 -0
- package/dist/esm/deserializer/misc/parameter-list-deserializer.mjs +60 -0
- package/dist/esm/deserializer/misc/value-deserializer.mjs +50 -0
- package/dist/esm/deserializer/network/host-rule-deserializer.mjs +79 -0
- package/dist/esm/deserializer/network/hostname-list-deserializer.mjs +48 -0
- package/dist/esm/deserializer/network/network-rule-deserializer.mjs +65 -0
- package/dist/esm/deserializer/rule-deserializer.mjs +65 -0
- package/dist/esm/deserializer/syntax-deserialization-map.mjs +21 -0
- package/dist/esm/errors/adblock-syntax-error.mjs +39 -0
- package/dist/esm/errors/binary-schema-mismatch-error.mjs +37 -0
- package/dist/esm/errors/not-implemented-error.mjs +31 -0
- package/dist/esm/errors/rule-conversion-error.mjs +26 -0
- package/dist/esm/generator/base-generator.mjs +27 -0
- package/dist/esm/generator/comment/agent-comment-generator.mjs +28 -0
- package/dist/esm/generator/comment/agent-generator.mjs +32 -0
- package/dist/esm/generator/comment/comment-rule-generator.mjs +100 -0
- package/dist/esm/generator/comment/config-comment-generator.mjs +42 -0
- package/dist/esm/generator/comment/hint-comment-generator.mjs +25 -0
- package/dist/esm/generator/comment/hint-generator.mjs +30 -0
- package/dist/esm/generator/comment/metadata-comment-generator.mjs +30 -0
- package/dist/esm/generator/comment/pre-processor-comment-generator.mjs +45 -0
- package/dist/esm/generator/comment/simple-comment-generator.mjs +26 -0
- package/dist/esm/generator/cosmetic/body/abp-snippet-injection-body-generator.mjs +34 -0
- package/dist/esm/generator/cosmetic/body/adg-scriptlet-injection-body-generator.mjs +39 -0
- package/dist/esm/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.mjs +41 -0
- package/dist/esm/generator/cosmetic/cosmetic-rule-body-generator.mjs +90 -0
- package/dist/esm/generator/cosmetic/cosmetic-rule-generator.mjs +64 -0
- package/dist/esm/generator/cosmetic/cosmetic-rule-pattern-generator.mjs +39 -0
- package/dist/esm/generator/css/adg-css-injection-generator.mjs +39 -0
- package/dist/esm/generator/filterlist-generator.mjs +55 -0
- package/dist/esm/generator/index.mjs +9 -0
- package/dist/esm/generator/misc/domain-list-generator.mjs +23 -0
- package/dist/esm/generator/misc/list-items-generator.mjs +36 -0
- package/dist/esm/generator/misc/logical-expression-generator.mjs +45 -0
- package/dist/esm/generator/misc/modifier-generator.mjs +31 -0
- package/dist/esm/generator/misc/modifier-list-generator.mjs +26 -0
- package/dist/esm/generator/misc/parameter-list-generator.mjs +39 -0
- package/dist/esm/generator/misc/value-generator.mjs +21 -0
- package/dist/esm/generator/network/host-rule-generator.mjs +36 -0
- package/dist/esm/generator/network/network-rule-generator.mjs +35 -0
- package/dist/esm/generator/rule-generator.mjs +62 -0
- package/dist/esm/index.mjs +70 -0
- package/dist/esm/marshalling-utils/comment/agent-comment-common.mjs +22 -0
- package/dist/esm/marshalling-utils/comment/agent-common.mjs +41 -0
- package/dist/esm/marshalling-utils/comment/config-comment-common.mjs +56 -0
- package/dist/esm/marshalling-utils/comment/hint-comment-common.mjs +23 -0
- package/dist/esm/marshalling-utils/comment/hint-common.mjs +57 -0
- package/dist/esm/marshalling-utils/comment/metadata-comment-common.mjs +42 -0
- package/dist/esm/marshalling-utils/comment/pre-processor-comment-common.mjs +60 -0
- package/dist/esm/marshalling-utils/comment/simple-comment-common.mjs +23 -0
- package/dist/esm/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.mjs +62 -0
- package/dist/esm/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.mjs +66 -0
- package/dist/esm/marshalling-utils/cosmetic/body/css-injection-body-common.mjs +25 -0
- package/dist/esm/marshalling-utils/cosmetic/body/element-hiding-body-common.mjs +22 -0
- package/dist/esm/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.mjs +114 -0
- package/dist/esm/marshalling-utils/cosmetic/cosmetic-rule-common.mjs +49 -0
- package/dist/esm/marshalling-utils/empty-rule-common.mjs +21 -0
- package/dist/esm/marshalling-utils/filter-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/invalid-rule-common.mjs +22 -0
- package/dist/esm/marshalling-utils/invalid-rule-error-node-common.mjs +23 -0
- package/dist/esm/marshalling-utils/misc/binary-type-common.mjs +67 -0
- package/dist/esm/marshalling-utils/misc/domain-list-common.mjs +37 -0
- package/dist/esm/marshalling-utils/misc/host-rule-common.mjs +26 -0
- package/dist/esm/marshalling-utils/misc/hostname-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/misc/list-item-common.mjs +23 -0
- package/dist/esm/marshalling-utils/misc/logical-expression-common.mjs +86 -0
- package/dist/esm/marshalling-utils/misc/modifier-common.mjs +232 -0
- package/dist/esm/marshalling-utils/misc/modifier-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/misc/parameter-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/misc/value-common.mjs +23 -0
- package/dist/esm/marshalling-utils/network/network-rule-common.mjs +26 -0
- package/dist/esm/marshalling-utils/syntax-serialization-map.mjs +30 -0
- package/dist/esm/nodes/index.mjs +180 -0
- package/dist/esm/package.json.mjs +9 -0
- package/dist/esm/parser/base-parser.mjs +30 -0
- package/dist/esm/parser/comment/agent-comment-parser.mjs +119 -0
- package/dist/esm/parser/comment/agent-parser.mjs +109 -0
- package/dist/esm/parser/comment/comment-parser.mjs +108 -0
- package/dist/esm/parser/comment/config-comment-parser.mjs +137 -0
- package/dist/esm/parser/comment/hint-comment-parser.mjs +117 -0
- package/dist/esm/parser/comment/hint-parser.mjs +129 -0
- package/dist/esm/parser/comment/metadata-comment-parser.mjs +129 -0
- package/dist/esm/parser/comment/preprocessor-parser.mjs +199 -0
- package/dist/esm/parser/comment/simple-comment-parser.mjs +106 -0
- package/dist/esm/parser/cosmetic/body/abp-snippet-injection-body-parser.mjs +79 -0
- package/dist/esm/parser/cosmetic/body/adg-scriptlet-injection-body-parser.mjs +149 -0
- package/dist/esm/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.mjs +110 -0
- package/dist/esm/parser/cosmetic/cosmetic-rule-parser.mjs +453 -0
- package/dist/esm/parser/css/adg-css-injection-parser.mjs +208 -0
- package/dist/esm/parser/css/balancing.mjs +94 -0
- package/dist/esm/parser/css/constants.mjs +18 -0
- package/dist/esm/parser/css/css-token-stream.mjs +343 -0
- package/dist/esm/parser/css/ubo-selector-parser.mjs +369 -0
- package/dist/esm/parser/filterlist-parser.mjs +102 -0
- package/dist/esm/parser/index.mjs +11 -0
- package/dist/esm/parser/misc/app-list-parser.mjs +45 -0
- package/dist/esm/parser/misc/domain-list-parser.mjs +52 -0
- package/dist/esm/parser/misc/list-items-parser.mjs +113 -0
- package/dist/esm/parser/misc/logical-expression-parser.mjs +281 -0
- package/dist/esm/parser/misc/method-list-parser.mjs +46 -0
- package/dist/esm/parser/misc/modifier-list.mjs +70 -0
- package/dist/esm/parser/misc/modifier-parser.mjs +89 -0
- package/dist/esm/parser/misc/parameter-list-parser.mjs +72 -0
- package/dist/esm/parser/misc/stealth-option-list-parser.mjs +46 -0
- package/dist/esm/parser/misc/ubo-parameter-list-parser.mjs +146 -0
- package/dist/esm/parser/misc/value-parser.mjs +37 -0
- package/dist/esm/parser/network/host-rule-parser.mjs +130 -0
- package/dist/esm/parser/network/network-rule-parser.mjs +111 -0
- package/dist/esm/parser/options.mjs +23 -0
- package/dist/esm/parser/rule-parser.mjs +192 -0
- package/dist/esm/serializer/base-serializer.mjs +29 -0
- package/dist/esm/serializer/comment/agent-comment-serializer.mjs +71 -0
- package/dist/esm/serializer/comment/agent-serializer.mjs +68 -0
- package/dist/esm/serializer/comment/comment-rule-serializer.mjs +105 -0
- package/dist/esm/serializer/comment/config-comment-serializer.mjs +82 -0
- package/dist/esm/serializer/comment/hint-comment-serializer.mjs +62 -0
- package/dist/esm/serializer/comment/hint-serializer.mjs +54 -0
- package/dist/esm/serializer/comment/metadata-comment-serializer.mjs +73 -0
- package/dist/esm/serializer/comment/pre-processor-comment-serializer.mjs +71 -0
- package/dist/esm/serializer/comment/simple-comment-serializer.mjs +52 -0
- package/dist/esm/serializer/cosmetic/body/abp-snippet-injection-body-serializer.mjs +36 -0
- package/dist/esm/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.mjs +36 -0
- package/dist/esm/serializer/cosmetic/body/scriptlet-body-serializer.mjs +47 -0
- package/dist/esm/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.mjs +36 -0
- package/dist/esm/serializer/cosmetic/cosmetic-rule-serializer.mjs +129 -0
- package/dist/esm/serializer/cosmetic/css-injection-body-serializer.mjs +48 -0
- package/dist/esm/serializer/cosmetic/element-hiding-body-serializer.mjs +37 -0
- package/dist/esm/serializer/empty-rule-serializer.mjs +34 -0
- package/dist/esm/serializer/filterlist-serializer.mjs +46 -0
- package/dist/esm/serializer/index.mjs +7 -0
- package/dist/esm/serializer/invalid-rule-error-node-serializer.mjs +38 -0
- package/dist/esm/serializer/invalid-rule-serializer.mjs +37 -0
- package/dist/esm/serializer/misc/domain-list-serializer.mjs +64 -0
- package/dist/esm/serializer/misc/list-item-serializer.mjs +55 -0
- package/dist/esm/serializer/misc/list-items-serializer.mjs +26 -0
- package/dist/esm/serializer/misc/logical-expression-serializer.mjs +136 -0
- package/dist/esm/serializer/misc/modifier-list-serializer.mjs +55 -0
- package/dist/esm/serializer/misc/modifier-serializer.mjs +49 -0
- package/dist/esm/serializer/misc/parameter-list-serializer.mjs +49 -0
- package/dist/esm/serializer/misc/value-serializer.mjs +50 -0
- package/dist/esm/serializer/network/host-rule-serializer.mjs +70 -0
- package/dist/esm/serializer/network/hostname-list-serializer.mjs +47 -0
- package/dist/esm/serializer/network/network-rule-serializer.mjs +54 -0
- package/dist/esm/serializer/rule-serializer.mjs +61 -0
- package/dist/esm/utils/adblockers.mjs +57 -0
- package/dist/esm/utils/binary-schema-version.mjs +17 -0
- package/dist/esm/utils/byte-buffer.mjs +91 -0
- package/dist/esm/utils/categorizer.mjs +44 -0
- package/dist/esm/utils/clone.mjs +28 -0
- package/dist/esm/utils/constants.mjs +249 -0
- package/dist/esm/utils/cosmetic-rule-separator.mjs +127 -0
- package/dist/esm/utils/deep-freeze.mjs +32 -0
- package/dist/esm/utils/domain.mjs +56 -0
- package/dist/esm/utils/error.mjs +49 -0
- package/dist/esm/utils/index.mjs +21 -0
- package/dist/esm/utils/input-byte-buffer.mjs +257 -0
- package/dist/esm/utils/is-chromium.mjs +20 -0
- package/dist/esm/utils/logical-expression.mjs +92 -0
- package/dist/esm/utils/multi-value-map.mjs +33 -0
- package/dist/esm/utils/output-byte-buffer.mjs +223 -0
- package/dist/esm/utils/position-provider.mjs +73 -0
- package/dist/esm/utils/quotes.mjs +215 -0
- package/dist/esm/utils/regexp.mjs +176 -0
- package/dist/esm/utils/string.mjs +556 -0
- package/dist/esm/utils/text-decoder-polyfill.mjs +107 -0
- package/dist/esm/utils/text-encoder-polyfill.mjs +78 -0
- package/dist/esm/utils/type-guards.mjs +47 -0
- package/dist/esm/validator/constants.mjs +210 -0
- package/dist/esm/validator/helpers.mjs +45 -0
- package/dist/esm/validator/index.mjs +174 -0
- package/dist/esm/validator/value.mjs +563 -0
- package/dist/esm/version.mjs +18 -0
- package/dist/types/ast-utils/clone.d.ts +26 -0
- package/dist/types/ast-utils/filter-list.d.ts +11 -0
- package/dist/types/ast-utils/modifiers.d.ts +20 -0
- package/dist/types/ast-utils/network-rules.d.ts +15 -0
- package/dist/types/ast-utils/scriptlets.d.ts +52 -0
- package/dist/types/common/abp-snippet-injection-body-common.d.ts +8 -0
- package/dist/types/common/agent-common.d.ts +10 -0
- package/dist/types/common/ubo-selector-common.d.ts +9 -0
- package/dist/types/compatibility-tables/base.d.ts +157 -0
- package/dist/types/compatibility-tables/compatibility-table-data.d.ts +67 -0
- package/dist/types/compatibility-tables/index.d.ts +13 -0
- package/dist/types/compatibility-tables/modifiers.d.ts +22 -0
- package/dist/types/compatibility-tables/platforms.d.ts +47 -0
- package/dist/types/compatibility-tables/redirects.d.ts +33 -0
- package/dist/types/compatibility-tables/schemas/base.d.ts +135 -0
- package/dist/types/compatibility-tables/schemas/index.d.ts +8 -0
- package/dist/types/compatibility-tables/schemas/modifier.d.ts +31 -0
- package/dist/types/compatibility-tables/schemas/platform.d.ts +16 -0
- package/dist/types/compatibility-tables/schemas/redirect.d.ts +25 -0
- package/dist/types/compatibility-tables/schemas/resource-type.d.ts +27 -0
- package/dist/types/compatibility-tables/schemas/scriptlet.d.ts +31 -0
- package/dist/types/compatibility-tables/scriptlets.d.ts +15 -0
- package/dist/types/compatibility-tables/types.d.ts +34 -0
- package/dist/types/compatibility-tables/utils/platform-helpers.d.ts +44 -0
- package/dist/types/compatibility-tables/utils/resource-type-helpers.d.ts +20 -0
- package/dist/types/compatibility-tables/utils/zod-camelcase.d.ts +15 -0
- package/dist/types/converter/base-interfaces/base-converter.d.ts +42 -0
- package/dist/types/converter/base-interfaces/conversion-result.d.ts +43 -0
- package/dist/types/converter/base-interfaces/rule-converter-base.d.ts +44 -0
- package/dist/types/converter/comment/index.d.ts +23 -0
- package/dist/types/converter/cosmetic/css.d.ts +23 -0
- package/dist/types/converter/cosmetic/element-hiding.d.ts +23 -0
- package/dist/types/converter/cosmetic/header-removal.d.ts +37 -0
- package/dist/types/converter/cosmetic/html.d.ts +54 -0
- package/dist/types/converter/cosmetic/index.d.ts +33 -0
- package/dist/types/converter/cosmetic/rule-modifiers/adg.d.ts +21 -0
- package/dist/types/converter/cosmetic/scriptlet.d.ts +33 -0
- package/dist/types/converter/css/index.d.ts +23 -0
- package/dist/types/converter/data/css.d.ts +48 -0
- package/dist/types/converter/filter-list.d.ts +31 -0
- package/dist/types/converter/index.d.ts +5 -0
- package/dist/types/converter/misc/network-rule-modifier.d.ts +35 -0
- package/dist/types/converter/network/index.d.ts +33 -0
- package/dist/types/converter/raw-filter-list.d.ts +31 -0
- package/dist/types/converter/raw-rule.d.ts +28 -0
- package/dist/types/converter/rule.d.ts +37 -0
- package/dist/types/deserializer/base-deserializer.d.ts +15 -0
- package/dist/types/deserializer/comment/agent-comment-deserializer.d.ts +34 -0
- package/dist/types/deserializer/comment/agent-deserializer.d.ts +25 -0
- package/dist/types/deserializer/comment/comment-rule-deserializer.d.ts +69 -0
- package/dist/types/deserializer/comment/config-comment-deserializer.d.ts +27 -0
- package/dist/types/deserializer/comment/hint-comment-deserializer.d.ts +24 -0
- package/dist/types/deserializer/comment/hint-deserializer.d.ts +26 -0
- package/dist/types/deserializer/comment/metadata-comment-deserializer.d.ts +26 -0
- package/dist/types/deserializer/comment/pre-processor-comment-deserializer.d.ts +29 -0
- package/dist/types/deserializer/comment/simple-comment-deserializer.d.ts +26 -0
- package/dist/types/deserializer/cosmetic/cosmetic-rule-deserializer.d.ts +12 -0
- package/dist/types/deserializer/cosmetic/css-injection-body-deserializer.d.ts +12 -0
- package/dist/types/deserializer/cosmetic/element-hiding-body-deserializer.d.ts +12 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.d.ts +13 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.d.ts +13 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.d.ts +15 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.d.ts +14 -0
- package/dist/types/deserializer/empty-rule-deserializer.d.ts +12 -0
- package/dist/types/deserializer/filterlist-deserializer.d.ts +30 -0
- package/dist/types/deserializer/index.d.ts +2 -0
- package/dist/types/deserializer/invalid-rule-deserializer.d.ts +12 -0
- package/dist/types/deserializer/invalid-rule-error-node-deserializer.d.ts +12 -0
- package/dist/types/deserializer/misc/domain-list-deserializer.d.ts +15 -0
- package/dist/types/deserializer/misc/list-item-deserializer.d.ts +13 -0
- package/dist/types/deserializer/misc/list-items-deserializer.d.ts +12 -0
- package/dist/types/deserializer/misc/logical-expression-deserializer.d.ts +55 -0
- package/dist/types/deserializer/misc/modifier-deserializer.d.ts +18 -0
- package/dist/types/deserializer/misc/modifier-list-deserializer.d.ts +20 -0
- package/dist/types/deserializer/misc/parameter-list-deserializer.d.ts +14 -0
- package/dist/types/deserializer/misc/value-deserializer.d.ts +17 -0
- package/dist/types/deserializer/network/host-rule-deserializer.d.ts +30 -0
- package/dist/types/deserializer/network/hostname-list-deserializer.d.ts +12 -0
- package/dist/types/deserializer/network/network-rule-deserializer.d.ts +18 -0
- package/dist/types/deserializer/rule-deserializer.d.ts +17 -0
- package/dist/types/deserializer/syntax-deserialization-map.d.ts +2 -0
- package/dist/types/errors/adblock-syntax-error.d.ts +25 -0
- package/dist/types/errors/binary-schema-mismatch-error.d.ts +23 -0
- package/dist/types/errors/not-implemented-error.d.ts +14 -0
- package/dist/types/errors/rule-conversion-error.d.ts +14 -0
- package/dist/types/generator/base-generator.d.ts +12 -0
- package/dist/types/generator/comment/agent-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/agent-generator.d.ts +11 -0
- package/dist/types/generator/comment/comment-rule-generator.d.ts +67 -0
- package/dist/types/generator/comment/config-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/hint-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/hint-generator.d.ts +11 -0
- package/dist/types/generator/comment/index.d.ts +2 -0
- package/dist/types/generator/comment/metadata-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/pre-processor-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/simple-comment-generator.d.ts +11 -0
- package/dist/types/generator/cosmetic/body/abp-snippet-injection-body-generator.d.ts +11 -0
- package/dist/types/generator/cosmetic/body/adg-scriptlet-injection-body-generator.d.ts +17 -0
- package/dist/types/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.d.ts +17 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-body-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-generator.d.ts +36 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-pattern-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/index.d.ts +1 -0
- package/dist/types/generator/css/adg-css-injection-generator.d.ts +12 -0
- package/dist/types/generator/css/ubo-selector-generator.d.ts +11 -0
- package/dist/types/generator/filterlist-generator.d.ts +17 -0
- package/dist/types/generator/index.d.ts +3 -0
- package/dist/types/generator/misc/domain-list-generator.d.ts +12 -0
- package/dist/types/generator/misc/list-items-generator.d.ts +22 -0
- package/dist/types/generator/misc/logical-expression-generator.d.ts +11 -0
- package/dist/types/generator/misc/modifier-generator.d.ts +11 -0
- package/dist/types/generator/misc/modifier-list-generator.d.ts +11 -0
- package/dist/types/generator/misc/parameter-list-generator.d.ts +12 -0
- package/dist/types/generator/misc/value-generator.d.ts +11 -0
- package/dist/types/generator/network/host-rule-generator.d.ts +11 -0
- package/dist/types/generator/network/index.d.ts +2 -0
- package/dist/types/generator/network/network-rule-generator.d.ts +11 -0
- package/dist/types/generator/rule-generator.d.ts +21 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/marshalling-utils/comment/agent-comment-common.d.ts +13 -0
- package/dist/types/marshalling-utils/comment/agent-common.d.ts +19 -0
- package/dist/types/marshalling-utils/comment/config-comment-common.d.ts +40 -0
- package/dist/types/marshalling-utils/comment/hint-comment-common.d.ts +14 -0
- package/dist/types/marshalling-utils/comment/hint-common.d.ts +32 -0
- package/dist/types/marshalling-utils/comment/metadata-comment-common.d.ts +20 -0
- package/dist/types/marshalling-utils/comment/pre-processor-comment-common.d.ts +36 -0
- package/dist/types/marshalling-utils/comment/simple-comment-common.d.ts +14 -0
- package/dist/types/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.d.ts +22 -0
- package/dist/types/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.d.ts +9 -0
- package/dist/types/marshalling-utils/cosmetic/body/css-injection-body-common.d.ts +16 -0
- package/dist/types/marshalling-utils/cosmetic/body/element-hiding-body-common.d.ts +13 -0
- package/dist/types/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.d.ts +9 -0
- package/dist/types/marshalling-utils/cosmetic/cosmetic-rule-common.d.ts +27 -0
- package/dist/types/marshalling-utils/empty-rule-common.d.ts +12 -0
- package/dist/types/marshalling-utils/filter-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/invalid-rule-common.d.ts +13 -0
- package/dist/types/marshalling-utils/invalid-rule-error-node-common.d.ts +14 -0
- package/dist/types/marshalling-utils/misc/binary-type-common.d.ts +56 -0
- package/dist/types/marshalling-utils/misc/domain-list-common.d.ts +23 -0
- package/dist/types/marshalling-utils/misc/host-rule-common.d.ts +17 -0
- package/dist/types/marshalling-utils/misc/hostname-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/misc/list-item-common.d.ts +14 -0
- package/dist/types/marshalling-utils/misc/logical-expression-common.d.ts +44 -0
- package/dist/types/marshalling-utils/misc/modifier-common.d.ts +40 -0
- package/dist/types/marshalling-utils/misc/modifier-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/misc/parameter-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/misc/value-common.d.ts +14 -0
- package/dist/types/marshalling-utils/network/network-rule-common.d.ts +17 -0
- package/dist/types/marshalling-utils/syntax-serialization-map.d.ts +2 -0
- package/dist/types/nodes/index.d.ts +1177 -0
- package/dist/types/parser/base-parser.d.ts +16 -0
- package/dist/types/parser/comment/agent-comment-parser.d.ts +42 -0
- package/dist/types/parser/comment/agent-parser.d.ts +33 -0
- package/dist/types/parser/comment/comment-parser.d.ts +76 -0
- package/dist/types/parser/comment/config-comment-parser.d.ts +31 -0
- package/dist/types/parser/comment/hint-comment-parser.d.ts +33 -0
- package/dist/types/parser/comment/hint-parser.d.ts +30 -0
- package/dist/types/parser/comment/metadata-comment-parser.d.ts +29 -0
- package/dist/types/parser/comment/preprocessor-parser.d.ts +43 -0
- package/dist/types/parser/comment/simple-comment-parser.d.ts +33 -0
- package/dist/types/parser/cosmetic/body/abp-snippet-injection-body-parser.d.ts +34 -0
- package/dist/types/parser/cosmetic/body/adg-scriptlet-injection-body-parser.d.ts +47 -0
- package/dist/types/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.d.ts +44 -0
- package/dist/types/parser/cosmetic/cosmetic-rule-parser.d.ts +51 -0
- package/dist/types/parser/css/adg-css-injection-parser.d.ts +28 -0
- package/dist/types/parser/css/balancing.d.ts +36 -0
- package/dist/types/parser/css/constants.d.ts +10 -0
- package/dist/types/parser/css/css-token-stream.d.ts +210 -0
- package/dist/types/parser/css/ubo-selector-parser.d.ts +46 -0
- package/dist/types/parser/filterlist-parser.d.ts +29 -0
- package/dist/types/parser/index.d.ts +5 -0
- package/dist/types/parser/misc/app-list-parser.d.ts +22 -0
- package/dist/types/parser/misc/domain-list-parser.d.ts +26 -0
- package/dist/types/parser/misc/list-items-parser.d.ts +34 -0
- package/dist/types/parser/misc/logical-expression-parser.d.ts +41 -0
- package/dist/types/parser/misc/method-list-parser.d.ts +22 -0
- package/dist/types/parser/misc/modifier-list.d.ts +24 -0
- package/dist/types/parser/misc/modifier-parser.d.ts +21 -0
- package/dist/types/parser/misc/parameter-list-parser.d.ts +14 -0
- package/dist/types/parser/misc/stealth-option-list-parser.d.ts +22 -0
- package/dist/types/parser/misc/ubo-parameter-list-parser.d.ts +18 -0
- package/dist/types/parser/misc/value-parser.d.ts +18 -0
- package/dist/types/parser/network/host-rule-parser.d.ts +35 -0
- package/dist/types/parser/network/network-rule-parser.d.ts +31 -0
- package/dist/types/parser/options.d.ts +41 -0
- package/dist/types/parser/rule-parser.d.ts +78 -0
- package/dist/types/serializer/base-serializer.d.ts +15 -0
- package/dist/types/serializer/comment/agent-comment-serializer.d.ts +34 -0
- package/dist/types/serializer/comment/agent-serializer.d.ts +24 -0
- package/dist/types/serializer/comment/comment-rule-serializer.d.ts +68 -0
- package/dist/types/serializer/comment/config-comment-serializer.d.ts +25 -0
- package/dist/types/serializer/comment/hint-comment-serializer.d.ts +23 -0
- package/dist/types/serializer/comment/hint-serializer.d.ts +24 -0
- package/dist/types/serializer/comment/metadata-comment-serializer.d.ts +25 -0
- package/dist/types/serializer/comment/pre-processor-comment-serializer.d.ts +28 -0
- package/dist/types/serializer/comment/simple-comment-serializer.d.ts +24 -0
- package/dist/types/serializer/cosmetic/body/abp-snippet-injection-body-serializer.d.ts +25 -0
- package/dist/types/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.d.ts +25 -0
- package/dist/types/serializer/cosmetic/body/scriptlet-body-serializer.d.ts +14 -0
- package/dist/types/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.d.ts +25 -0
- package/dist/types/serializer/cosmetic/cosmetic-rule-serializer.d.ts +26 -0
- package/dist/types/serializer/cosmetic/css-injection-body-serializer.d.ts +12 -0
- package/dist/types/serializer/cosmetic/element-hiding-body-serializer.d.ts +12 -0
- package/dist/types/serializer/empty-rule-serializer.d.ts +12 -0
- package/dist/types/serializer/filterlist-serializer.d.ts +16 -0
- package/dist/types/serializer/index.d.ts +1 -0
- package/dist/types/serializer/invalid-rule-error-node-serializer.d.ts +12 -0
- package/dist/types/serializer/invalid-rule-serializer.d.ts +12 -0
- package/dist/types/serializer/misc/domain-list-serializer.d.ts +21 -0
- package/dist/types/serializer/misc/list-item-serializer.d.ts +13 -0
- package/dist/types/serializer/misc/list-items-serializer.d.ts +12 -0
- package/dist/types/serializer/misc/logical-expression-serializer.d.ts +51 -0
- package/dist/types/serializer/misc/modifier-list-serializer.d.ts +20 -0
- package/dist/types/serializer/misc/modifier-serializer.d.ts +18 -0
- package/dist/types/serializer/misc/parameter-list-serializer.d.ts +14 -0
- package/dist/types/serializer/misc/value-serializer.d.ts +17 -0
- package/dist/types/serializer/network/host-rule-serializer.d.ts +30 -0
- package/dist/types/serializer/network/hostname-list-serializer.d.ts +12 -0
- package/dist/types/serializer/network/network-rule-serializer.d.ts +18 -0
- package/dist/types/serializer/rule-serializer.d.ts +17 -0
- package/dist/types/utils/adblockers.d.ts +48 -0
- package/dist/types/utils/binary-schema-version.d.ts +9 -0
- package/dist/types/utils/byte-buffer.d.ts +54 -0
- package/dist/types/utils/categorizer.d.ts +14 -0
- package/dist/types/utils/clone.d.ts +15 -0
- package/dist/types/utils/constants.d.ts +188 -0
- package/dist/types/utils/cosmetic-rule-separator.d.ts +45 -0
- package/dist/types/utils/deep-freeze.d.ts +13 -0
- package/dist/types/utils/domain.d.ts +26 -0
- package/dist/types/utils/error.d.ts +8 -0
- package/dist/types/utils/index.d.ts +15 -0
- package/dist/types/utils/input-byte-buffer.d.ts +140 -0
- package/dist/types/utils/is-chromium.d.ts +7 -0
- package/dist/types/utils/logical-expression.d.ts +45 -0
- package/dist/types/utils/multi-value-map.d.ts +16 -0
- package/dist/types/utils/output-byte-buffer.d.ts +126 -0
- package/dist/types/utils/position-provider.d.ts +46 -0
- package/dist/types/utils/quotes.d.ts +93 -0
- package/dist/types/utils/regexp.d.ts +54 -0
- package/dist/types/utils/storage-interface.d.ts +23 -0
- package/dist/types/utils/string.d.ts +277 -0
- package/dist/types/utils/text-decoder-polyfill.d.ts +14 -0
- package/dist/types/utils/text-encoder-polyfill.d.ts +18 -0
- package/dist/types/utils/type-guards.d.ts +47 -0
- package/dist/types/validator/constants.d.ts +89 -0
- package/dist/types/validator/helpers.d.ts +37 -0
- package/dist/types/validator/index.d.ts +38 -0
- package/dist/types/validator/value.d.ts +11 -0
- package/dist/types/version.d.ts +5 -0
- package/package.json +91 -37
- package/dist/agtree.d.ts +0 -4152
- package/dist/agtree.js +0 -15741
- package/dist/agtree.mjs +0 -15642
- package/dist/compatibility-table-data.js +0 -12634
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var adblockers = require('../../utils/adblockers.js');
|
|
10
|
+
var constants = require('../../utils/constants.js');
|
|
11
|
+
var string = require('../../utils/string.js');
|
|
12
|
+
var index = require('../../nodes/index.js');
|
|
13
|
+
var logicalExpressionParser = require('../misc/logical-expression-parser.js');
|
|
14
|
+
var adblockSyntaxError = require('../../errors/adblock-syntax-error.js');
|
|
15
|
+
var parameterListParser = require('../misc/parameter-list-parser.js');
|
|
16
|
+
var options = require('../options.js');
|
|
17
|
+
var baseParser = require('../base-parser.js');
|
|
18
|
+
var valueParser = require('../misc/value-parser.js');
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Pre-processor directives
|
|
22
|
+
*
|
|
23
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#pre-processor-directives}
|
|
24
|
+
* @see {@link https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#pre-parsing-directives}
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* `PreProcessorParser` is responsible for parsing preprocessor rules.
|
|
28
|
+
* Pre-processor comments are special comments that are used to control the behavior of the filter list processor.
|
|
29
|
+
* Please note that this parser only handles general syntax for now, and does not validate the parameters at
|
|
30
|
+
* the parsing stage.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* If your rule is
|
|
34
|
+
* ```adblock
|
|
35
|
+
* !#if (adguard)
|
|
36
|
+
* ```
|
|
37
|
+
* then the directive's name is `if` and its value is `(adguard)`, but the parameter list
|
|
38
|
+
* is not parsed / validated further.
|
|
39
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#pre-processor-directives}
|
|
40
|
+
* @see {@link https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#pre-parsing-directives}
|
|
41
|
+
*/
|
|
42
|
+
class PreProcessorCommentParser extends baseParser.BaseParser {
|
|
43
|
+
/**
|
|
44
|
+
* Determines whether the rule is a pre-processor rule.
|
|
45
|
+
*
|
|
46
|
+
* @param raw Raw rule
|
|
47
|
+
* @returns `true` if the rule is a pre-processor rule, `false` otherwise
|
|
48
|
+
*/
|
|
49
|
+
static isPreProcessorRule(raw) {
|
|
50
|
+
const trimmed = raw.trim();
|
|
51
|
+
// Avoid this case: !##... (commonly used in AdGuard filters)
|
|
52
|
+
return trimmed.startsWith(constants.PREPROCESSOR_MARKER) && trimmed[constants.PREPROCESSOR_MARKER_LEN] !== constants.HASHMARK;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Parses a raw rule as a pre-processor comment.
|
|
56
|
+
*
|
|
57
|
+
* @param raw Raw input to parse.
|
|
58
|
+
* @param options Global parser options.
|
|
59
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
60
|
+
* @returns
|
|
61
|
+
* Pre-processor comment AST or null (if the raw rule cannot be parsed as a pre-processor comment)
|
|
62
|
+
*/
|
|
63
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
|
|
64
|
+
// Ignore non-pre-processor rules
|
|
65
|
+
if (!PreProcessorCommentParser.isPreProcessorRule(raw)) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
let offset = 0;
|
|
69
|
+
// Ignore whitespace characters before the rule (if any)
|
|
70
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
71
|
+
// Ignore the pre-processor marker
|
|
72
|
+
offset += constants.PREPROCESSOR_MARKER_LEN;
|
|
73
|
+
// Ignore whitespace characters after the pre-processor marker (if any)
|
|
74
|
+
// Note: this is incorrect according to the spec, but we do it for tolerance
|
|
75
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
76
|
+
// Directive name should start at this offset, so we save this offset now
|
|
77
|
+
const nameStart = offset;
|
|
78
|
+
// Consume directive name, so parse the sequence until the first
|
|
79
|
+
// whitespace / opening parenthesis / end of string
|
|
80
|
+
while (offset < raw.length) {
|
|
81
|
+
const ch = raw[offset];
|
|
82
|
+
if (ch === constants.PREPROCESSOR_SEPARATOR || ch === constants.OPEN_PARENTHESIS) {
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
offset += 1;
|
|
86
|
+
}
|
|
87
|
+
// Save name end offset
|
|
88
|
+
const nameEnd = offset;
|
|
89
|
+
// Create name node
|
|
90
|
+
const name = valueParser.ValueParser.parse(raw.slice(nameStart, nameEnd), options$1, baseOffset + nameStart);
|
|
91
|
+
// Ignore whitespace characters after the directive name (if any)
|
|
92
|
+
// Note: this may incorrect according to the spec, but we do it for tolerance
|
|
93
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
94
|
+
// If the directive name is "safari_cb_affinity", then we have a special case
|
|
95
|
+
if (name.value === constants.SAFARI_CB_AFFINITY) {
|
|
96
|
+
// Throw error if there are spaces after the directive name
|
|
97
|
+
if (offset > nameEnd) {
|
|
98
|
+
throw new adblockSyntaxError.AdblockSyntaxError(`Unexpected whitespace after "${constants.SAFARI_CB_AFFINITY}" directive name`, baseOffset + nameEnd, baseOffset + offset);
|
|
99
|
+
}
|
|
100
|
+
// safari_cb_affinity directive optionally accepts a parameter list
|
|
101
|
+
// So at this point we should check if there are parameters or not
|
|
102
|
+
// (cb_affinity directive followed by an opening parenthesis or if we
|
|
103
|
+
// skip the whitespace we reach the end of the string)
|
|
104
|
+
if (string.StringUtils.skipWS(raw, offset) !== raw.length) {
|
|
105
|
+
if (raw[offset] !== constants.OPEN_PARENTHESIS) {
|
|
106
|
+
throw new adblockSyntaxError.AdblockSyntaxError(`Unexpected character '${raw[offset]}' after '${constants.SAFARI_CB_AFFINITY}' directive name`, baseOffset + offset, baseOffset + offset + 1);
|
|
107
|
+
}
|
|
108
|
+
// If we have parameters, then we should parse them
|
|
109
|
+
// Note: we don't validate the parameters at this stage
|
|
110
|
+
// Ignore opening parenthesis
|
|
111
|
+
offset += 1;
|
|
112
|
+
// Save parameter list start offset
|
|
113
|
+
const parameterListStart = offset;
|
|
114
|
+
// Check for closing parenthesis
|
|
115
|
+
const closingParenthesesIndex = string.StringUtils.skipWSBack(raw);
|
|
116
|
+
if (closingParenthesesIndex === -1 || raw[closingParenthesesIndex] !== constants.CLOSE_PARENTHESIS) {
|
|
117
|
+
throw new adblockSyntaxError.AdblockSyntaxError(`Missing closing parenthesis for '${constants.SAFARI_CB_AFFINITY}' directive`, baseOffset + offset, baseOffset + raw.length);
|
|
118
|
+
}
|
|
119
|
+
// Save parameter list end offset
|
|
120
|
+
const parameterListEnd = closingParenthesesIndex;
|
|
121
|
+
// Parse parameters between the opening and closing parentheses
|
|
122
|
+
const result = {
|
|
123
|
+
type: index.CommentRuleType.PreProcessorCommentRule,
|
|
124
|
+
category: index.RuleCategory.Comment,
|
|
125
|
+
syntax: adblockers.AdblockSyntax.Adg,
|
|
126
|
+
name,
|
|
127
|
+
// comma separated list of parameters
|
|
128
|
+
params: parameterListParser.ParameterListParser.parse(raw.slice(parameterListStart, parameterListEnd), options$1, baseOffset + parameterListStart, constants.COMMA),
|
|
129
|
+
};
|
|
130
|
+
if (options$1.includeRaws) {
|
|
131
|
+
result.raws = {
|
|
132
|
+
text: raw,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
if (options$1.isLocIncluded) {
|
|
136
|
+
result.start = baseOffset;
|
|
137
|
+
result.end = baseOffset + raw.length;
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// If we reached the end of the string, then we have a directive without parameters
|
|
143
|
+
// (e.g. "!#safari_cb_affinity" or "!#endif")
|
|
144
|
+
// No need to continue parsing in this case.
|
|
145
|
+
if (offset === raw.length) {
|
|
146
|
+
// Throw error if the directive name is "if" or "include", because these directives
|
|
147
|
+
// should have parameters
|
|
148
|
+
if (name.value === constants.IF || name.value === constants.INCLUDE) {
|
|
149
|
+
throw new adblockSyntaxError.AdblockSyntaxError(`Directive "${name.value}" requires parameters`, baseOffset, baseOffset + raw.length);
|
|
150
|
+
}
|
|
151
|
+
const result = {
|
|
152
|
+
type: index.CommentRuleType.PreProcessorCommentRule,
|
|
153
|
+
category: index.RuleCategory.Comment,
|
|
154
|
+
syntax: adblockers.AdblockSyntax.Common,
|
|
155
|
+
name,
|
|
156
|
+
};
|
|
157
|
+
if (options$1.includeRaws) {
|
|
158
|
+
result.raws = {
|
|
159
|
+
text: raw,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
if (options$1.isLocIncluded) {
|
|
163
|
+
result.start = baseOffset;
|
|
164
|
+
result.end = baseOffset + raw.length;
|
|
165
|
+
}
|
|
166
|
+
return result;
|
|
167
|
+
}
|
|
168
|
+
// Get start and end offsets of the directive parameters
|
|
169
|
+
const paramsStart = offset;
|
|
170
|
+
const paramsEnd = string.StringUtils.skipWSBack(raw) + 1;
|
|
171
|
+
// Prepare parameters node
|
|
172
|
+
let params;
|
|
173
|
+
// Parse parameters. Handle "if" and "safari_cb_affinity" directives
|
|
174
|
+
// separately.
|
|
175
|
+
if (name.value === constants.IF) {
|
|
176
|
+
params = logicalExpressionParser.LogicalExpressionParser.parse(raw.slice(paramsStart, paramsEnd), options$1, baseOffset + paramsStart);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
params = valueParser.ValueParser.parse(raw.slice(paramsStart, paramsEnd), options$1, baseOffset + paramsStart);
|
|
180
|
+
}
|
|
181
|
+
const result = {
|
|
182
|
+
type: index.CommentRuleType.PreProcessorCommentRule,
|
|
183
|
+
category: index.RuleCategory.Comment,
|
|
184
|
+
syntax: adblockers.AdblockSyntax.Common,
|
|
185
|
+
name,
|
|
186
|
+
params,
|
|
187
|
+
};
|
|
188
|
+
if (options$1.includeRaws) {
|
|
189
|
+
result.raws = {
|
|
190
|
+
text: raw,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
if (options$1.isLocIncluded) {
|
|
194
|
+
result.start = baseOffset;
|
|
195
|
+
result.end = baseOffset + raw.length;
|
|
196
|
+
}
|
|
197
|
+
return result;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
exports.PreProcessorCommentParser = PreProcessorCommentParser;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var adblockers = require('../../utils/adblockers.js');
|
|
10
|
+
var cosmeticRuleSeparator = require('../../utils/cosmetic-rule-separator.js');
|
|
11
|
+
var string = require('../../utils/string.js');
|
|
12
|
+
var index = require('../../nodes/index.js');
|
|
13
|
+
var baseParser = require('../base-parser.js');
|
|
14
|
+
var valueParser = require('../misc/value-parser.js');
|
|
15
|
+
var options = require('../options.js');
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* `SimpleCommentParser` is responsible for parsing simple comments.
|
|
19
|
+
* Some comments have a special meaning in adblock syntax, like agent comments or hints,
|
|
20
|
+
* but this parser is only responsible for parsing regular comments,
|
|
21
|
+
* whose only purpose is to provide some human-readable information.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```adblock
|
|
25
|
+
* ! This is a simple comment
|
|
26
|
+
* # This is a simple comment, but in host-like syntax
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
class SimpleCommentParser extends baseParser.BaseParser {
|
|
30
|
+
/**
|
|
31
|
+
* Checks if the raw rule is a simple comment.
|
|
32
|
+
*
|
|
33
|
+
* @param raw Raw input to check.
|
|
34
|
+
* @returns `true` if the input is a simple comment, `false` otherwise.
|
|
35
|
+
* @note This method does not check for adblock agent comments.
|
|
36
|
+
*/
|
|
37
|
+
static isSimpleComment(raw) {
|
|
38
|
+
const trimmed = raw.trim();
|
|
39
|
+
// Exclamation mark based comments
|
|
40
|
+
if (trimmed.startsWith(index.CommentMarker.Regular)) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
// Hashmark based comments
|
|
44
|
+
// Note: in this case, we must be sure that we do not mistakenly parse a cosmetic rule as a #-like comment,
|
|
45
|
+
// since most cosmetic rule separators also start with #
|
|
46
|
+
if (trimmed.startsWith(index.CommentMarker.Hashmark)) {
|
|
47
|
+
const result = cosmeticRuleSeparator.CosmeticRuleSeparatorUtils.find(trimmed);
|
|
48
|
+
// If we cannot find a separator, it means that the rule is definitely a comment
|
|
49
|
+
if (result === null) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
// Otherwise, we must check if the separator is followed by a valid selector
|
|
53
|
+
const { end } = result;
|
|
54
|
+
// No valid selector
|
|
55
|
+
if (!trimmed[end + 1]
|
|
56
|
+
|| string.StringUtils.isWhitespace(trimmed[end + 1])
|
|
57
|
+
|| (trimmed[end + 1] === index.CommentMarker.Hashmark && trimmed[end + 2] === index.CommentMarker.Hashmark)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Parses a raw rule as a simple comment.
|
|
65
|
+
*
|
|
66
|
+
* @param raw Raw input to parse.
|
|
67
|
+
* @param options Global parser options.
|
|
68
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
69
|
+
* @returns Comment rule node or null (if the raw rule cannot be parsed as a simple comment).
|
|
70
|
+
*/
|
|
71
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
|
|
72
|
+
// Ignore non-comment rules
|
|
73
|
+
if (!this.isSimpleComment(raw)) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
// If we are here, it means that the rule is a regular comment
|
|
77
|
+
let offset = 0;
|
|
78
|
+
// Skip leading whitespace (if any)
|
|
79
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
80
|
+
// Get comment marker
|
|
81
|
+
const marker = valueParser.ValueParser.parse(raw[offset], options$1, baseOffset + offset);
|
|
82
|
+
// Skip marker
|
|
83
|
+
offset += 1;
|
|
84
|
+
// Get comment text
|
|
85
|
+
const text = valueParser.ValueParser.parse(raw.slice(offset), options$1, baseOffset + offset);
|
|
86
|
+
// Regular comment rule
|
|
87
|
+
const result = {
|
|
88
|
+
category: index.RuleCategory.Comment,
|
|
89
|
+
type: index.CommentRuleType.CommentRule,
|
|
90
|
+
// TODO: Change syntax when hashmark is used
|
|
91
|
+
syntax: adblockers.AdblockSyntax.Common,
|
|
92
|
+
marker,
|
|
93
|
+
text,
|
|
94
|
+
};
|
|
95
|
+
if (options$1.includeRaws) {
|
|
96
|
+
result.raws = {
|
|
97
|
+
text: raw,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (options$1.isLocIncluded) {
|
|
101
|
+
result.start = baseOffset;
|
|
102
|
+
result.end = baseOffset + raw.length;
|
|
103
|
+
}
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
exports.SimpleCommentParser = SimpleCommentParser;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants = require('../../../utils/constants.js');
|
|
10
|
+
var string = require('../../../utils/string.js');
|
|
11
|
+
var adblockSyntaxError = require('../../../errors/adblock-syntax-error.js');
|
|
12
|
+
var parameterListParser = require('../../misc/parameter-list-parser.js');
|
|
13
|
+
var options = require('../../options.js');
|
|
14
|
+
var baseParser = require('../../base-parser.js');
|
|
15
|
+
var abpSnippetInjectionBodyCommon = require('../../../common/abp-snippet-injection-body-common.js');
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @file uBlock scriptlet injection body parser
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* `AbpSnippetInjectionBodyParser` is responsible for parsing the body of an Adblock Plus-style snippet rule.
|
|
22
|
+
*
|
|
23
|
+
* Please note that the parser will parse any scriptlet rule if it is syntactically correct.
|
|
24
|
+
* For example, it will parse this:
|
|
25
|
+
* ```adblock
|
|
26
|
+
* example.com#$#snippet0 arg0
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* but it didn't check if the scriptlet `snippet0` actually supported by any adblocker.
|
|
30
|
+
*
|
|
31
|
+
* @see {@link https://help.eyeo.com/adblockplus/snippet-filters-tutorial}
|
|
32
|
+
*/
|
|
33
|
+
class AbpSnippetInjectionBodyParser extends baseParser.BaseParser {
|
|
34
|
+
/**
|
|
35
|
+
* Parses the body of an Adblock Plus-style snippet rule.
|
|
36
|
+
*
|
|
37
|
+
* @param raw Raw input to parse.
|
|
38
|
+
* @param options Global parser options.
|
|
39
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
40
|
+
* @returns Node of the parsed scriptlet call body
|
|
41
|
+
* @throws If the body is syntactically incorrect
|
|
42
|
+
* @example
|
|
43
|
+
* ```
|
|
44
|
+
* #$#snippet0 arg0
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
|
|
48
|
+
const result = {
|
|
49
|
+
type: 'ScriptletInjectionRuleBody',
|
|
50
|
+
children: [],
|
|
51
|
+
};
|
|
52
|
+
if (options$1.isLocIncluded) {
|
|
53
|
+
result.start = baseOffset;
|
|
54
|
+
result.end = baseOffset + raw.length;
|
|
55
|
+
}
|
|
56
|
+
let offset = 0;
|
|
57
|
+
// Skip leading spaces
|
|
58
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
59
|
+
while (offset < raw.length) {
|
|
60
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
61
|
+
const scriptletCallStart = offset;
|
|
62
|
+
// Find the next semicolon or the end of the string
|
|
63
|
+
let semicolonIndex = string.StringUtils.findUnescapedNonStringNonRegexChar(raw, constants.SEMICOLON, offset);
|
|
64
|
+
if (semicolonIndex === -1) {
|
|
65
|
+
semicolonIndex = raw.length;
|
|
66
|
+
}
|
|
67
|
+
const scriptletCallEnd = Math.max(string.StringUtils.skipWSBack(raw, semicolonIndex - 1) + 1, scriptletCallStart);
|
|
68
|
+
const params = parameterListParser.ParameterListParser.parse(raw.slice(scriptletCallStart, scriptletCallEnd), options$1, baseOffset + scriptletCallStart, constants.SPACE);
|
|
69
|
+
// Parse the scriptlet call
|
|
70
|
+
result.children.push(params);
|
|
71
|
+
// Skip the semicolon
|
|
72
|
+
offset = semicolonIndex + 1;
|
|
73
|
+
}
|
|
74
|
+
if (result.children.length === 0) {
|
|
75
|
+
throw new adblockSyntaxError.AdblockSyntaxError(abpSnippetInjectionBodyCommon.AbpSnippetInjectionBodyCommon.ERROR_MESSAGES.EMPTY_SCRIPTLET_CALL, baseOffset, baseOffset + raw.length);
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
exports.AbpSnippetInjectionBodyParser = AbpSnippetInjectionBodyParser;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var sprintfJs = require('sprintf-js');
|
|
10
|
+
var constants = require('../../../utils/constants.js');
|
|
11
|
+
var string = require('../../../utils/string.js');
|
|
12
|
+
var adblockSyntaxError = require('../../../errors/adblock-syntax-error.js');
|
|
13
|
+
var options = require('../../options.js');
|
|
14
|
+
var baseParser = require('../../base-parser.js');
|
|
15
|
+
var valueParser = require('../../misc/value-parser.js');
|
|
16
|
+
var typeGuards = require('../../../utils/type-guards.js');
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @file AdGuard scriptlet injection body parser
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* `AdgScriptletInjectionBodyParser` is responsible for parsing the body of an AdGuard-style scriptlet rule.
|
|
23
|
+
*
|
|
24
|
+
* Please note that the parser will parse any scriptlet rule if it is syntactically correct.
|
|
25
|
+
* For example, it will parse this:
|
|
26
|
+
* ```adblock
|
|
27
|
+
* example.com#%#//scriptlet('scriptlet0', 'arg0')
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* but it didn't check if the scriptlet `scriptlet0` actually supported by any adblocker.
|
|
31
|
+
*
|
|
32
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#scriptlets}
|
|
33
|
+
*/
|
|
34
|
+
class AdgScriptletInjectionBodyParser extends baseParser.BaseParser {
|
|
35
|
+
/**
|
|
36
|
+
* Error messages used by the parser.
|
|
37
|
+
*/
|
|
38
|
+
static ERROR_MESSAGES = {
|
|
39
|
+
NO_SCRIPTLET_MASK: `Invalid ADG scriptlet call, no scriptlet call mask '${constants.ADG_SCRIPTLET_MASK}' found`,
|
|
40
|
+
NO_OPENING_PARENTHESIS: `Invalid ADG scriptlet call, no opening parentheses '${constants.OPEN_PARENTHESIS}' found`,
|
|
41
|
+
NO_CLOSING_PARENTHESIS: `Invalid ADG scriptlet call, no closing parentheses '${constants.CLOSE_PARENTHESIS}' found`,
|
|
42
|
+
WHITESPACE_AFTER_MASK: 'Invalid ADG scriptlet call, whitespace is not allowed after the scriptlet call mask',
|
|
43
|
+
NO_INCONSISTENT_QUOTES: 'Invalid ADG scriptlet call, inconsistent quotes',
|
|
44
|
+
NO_UNCLOSED_PARAMETER: 'Invalid ADG scriptlet call, unclosed parameter',
|
|
45
|
+
EXPECTED_QUOTE: "Invalid ADG scriptlet call, expected quote, got '%s'",
|
|
46
|
+
EXPECTED_COMMA: "Invalid ADG scriptlet call, expected comma, got '%s'",
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Parses the body of an AdGuard-style scriptlet rule.
|
|
50
|
+
*
|
|
51
|
+
* @param raw Raw input to parse.
|
|
52
|
+
* @param options Global parser options.
|
|
53
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
54
|
+
* @returns Node of the parsed scriptlet call body
|
|
55
|
+
* @throws If the body is syntactically incorrect
|
|
56
|
+
* @example
|
|
57
|
+
* ```
|
|
58
|
+
* //scriptlet('scriptlet0', 'arg0')
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
|
|
62
|
+
let offset = 0;
|
|
63
|
+
// Skip leading spaces
|
|
64
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
65
|
+
// Scriptlet call should start with "//scriptlet"
|
|
66
|
+
if (!raw.startsWith(constants.ADG_SCRIPTLET_MASK, offset)) {
|
|
67
|
+
throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_SCRIPTLET_MASK, baseOffset + offset, baseOffset + raw.length);
|
|
68
|
+
}
|
|
69
|
+
offset += constants.ADG_SCRIPTLET_MASK.length;
|
|
70
|
+
// Whitespace is not allowed after the mask
|
|
71
|
+
if (raw[offset] === constants.SPACE) {
|
|
72
|
+
throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.WHITESPACE_AFTER_MASK, baseOffset + offset, baseOffset + raw.length);
|
|
73
|
+
}
|
|
74
|
+
// Parameter list should be wrapped in parentheses
|
|
75
|
+
if (raw[offset] !== constants.OPEN_PARENTHESIS) {
|
|
76
|
+
throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_OPENING_PARENTHESIS, baseOffset + offset, baseOffset + raw.length);
|
|
77
|
+
}
|
|
78
|
+
// Save the offset of the opening parentheses
|
|
79
|
+
const openingParenthesesIndex = offset;
|
|
80
|
+
// Skip whitespace from the end
|
|
81
|
+
const closingParenthesesIndex = string.StringUtils.skipWSBack(raw, raw.length - 1);
|
|
82
|
+
// Closing parentheses should be present
|
|
83
|
+
if (raw[closingParenthesesIndex] !== constants.CLOSE_PARENTHESIS
|
|
84
|
+
|| raw[closingParenthesesIndex - 1] === constants.ESCAPE_CHARACTER) {
|
|
85
|
+
throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_CLOSING_PARENTHESIS, baseOffset + offset, baseOffset + raw.length);
|
|
86
|
+
}
|
|
87
|
+
// Skip space, if any
|
|
88
|
+
offset = string.StringUtils.skipWS(raw, offset + 1);
|
|
89
|
+
const result = {
|
|
90
|
+
type: 'ScriptletInjectionRuleBody',
|
|
91
|
+
children: [],
|
|
92
|
+
};
|
|
93
|
+
if (options$1.isLocIncluded) {
|
|
94
|
+
result.start = baseOffset;
|
|
95
|
+
result.end = baseOffset + raw.length;
|
|
96
|
+
}
|
|
97
|
+
// Special case: empty scriptlet call, like `//scriptlet()`, `//scriptlet( )` etc.
|
|
98
|
+
if (string.StringUtils.skipWS(raw, openingParenthesesIndex + 1) === closingParenthesesIndex) {
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
let detectedQuote = null;
|
|
102
|
+
const parameterList = {
|
|
103
|
+
type: 'ParameterList',
|
|
104
|
+
children: [],
|
|
105
|
+
};
|
|
106
|
+
if (options$1.isLocIncluded) {
|
|
107
|
+
parameterList.start = baseOffset + openingParenthesesIndex + 1;
|
|
108
|
+
parameterList.end = baseOffset + closingParenthesesIndex;
|
|
109
|
+
}
|
|
110
|
+
while (offset < closingParenthesesIndex) {
|
|
111
|
+
// Skip whitespace
|
|
112
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
113
|
+
// Expect comma if not first parameter
|
|
114
|
+
if (parameterList.children.length > 0) {
|
|
115
|
+
if (raw[offset] !== constants.COMMA) {
|
|
116
|
+
throw new adblockSyntaxError.AdblockSyntaxError(sprintfJs.sprintf(AdgScriptletInjectionBodyParser.ERROR_MESSAGES.EXPECTED_COMMA, raw[offset]), baseOffset + offset, baseOffset + raw.length);
|
|
117
|
+
}
|
|
118
|
+
// Eat the comma
|
|
119
|
+
offset += 1;
|
|
120
|
+
// Skip whitespace
|
|
121
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
122
|
+
}
|
|
123
|
+
// Next character should be a quote
|
|
124
|
+
if (raw[offset] === constants.SINGLE_QUOTE || raw[offset] === constants.DOUBLE_QUOTE) {
|
|
125
|
+
if (typeGuards.isNull(detectedQuote)) {
|
|
126
|
+
detectedQuote = raw[offset];
|
|
127
|
+
}
|
|
128
|
+
else if (detectedQuote !== raw[offset]) {
|
|
129
|
+
throw new adblockSyntaxError.AdblockSyntaxError(AdgScriptletInjectionBodyParser.ERROR_MESSAGES.NO_INCONSISTENT_QUOTES, baseOffset + offset, baseOffset + raw.length);
|
|
130
|
+
}
|
|
131
|
+
// Find next unescaped same quote
|
|
132
|
+
const closingQuoteIndex = string.StringUtils.findNextUnescapedCharacter(raw, detectedQuote, offset + 1);
|
|
133
|
+
if (closingQuoteIndex === -1) {
|
|
134
|
+
throw new adblockSyntaxError.AdblockSyntaxError(AdgScriptletInjectionBodyParser.ERROR_MESSAGES.NO_UNCLOSED_PARAMETER, baseOffset + offset, baseOffset + raw.length);
|
|
135
|
+
}
|
|
136
|
+
// Save the parameter
|
|
137
|
+
const parameter = valueParser.ValueParser.parse(raw.slice(offset, closingQuoteIndex + 1), options$1, baseOffset + offset);
|
|
138
|
+
parameterList.children.push(parameter);
|
|
139
|
+
// Move after the closing quote
|
|
140
|
+
offset = string.StringUtils.skipWS(raw, closingQuoteIndex + 1);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
throw new adblockSyntaxError.AdblockSyntaxError(sprintfJs.sprintf(AdgScriptletInjectionBodyParser.ERROR_MESSAGES.EXPECTED_QUOTE, raw[offset]), baseOffset + offset, baseOffset + raw.length);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
result.children.push(parameterList);
|
|
147
|
+
return result;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
exports.AdgScriptletInjectionBodyParser = AdgScriptletInjectionBodyParser;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0 (build date: Tue, 12 Nov 2024 14:05:06 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants = require('../../../utils/constants.js');
|
|
10
|
+
var string = require('../../../utils/string.js');
|
|
11
|
+
var adblockSyntaxError = require('../../../errors/adblock-syntax-error.js');
|
|
12
|
+
var options = require('../../options.js');
|
|
13
|
+
var baseParser = require('../../base-parser.js');
|
|
14
|
+
var uboParameterListParser = require('../../misc/ubo-parameter-list-parser.js');
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @file uBlock scriptlet injection body parser
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* `UboScriptletInjectionBodyParser` is responsible for parsing the body of a uBlock-style scriptlet rule.
|
|
21
|
+
*
|
|
22
|
+
* Please note that the parser will parse any scriptlet rule if it is syntactically correct.
|
|
23
|
+
* For example, it will parse this:
|
|
24
|
+
* ```adblock
|
|
25
|
+
* example.com##+js(scriptlet0, arg0)
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* but it didn't check if the scriptlet `scriptlet0` actually supported by any adblocker.
|
|
29
|
+
*
|
|
30
|
+
* @see {@link https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#scriptlet-injection}
|
|
31
|
+
*/
|
|
32
|
+
class UboScriptletInjectionBodyParser extends baseParser.BaseParser {
|
|
33
|
+
/**
|
|
34
|
+
* Error messages used by the parser.
|
|
35
|
+
*/
|
|
36
|
+
static ERROR_MESSAGES = {
|
|
37
|
+
NO_SCRIPTLET_MASK: `Invalid uBO scriptlet call, no scriptlet call mask '${constants.UBO_SCRIPTLET_MASK}' found`,
|
|
38
|
+
NO_OPENING_PARENTHESIS: `Invalid uBO scriptlet call, no opening parentheses '${constants.OPEN_PARENTHESIS}' found`,
|
|
39
|
+
NO_CLOSING_PARENTHESIS: `Invalid uBO scriptlet call, no closing parentheses '${constants.CLOSE_PARENTHESIS}' found`,
|
|
40
|
+
NO_SCRIPTLET_NAME: 'Invalid uBO scriptlet call, no scriptlet name specified',
|
|
41
|
+
WHITESPACE_AFTER_MASK: 'Invalid uBO scriptlet call, whitespace is not allowed after the scriptlet call mask',
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Parses the body of a uBlock-style scriptlet rule.
|
|
45
|
+
*
|
|
46
|
+
* @param raw Raw input to parse.
|
|
47
|
+
* @param options Global parser options.
|
|
48
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
49
|
+
* @returns Node of the parsed scriptlet call body
|
|
50
|
+
* @throws If the body is syntactically incorrect
|
|
51
|
+
* @example
|
|
52
|
+
* ```
|
|
53
|
+
* ##+js(scriptlet0, arg0)
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
|
|
57
|
+
let offset = 0;
|
|
58
|
+
// Skip leading spaces
|
|
59
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
60
|
+
let scriptletMaskLength = 0;
|
|
61
|
+
if (raw.startsWith(constants.UBO_SCRIPTLET_MASK, offset)) {
|
|
62
|
+
scriptletMaskLength = constants.UBO_SCRIPTLET_MASK.length;
|
|
63
|
+
}
|
|
64
|
+
else if (raw.startsWith(constants.UBO_SCRIPTLET_MASK_LEGACY, offset)) {
|
|
65
|
+
scriptletMaskLength = constants.UBO_SCRIPTLET_MASK_LEGACY.length;
|
|
66
|
+
}
|
|
67
|
+
// Scriptlet call should start with "+js"
|
|
68
|
+
if (!scriptletMaskLength) {
|
|
69
|
+
throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_SCRIPTLET_MASK, baseOffset + offset, baseOffset + raw.length);
|
|
70
|
+
}
|
|
71
|
+
offset += scriptletMaskLength;
|
|
72
|
+
// Whitespace is not allowed after the mask
|
|
73
|
+
if (raw[offset] === constants.SPACE) {
|
|
74
|
+
throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.WHITESPACE_AFTER_MASK, baseOffset + offset, baseOffset + raw.length);
|
|
75
|
+
}
|
|
76
|
+
// Parameter list should be wrapped in parentheses
|
|
77
|
+
if (raw[offset] !== constants.OPEN_PARENTHESIS) {
|
|
78
|
+
throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_OPENING_PARENTHESIS, baseOffset + offset, baseOffset + raw.length);
|
|
79
|
+
}
|
|
80
|
+
// Save the offset of the opening parentheses
|
|
81
|
+
const openingParenthesesIndex = offset;
|
|
82
|
+
// Skip whitespace from the end
|
|
83
|
+
const closingParenthesesIndex = string.StringUtils.skipWSBack(raw, raw.length - 1);
|
|
84
|
+
// Closing parentheses should be present
|
|
85
|
+
if (raw[closingParenthesesIndex] !== constants.CLOSE_PARENTHESIS
|
|
86
|
+
|| raw[closingParenthesesIndex - 1] === constants.ESCAPE_CHARACTER) {
|
|
87
|
+
throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_CLOSING_PARENTHESIS, baseOffset + offset, baseOffset + raw.length);
|
|
88
|
+
}
|
|
89
|
+
const result = {
|
|
90
|
+
type: 'ScriptletInjectionRuleBody',
|
|
91
|
+
children: [],
|
|
92
|
+
};
|
|
93
|
+
if (options$1.isLocIncluded) {
|
|
94
|
+
result.start = baseOffset;
|
|
95
|
+
result.end = baseOffset + raw.length;
|
|
96
|
+
}
|
|
97
|
+
// Special case: empty scriptlet call, like +js(), +js( ), etc.
|
|
98
|
+
if (string.StringUtils.skipWS(raw, openingParenthesesIndex + 1) === closingParenthesesIndex) {
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
// Parse parameter list
|
|
102
|
+
const params = uboParameterListParser.UboParameterListParser.parse(raw.slice(openingParenthesesIndex + 1, closingParenthesesIndex), options$1, baseOffset + openingParenthesesIndex + 1, constants.COMMA);
|
|
103
|
+
// Do not allow parameters without scriptlet: +js(, arg0, arg1)
|
|
104
|
+
if (params.children.length > 0 && params.children[0] === null) {
|
|
105
|
+
throw new adblockSyntaxError.AdblockSyntaxError(this.ERROR_MESSAGES.NO_SCRIPTLET_NAME, baseOffset + offset, baseOffset + raw.length);
|
|
106
|
+
}
|
|
107
|
+
result.children.push(params);
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
exports.UboScriptletInjectionBodyParser = UboScriptletInjectionBodyParser;
|