@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,33 @@
|
|
|
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
|
+
import { isUndefined } from './type-guards.mjs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A very simple map extension that allows to store multiple values for the same key
|
|
11
|
+
* by storing them in an array.
|
|
12
|
+
*
|
|
13
|
+
* @todo Add more methods if needed
|
|
14
|
+
*/
|
|
15
|
+
class MultiValueMap extends Map {
|
|
16
|
+
/**
|
|
17
|
+
* Adds a value to the map. If the key already exists, the value will be appended to the existing array,
|
|
18
|
+
* otherwise a new array will be created for the key.
|
|
19
|
+
*
|
|
20
|
+
* @param key Key to add
|
|
21
|
+
* @param values Value(s) to add
|
|
22
|
+
*/
|
|
23
|
+
add(key, ...values) {
|
|
24
|
+
let currentValues = super.get(key);
|
|
25
|
+
if (isUndefined(currentValues)) {
|
|
26
|
+
currentValues = [];
|
|
27
|
+
super.set(key, values);
|
|
28
|
+
}
|
|
29
|
+
currentValues.push(...values);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { MultiValueMap };
|
|
@@ -0,0 +1,223 @@
|
|
|
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
|
+
import { BINARY_SCHEMA_VERSION } from './binary-schema-version.mjs';
|
|
8
|
+
import { ByteBuffer } from './byte-buffer.mjs';
|
|
9
|
+
import { isChromium } from './is-chromium.mjs';
|
|
10
|
+
import { encodeIntoPolyfill } from './text-encoder-polyfill.mjs';
|
|
11
|
+
|
|
12
|
+
/* eslint-disable no-plusplus */
|
|
13
|
+
/* eslint-disable no-bitwise */
|
|
14
|
+
/**
|
|
15
|
+
* @file Output byte buffer for writing binary data.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Output byte buffer for writing binary data.
|
|
19
|
+
*
|
|
20
|
+
* @note Internally, this class uses a {@link ByteBuffer} instance, just providing a convenient API for reading data.
|
|
21
|
+
*/
|
|
22
|
+
class OutputByteBuffer extends ByteBuffer {
|
|
23
|
+
/**
|
|
24
|
+
* Current offset in the buffer for writing.
|
|
25
|
+
*/
|
|
26
|
+
offset;
|
|
27
|
+
/**
|
|
28
|
+
* Size of the shared buffer for encoding strings in bytes.
|
|
29
|
+
* This is a divisor of ByteBuffer.CHUNK_SIZE and experience shows that this value works optimally.
|
|
30
|
+
* This is sufficient for most strings that occur in filter lists (we checked average string length in popular
|
|
31
|
+
* filter lists).
|
|
32
|
+
*/
|
|
33
|
+
static ENCODER_BUFFER_SIZE = 8192;
|
|
34
|
+
/**
|
|
35
|
+
* Length threshold for using a shared buffer for encoding strings.
|
|
36
|
+
* This temp buffer is needed because we write the short strings in it
|
|
37
|
+
* (so there is no need to constantly allocate a new buffer).
|
|
38
|
+
* The reason for dividing ENCODER_BUFFER_SIZE by 4 is to ensure that the encoded string fits in the buffer,
|
|
39
|
+
* if we also take into account the worst possible case (each character is encoded with 4 bytes).
|
|
40
|
+
*/
|
|
41
|
+
static SHORT_STRING_THRESHOLD = 2048; // 8192 / 4
|
|
42
|
+
/**
|
|
43
|
+
* Represents the maximum value that can be written as a 'storage optimized' unsigned integer.
|
|
44
|
+
* 0x1FFFFFFF means 29 bits — 32 bits minus 3 bits — because the last bit in each byte is a flag indicating
|
|
45
|
+
* if there are more bytes (except for the last byte).
|
|
46
|
+
*/
|
|
47
|
+
static MAX_OPTIMIZED_UINT = 0x1FFFFFFF;
|
|
48
|
+
/**
|
|
49
|
+
* Shared buffer for encoding strings.
|
|
50
|
+
*/
|
|
51
|
+
sharedBuffer;
|
|
52
|
+
/**
|
|
53
|
+
* Shared native encoder for encoding strings.
|
|
54
|
+
*/
|
|
55
|
+
sharedNativeEncoder;
|
|
56
|
+
/**
|
|
57
|
+
* Flag indicating if the current environment is Chromium.
|
|
58
|
+
* This is used for performance optimizations, because Chromium's TextEncoder/TextDecoder has a relatively
|
|
59
|
+
* large marshalling overhead for small strings.
|
|
60
|
+
*/
|
|
61
|
+
isChromium;
|
|
62
|
+
/**
|
|
63
|
+
* Constructs a new OutputByteBuffer instance.
|
|
64
|
+
*/
|
|
65
|
+
// TODO: add chunks as a parameter, if ever needed
|
|
66
|
+
constructor() {
|
|
67
|
+
super();
|
|
68
|
+
this.sharedBuffer = new Uint8Array(OutputByteBuffer.ENCODER_BUFFER_SIZE);
|
|
69
|
+
this.sharedNativeEncoder = new TextEncoder();
|
|
70
|
+
this.isChromium = isChromium();
|
|
71
|
+
// write the schema version at the beginning of the buffer
|
|
72
|
+
this.writeUint32ToIndex(BINARY_SCHEMA_VERSION, 0);
|
|
73
|
+
this.offset = 4; // schema version is already written
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Writes a 8-bit unsigned integer to the buffer.
|
|
77
|
+
*
|
|
78
|
+
* @param value Value to write.
|
|
79
|
+
* @returns Number of bytes written to the buffer.
|
|
80
|
+
*/
|
|
81
|
+
writeUint8(value) {
|
|
82
|
+
this.writeByte(this.offset++, value);
|
|
83
|
+
return 1;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Writes a 16-bit unsigned integer to the buffer.
|
|
87
|
+
*
|
|
88
|
+
* @param value Value to write.
|
|
89
|
+
* @returns Number of bytes written to the buffer.
|
|
90
|
+
*/
|
|
91
|
+
writeUint16(value) {
|
|
92
|
+
this.writeByte(this.offset++, value >> 8);
|
|
93
|
+
this.writeByte(this.offset++, value);
|
|
94
|
+
return 2;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Writes a 32-bit unsigned integer to the buffer at a specific index.
|
|
98
|
+
*
|
|
99
|
+
* @param value Value to write.
|
|
100
|
+
* @param index Index to write the value to.
|
|
101
|
+
* @returns Number of bytes written to the buffer.
|
|
102
|
+
*/
|
|
103
|
+
writeUint32ToIndex(value, index) {
|
|
104
|
+
this.writeByte(index, value >> 24);
|
|
105
|
+
this.writeByte(index + 1, value >> 16);
|
|
106
|
+
this.writeByte(index + 2, value >> 8);
|
|
107
|
+
this.writeByte(index + 3, value);
|
|
108
|
+
return 4;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Writes a 32-bit unsigned integer to the buffer.
|
|
112
|
+
*
|
|
113
|
+
* @param value Value to write.
|
|
114
|
+
* @returns Number of bytes written to the buffer.
|
|
115
|
+
*/
|
|
116
|
+
writeUint32(value) {
|
|
117
|
+
this.writeUint32ToIndex(value, this.offset);
|
|
118
|
+
this.offset += 4;
|
|
119
|
+
return 4;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Writes a 32-bit signed integer to the buffer.
|
|
123
|
+
*
|
|
124
|
+
* @param value Value to write.
|
|
125
|
+
* @returns Number of bytes written to the buffer.
|
|
126
|
+
*/
|
|
127
|
+
writeInt32(value) {
|
|
128
|
+
return this.writeUint32(value ? value >>> 0 : 0);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Writes a Uint8Array to the byte buffer.
|
|
132
|
+
*
|
|
133
|
+
* @param buffer Buffer to write.
|
|
134
|
+
*/
|
|
135
|
+
writeBuffer(buffer) {
|
|
136
|
+
const { length } = buffer;
|
|
137
|
+
this.ensureCapacity(this.offset + length);
|
|
138
|
+
let chunkIndex = this.offset >>> 0x000F;
|
|
139
|
+
let chunkOffset = this.offset & 0x7FFF;
|
|
140
|
+
let remainingBytes = length;
|
|
141
|
+
while (remainingBytes) {
|
|
142
|
+
const leftInChunk = ByteBuffer.CHUNK_SIZE - chunkOffset;
|
|
143
|
+
const bytesToWrite = Math.min(remainingBytes, leftInChunk);
|
|
144
|
+
this.chunks[chunkIndex].set(buffer.subarray(length - remainingBytes, length - remainingBytes + bytesToWrite), chunkOffset);
|
|
145
|
+
remainingBytes -= bytesToWrite;
|
|
146
|
+
chunkIndex += 1;
|
|
147
|
+
chunkOffset = 0;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Writes a string to the buffer.
|
|
152
|
+
*
|
|
153
|
+
* @param value Value to write.
|
|
154
|
+
* @returns Number of bytes written to the buffer.
|
|
155
|
+
*/
|
|
156
|
+
writeString(value) {
|
|
157
|
+
const start = this.offset;
|
|
158
|
+
if (value.length <= OutputByteBuffer.SHORT_STRING_THRESHOLD) {
|
|
159
|
+
let bytesWritten;
|
|
160
|
+
if (this.isChromium) {
|
|
161
|
+
bytesWritten = encodeIntoPolyfill(value, this.sharedBuffer).written ?? 0;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
bytesWritten = this.sharedNativeEncoder.encodeInto(value, this.sharedBuffer).written ?? 0;
|
|
165
|
+
}
|
|
166
|
+
this.writeOptimizedUint(bytesWritten);
|
|
167
|
+
this.writeBuffer(this.sharedBuffer.subarray(0, bytesWritten));
|
|
168
|
+
this.offset += bytesWritten;
|
|
169
|
+
return this.offset - start;
|
|
170
|
+
}
|
|
171
|
+
// TODO: Optimize for long strings, if needed. Not a common case for our use case
|
|
172
|
+
const buffer = this.sharedNativeEncoder.encode(value);
|
|
173
|
+
const bytesWritten = buffer.length;
|
|
174
|
+
this.writeOptimizedUint(bytesWritten);
|
|
175
|
+
this.writeBuffer(buffer);
|
|
176
|
+
this.offset += bytesWritten;
|
|
177
|
+
return this.offset - start;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Writes chunks to the storage.
|
|
181
|
+
*
|
|
182
|
+
* @param storage Storage to write the chunks to.
|
|
183
|
+
* @param key Key to write the chunks to.
|
|
184
|
+
* @note For performance reasons, chunks are passed by reference and not copied.
|
|
185
|
+
* @throws If the storage write operation throws.
|
|
186
|
+
*/
|
|
187
|
+
async writeChunksToStorage(storage, key) {
|
|
188
|
+
await storage.set(key, this.chunks);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Writes an 'optimized' unsigned integer to the buffer.
|
|
192
|
+
* 'Optimized' means smaller storage usage for smaller numbers.
|
|
193
|
+
* Except for the last byte, each byte's most significant bit is a flag indicating if there are more bytes.
|
|
194
|
+
*
|
|
195
|
+
* @param value Value to write.
|
|
196
|
+
* @returns Number of bytes written to the buffer.
|
|
197
|
+
* @throws If the value exceeds the 29-bit limit.
|
|
198
|
+
*/
|
|
199
|
+
writeOptimizedUint(value) {
|
|
200
|
+
if (value < 0 || value > OutputByteBuffer.MAX_OPTIMIZED_UINT) {
|
|
201
|
+
throw new Error('Value exceeds 29-bit limit');
|
|
202
|
+
}
|
|
203
|
+
let remainingValue = value;
|
|
204
|
+
const startOffset = this.offset;
|
|
205
|
+
while (remainingValue >= 0x80) {
|
|
206
|
+
const byteValue = remainingValue & 0x7F;
|
|
207
|
+
remainingValue >>>= 7;
|
|
208
|
+
this.writeByte(this.offset++, byteValue | 0x80);
|
|
209
|
+
}
|
|
210
|
+
this.writeByte(this.offset++, remainingValue);
|
|
211
|
+
return this.offset - startOffset;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Gets the current offset in the buffer for writing.
|
|
215
|
+
*
|
|
216
|
+
* @returns Current offset in the buffer for writing.
|
|
217
|
+
*/
|
|
218
|
+
get currentOffset() {
|
|
219
|
+
return this.offset;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export { OutputByteBuffer };
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
import { LF, FF, CR } from './constants.mjs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @file Position provider class.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Class responsible for converting a character offset in source code into a line and column position.
|
|
14
|
+
* This conversion is particularly needed in linters and VSCode extensions,
|
|
15
|
+
* where line and column numbers are more human-friendly and intuitive than character offsets.
|
|
16
|
+
* Moreover, the VSCode diagnostics API does not directly support character offsets,
|
|
17
|
+
* it also requires line and column numbers.
|
|
18
|
+
*/
|
|
19
|
+
class PositionProvider {
|
|
20
|
+
/**
|
|
21
|
+
* Maps a character offset to a line number.
|
|
22
|
+
*/
|
|
23
|
+
offsetToLine;
|
|
24
|
+
/**
|
|
25
|
+
* Maps a line number to the starting character offset of that line.
|
|
26
|
+
*/
|
|
27
|
+
lineStartOffsets;
|
|
28
|
+
/**
|
|
29
|
+
* Constructs a new PositionProvider instance.
|
|
30
|
+
*
|
|
31
|
+
* @param sourceCode The source code as a string.
|
|
32
|
+
*/
|
|
33
|
+
constructor(sourceCode) {
|
|
34
|
+
this.offsetToLine = [];
|
|
35
|
+
this.lineStartOffsets = [0];
|
|
36
|
+
let currentLine = 0;
|
|
37
|
+
for (let i = 0; i < sourceCode.length; i += 1) {
|
|
38
|
+
this.offsetToLine[i] = currentLine;
|
|
39
|
+
// Handle different types of line breaks: LF, FF, and CR
|
|
40
|
+
if (sourceCode[i] === LF || sourceCode[i] === FF || sourceCode[i] === CR) {
|
|
41
|
+
currentLine += 1;
|
|
42
|
+
this.lineStartOffsets[currentLine] = (sourceCode[i] === CR && sourceCode[i + 1] === LF)
|
|
43
|
+
? i + 2
|
|
44
|
+
: i + 1;
|
|
45
|
+
if (sourceCode[i] === CR && sourceCode[i + 1] === LF) {
|
|
46
|
+
// Skip the '\n' in a '\r\n' sequence
|
|
47
|
+
i += 1;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Handle the case where the last offset is at the end of the source code
|
|
52
|
+
this.offsetToLine[sourceCode.length] = currentLine;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Converts a character offset to a line and column position.
|
|
56
|
+
*
|
|
57
|
+
* @param offset The zero-based character offset in the source code.
|
|
58
|
+
* @returns A Position object containing the 1-based line and column number, or null if the offset is out of range.
|
|
59
|
+
*/
|
|
60
|
+
convertOffsetToPosition(offset) {
|
|
61
|
+
if (offset < 0 || offset > this.offsetToLine.length - 1) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const line = this.offsetToLine[offset];
|
|
65
|
+
const lineStartOffset = this.lineStartOffsets[line];
|
|
66
|
+
return {
|
|
67
|
+
line: line + 1,
|
|
68
|
+
column: offset - lineStartOffset + 1,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export { PositionProvider };
|
|
@@ -0,0 +1,215 @@
|
|
|
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
|
+
import { ESCAPE_CHARACTER, SINGLE_QUOTE, DOUBLE_QUOTE, BACKTICK_QUOTE, COMMA, SPACE, EMPTY } from './constants.mjs';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @file Utility functions for working with quotes
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Set of all possible quote characters supported by the library
|
|
14
|
+
*/
|
|
15
|
+
const QUOTE_SET = new Set([
|
|
16
|
+
SINGLE_QUOTE,
|
|
17
|
+
DOUBLE_QUOTE,
|
|
18
|
+
BACKTICK_QUOTE,
|
|
19
|
+
]);
|
|
20
|
+
/**
|
|
21
|
+
* Possible quote types for scriptlet parameters
|
|
22
|
+
*/
|
|
23
|
+
var QuoteType;
|
|
24
|
+
(function (QuoteType) {
|
|
25
|
+
/**
|
|
26
|
+
* No quotes at all
|
|
27
|
+
*/
|
|
28
|
+
QuoteType["None"] = "none";
|
|
29
|
+
/**
|
|
30
|
+
* Single quotes (`'`)
|
|
31
|
+
*/
|
|
32
|
+
QuoteType["Single"] = "single";
|
|
33
|
+
/**
|
|
34
|
+
* Double quotes (`"`)
|
|
35
|
+
*/
|
|
36
|
+
QuoteType["Double"] = "double";
|
|
37
|
+
/**
|
|
38
|
+
* Backtick quotes (`` ` ``)
|
|
39
|
+
*/
|
|
40
|
+
QuoteType["Backtick"] = "backtick";
|
|
41
|
+
})(QuoteType || (QuoteType = {}));
|
|
42
|
+
/**
|
|
43
|
+
* Utility functions for working with quotes
|
|
44
|
+
*/
|
|
45
|
+
class QuoteUtils {
|
|
46
|
+
/**
|
|
47
|
+
* Escape all unescaped occurrences of the character
|
|
48
|
+
*
|
|
49
|
+
* @param string String to escape
|
|
50
|
+
* @param char Character to escape
|
|
51
|
+
* @returns Escaped string
|
|
52
|
+
*/
|
|
53
|
+
static escapeUnescapedOccurrences(string, char) {
|
|
54
|
+
let result = EMPTY;
|
|
55
|
+
for (let i = 0; i < string.length; i += 1) {
|
|
56
|
+
if (string[i] === char && (i === 0 || string[i - 1] !== ESCAPE_CHARACTER)) {
|
|
57
|
+
result += ESCAPE_CHARACTER;
|
|
58
|
+
}
|
|
59
|
+
result += string[i];
|
|
60
|
+
}
|
|
61
|
+
return result;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Unescape all single escaped occurrences of the character
|
|
65
|
+
*
|
|
66
|
+
* @param string String to unescape
|
|
67
|
+
* @param char Character to unescape
|
|
68
|
+
* @returns Unescaped string
|
|
69
|
+
*/
|
|
70
|
+
static unescapeSingleEscapedOccurrences(string, char) {
|
|
71
|
+
let result = EMPTY;
|
|
72
|
+
for (let i = 0; i < string.length; i += 1) {
|
|
73
|
+
if (string[i] === char
|
|
74
|
+
&& string[i - 1] === ESCAPE_CHARACTER
|
|
75
|
+
&& (i === 1 || string[i - 2] !== ESCAPE_CHARACTER)) {
|
|
76
|
+
result = result.slice(0, -1);
|
|
77
|
+
}
|
|
78
|
+
result += string[i];
|
|
79
|
+
}
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get quote type of the string
|
|
84
|
+
*
|
|
85
|
+
* @param string String to check
|
|
86
|
+
* @returns Quote type of the string
|
|
87
|
+
*/
|
|
88
|
+
static getStringQuoteType(string) {
|
|
89
|
+
// Don't check 1-character strings to avoid false positives
|
|
90
|
+
if (string.length > 1) {
|
|
91
|
+
if (string.startsWith(SINGLE_QUOTE) && string.endsWith(SINGLE_QUOTE)) {
|
|
92
|
+
return QuoteType.Single;
|
|
93
|
+
}
|
|
94
|
+
if (string.startsWith(DOUBLE_QUOTE) && string.endsWith(DOUBLE_QUOTE)) {
|
|
95
|
+
return QuoteType.Double;
|
|
96
|
+
}
|
|
97
|
+
if (string.startsWith(BACKTICK_QUOTE) && string.endsWith(BACKTICK_QUOTE)) {
|
|
98
|
+
return QuoteType.Backtick;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return QuoteType.None;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Set quote type of the string
|
|
105
|
+
*
|
|
106
|
+
* @param string String to set quote type of
|
|
107
|
+
* @param quoteType Quote type to set
|
|
108
|
+
* @returns String with the specified quote type
|
|
109
|
+
*/
|
|
110
|
+
static setStringQuoteType(string, quoteType) {
|
|
111
|
+
const actualQuoteType = QuoteUtils.getStringQuoteType(string);
|
|
112
|
+
switch (quoteType) {
|
|
113
|
+
case QuoteType.None:
|
|
114
|
+
if (actualQuoteType === QuoteType.Single) {
|
|
115
|
+
return QuoteUtils.escapeUnescapedOccurrences(string.slice(1, -1), SINGLE_QUOTE);
|
|
116
|
+
}
|
|
117
|
+
if (actualQuoteType === QuoteType.Double) {
|
|
118
|
+
return QuoteUtils.escapeUnescapedOccurrences(string.slice(1, -1), DOUBLE_QUOTE);
|
|
119
|
+
}
|
|
120
|
+
if (actualQuoteType === QuoteType.Backtick) {
|
|
121
|
+
return QuoteUtils.escapeUnescapedOccurrences(string.slice(1, -1), BACKTICK_QUOTE);
|
|
122
|
+
}
|
|
123
|
+
return string;
|
|
124
|
+
case QuoteType.Single:
|
|
125
|
+
if (actualQuoteType === QuoteType.None) {
|
|
126
|
+
return SINGLE_QUOTE + QuoteUtils.escapeUnescapedOccurrences(string, SINGLE_QUOTE) + SINGLE_QUOTE;
|
|
127
|
+
}
|
|
128
|
+
if (actualQuoteType === QuoteType.Double) {
|
|
129
|
+
return SINGLE_QUOTE
|
|
130
|
+
+ QuoteUtils.escapeUnescapedOccurrences(QuoteUtils.unescapeSingleEscapedOccurrences(string.slice(1, -1), DOUBLE_QUOTE), SINGLE_QUOTE) + SINGLE_QUOTE;
|
|
131
|
+
}
|
|
132
|
+
if (actualQuoteType === QuoteType.Backtick) {
|
|
133
|
+
return SINGLE_QUOTE
|
|
134
|
+
+ QuoteUtils.escapeUnescapedOccurrences(QuoteUtils.unescapeSingleEscapedOccurrences(string.slice(1, -1), BACKTICK_QUOTE), SINGLE_QUOTE) + SINGLE_QUOTE;
|
|
135
|
+
}
|
|
136
|
+
return string;
|
|
137
|
+
case QuoteType.Double:
|
|
138
|
+
if (actualQuoteType === QuoteType.None) {
|
|
139
|
+
return DOUBLE_QUOTE + QuoteUtils.escapeUnescapedOccurrences(string, DOUBLE_QUOTE) + DOUBLE_QUOTE;
|
|
140
|
+
}
|
|
141
|
+
if (actualQuoteType !== QuoteType.Double) {
|
|
142
|
+
// eslint-disable-next-line max-len
|
|
143
|
+
return DOUBLE_QUOTE
|
|
144
|
+
+ QuoteUtils.escapeUnescapedOccurrences(QuoteUtils.unescapeSingleEscapedOccurrences(string.slice(1, -1), SINGLE_QUOTE), DOUBLE_QUOTE) + DOUBLE_QUOTE;
|
|
145
|
+
}
|
|
146
|
+
return string;
|
|
147
|
+
case QuoteType.Backtick:
|
|
148
|
+
if (actualQuoteType === QuoteType.None) {
|
|
149
|
+
// eslint-disable-next-line max-len
|
|
150
|
+
return BACKTICK_QUOTE + QuoteUtils.escapeUnescapedOccurrences(string, BACKTICK_QUOTE) + BACKTICK_QUOTE;
|
|
151
|
+
}
|
|
152
|
+
if (actualQuoteType !== QuoteType.Backtick) {
|
|
153
|
+
// eslint-disable-next-line max-len
|
|
154
|
+
return BACKTICK_QUOTE
|
|
155
|
+
+ QuoteUtils.escapeUnescapedOccurrences(QuoteUtils.unescapeSingleEscapedOccurrences(string.slice(1, -1), SINGLE_QUOTE), BACKTICK_QUOTE) + BACKTICK_QUOTE;
|
|
156
|
+
}
|
|
157
|
+
return string;
|
|
158
|
+
default:
|
|
159
|
+
return string;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Removes bounding quotes from a string, if any
|
|
164
|
+
*
|
|
165
|
+
* @param string Input string
|
|
166
|
+
* @returns String without quotes
|
|
167
|
+
*/
|
|
168
|
+
static removeQuotes(string) {
|
|
169
|
+
if (
|
|
170
|
+
// We should check for string length to avoid false positives
|
|
171
|
+
string.length > 1
|
|
172
|
+
&& (string[0] === SINGLE_QUOTE || string[0] === DOUBLE_QUOTE || string[0] === BACKTICK_QUOTE)
|
|
173
|
+
&& string[0] === string[string.length - 1]) {
|
|
174
|
+
return string.slice(1, -1);
|
|
175
|
+
}
|
|
176
|
+
return string;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Removes bounding quotes from a string, if any, and unescapes the escaped quotes,
|
|
180
|
+
* like transforming `'abc\'def'` to `abc'def`.
|
|
181
|
+
*
|
|
182
|
+
* @param string Input string
|
|
183
|
+
* @returns String without quotes
|
|
184
|
+
*/
|
|
185
|
+
static removeQuotesAndUnescape(string) {
|
|
186
|
+
if (
|
|
187
|
+
// We should check for string length to avoid false positives
|
|
188
|
+
string.length > 1
|
|
189
|
+
&& (string[0] === SINGLE_QUOTE || string[0] === DOUBLE_QUOTE || string[0] === BACKTICK_QUOTE)
|
|
190
|
+
&& string[0] === string[string.length - 1]) {
|
|
191
|
+
return QuoteUtils.unescapeSingleEscapedOccurrences(string.slice(1, -1), string[0]);
|
|
192
|
+
}
|
|
193
|
+
return string;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Wraps given `strings` with `quote` (defaults to single quote `'`)
|
|
197
|
+
* and joins them with `separator` (defaults to comma+space `, `).
|
|
198
|
+
*
|
|
199
|
+
* @param strings Strings to quote and join.
|
|
200
|
+
* @param quoteType Quote to use.
|
|
201
|
+
* @param separator Separator to use.
|
|
202
|
+
*
|
|
203
|
+
* @returns String with joined items.
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ['abc', 'def']: strings[] -> "'abc', 'def'": string
|
|
207
|
+
*/
|
|
208
|
+
static quoteAndJoinStrings(strings, quoteType = QuoteType.Single, separator = `${COMMA}${SPACE}`) {
|
|
209
|
+
return strings
|
|
210
|
+
.map((s) => QuoteUtils.setStringQuoteType(s, quoteType))
|
|
211
|
+
.join(separator);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
export { QUOTE_SET, QuoteType, QuoteUtils };
|