@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,560 @@
|
|
|
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('./constants.js');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @file Utility functions for string manipulation.
|
|
13
|
+
*/
|
|
14
|
+
const SINGLE_QUOTE_MARKER = "'";
|
|
15
|
+
const DOUBLE_QUOTE_MARKER = '"';
|
|
16
|
+
class StringUtils {
|
|
17
|
+
/**
|
|
18
|
+
* Finds the first occurrence of a character that:
|
|
19
|
+
* - isn't preceded by an escape character
|
|
20
|
+
*
|
|
21
|
+
* @param pattern - Source pattern
|
|
22
|
+
* @param searchedCharacter - Searched character
|
|
23
|
+
* @param start - Start index
|
|
24
|
+
* @param escapeCharacter - Escape character, \ by default
|
|
25
|
+
* @param end - End index (excluded)
|
|
26
|
+
* @returns Index or -1 if the character not found
|
|
27
|
+
*/
|
|
28
|
+
static findNextUnescapedCharacter(pattern, searchedCharacter, start = 0, escapeCharacter = constants.ESCAPE_CHARACTER, end = pattern.length) {
|
|
29
|
+
for (let i = start; i < end; i += 1) {
|
|
30
|
+
// The searched character cannot be preceded by an escape
|
|
31
|
+
if (pattern[i] === searchedCharacter && pattern[i - 1] !== escapeCharacter) {
|
|
32
|
+
return i;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return -1;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Finds the first occurrence in backward direction of a character that isn't preceded by an escape character.
|
|
39
|
+
*
|
|
40
|
+
* @param pattern - Source pattern
|
|
41
|
+
* @param searchedCharacter - Searched character
|
|
42
|
+
* @param start - Start index
|
|
43
|
+
* @param escapeCharacter - Escape character, \ by default
|
|
44
|
+
* @param end - End index (Included)
|
|
45
|
+
* @returns Index or -1 if the character not found
|
|
46
|
+
*/
|
|
47
|
+
static findNextUnescapedCharacterBackwards(pattern, searchedCharacter, start = pattern.length - 1, escapeCharacter = constants.ESCAPE_CHARACTER, end = 0) {
|
|
48
|
+
for (let i = start; i >= end; i -= 1) {
|
|
49
|
+
// The searched character cannot be preceded by an escape
|
|
50
|
+
if (pattern[i] === searchedCharacter && pattern[i - 1] !== escapeCharacter) {
|
|
51
|
+
return i;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return -1;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Finds the last occurrence of a character that:
|
|
58
|
+
* - isn't preceded by an escape character
|
|
59
|
+
*
|
|
60
|
+
* @param pattern - Source pattern
|
|
61
|
+
* @param searchedCharacter - Searched character
|
|
62
|
+
* @param escapeCharacter - Escape character, \ by default
|
|
63
|
+
* @returns Index or -1 if the character not found
|
|
64
|
+
*/
|
|
65
|
+
static findLastUnescapedCharacter(pattern, searchedCharacter, escapeCharacter = constants.ESCAPE_CHARACTER) {
|
|
66
|
+
for (let i = pattern.length - 1; i >= 0; i -= 1) {
|
|
67
|
+
// The searched character cannot be preceded by an escape
|
|
68
|
+
if (pattern[i] === searchedCharacter && pattern[i - 1] !== escapeCharacter) {
|
|
69
|
+
return i;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return -1;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Finds the next occurrence of a character that:
|
|
76
|
+
* - isn't preceded by an escape character
|
|
77
|
+
* - isn't followed by the specified character
|
|
78
|
+
*
|
|
79
|
+
* @param pattern - Source pattern
|
|
80
|
+
* @param start - Start index
|
|
81
|
+
* @param searchedCharacter - Searched character
|
|
82
|
+
* @param notFollowedBy - Searched character not followed by this character
|
|
83
|
+
* @param escapeCharacter - Escape character, \ by default
|
|
84
|
+
* @returns Index or -1 if the character not found
|
|
85
|
+
*/
|
|
86
|
+
static findNextUnescapedCharacterThatNotFollowedBy(pattern, start, searchedCharacter, notFollowedBy, escapeCharacter = constants.ESCAPE_CHARACTER) {
|
|
87
|
+
for (let i = start; i < pattern.length; i += 1) {
|
|
88
|
+
// The searched character cannot be preceded by an escape
|
|
89
|
+
if (pattern[i] === searchedCharacter
|
|
90
|
+
&& pattern[i + 1] !== notFollowedBy
|
|
91
|
+
&& pattern[i - 1] !== escapeCharacter) {
|
|
92
|
+
return i;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return -1;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Finds the last occurrence of a character that:
|
|
99
|
+
* - isn't preceded by an escape character
|
|
100
|
+
* - isn't followed by the specified character
|
|
101
|
+
*
|
|
102
|
+
* @param pattern - Source pattern
|
|
103
|
+
* @param searchedCharacter - Searched character
|
|
104
|
+
* @param notFollowedBy - Searched character not followed by this character
|
|
105
|
+
* @param escapeCharacter - Escape character, \ by default
|
|
106
|
+
* @returns Index or -1 if the character not found
|
|
107
|
+
*/
|
|
108
|
+
static findLastUnescapedCharacterThatNotFollowedBy(pattern, searchedCharacter, notFollowedBy, escapeCharacter = constants.ESCAPE_CHARACTER) {
|
|
109
|
+
for (let i = pattern.length - 1; i >= 0; i -= 1) {
|
|
110
|
+
// The searched character cannot be preceded by an escape
|
|
111
|
+
if (pattern[i] === searchedCharacter
|
|
112
|
+
&& pattern[i + 1] !== notFollowedBy
|
|
113
|
+
&& pattern[i - 1] !== escapeCharacter) {
|
|
114
|
+
return i;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return -1;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Finds the next occurrence of a character that:
|
|
121
|
+
* - isn't part of any string literal ('literal' or "literal")
|
|
122
|
+
* - isn't part of any RegExp expression (/regexp/)
|
|
123
|
+
*
|
|
124
|
+
* @param pattern - Source pattern
|
|
125
|
+
* @param searchedCharacter - Searched character
|
|
126
|
+
* @param start - Start index
|
|
127
|
+
* @returns Index or -1 if the character not found
|
|
128
|
+
*/
|
|
129
|
+
static findUnescapedNonStringNonRegexChar(pattern, searchedCharacter, start = 0) {
|
|
130
|
+
let open = null;
|
|
131
|
+
for (let i = start; i < pattern.length; i += 1) {
|
|
132
|
+
if ((pattern[i] === SINGLE_QUOTE_MARKER
|
|
133
|
+
|| pattern[i] === DOUBLE_QUOTE_MARKER
|
|
134
|
+
|| pattern[i] === constants.REGEX_MARKER)
|
|
135
|
+
&& pattern[i - 1] !== constants.ESCAPE_CHARACTER) {
|
|
136
|
+
if (open === pattern[i]) {
|
|
137
|
+
open = null;
|
|
138
|
+
}
|
|
139
|
+
else if (open === null) {
|
|
140
|
+
open = pattern[i];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else if (open === null && pattern[i] === searchedCharacter && pattern[i - 1] !== constants.ESCAPE_CHARACTER) {
|
|
144
|
+
return i;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return -1;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Finds the next occurrence of a character that:
|
|
151
|
+
* - isn't part of any string literal ('literal' or "literal")
|
|
152
|
+
* - isn't preceded by an escape character
|
|
153
|
+
*
|
|
154
|
+
* @param pattern - Source pattern
|
|
155
|
+
* @param searchedCharacter - Searched character
|
|
156
|
+
* @param start - Start index
|
|
157
|
+
* @param escapeCharacter - Escape character, \ by default
|
|
158
|
+
* @returns Index or -1 if the character not found
|
|
159
|
+
*/
|
|
160
|
+
static findNextUnquotedUnescapedCharacter(pattern, searchedCharacter, start = 0, escapeCharacter = constants.ESCAPE_CHARACTER) {
|
|
161
|
+
let openQuote = null;
|
|
162
|
+
for (let i = start; i < pattern.length; i += 1) {
|
|
163
|
+
// Unescaped ' or "
|
|
164
|
+
if ((pattern[i] === SINGLE_QUOTE_MARKER || pattern[i] === DOUBLE_QUOTE_MARKER)
|
|
165
|
+
&& pattern[i - 1] !== escapeCharacter) {
|
|
166
|
+
if (!openQuote)
|
|
167
|
+
openQuote = pattern[i];
|
|
168
|
+
else if (openQuote === pattern[i])
|
|
169
|
+
openQuote = null;
|
|
170
|
+
}
|
|
171
|
+
else if (pattern[i] === searchedCharacter && pattern[i - 1] !== escapeCharacter) {
|
|
172
|
+
// Unescaped character
|
|
173
|
+
if (!openQuote) {
|
|
174
|
+
return i;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return -1;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Finds the next occurrence of a character that:
|
|
182
|
+
* - isn't "bracketed"
|
|
183
|
+
* - isn't preceded by an escape character
|
|
184
|
+
*
|
|
185
|
+
* @param pattern - Source pattern
|
|
186
|
+
* @param searchedCharacter - Searched character
|
|
187
|
+
* @param start - Start index
|
|
188
|
+
* @param escapeCharacter - Escape character, \ by default
|
|
189
|
+
* @param openBracket - Open bracket, ( by default
|
|
190
|
+
* @param closeBracket - Close bracket, ( by default
|
|
191
|
+
* @throws If the opening and closing brackets are the same
|
|
192
|
+
* @returns Index or -1 if the character not found
|
|
193
|
+
*/
|
|
194
|
+
static findNextNotBracketedUnescapedCharacter(pattern, searchedCharacter, start = 0, escapeCharacter = constants.ESCAPE_CHARACTER, openBracket = '(', closeBracket = ')') {
|
|
195
|
+
if (openBracket === closeBracket) {
|
|
196
|
+
throw new Error('Open and close bracket cannot be the same');
|
|
197
|
+
}
|
|
198
|
+
let depth = 0;
|
|
199
|
+
for (let i = start; i < pattern.length; i += 1) {
|
|
200
|
+
if (pattern[i] === openBracket) {
|
|
201
|
+
depth += 1;
|
|
202
|
+
}
|
|
203
|
+
else if (pattern[i] === closeBracket) {
|
|
204
|
+
depth -= 1;
|
|
205
|
+
}
|
|
206
|
+
else if (depth < 1 && pattern[i] === searchedCharacter && pattern[i - 1] !== escapeCharacter) {
|
|
207
|
+
return i;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return -1;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Splits the source pattern along characters that:
|
|
214
|
+
* - isn't part of any string literal ('literal' or "literal")
|
|
215
|
+
* - isn't preceded by an escape character
|
|
216
|
+
*
|
|
217
|
+
* @param pattern - Source pattern
|
|
218
|
+
* @param delimeterCharacter - Delimeter character
|
|
219
|
+
* @returns Splitted string
|
|
220
|
+
*/
|
|
221
|
+
static splitStringByUnquotedUnescapedCharacter(pattern, delimeterCharacter) {
|
|
222
|
+
const parts = [];
|
|
223
|
+
let delimeterIndex = -1;
|
|
224
|
+
do {
|
|
225
|
+
const prevDelimeterIndex = delimeterIndex;
|
|
226
|
+
delimeterIndex = StringUtils.findNextUnquotedUnescapedCharacter(pattern, delimeterCharacter, delimeterIndex + 1);
|
|
227
|
+
if (delimeterIndex !== -1) {
|
|
228
|
+
parts.push(pattern.substring(prevDelimeterIndex + 1, delimeterIndex));
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
parts.push(pattern.substring(prevDelimeterIndex + 1, pattern.length));
|
|
232
|
+
}
|
|
233
|
+
} while (delimeterIndex !== -1);
|
|
234
|
+
return parts;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Splits the source pattern along characters that:
|
|
238
|
+
* - isn't part of any string literal ('literal' or "literal")
|
|
239
|
+
* - isn't part of any RegExp expression (/regexp/)
|
|
240
|
+
* - isn't preceded by an escape character
|
|
241
|
+
*
|
|
242
|
+
* @param pattern - Source pattern
|
|
243
|
+
* @param delimeterCharacter - Delimeter character
|
|
244
|
+
* @returns Splitted string
|
|
245
|
+
*/
|
|
246
|
+
static splitStringByUnescapedNonStringNonRegexChar(pattern, delimeterCharacter) {
|
|
247
|
+
const parts = [];
|
|
248
|
+
let delimeterIndex = -1;
|
|
249
|
+
do {
|
|
250
|
+
const prevDelimeterIndex = delimeterIndex;
|
|
251
|
+
delimeterIndex = StringUtils.findUnescapedNonStringNonRegexChar(pattern, delimeterCharacter, delimeterIndex + 1);
|
|
252
|
+
if (delimeterIndex !== -1) {
|
|
253
|
+
parts.push(pattern.substring(prevDelimeterIndex + 1, delimeterIndex));
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
parts.push(pattern.substring(prevDelimeterIndex + 1, pattern.length));
|
|
257
|
+
}
|
|
258
|
+
} while (delimeterIndex !== -1);
|
|
259
|
+
return parts;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Splits the source pattern along characters that:
|
|
263
|
+
* - isn't preceded by an escape character
|
|
264
|
+
*
|
|
265
|
+
* @param pattern - Source pattern
|
|
266
|
+
* @param delimeterCharacter - Delimeter character
|
|
267
|
+
* @returns Splitted string
|
|
268
|
+
*/
|
|
269
|
+
static splitStringByUnescapedCharacter(pattern, delimeterCharacter) {
|
|
270
|
+
const parts = [];
|
|
271
|
+
let delimeterIndex = -1;
|
|
272
|
+
do {
|
|
273
|
+
const prevDelimeterIndex = delimeterIndex;
|
|
274
|
+
delimeterIndex = StringUtils.findNextUnescapedCharacter(pattern, delimeterCharacter, delimeterIndex + 1);
|
|
275
|
+
if (delimeterIndex !== -1) {
|
|
276
|
+
parts.push(pattern.substring(prevDelimeterIndex + 1, delimeterIndex));
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
parts.push(pattern.substring(prevDelimeterIndex + 1, pattern.length));
|
|
280
|
+
}
|
|
281
|
+
} while (delimeterIndex !== -1);
|
|
282
|
+
return parts;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Determines whether the given character is a space or tab character.
|
|
286
|
+
*
|
|
287
|
+
* @param char - The character to check.
|
|
288
|
+
* @returns true if the given character is a space or tab character, false otherwise.
|
|
289
|
+
*/
|
|
290
|
+
static isWhitespace(char) {
|
|
291
|
+
return char === constants.SPACE || char === constants.TAB;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Checks if the given character is a digit.
|
|
295
|
+
*
|
|
296
|
+
* @param char The character to check.
|
|
297
|
+
* @returns `true` if the given character is a digit, `false` otherwise.
|
|
298
|
+
*/
|
|
299
|
+
static isDigit(char) {
|
|
300
|
+
return char >= constants.NUMBER_0 && char <= constants.NUMBER_9;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Checks if the given character is a small letter.
|
|
304
|
+
*
|
|
305
|
+
* @param char The character to check.
|
|
306
|
+
* @returns `true` if the given character is a small letter, `false` otherwise.
|
|
307
|
+
*/
|
|
308
|
+
static isSmallLetter(char) {
|
|
309
|
+
return char >= constants.SMALL_LETTER_A && char <= constants.SMALL_LETTER_Z;
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Checks if the given character is a capital letter.
|
|
313
|
+
*
|
|
314
|
+
* @param char The character to check.
|
|
315
|
+
* @returns `true` if the given character is a capital letter, `false` otherwise.
|
|
316
|
+
*/
|
|
317
|
+
static isCapitalLetter(char) {
|
|
318
|
+
return char >= constants.CAPITAL_LETTER_A && char <= constants.CAPITAL_LETTER_Z;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Checks if the given character is a letter (small or capital).
|
|
322
|
+
*
|
|
323
|
+
* @param char The character to check.
|
|
324
|
+
* @returns `true` if the given character is a letter, `false` otherwise.
|
|
325
|
+
*/
|
|
326
|
+
static isLetter(char) {
|
|
327
|
+
return StringUtils.isSmallLetter(char) || StringUtils.isCapitalLetter(char);
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Checks if the given character is a letter or a digit.
|
|
331
|
+
*
|
|
332
|
+
* @param char Character to check
|
|
333
|
+
* @returns `true` if the given character is a letter or a digit, `false` otherwise.
|
|
334
|
+
*/
|
|
335
|
+
static isAlphaNumeric(char) {
|
|
336
|
+
return StringUtils.isLetter(char) || StringUtils.isDigit(char);
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Searches for the first non-whitespace character in the source pattern.
|
|
340
|
+
*
|
|
341
|
+
* @param pattern - Source pattern
|
|
342
|
+
* @param start - Start index
|
|
343
|
+
* @returns Index or -1 if the character not found
|
|
344
|
+
*/
|
|
345
|
+
static findFirstNonWhitespaceCharacter(pattern, start = 0) {
|
|
346
|
+
for (let i = start; i < pattern.length; i += 1) {
|
|
347
|
+
if (!StringUtils.isWhitespace(pattern[i])) {
|
|
348
|
+
return i;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return -1;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Searches for the last non-whitespace character in the source pattern.
|
|
355
|
+
*
|
|
356
|
+
* @param pattern - Source pattern
|
|
357
|
+
* @returns Index or -1 if the character not found
|
|
358
|
+
*/
|
|
359
|
+
static findLastNonWhitespaceCharacter(pattern) {
|
|
360
|
+
for (let i = pattern.length - 1; i >= 0; i -= 1) {
|
|
361
|
+
if (!StringUtils.isWhitespace(pattern[i])) {
|
|
362
|
+
return i;
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
return -1;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Finds the next whitespace character in the pattern.
|
|
369
|
+
*
|
|
370
|
+
* @param pattern Pattern to search in
|
|
371
|
+
* @param start Start index
|
|
372
|
+
* @returns Index of the next whitespace character or the length of the pattern if not found
|
|
373
|
+
*/
|
|
374
|
+
static findNextWhitespaceCharacter(pattern, start = 0) {
|
|
375
|
+
for (let i = start; i < pattern.length; i += 1) {
|
|
376
|
+
if (StringUtils.isWhitespace(pattern[i])) {
|
|
377
|
+
return i;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
return pattern.length;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Escapes a specified character in the string.
|
|
384
|
+
*
|
|
385
|
+
* @param pattern - Input string
|
|
386
|
+
* @param character - Character to escape
|
|
387
|
+
* @param escapeCharacter - Escape character (optional)
|
|
388
|
+
* @returns Escaped string
|
|
389
|
+
*/
|
|
390
|
+
static escapeCharacter(pattern, character, escapeCharacter = constants.ESCAPE_CHARACTER) {
|
|
391
|
+
let result = constants.EMPTY;
|
|
392
|
+
for (let i = 0; i < pattern.length; i += 1) {
|
|
393
|
+
if (pattern[i] === character && pattern[i - 1] !== escapeCharacter) {
|
|
394
|
+
result += escapeCharacter;
|
|
395
|
+
}
|
|
396
|
+
result += pattern[i];
|
|
397
|
+
}
|
|
398
|
+
return result;
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Searches for the next non-whitespace character in the source pattern.
|
|
402
|
+
*
|
|
403
|
+
* @param pattern Pattern to search
|
|
404
|
+
* @param start Start index
|
|
405
|
+
* @returns Index of the next non-whitespace character or the length of the pattern
|
|
406
|
+
*/
|
|
407
|
+
static skipWS(pattern, start = 0) {
|
|
408
|
+
let i = start;
|
|
409
|
+
while (i < pattern.length && StringUtils.isWhitespace(pattern[i])) {
|
|
410
|
+
i += 1;
|
|
411
|
+
}
|
|
412
|
+
return Math.min(i, pattern.length);
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Searches for the previous non-whitespace character in the source pattern.
|
|
416
|
+
*
|
|
417
|
+
* @param pattern Pattern to search
|
|
418
|
+
* @param start Start index
|
|
419
|
+
* @returns Index of the previous non-whitespace character or -1
|
|
420
|
+
*/
|
|
421
|
+
static skipWSBack(pattern, start = pattern.length - 1) {
|
|
422
|
+
let i = start;
|
|
423
|
+
while (i >= 0 && StringUtils.isWhitespace(pattern[i])) {
|
|
424
|
+
i -= 1;
|
|
425
|
+
}
|
|
426
|
+
return Math.max(i, -1);
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Checks if the given character is a new line character.
|
|
430
|
+
*
|
|
431
|
+
* @param char Character to check
|
|
432
|
+
* @returns `true` if the given character is a new line character, `false` otherwise.
|
|
433
|
+
*/
|
|
434
|
+
static isEOL(char) {
|
|
435
|
+
return char === constants.CR || char === constants.LF || char === constants.FF;
|
|
436
|
+
}
|
|
437
|
+
/**
|
|
438
|
+
* Splits a string along newline characters.
|
|
439
|
+
*
|
|
440
|
+
* @param input - Input string
|
|
441
|
+
* @returns Splitted string
|
|
442
|
+
*/
|
|
443
|
+
static splitStringByNewLines(input) {
|
|
444
|
+
return input.split(/\r?\n/);
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Splits a string by new lines and stores the new line type for each line
|
|
448
|
+
*
|
|
449
|
+
* @param input The input string to be split
|
|
450
|
+
* @returns An array of tuples, where each tuple contains a line of the input string and its
|
|
451
|
+
* corresponding new line type ("lf", "crlf", or "cr")
|
|
452
|
+
*/
|
|
453
|
+
static splitStringByNewLinesEx(input) {
|
|
454
|
+
// Array to store the tuples of line and new line type
|
|
455
|
+
const result = [];
|
|
456
|
+
let currentLine = constants.EMPTY;
|
|
457
|
+
let newLineType = null;
|
|
458
|
+
// Iterate over each character in the input string
|
|
459
|
+
for (let i = 0; i < input.length; i += 1) {
|
|
460
|
+
const char = input[i];
|
|
461
|
+
if (char === constants.CR) {
|
|
462
|
+
if (input[i + 1] === constants.LF) {
|
|
463
|
+
newLineType = 'crlf';
|
|
464
|
+
i += 1;
|
|
465
|
+
}
|
|
466
|
+
else {
|
|
467
|
+
newLineType = 'cr';
|
|
468
|
+
}
|
|
469
|
+
result.push([currentLine, newLineType]);
|
|
470
|
+
currentLine = constants.EMPTY;
|
|
471
|
+
newLineType = null;
|
|
472
|
+
}
|
|
473
|
+
else if (char === constants.LF) {
|
|
474
|
+
newLineType = 'lf';
|
|
475
|
+
result.push([currentLine, newLineType]);
|
|
476
|
+
currentLine = constants.EMPTY;
|
|
477
|
+
newLineType = null;
|
|
478
|
+
}
|
|
479
|
+
else {
|
|
480
|
+
currentLine += char;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
if (result.length === 0 || currentLine !== constants.EMPTY) {
|
|
484
|
+
result.push([currentLine, newLineType]);
|
|
485
|
+
}
|
|
486
|
+
return result;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Merges an array of tuples (line, newLineType) into a single string
|
|
490
|
+
*
|
|
491
|
+
* @param input The array of tuples to be merged
|
|
492
|
+
* @returns A single string containing the lines and new line characters from the input array
|
|
493
|
+
*/
|
|
494
|
+
static mergeStringByNewLines(input) {
|
|
495
|
+
let result = constants.EMPTY;
|
|
496
|
+
// Iterate over each tuple in the input array
|
|
497
|
+
for (let i = 0; i < input.length; i += 1) {
|
|
498
|
+
const [line, newLineType] = input[i];
|
|
499
|
+
// Add the line to the result string
|
|
500
|
+
result += line;
|
|
501
|
+
// Add the appropriate new line character based on the newLineType
|
|
502
|
+
if (newLineType !== null) {
|
|
503
|
+
if (newLineType === 'crlf') {
|
|
504
|
+
result += constants.CRLF;
|
|
505
|
+
}
|
|
506
|
+
else if (newLineType === 'cr') {
|
|
507
|
+
result += constants.CR;
|
|
508
|
+
}
|
|
509
|
+
else {
|
|
510
|
+
result += constants.LF;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
return result;
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* Helper method to parse a raw string as a number
|
|
518
|
+
*
|
|
519
|
+
* @param raw Raw string to parse
|
|
520
|
+
* @returns Parsed number
|
|
521
|
+
* @throws If the raw string can't be parsed as a number
|
|
522
|
+
*/
|
|
523
|
+
static parseNumber(raw) {
|
|
524
|
+
const result = parseInt(raw, 10);
|
|
525
|
+
if (Number.isNaN(result)) {
|
|
526
|
+
throw new Error('Expected a number');
|
|
527
|
+
}
|
|
528
|
+
return result;
|
|
529
|
+
}
|
|
530
|
+
/**
|
|
531
|
+
* Checks if the given value is a string.
|
|
532
|
+
*
|
|
533
|
+
* @param value Value to check
|
|
534
|
+
* @returns `true` if the value is a string, `false` otherwise
|
|
535
|
+
*/
|
|
536
|
+
static isString(value) {
|
|
537
|
+
return typeof value === 'string';
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Escapes the given characters in the input string.
|
|
541
|
+
*
|
|
542
|
+
* @param input Input string
|
|
543
|
+
* @param characters Characters to escape (by default, no characters are escaped)
|
|
544
|
+
* @returns Escaped string
|
|
545
|
+
*/
|
|
546
|
+
static escapeCharacters(input, characters = new Set()) {
|
|
547
|
+
let result = constants.EMPTY;
|
|
548
|
+
for (let i = 0; i < input.length; i += 1) {
|
|
549
|
+
if (characters.has(input[i])) {
|
|
550
|
+
result += constants.ESCAPE_CHARACTER;
|
|
551
|
+
}
|
|
552
|
+
result += input[i];
|
|
553
|
+
}
|
|
554
|
+
return result;
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
exports.DOUBLE_QUOTE_MARKER = DOUBLE_QUOTE_MARKER;
|
|
559
|
+
exports.SINGLE_QUOTE_MARKER = SINGLE_QUOTE_MARKER;
|
|
560
|
+
exports.StringUtils = StringUtils;
|
|
@@ -0,0 +1,109 @@
|
|
|
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('./constants.js');
|
|
10
|
+
|
|
11
|
+
/* eslint-disable no-plusplus */
|
|
12
|
+
/* eslint-disable no-bitwise */
|
|
13
|
+
/**
|
|
14
|
+
* @file Optimized utility for decoding strings from byte sequences.
|
|
15
|
+
*/
|
|
16
|
+
const REPLACEMENT_CHAR = String.fromCodePoint(0xFFFD);
|
|
17
|
+
/**
|
|
18
|
+
* Decodes a byte sequence into an UTF-8 string according to the WHATWG spec.
|
|
19
|
+
* Optimized for performance.
|
|
20
|
+
*
|
|
21
|
+
* @param buffer Buffer to read the bytes from.
|
|
22
|
+
* @param start Start offset in the buffer.
|
|
23
|
+
* @param end End offset in the buffer.
|
|
24
|
+
* @returns Decoded string.
|
|
25
|
+
* @see {@link https://encoding.spec.whatwg.org/#utf-8-decoder}
|
|
26
|
+
*/
|
|
27
|
+
const decodeTextPolyfill = (buffer, start = 0, end = -1) => {
|
|
28
|
+
let codePoint = 0;
|
|
29
|
+
let bytesSeen = 0;
|
|
30
|
+
let bytesNeeded = 0;
|
|
31
|
+
let lowerBoundary = 0x0080;
|
|
32
|
+
let upperBoundary = 0x00BF;
|
|
33
|
+
let i = start;
|
|
34
|
+
const { length } = buffer;
|
|
35
|
+
const realEnd = end === -1 ? length : Math.min(end, length);
|
|
36
|
+
const result = new Array(realEnd - start);
|
|
37
|
+
let resIdx = 0;
|
|
38
|
+
for (; i < realEnd; i += 1) {
|
|
39
|
+
const byte = buffer[i];
|
|
40
|
+
if (bytesNeeded === 0) {
|
|
41
|
+
if (byte <= 0x007F) {
|
|
42
|
+
codePoint = byte & 0x00FF;
|
|
43
|
+
}
|
|
44
|
+
else if (byte >= 0x00C2 && byte <= 0x00DF) {
|
|
45
|
+
bytesNeeded = 1;
|
|
46
|
+
codePoint = byte & 0x001F;
|
|
47
|
+
}
|
|
48
|
+
else if (byte >= 0x00E0 && byte <= 0x00EF) {
|
|
49
|
+
bytesNeeded = 2;
|
|
50
|
+
codePoint = byte & 0x000F;
|
|
51
|
+
if (byte === 0x00E0) {
|
|
52
|
+
// Adjust lower boundary for exclusion of overlong sequences
|
|
53
|
+
lowerBoundary = 0x00A0;
|
|
54
|
+
}
|
|
55
|
+
else if (byte === 0x00ED) {
|
|
56
|
+
// Adjust upper boundary to exclude surrogates
|
|
57
|
+
upperBoundary = 0x009F;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else if (byte >= 0x00F0 && byte <= 0x00F4) {
|
|
61
|
+
bytesNeeded = 3;
|
|
62
|
+
codePoint = byte & 0x0007;
|
|
63
|
+
if (byte === 0x00F0) {
|
|
64
|
+
// Adjust lower boundary for exclusion of overlong sequences
|
|
65
|
+
lowerBoundary = 0x0090;
|
|
66
|
+
}
|
|
67
|
+
else if (byte === 0x00F4) {
|
|
68
|
+
// Adjust upper boundary to limit to valid Unicode range
|
|
69
|
+
upperBoundary = 0x008F;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// For bytes that are not valid initial bytes of UTF-8 sequences, add replacement character
|
|
74
|
+
result[resIdx++] = REPLACEMENT_CHAR;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// For subsequent bytes in a multibyte sequence, check if the byte is in the expected range
|
|
80
|
+
if (!(byte >= lowerBoundary && byte <= upperBoundary)) {
|
|
81
|
+
// Reset the state for illegal sequences and add replacement character
|
|
82
|
+
bytesNeeded = 0;
|
|
83
|
+
bytesSeen = 0;
|
|
84
|
+
lowerBoundary = 0x0080;
|
|
85
|
+
upperBoundary = 0x00BF;
|
|
86
|
+
result[resIdx++] = REPLACEMENT_CHAR;
|
|
87
|
+
// Decrement `i` to re-evaluate this byte as the start of a new sequence
|
|
88
|
+
i -= 1;
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
codePoint = (codePoint << 6) | (byte & 0x003F);
|
|
92
|
+
// Reset boundaries for next bytes
|
|
93
|
+
lowerBoundary = 0x0080;
|
|
94
|
+
upperBoundary = 0x00BF;
|
|
95
|
+
bytesSeen += 1;
|
|
96
|
+
}
|
|
97
|
+
if (bytesSeen === bytesNeeded) {
|
|
98
|
+
// Complete the code point assembly and add it to the result
|
|
99
|
+
result[resIdx++] = String.fromCodePoint(codePoint);
|
|
100
|
+
// Reset for the next character
|
|
101
|
+
bytesNeeded = 0;
|
|
102
|
+
bytesSeen = 0;
|
|
103
|
+
codePoint = 0;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return result.join(constants.EMPTY);
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
exports.decodeTextPolyfill = decodeTextPolyfill;
|