@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,116 @@
|
|
|
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 options = require('../options.js');
|
|
11
|
+
var constants = require('../../utils/constants.js');
|
|
12
|
+
var string = require('../../utils/string.js');
|
|
13
|
+
var adblockSyntaxError = require('../../errors/adblock-syntax-error.js');
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Prefixes for error messages which are used for parsing of value lists.
|
|
17
|
+
*/
|
|
18
|
+
const LIST_PARSE_ERROR_PREFIX = {
|
|
19
|
+
EMPTY_ITEM: 'Empty value specified in the list',
|
|
20
|
+
NO_MULTIPLE_NEGATION: 'Exception marker cannot be followed by another exception marker',
|
|
21
|
+
NO_SEPARATOR_AFTER_NEGATION: 'Exception marker cannot be followed by a separator',
|
|
22
|
+
NO_SEPARATOR_AT_THE_BEGINNING: 'Value list cannot start with a separator',
|
|
23
|
+
NO_SEPARATOR_AT_THE_END: 'Value list cannot end with a separator',
|
|
24
|
+
NO_WHITESPACE_AFTER_NEGATION: 'Exception marker cannot be followed by whitespace',
|
|
25
|
+
};
|
|
26
|
+
class ListItemsParser {
|
|
27
|
+
/**
|
|
28
|
+
* Parses a `raw` modifier value which may be represented as a list of items separated by `separator`.
|
|
29
|
+
* Needed for $app, $denyallow, $domain, $method.
|
|
30
|
+
*
|
|
31
|
+
* @param raw Raw input to parse.
|
|
32
|
+
* @param options Global parser options.
|
|
33
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
34
|
+
* @param separator Separator character (default: comma)
|
|
35
|
+
* @param type Type of the list items (default: {@link ListItemNodeType.Domain}).
|
|
36
|
+
* @template T Type of the list items.
|
|
37
|
+
*
|
|
38
|
+
* @returns List of parsed items.
|
|
39
|
+
* @throws An {@link AdblockSyntaxError} if the list is syntactically invalid
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* - parses an app list — `com.example.app|Example.exe`
|
|
43
|
+
* - parses a domain list — `example.com,example.org,~example.org` or `example.com|~example.org`
|
|
44
|
+
* - parses a method list — `~post|~put`
|
|
45
|
+
*/
|
|
46
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0, separator = constants.COMMA, type = index.ListItemNodeType.Unknown) {
|
|
47
|
+
// Function body here
|
|
48
|
+
const rawListItems = [];
|
|
49
|
+
let offset = 0;
|
|
50
|
+
// Skip whitespace before the list
|
|
51
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
52
|
+
// If the first character is a separator, then the list is invalid
|
|
53
|
+
// and no need to continue parsing
|
|
54
|
+
if (raw[offset] === separator) {
|
|
55
|
+
throw new adblockSyntaxError.AdblockSyntaxError(LIST_PARSE_ERROR_PREFIX.NO_SEPARATOR_AT_THE_BEGINNING, baseOffset + offset, baseOffset + raw.length);
|
|
56
|
+
}
|
|
57
|
+
// If the last character is a separator, then the list item is invalid
|
|
58
|
+
// and no need to continue parsing
|
|
59
|
+
const realEndIndex = string.StringUtils.skipWSBack(raw);
|
|
60
|
+
if (raw[realEndIndex] === separator) {
|
|
61
|
+
throw new adblockSyntaxError.AdblockSyntaxError(LIST_PARSE_ERROR_PREFIX.NO_SEPARATOR_AT_THE_END, baseOffset + realEndIndex, baseOffset + realEndIndex + 1);
|
|
62
|
+
}
|
|
63
|
+
// Split list items by unescaped separators
|
|
64
|
+
while (offset < raw.length) {
|
|
65
|
+
// Skip whitespace before the list item
|
|
66
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
67
|
+
let itemStart = offset;
|
|
68
|
+
// Find the index of the first unescaped separator character
|
|
69
|
+
const separatorStartIndex = string.StringUtils.findNextUnescapedCharacter(raw, separator, offset);
|
|
70
|
+
const itemEnd = separatorStartIndex === -1
|
|
71
|
+
? string.StringUtils.skipWSBack(raw) + 1
|
|
72
|
+
: string.StringUtils.skipWSBack(raw, separatorStartIndex - 1) + 1;
|
|
73
|
+
const exception = raw[itemStart] === constants.NEGATION_MARKER;
|
|
74
|
+
// Skip the exception marker
|
|
75
|
+
if (exception) {
|
|
76
|
+
itemStart += 1;
|
|
77
|
+
const item = raw[itemStart];
|
|
78
|
+
// Exception marker cannot be followed by another exception marker
|
|
79
|
+
if (item === constants.NEGATION_MARKER) {
|
|
80
|
+
throw new adblockSyntaxError.AdblockSyntaxError(LIST_PARSE_ERROR_PREFIX.NO_MULTIPLE_NEGATION, baseOffset + itemStart, baseOffset + itemStart + 1);
|
|
81
|
+
}
|
|
82
|
+
// Exception marker cannot be followed by a separator
|
|
83
|
+
if (item === separator) {
|
|
84
|
+
throw new adblockSyntaxError.AdblockSyntaxError(LIST_PARSE_ERROR_PREFIX.NO_SEPARATOR_AFTER_NEGATION, baseOffset + itemStart, baseOffset + itemStart + 1);
|
|
85
|
+
}
|
|
86
|
+
// Exception marker cannot be followed by whitespace
|
|
87
|
+
if (string.StringUtils.isWhitespace(item)) {
|
|
88
|
+
throw new adblockSyntaxError.AdblockSyntaxError(LIST_PARSE_ERROR_PREFIX.NO_WHITESPACE_AFTER_NEGATION, baseOffset + itemStart, baseOffset + itemStart + 1);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// List item can't be empty
|
|
92
|
+
// Note we use '<=' instead of '===' because we have bidirectional trim
|
|
93
|
+
// This is needed to handle cases like 'example.com, ,example.org'
|
|
94
|
+
if (itemEnd <= itemStart) {
|
|
95
|
+
throw new adblockSyntaxError.AdblockSyntaxError(LIST_PARSE_ERROR_PREFIX.EMPTY_ITEM, baseOffset + itemStart, baseOffset + raw.length);
|
|
96
|
+
}
|
|
97
|
+
const listItem = {
|
|
98
|
+
type,
|
|
99
|
+
value: raw.slice(itemStart, itemEnd),
|
|
100
|
+
exception,
|
|
101
|
+
};
|
|
102
|
+
if (options$1.isLocIncluded) {
|
|
103
|
+
listItem.start = baseOffset + itemStart;
|
|
104
|
+
listItem.end = baseOffset + itemEnd;
|
|
105
|
+
}
|
|
106
|
+
// Collect list item
|
|
107
|
+
rawListItems.push(listItem);
|
|
108
|
+
// Increment the offset to the next list item (or the end of the string)
|
|
109
|
+
offset = separatorStartIndex === -1 ? raw.length : separatorStartIndex + 1;
|
|
110
|
+
}
|
|
111
|
+
return rawListItems;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
exports.LIST_PARSE_ERROR_PREFIX = LIST_PARSE_ERROR_PREFIX;
|
|
116
|
+
exports.ListItemsParser = ListItemsParser;
|
|
@@ -0,0 +1,283 @@
|
|
|
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 string = require('../../utils/string.js');
|
|
10
|
+
var index = require('../../nodes/index.js');
|
|
11
|
+
var constants = require('../../utils/constants.js');
|
|
12
|
+
var adblockSyntaxError = require('../../errors/adblock-syntax-error.js');
|
|
13
|
+
var options = require('../options.js');
|
|
14
|
+
var baseParser = require('../base-parser.js');
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Possible token types in the logical expression.
|
|
18
|
+
*/
|
|
19
|
+
var TokenType;
|
|
20
|
+
(function (TokenType) {
|
|
21
|
+
TokenType[TokenType["Variable"] = 0] = "Variable";
|
|
22
|
+
TokenType[TokenType["Operator"] = 1] = "Operator";
|
|
23
|
+
TokenType[TokenType["Parenthesis"] = 2] = "Parenthesis";
|
|
24
|
+
})(TokenType || (TokenType = {}));
|
|
25
|
+
/**
|
|
26
|
+
* Possible node types in the logical expression.
|
|
27
|
+
*/
|
|
28
|
+
exports.NodeType = void 0;
|
|
29
|
+
(function (NodeType) {
|
|
30
|
+
NodeType["Variable"] = "Variable";
|
|
31
|
+
NodeType["Operator"] = "Operator";
|
|
32
|
+
NodeType["Parenthesis"] = "Parenthesis";
|
|
33
|
+
})(exports.NodeType || (exports.NodeType = {}));
|
|
34
|
+
/**
|
|
35
|
+
* Precedence of the operators, larger number means higher precedence.
|
|
36
|
+
*/
|
|
37
|
+
const OPERATOR_PRECEDENCE = {
|
|
38
|
+
[index.OperatorValue.Not]: 3,
|
|
39
|
+
[index.OperatorValue.And]: 2,
|
|
40
|
+
[index.OperatorValue.Or]: 1,
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* `LogicalExpressionParser` is responsible for parsing logical expressions.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* From the following rule:
|
|
47
|
+
* ```adblock
|
|
48
|
+
* !#if (adguard_ext_android_cb || adguard_ext_safari)
|
|
49
|
+
* ```
|
|
50
|
+
* this parser will parse the expression `(adguard_ext_android_cb || adguard_ext_safari)`.
|
|
51
|
+
*/
|
|
52
|
+
// TODO: Refactor this class
|
|
53
|
+
class LogicalExpressionParser extends baseParser.BaseParser {
|
|
54
|
+
/**
|
|
55
|
+
* Split the expression into tokens.
|
|
56
|
+
*
|
|
57
|
+
* @param raw Source code of the expression
|
|
58
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
59
|
+
* @returns Token list
|
|
60
|
+
* @throws {AdblockSyntaxError} If the expression is invalid
|
|
61
|
+
*/
|
|
62
|
+
static tokenize(raw, baseOffset = 0) {
|
|
63
|
+
const tokens = [];
|
|
64
|
+
let offset = 0;
|
|
65
|
+
while (offset < raw.length) {
|
|
66
|
+
const char = raw[offset];
|
|
67
|
+
if (string.StringUtils.isWhitespace(char)) {
|
|
68
|
+
// Ignore whitespace
|
|
69
|
+
offset += 1;
|
|
70
|
+
}
|
|
71
|
+
else if (string.StringUtils.isLetter(char)) {
|
|
72
|
+
// Save the start offset of the variable name
|
|
73
|
+
const nameStart = offset;
|
|
74
|
+
// Variable name shouldn't start with a number or underscore,
|
|
75
|
+
// but can contain them
|
|
76
|
+
while (offset + 1 < raw.length
|
|
77
|
+
&& (string.StringUtils.isAlphaNumeric(raw[offset + 1]) || raw[offset + 1] === constants.UNDERSCORE)) {
|
|
78
|
+
offset += 1;
|
|
79
|
+
}
|
|
80
|
+
tokens.push({
|
|
81
|
+
type: TokenType.Variable,
|
|
82
|
+
start: nameStart,
|
|
83
|
+
end: offset + 1,
|
|
84
|
+
});
|
|
85
|
+
offset += 1;
|
|
86
|
+
}
|
|
87
|
+
else if (char === constants.OPEN_PARENTHESIS || char === constants.CLOSE_PARENTHESIS) {
|
|
88
|
+
// Parenthesis
|
|
89
|
+
tokens.push({
|
|
90
|
+
type: TokenType.Parenthesis,
|
|
91
|
+
start: offset,
|
|
92
|
+
end: offset + 1,
|
|
93
|
+
});
|
|
94
|
+
offset += 1;
|
|
95
|
+
}
|
|
96
|
+
else if (char === constants.AMPERSAND || char === constants.PIPE) {
|
|
97
|
+
// Parse operator
|
|
98
|
+
if (offset + 1 < raw.length && raw[offset + 1] === char) {
|
|
99
|
+
tokens.push({
|
|
100
|
+
type: TokenType.Operator,
|
|
101
|
+
start: offset,
|
|
102
|
+
end: offset + 2,
|
|
103
|
+
});
|
|
104
|
+
offset += 2;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
throw new adblockSyntaxError.AdblockSyntaxError(`Unexpected character "${char}"`, baseOffset + offset, baseOffset + offset + 1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
else if (char === constants.EXCLAMATION_MARK) {
|
|
111
|
+
tokens.push({
|
|
112
|
+
type: TokenType.Operator,
|
|
113
|
+
start: offset,
|
|
114
|
+
end: offset + 1,
|
|
115
|
+
});
|
|
116
|
+
offset += 1;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw new adblockSyntaxError.AdblockSyntaxError(`Unexpected character "${char}"`, baseOffset + offset, baseOffset + offset + 1);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return tokens;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Parses a logical expression.
|
|
126
|
+
*
|
|
127
|
+
* @param raw Raw input to parse.
|
|
128
|
+
* @param options Global parser options.
|
|
129
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
130
|
+
* @returns Parsed expression
|
|
131
|
+
* @throws {AdblockSyntaxError} If the expression is invalid
|
|
132
|
+
*/
|
|
133
|
+
// TODO: Create a separate TokenStream class
|
|
134
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
|
|
135
|
+
// Tokenize the source (produces an array of tokens)
|
|
136
|
+
const tokens = LogicalExpressionParser.tokenize(raw, baseOffset);
|
|
137
|
+
// Current token index
|
|
138
|
+
let tokenIndex = 0;
|
|
139
|
+
/**
|
|
140
|
+
* Consumes a token of the expected type.
|
|
141
|
+
*
|
|
142
|
+
* @param type Expected token type
|
|
143
|
+
* @returns The consumed token
|
|
144
|
+
*/
|
|
145
|
+
function consume(type) {
|
|
146
|
+
const token = tokens[tokenIndex];
|
|
147
|
+
if (!token) {
|
|
148
|
+
throw new adblockSyntaxError.AdblockSyntaxError(`Expected token of type "${type}", but reached end of input`, baseOffset, baseOffset + raw.length);
|
|
149
|
+
}
|
|
150
|
+
// We only use this function internally, so we can safely ignore this
|
|
151
|
+
// from the coverage report
|
|
152
|
+
// istanbul ignore next
|
|
153
|
+
if (token.type !== type) {
|
|
154
|
+
throw new adblockSyntaxError.AdblockSyntaxError(`Expected token of type "${type}", but got "${token.type}"`, baseOffset + token.start, baseOffset + token.end);
|
|
155
|
+
}
|
|
156
|
+
tokenIndex += 1;
|
|
157
|
+
return token;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Parses a variable.
|
|
161
|
+
*
|
|
162
|
+
* @returns Variable node
|
|
163
|
+
*/
|
|
164
|
+
function parseVariable() {
|
|
165
|
+
const token = consume(TokenType.Variable);
|
|
166
|
+
const result = {
|
|
167
|
+
type: exports.NodeType.Variable,
|
|
168
|
+
name: raw.slice(token.start, token.end),
|
|
169
|
+
};
|
|
170
|
+
if (options$1.isLocIncluded) {
|
|
171
|
+
result.start = baseOffset + token.start;
|
|
172
|
+
result.end = baseOffset + token.end;
|
|
173
|
+
}
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Parses a binary expression.
|
|
178
|
+
*
|
|
179
|
+
* @param left Left-hand side of the expression
|
|
180
|
+
* @param minPrecedence Minimum precedence of the operator
|
|
181
|
+
* @returns Binary expression node
|
|
182
|
+
*/
|
|
183
|
+
function parseBinaryExpression(left, minPrecedence = 0) {
|
|
184
|
+
let node = left;
|
|
185
|
+
let operatorToken;
|
|
186
|
+
while (tokens[tokenIndex]) {
|
|
187
|
+
operatorToken = tokens[tokenIndex];
|
|
188
|
+
if (!operatorToken || operatorToken.type !== TokenType.Operator) {
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
// It is safe to cast here, because we already checked the type
|
|
192
|
+
const operator = raw.slice(operatorToken.start, operatorToken.end);
|
|
193
|
+
const precedence = OPERATOR_PRECEDENCE[operator];
|
|
194
|
+
if (precedence < minPrecedence) {
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
tokenIndex += 1;
|
|
198
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
199
|
+
const right = parseExpression(precedence + 1);
|
|
200
|
+
const newNode = {
|
|
201
|
+
type: exports.NodeType.Operator,
|
|
202
|
+
operator,
|
|
203
|
+
left: node,
|
|
204
|
+
right,
|
|
205
|
+
};
|
|
206
|
+
if (options$1.isLocIncluded) {
|
|
207
|
+
newNode.start = node.start ?? baseOffset + operatorToken.start;
|
|
208
|
+
newNode.end = right.end ?? baseOffset + operatorToken.end;
|
|
209
|
+
}
|
|
210
|
+
node = newNode;
|
|
211
|
+
}
|
|
212
|
+
return node;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Parses a parenthesized expression.
|
|
216
|
+
*
|
|
217
|
+
* @returns Parenthesized expression node
|
|
218
|
+
*/
|
|
219
|
+
function parseParenthesizedExpression() {
|
|
220
|
+
consume(TokenType.Parenthesis);
|
|
221
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
222
|
+
const expression = parseExpression();
|
|
223
|
+
consume(TokenType.Parenthesis);
|
|
224
|
+
const result = {
|
|
225
|
+
type: exports.NodeType.Parenthesis,
|
|
226
|
+
expression,
|
|
227
|
+
};
|
|
228
|
+
if (options$1.isLocIncluded) {
|
|
229
|
+
result.start = expression.start;
|
|
230
|
+
result.end = expression.end;
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Parses an expression.
|
|
236
|
+
*
|
|
237
|
+
* @param minPrecedence Minimum precedence of the operator
|
|
238
|
+
* @returns Expression node
|
|
239
|
+
*/
|
|
240
|
+
function parseExpression(minPrecedence = 0) {
|
|
241
|
+
let node;
|
|
242
|
+
const token = tokens[tokenIndex];
|
|
243
|
+
const value = raw.slice(token.start, token.end);
|
|
244
|
+
if (token.type === TokenType.Variable) {
|
|
245
|
+
node = parseVariable();
|
|
246
|
+
}
|
|
247
|
+
else if (token.type === TokenType.Operator && value === index.OperatorValue.Not) {
|
|
248
|
+
tokenIndex += 1;
|
|
249
|
+
const expression = parseExpression(OPERATOR_PRECEDENCE[index.OperatorValue.Not]);
|
|
250
|
+
node = {
|
|
251
|
+
type: exports.NodeType.Operator,
|
|
252
|
+
operator: index.OperatorValue.Not,
|
|
253
|
+
left: expression,
|
|
254
|
+
};
|
|
255
|
+
if (options$1.isLocIncluded) {
|
|
256
|
+
if (expression.end) {
|
|
257
|
+
node.start = baseOffset + token.start;
|
|
258
|
+
// no need to shift the node location, because it's already shifted
|
|
259
|
+
node.end = expression.end;
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
node.start = baseOffset + token.start;
|
|
263
|
+
node.end = baseOffset + token.end;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
else if (token.type === TokenType.Parenthesis && value === constants.OPEN_PARENTHESIS) {
|
|
268
|
+
node = parseParenthesizedExpression();
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
throw new adblockSyntaxError.AdblockSyntaxError(`Unexpected token "${value}"`, baseOffset + token.start, baseOffset + token.end);
|
|
272
|
+
}
|
|
273
|
+
return parseBinaryExpression(node, minPrecedence);
|
|
274
|
+
}
|
|
275
|
+
const expression = parseExpression();
|
|
276
|
+
if (tokenIndex !== tokens.length) {
|
|
277
|
+
throw new adblockSyntaxError.AdblockSyntaxError(`Unexpected token "${tokens[tokenIndex].type}"`, baseOffset + tokens[tokenIndex].start, baseOffset + tokens[tokenIndex].end);
|
|
278
|
+
}
|
|
279
|
+
return expression;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
exports.LogicalExpressionParser = LogicalExpressionParser;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants = require('../../utils/constants.js');
|
|
10
|
+
var index = require('../../nodes/index.js');
|
|
11
|
+
var options = require('../options.js');
|
|
12
|
+
var baseParser = require('../base-parser.js');
|
|
13
|
+
var listItemsParser = require('./list-items-parser.js');
|
|
14
|
+
|
|
15
|
+
const METHOD_LIST_SEPARATOR = constants.PIPE;
|
|
16
|
+
/**
|
|
17
|
+
* `MethodListParser` is responsible for parsing a method list.
|
|
18
|
+
*
|
|
19
|
+
* @see {@link https://adguard.app/kb/general/ad-filtering/create-own-filters/#method-modifier}
|
|
20
|
+
*/
|
|
21
|
+
class MethodListParser extends baseParser.BaseParser {
|
|
22
|
+
/**
|
|
23
|
+
* Parses a method list which items are separated by `|`,
|
|
24
|
+
* e.g. `get|post|put`.
|
|
25
|
+
*
|
|
26
|
+
* @param raw Raw input to parse.
|
|
27
|
+
* @param options Global parser options.
|
|
28
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
29
|
+
*
|
|
30
|
+
* @returns Method list AST.
|
|
31
|
+
* @throws An {@link AdblockSyntaxError} if the method list is syntactically invalid.
|
|
32
|
+
* @throws An {@link Error} if the options are invalid.
|
|
33
|
+
*/
|
|
34
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
|
|
35
|
+
const result = {
|
|
36
|
+
type: index.ListNodeType.MethodList,
|
|
37
|
+
separator: METHOD_LIST_SEPARATOR,
|
|
38
|
+
children: listItemsParser.ListItemsParser.parse(raw, options$1, baseOffset, METHOD_LIST_SEPARATOR, index.ListItemNodeType.Method),
|
|
39
|
+
};
|
|
40
|
+
if (options$1.isLocIncluded) {
|
|
41
|
+
result.start = baseOffset;
|
|
42
|
+
result.end = baseOffset + raw.length;
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
exports.MethodListParser = MethodListParser;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants = require('../../utils/constants.js');
|
|
10
|
+
var string = require('../../utils/string.js');
|
|
11
|
+
var baseParser = require('../base-parser.js');
|
|
12
|
+
var options = require('../options.js');
|
|
13
|
+
var modifierParser = require('./modifier-parser.js');
|
|
14
|
+
|
|
15
|
+
/* eslint-disable no-param-reassign */
|
|
16
|
+
/**
|
|
17
|
+
* `ModifierListParser` is responsible for parsing modifier lists. Please note that the name is not
|
|
18
|
+
* uniform, "modifiers" are also known as "options".
|
|
19
|
+
*
|
|
20
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#basic-rules-modifiers}
|
|
21
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#non-basic-rules-modifiers}
|
|
22
|
+
* @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#options}
|
|
23
|
+
*/
|
|
24
|
+
class ModifierListParser extends baseParser.BaseParser {
|
|
25
|
+
/**
|
|
26
|
+
* Parses the cosmetic rule modifiers, eg. `third-party,domain=example.com|~example.org`.
|
|
27
|
+
*
|
|
28
|
+
* _Note:_ you should remove `$` separator before passing the raw modifiers to this function,
|
|
29
|
+
* or it will be parsed in the first modifier.
|
|
30
|
+
*
|
|
31
|
+
* @param raw Raw input to parse.
|
|
32
|
+
* @param options Global parser options.
|
|
33
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
34
|
+
* @returns Parsed modifiers interface
|
|
35
|
+
*/
|
|
36
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
|
|
37
|
+
const result = {
|
|
38
|
+
type: 'ModifierList',
|
|
39
|
+
children: [],
|
|
40
|
+
};
|
|
41
|
+
if (options$1.isLocIncluded) {
|
|
42
|
+
result.start = baseOffset;
|
|
43
|
+
result.end = baseOffset + raw.length;
|
|
44
|
+
}
|
|
45
|
+
let offset = string.StringUtils.skipWS(raw);
|
|
46
|
+
let separatorIndex = -1;
|
|
47
|
+
// Split modifiers by unescaped commas
|
|
48
|
+
while (offset < raw.length) {
|
|
49
|
+
// Skip whitespace before the modifier
|
|
50
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
51
|
+
const modifierStart = offset;
|
|
52
|
+
// Find the index of the first unescaped comma
|
|
53
|
+
separatorIndex = string.StringUtils.findNextUnescapedCharacter(raw, constants.MODIFIERS_SEPARATOR, offset);
|
|
54
|
+
const modifierEnd = separatorIndex === -1
|
|
55
|
+
? raw.length
|
|
56
|
+
: string.StringUtils.skipWSBack(raw, separatorIndex - 1) + 1;
|
|
57
|
+
// Parse the modifier
|
|
58
|
+
const modifier = modifierParser.ModifierParser.parse(raw.slice(modifierStart, modifierEnd), options$1, baseOffset + modifierStart);
|
|
59
|
+
result.children.push(modifier);
|
|
60
|
+
// Increment the offset to the next modifier (or the end of the string)
|
|
61
|
+
offset = separatorIndex === -1 ? raw.length : separatorIndex + 1;
|
|
62
|
+
}
|
|
63
|
+
// Check if there are any modifiers after the last separator
|
|
64
|
+
if (separatorIndex !== -1) {
|
|
65
|
+
const modifierStart = string.StringUtils.skipWS(raw, separatorIndex + 1);
|
|
66
|
+
result.children.push(modifierParser.ModifierParser.parse(raw.slice(modifierStart, raw.length), options$1, baseOffset + modifierStart));
|
|
67
|
+
}
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
exports.ModifierListParser = ModifierListParser;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants = 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 valueParser = require('./value-parser.js');
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* `ModifierParser` is responsible for parsing modifiers.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* `match-case`, `~third-party`, `domain=example.com|~example.org`
|
|
21
|
+
*/
|
|
22
|
+
class ModifierParser extends baseParser.BaseParser {
|
|
23
|
+
/**
|
|
24
|
+
* Parses a modifier.
|
|
25
|
+
*
|
|
26
|
+
* @param raw Raw input to parse.
|
|
27
|
+
* @param options Global parser options.
|
|
28
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
29
|
+
*
|
|
30
|
+
* @returns Parsed modifier
|
|
31
|
+
* @throws An error if modifier name or value is empty.
|
|
32
|
+
*/
|
|
33
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
|
|
34
|
+
let offset = 0;
|
|
35
|
+
// Skip leading whitespace
|
|
36
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
37
|
+
// Save the offset of the first character of the modifier (whole modifier)
|
|
38
|
+
const modifierStart = offset;
|
|
39
|
+
// Check if the modifier is an exception
|
|
40
|
+
let exception = false;
|
|
41
|
+
if (raw[offset] === constants.NEGATION_MARKER) {
|
|
42
|
+
offset += constants.NEGATION_MARKER.length;
|
|
43
|
+
exception = true;
|
|
44
|
+
}
|
|
45
|
+
// Skip whitespace after the exception marker (if any)
|
|
46
|
+
offset = string.StringUtils.skipWS(raw, offset);
|
|
47
|
+
// Save the offset of the first character of the modifier name
|
|
48
|
+
const modifierNameStart = offset;
|
|
49
|
+
// Find assignment operator
|
|
50
|
+
const assignmentIndex = string.StringUtils.findNextUnescapedCharacter(raw, constants.MODIFIER_ASSIGN_OPERATOR);
|
|
51
|
+
// Find the end of the modifier
|
|
52
|
+
const modifierEnd = Math.max(string.StringUtils.skipWSBack(raw) + 1, modifierNameStart);
|
|
53
|
+
// Modifier name can't be empty
|
|
54
|
+
if (modifierNameStart === modifierEnd) {
|
|
55
|
+
throw new adblockSyntaxError.AdblockSyntaxError('Modifier name cannot be empty', baseOffset, baseOffset + raw.length);
|
|
56
|
+
}
|
|
57
|
+
let modifier;
|
|
58
|
+
let value;
|
|
59
|
+
// If there is no assignment operator, the whole modifier is the name
|
|
60
|
+
// without a value
|
|
61
|
+
if (assignmentIndex === -1) {
|
|
62
|
+
modifier = valueParser.ValueParser.parse(raw.slice(modifierNameStart, modifierEnd), options$1, baseOffset + modifierNameStart);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// If there is an assignment operator, first we need to find the
|
|
66
|
+
// end of the modifier name, then we can parse the value
|
|
67
|
+
const modifierNameEnd = string.StringUtils.skipWSBack(raw, assignmentIndex - 1) + 1;
|
|
68
|
+
modifier = valueParser.ValueParser.parse(raw.slice(modifierNameStart, modifierNameEnd), options$1, baseOffset + modifierNameStart);
|
|
69
|
+
// Value can't be empty
|
|
70
|
+
if (assignmentIndex + 1 === modifierEnd) {
|
|
71
|
+
throw new adblockSyntaxError.AdblockSyntaxError('Modifier value cannot be empty', baseOffset, baseOffset + raw.length);
|
|
72
|
+
}
|
|
73
|
+
// Skip whitespace after the assignment operator
|
|
74
|
+
const valueStart = string.StringUtils.skipWS(raw, assignmentIndex + constants.MODIFIER_ASSIGN_OPERATOR.length);
|
|
75
|
+
value = valueParser.ValueParser.parse(raw.slice(valueStart, modifierEnd), options$1, baseOffset + valueStart);
|
|
76
|
+
}
|
|
77
|
+
const result = {
|
|
78
|
+
type: 'Modifier',
|
|
79
|
+
name: modifier,
|
|
80
|
+
value,
|
|
81
|
+
exception,
|
|
82
|
+
};
|
|
83
|
+
if (options$1.isLocIncluded) {
|
|
84
|
+
result.start = baseOffset + modifierStart;
|
|
85
|
+
result.end = baseOffset + modifierEnd;
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
exports.ModifierParser = ModifierParser;
|