@adguard/agtree 2.2.0 → 3.0.0-alpha.2
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/README.md +1 -1
- package/dist/ast-utils/clone.js +61 -0
- package/dist/ast-utils/modifiers.js +53 -0
- package/dist/ast-utils/network-rules.js +41 -0
- package/dist/ast-utils/scriptlets.js +87 -0
- package/dist/common/abp-snippet-injection-body-common.js +23 -0
- package/dist/common/agent-common.js +56 -0
- package/dist/common/ubo-selector-common.js +17 -0
- package/dist/compatibility-tables/base.js +262 -0
- package/dist/compatibility-tables/compatibility-table-data.js +11 -0
- package/dist/compatibility-tables/modifiers.js +55 -0
- package/dist/compatibility-tables/platforms.js +76 -0
- package/dist/compatibility-tables/redirects.js +100 -0
- package/dist/compatibility-tables/schemas/base.js +111 -0
- package/dist/compatibility-tables/schemas/modifier.js +129 -0
- package/dist/compatibility-tables/schemas/platform.js +69 -0
- package/dist/compatibility-tables/schemas/redirect.js +29 -0
- package/dist/compatibility-tables/schemas/resource-type.js +36 -0
- package/dist/compatibility-tables/schemas/scriptlet.js +79 -0
- package/dist/compatibility-tables/scriptlets.js +28 -0
- package/dist/compatibility-tables/utils/platform-helpers.js +105 -0
- package/dist/compatibility-tables/utils/resource-type-helpers.js +61 -0
- package/dist/compatibility-tables/utils/zod-camelcase.js +25 -0
- package/dist/converter/base-interfaces/base-converter.js +59 -0
- package/dist/converter/base-interfaces/conversion-result.js +38 -0
- package/dist/converter/base-interfaces/rule-converter-base.js +60 -0
- package/dist/converter/comment/index.js +54 -0
- package/dist/converter/cosmetic/css.js +69 -0
- package/dist/converter/cosmetic/element-hiding.js +62 -0
- package/dist/converter/cosmetic/header-removal.js +123 -0
- package/dist/converter/cosmetic/html.js +379 -0
- package/dist/converter/cosmetic/index.js +118 -0
- package/dist/converter/cosmetic/rule-modifiers/adg.js +79 -0
- package/dist/converter/cosmetic/scriptlet.js +354 -0
- package/dist/converter/css/index.js +188 -0
- package/dist/converter/data/css.js +126 -0
- package/dist/converter/filter-list.js +88 -0
- package/dist/converter/index.js +8 -0
- package/dist/converter/misc/network-rule-modifier.js +311 -0
- package/dist/converter/network/index.js +99 -0
- package/dist/converter/raw-filter-list.js +56 -0
- package/dist/converter/rule.js +81 -0
- package/dist/deserializer/base-deserializer.js +29 -0
- package/dist/deserializer/comment/agent-comment-deserializer.js +79 -0
- package/dist/deserializer/comment/agent-deserializer.js +65 -0
- package/dist/deserializer/comment/comment-rule-deserializer.js +54 -0
- package/dist/deserializer/comment/config-comment-deserializer.js +111 -0
- package/dist/deserializer/comment/hint-comment-deserializer.js +72 -0
- package/dist/deserializer/comment/hint-deserializer.js +85 -0
- package/dist/deserializer/comment/metadata-comment-deserializer.js +69 -0
- package/dist/deserializer/comment/pre-processor-comment-deserializer.js +112 -0
- package/dist/deserializer/comment/simple-comment-deserializer.js +65 -0
- package/dist/deserializer/cosmetic/cosmetic-rule-deserializer.js +131 -0
- package/dist/deserializer/cosmetic/css-injection-body-deserializer.js +56 -0
- package/dist/deserializer/cosmetic/element-hiding-body-deserializer.js +48 -0
- package/dist/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +39 -0
- package/dist/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +40 -0
- package/dist/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +54 -0
- package/dist/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +38 -0
- package/dist/deserializer/empty-rule-deserializer.js +48 -0
- package/dist/deserializer/filterlist-deserializer.js +85 -0
- package/dist/deserializer/index.js +8 -0
- package/dist/deserializer/invalid-rule-deserializer.js +50 -0
- package/dist/deserializer/invalid-rule-error-node-deserializer.js +50 -0
- package/dist/deserializer/misc/domain-list-deserializer.js +64 -0
- package/dist/deserializer/misc/list-item-deserializer.js +69 -0
- package/dist/deserializer/misc/list-items-deserializer.js +30 -0
- package/dist/deserializer/misc/logical-expression-deserializer.js +196 -0
- package/dist/deserializer/misc/modifier-deserializer.js +87 -0
- package/dist/deserializer/misc/modifier-list-deserializer.js +61 -0
- package/dist/deserializer/misc/parameter-list-deserializer.js +64 -0
- package/dist/deserializer/misc/value-deserializer.js +50 -0
- package/dist/deserializer/network/host-rule-deserializer.js +67 -0
- package/dist/deserializer/network/hostname-list-deserializer.js +56 -0
- package/dist/deserializer/network/network-rule-deserializer.js +65 -0
- package/dist/deserializer/rule-deserializer.js +65 -0
- package/dist/deserializer/syntax-deserialization-map.js +21 -0
- package/dist/errors/adblock-syntax-error.js +39 -0
- package/dist/errors/binary-schema-mismatch-error.js +37 -0
- package/dist/errors/not-implemented-error.js +31 -0
- package/dist/errors/rule-conversion-error.js +26 -0
- package/dist/generator/base-generator.js +27 -0
- package/dist/generator/comment/agent-comment-generator.js +31 -0
- package/dist/generator/comment/agent-generator.js +36 -0
- package/dist/generator/comment/comment-rule-generator.js +47 -0
- package/dist/generator/comment/config-comment-generator.js +45 -0
- package/dist/generator/comment/hint-comment-generator.js +28 -0
- package/dist/generator/comment/hint-generator.js +33 -0
- package/dist/generator/comment/metadata-comment-generator.js +33 -0
- package/dist/generator/comment/pre-processor-comment-generator.js +48 -0
- package/dist/generator/comment/simple-comment-generator.js +29 -0
- package/dist/generator/cosmetic/body/abp-snippet-injection-body-generator.js +38 -0
- package/dist/generator/cosmetic/body/adg-scriptlet-injection-body-generator.js +43 -0
- package/dist/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js +45 -0
- package/dist/generator/cosmetic/cosmetic-rule-body-generator.js +94 -0
- package/dist/generator/cosmetic/cosmetic-rule-generator.js +54 -0
- package/dist/generator/cosmetic/cosmetic-rule-pattern-generator.js +42 -0
- package/dist/generator/css/adg-css-injection-generator.js +42 -0
- package/dist/generator/filterlist-generator.js +67 -0
- package/dist/generator/index.js +9 -0
- package/dist/generator/misc/domain-list-generator.js +26 -0
- package/dist/generator/misc/list-items-generator.js +39 -0
- package/dist/generator/misc/logical-expression-generator.js +48 -0
- package/dist/generator/misc/modifier-generator.js +34 -0
- package/dist/generator/misc/modifier-list-generator.js +29 -0
- package/dist/generator/misc/parameter-list-generator.js +41 -0
- package/dist/generator/misc/value-generator.js +24 -0
- package/dist/generator/network/host-rule-generator.js +39 -0
- package/dist/generator/network/network-rule-generator.js +38 -0
- package/dist/generator/rule-generator.js +65 -0
- package/dist/index.js +70 -0
- package/dist/marshalling-utils/comment/agent-comment-common.js +21 -0
- package/dist/marshalling-utils/comment/agent-common.js +40 -0
- package/dist/marshalling-utils/comment/config-comment-common.js +54 -0
- package/dist/marshalling-utils/comment/hint-comment-common.js +22 -0
- package/dist/marshalling-utils/comment/hint-common.js +56 -0
- package/dist/marshalling-utils/comment/metadata-comment-common.js +41 -0
- package/dist/marshalling-utils/comment/pre-processor-comment-common.js +59 -0
- package/dist/marshalling-utils/comment/simple-comment-common.js +22 -0
- package/dist/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +61 -0
- package/dist/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +66 -0
- package/dist/marshalling-utils/cosmetic/body/css-injection-body-common.js +24 -0
- package/dist/marshalling-utils/cosmetic/body/element-hiding-body-common.js +21 -0
- package/dist/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +114 -0
- package/dist/marshalling-utils/cosmetic/cosmetic-rule-common.js +48 -0
- package/dist/marshalling-utils/empty-rule-common.js +20 -0
- package/dist/marshalling-utils/filter-list-common.js +21 -0
- package/dist/marshalling-utils/invalid-rule-common.js +21 -0
- package/dist/marshalling-utils/invalid-rule-error-node-common.js +22 -0
- package/dist/marshalling-utils/misc/binary-type-common.js +66 -0
- package/dist/marshalling-utils/misc/domain-list-common.js +36 -0
- package/dist/marshalling-utils/misc/host-rule-common.js +25 -0
- package/dist/marshalling-utils/misc/hostname-list-common.js +21 -0
- package/dist/marshalling-utils/misc/list-item-common.js +22 -0
- package/dist/marshalling-utils/misc/logical-expression-common.js +83 -0
- package/dist/marshalling-utils/misc/modifier-common.js +231 -0
- package/dist/marshalling-utils/misc/modifier-list-common.js +21 -0
- package/dist/marshalling-utils/misc/parameter-list-common.js +21 -0
- package/dist/marshalling-utils/misc/value-common.js +22 -0
- package/dist/marshalling-utils/network/network-rule-common.js +25 -0
- package/dist/marshalling-utils/syntax-serialization-map.js +30 -0
- package/dist/nodes/index.js +168 -0
- package/dist/package.json.js +9 -0
- package/dist/parser/base-parser.js +30 -0
- package/dist/parser/comment/agent-comment-parser.js +119 -0
- package/dist/parser/comment/agent-parser.js +110 -0
- package/dist/parser/comment/comment-parser.js +108 -0
- package/dist/parser/comment/config-comment-parser.js +137 -0
- package/dist/parser/comment/hint-comment-parser.js +117 -0
- package/dist/parser/comment/hint-parser.js +129 -0
- package/dist/parser/comment/metadata-comment-parser.js +129 -0
- package/dist/parser/comment/preprocessor-parser.js +199 -0
- package/dist/parser/comment/simple-comment-parser.js +106 -0
- package/dist/parser/cosmetic/body/abp-snippet-injection-body-parser.js +79 -0
- package/dist/parser/cosmetic/body/adg-scriptlet-injection-body-parser.js +149 -0
- package/dist/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js +110 -0
- package/dist/parser/cosmetic/cosmetic-rule-parser.js +453 -0
- package/dist/parser/css/adg-css-injection-parser.js +208 -0
- package/dist/parser/css/balancing.js +94 -0
- package/dist/parser/css/constants.js +18 -0
- package/dist/parser/css/css-token-stream.js +343 -0
- package/dist/parser/css/ubo-selector-parser.js +369 -0
- package/dist/parser/filterlist-parser.js +102 -0
- package/dist/parser/index.js +12 -0
- package/dist/parser/misc/app-list-parser.js +45 -0
- package/dist/parser/misc/domain-list-parser.js +52 -0
- package/dist/parser/misc/list-items-parser.js +116 -0
- package/dist/parser/misc/logical-expression-parser.js +279 -0
- package/dist/parser/misc/method-list-parser.js +46 -0
- package/dist/parser/misc/modifier-list.js +70 -0
- package/dist/parser/misc/modifier-parser.js +89 -0
- package/dist/parser/misc/parameter-list-parser.js +75 -0
- package/dist/parser/misc/stealth-option-list-parser.js +46 -0
- package/dist/parser/misc/ubo-parameter-list-parser.js +149 -0
- package/dist/parser/misc/value-parser.js +37 -0
- package/dist/parser/network/host-rule-parser.js +130 -0
- package/dist/parser/network/network-rule-parser.js +117 -0
- package/dist/parser/options.js +23 -0
- package/dist/parser/rule-parser.js +192 -0
- package/dist/serializer/base-serializer.js +29 -0
- package/dist/serializer/comment/agent-comment-serializer.js +74 -0
- package/dist/serializer/comment/agent-serializer.js +59 -0
- package/dist/serializer/comment/comment-rule-serializer.js +105 -0
- package/dist/serializer/comment/config-comment-serializer.js +82 -0
- package/dist/serializer/comment/hint-comment-serializer.js +65 -0
- package/dist/serializer/comment/hint-serializer.js +54 -0
- package/dist/serializer/comment/metadata-comment-serializer.js +73 -0
- package/dist/serializer/comment/pre-processor-comment-serializer.js +71 -0
- package/dist/serializer/comment/simple-comment-serializer.js +52 -0
- package/dist/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +36 -0
- package/dist/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +36 -0
- package/dist/serializer/cosmetic/body/scriptlet-body-serializer.js +50 -0
- package/dist/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +36 -0
- package/dist/serializer/cosmetic/cosmetic-rule-serializer.js +120 -0
- package/dist/serializer/cosmetic/css-injection-body-serializer.js +51 -0
- package/dist/serializer/cosmetic/element-hiding-body-serializer.js +40 -0
- package/dist/serializer/empty-rule-serializer.js +37 -0
- package/dist/serializer/filterlist-serializer.js +45 -0
- package/dist/serializer/index.js +7 -0
- package/dist/serializer/invalid-rule-error-node-serializer.js +41 -0
- package/dist/serializer/invalid-rule-serializer.js +40 -0
- package/dist/serializer/misc/domain-list-serializer.js +64 -0
- package/dist/serializer/misc/list-item-serializer.js +58 -0
- package/dist/serializer/misc/list-items-serializer.js +29 -0
- package/dist/serializer/misc/logical-expression-serializer.js +136 -0
- package/dist/serializer/misc/modifier-list-serializer.js +58 -0
- package/dist/serializer/misc/modifier-serializer.js +49 -0
- package/dist/serializer/misc/parameter-list-serializer.js +52 -0
- package/dist/serializer/misc/value-serializer.js +50 -0
- package/dist/serializer/network/host-rule-serializer.js +70 -0
- package/dist/serializer/network/hostname-list-serializer.js +53 -0
- package/dist/serializer/network/network-rule-serializer.js +54 -0
- package/dist/serializer/rule-serializer.js +61 -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 +15 -0
- package/dist/types/common/agent-common.d.ts +10 -0
- package/dist/types/common/ubo-selector-common.d.ts +10 -0
- package/dist/types/compatibility-tables/base.d.ts +157 -0
- package/dist/types/compatibility-tables/compatibility-table-data.d.ts +68 -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 +49 -0
- package/dist/types/compatibility-tables/redirects.d.ts +33 -0
- package/dist/types/compatibility-tables/schemas/base.d.ts +124 -0
- package/dist/types/compatibility-tables/schemas/index.d.ts +8 -0
- package/dist/types/compatibility-tables/schemas/modifier.d.ts +36 -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 +41 -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 +40 -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 +16 -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 +18 -0
- package/dist/types/deserializer/cosmetic/css-injection-body-deserializer.d.ts +15 -0
- package/dist/types/deserializer/cosmetic/element-hiding-body-deserializer.d.ts +16 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.d.ts +17 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.d.ts +18 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.d.ts +19 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.d.ts +17 -0
- package/dist/types/deserializer/empty-rule-deserializer.d.ts +16 -0
- package/dist/types/deserializer/filterlist-deserializer.d.ts +34 -0
- package/dist/types/deserializer/index.d.ts +2 -0
- package/dist/types/deserializer/invalid-rule-deserializer.d.ts +16 -0
- package/dist/types/deserializer/invalid-rule-error-node-deserializer.d.ts +16 -0
- package/dist/types/deserializer/misc/domain-list-deserializer.d.ts +15 -0
- package/dist/types/deserializer/misc/list-item-deserializer.d.ts +19 -0
- package/dist/types/deserializer/misc/list-items-deserializer.d.ts +16 -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 +18 -0
- package/dist/types/deserializer/misc/value-deserializer.d.ts +17 -0
- package/dist/types/deserializer/network/host-rule-deserializer.d.ts +18 -0
- package/dist/types/deserializer/network/hostname-list-deserializer.d.ts +15 -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 +14 -0
- package/dist/types/generator/comment/agent-generator.d.ts +15 -0
- package/dist/types/generator/comment/comment-rule-generator.d.ts +14 -0
- package/dist/types/generator/comment/config-comment-generator.d.ts +14 -0
- package/dist/types/generator/comment/hint-comment-generator.d.ts +14 -0
- package/dist/types/generator/comment/hint-generator.d.ts +14 -0
- package/dist/types/generator/comment/index.d.ts +1 -0
- package/dist/types/generator/comment/metadata-comment-generator.d.ts +14 -0
- package/dist/types/generator/comment/pre-processor-comment-generator.d.ts +14 -0
- package/dist/types/generator/comment/simple-comment-generator.d.ts +14 -0
- package/dist/types/generator/cosmetic/body/abp-snippet-injection-body-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/body/adg-scriptlet-injection-body-generator.d.ts +21 -0
- package/dist/types/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.d.ts +21 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-body-generator.d.ts +20 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-generator.d.ts +28 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-pattern-generator.d.ts +18 -0
- package/dist/types/generator/cosmetic/index.d.ts +1 -0
- package/dist/types/generator/css/adg-css-injection-generator.d.ts +15 -0
- package/dist/types/generator/css/ubo-selector-generator.d.ts +14 -0
- package/dist/types/generator/filterlist-generator.d.ts +18 -0
- package/dist/types/generator/index.d.ts +3 -0
- package/dist/types/generator/misc/domain-list-generator.d.ts +15 -0
- package/dist/types/generator/misc/list-items-generator.d.ts +25 -0
- package/dist/types/generator/misc/logical-expression-generator.d.ts +14 -0
- package/dist/types/generator/misc/modifier-generator.d.ts +14 -0
- package/dist/types/generator/misc/modifier-list-generator.d.ts +14 -0
- package/dist/types/generator/misc/parameter-list-generator.d.ts +15 -0
- package/dist/types/generator/misc/value-generator.d.ts +14 -0
- package/dist/types/generator/network/host-rule-generator.d.ts +14 -0
- package/dist/types/generator/network/index.d.ts +2 -0
- package/dist/types/generator/network/network-rule-generator.d.ts +14 -0
- package/dist/types/generator/rule-generator.d.ts +24 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/marshalling-utils/comment/agent-comment-common.d.ts +14 -0
- package/dist/types/marshalling-utils/comment/agent-common.d.ts +20 -0
- package/dist/types/marshalling-utils/comment/config-comment-common.d.ts +42 -0
- package/dist/types/marshalling-utils/comment/hint-comment-common.d.ts +15 -0
- package/dist/types/marshalling-utils/comment/hint-common.d.ts +33 -0
- package/dist/types/marshalling-utils/comment/metadata-comment-common.d.ts +21 -0
- package/dist/types/marshalling-utils/comment/pre-processor-comment-common.d.ts +37 -0
- package/dist/types/marshalling-utils/comment/simple-comment-common.d.ts +15 -0
- package/dist/types/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.d.ts +23 -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 +17 -0
- package/dist/types/marshalling-utils/cosmetic/body/element-hiding-body-common.d.ts +14 -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 +28 -0
- package/dist/types/marshalling-utils/empty-rule-common.d.ts +13 -0
- package/dist/types/marshalling-utils/filter-list-common.d.ts +14 -0
- package/dist/types/marshalling-utils/invalid-rule-common.d.ts +14 -0
- package/dist/types/marshalling-utils/invalid-rule-error-node-common.d.ts +15 -0
- package/dist/types/marshalling-utils/misc/binary-type-common.d.ts +57 -0
- package/dist/types/marshalling-utils/misc/domain-list-common.d.ts +24 -0
- package/dist/types/marshalling-utils/misc/host-rule-common.d.ts +18 -0
- package/dist/types/marshalling-utils/misc/hostname-list-common.d.ts +14 -0
- package/dist/types/marshalling-utils/misc/list-item-common.d.ts +15 -0
- package/dist/types/marshalling-utils/misc/logical-expression-common.d.ts +47 -0
- package/dist/types/marshalling-utils/misc/modifier-common.d.ts +41 -0
- package/dist/types/marshalling-utils/misc/modifier-list-common.d.ts +14 -0
- package/dist/types/marshalling-utils/misc/parameter-list-common.d.ts +14 -0
- package/dist/types/marshalling-utils/misc/value-common.d.ts +15 -0
- package/dist/types/marshalling-utils/network/network-rule-common.d.ts +18 -0
- package/dist/types/marshalling-utils/syntax-serialization-map.d.ts +2 -0
- package/dist/types/nodes/index.d.ts +1183 -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 +6 -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 +37 -0
- package/dist/types/parser/misc/logical-expression-parser.d.ts +42 -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 +17 -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 +21 -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 +15 -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 +17 -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 +19 -0
- package/dist/types/serializer/cosmetic/css-injection-body-serializer.d.ts +15 -0
- package/dist/types/serializer/cosmetic/element-hiding-body-serializer.d.ts +15 -0
- package/dist/types/serializer/empty-rule-serializer.d.ts +15 -0
- package/dist/types/serializer/filterlist-serializer.d.ts +15 -0
- package/dist/types/serializer/index.d.ts +1 -0
- package/dist/types/serializer/invalid-rule-error-node-serializer.d.ts +15 -0
- package/dist/types/serializer/invalid-rule-serializer.d.ts +15 -0
- package/dist/types/serializer/misc/domain-list-serializer.d.ts +21 -0
- package/dist/types/serializer/misc/list-item-serializer.d.ts +16 -0
- package/dist/types/serializer/misc/list-items-serializer.d.ts +15 -0
- package/dist/types/serializer/misc/logical-expression-serializer.d.ts +52 -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 +17 -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 +15 -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 +49 -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 +29 -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 +146 -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 +132 -0
- package/dist/types/utils/position-provider.d.ts +46 -0
- package/dist/types/utils/quotes.d.ts +94 -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 +280 -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 +12 -0
- package/dist/types/version.d.ts +5 -0
- package/dist/utils/adblockers.js +56 -0
- package/dist/utils/binary-schema-version.js +17 -0
- package/dist/utils/byte-buffer.js +91 -0
- package/dist/utils/categorizer.js +44 -0
- package/dist/utils/clone.js +28 -0
- package/dist/utils/constants.js +249 -0
- package/dist/utils/cosmetic-rule-separator.js +127 -0
- package/dist/utils/deep-freeze.js +32 -0
- package/dist/utils/domain.js +59 -0
- package/dist/utils/error.js +49 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/input-byte-buffer.js +265 -0
- package/dist/utils/is-chromium.js +20 -0
- package/dist/utils/logical-expression.js +92 -0
- package/dist/utils/multi-value-map.js +33 -0
- package/dist/utils/output-byte-buffer.js +231 -0
- package/dist/utils/position-provider.js +73 -0
- package/dist/utils/quotes.js +214 -0
- package/dist/utils/regexp.js +176 -0
- package/dist/utils/string.js +559 -0
- package/dist/utils/text-decoder-polyfill.js +107 -0
- package/dist/utils/text-encoder-polyfill.js +78 -0
- package/dist/utils/type-guards.js +47 -0
- package/dist/validator/constants.js +210 -0
- package/dist/validator/helpers.js +45 -0
- package/dist/validator/index.js +174 -0
- package/dist/validator/value.js +568 -0
- package/dist/version.js +18 -0
- package/package.json +61 -39
- package/dist/agtree.d.ts +0 -4155
- package/dist/agtree.js +0 -15819
- package/dist/agtree.mjs +0 -15720
- package/dist/compatibility-table-data.js +0 -12782
package/README.md
CHANGED
|
@@ -39,7 +39,7 @@ You can install the library using
|
|
|
39
39
|
- [PNPM][pnpm-pkg-manager-url]: `pnpm add @adguard/agtree`
|
|
40
40
|
|
|
41
41
|
> [!IMPORTANT]
|
|
42
|
-
> AGTree requires Node.js version 18 or higher.
|
|
42
|
+
> AGTree is an ESM-only package and requires Node.js version 18 or higher.
|
|
43
43
|
|
|
44
44
|
[yarn-pkg-manager-url]: https://yarnpkg.com/en/docs/install
|
|
45
45
|
[npm-pkg-manager-url]: https://www.npmjs.com/get-npm
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { isNull } from '../utils/type-guards.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* @file Custom clone functions for AST nodes, this is probably the most efficient way to clone AST nodes.
|
|
11
|
+
* @todo Maybe move them to parser classes as 'clone' methods
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Clones a scriptlet rule node.
|
|
15
|
+
*
|
|
16
|
+
* @param node Node to clone
|
|
17
|
+
* @returns Cloned node
|
|
18
|
+
*/
|
|
19
|
+
function cloneScriptletRuleNode(node) {
|
|
20
|
+
return {
|
|
21
|
+
type: node.type,
|
|
22
|
+
children: node.children.map((child) => (isNull(child) ? null : { ...child })),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Clones a domain list node.
|
|
27
|
+
*
|
|
28
|
+
* @param node Node to clone
|
|
29
|
+
* @returns Cloned node
|
|
30
|
+
*/
|
|
31
|
+
function cloneDomainListNode(node) {
|
|
32
|
+
return {
|
|
33
|
+
type: node.type,
|
|
34
|
+
separator: node.separator,
|
|
35
|
+
children: node.children.map((domain) => ({ ...domain })),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Clones a modifier list node.
|
|
40
|
+
*
|
|
41
|
+
* @param node Node to clone
|
|
42
|
+
* @returns Cloned node
|
|
43
|
+
*/
|
|
44
|
+
function cloneModifierListNode(node) {
|
|
45
|
+
return {
|
|
46
|
+
type: node.type,
|
|
47
|
+
children: node.children.map((modifier) => {
|
|
48
|
+
const res = {
|
|
49
|
+
type: modifier.type,
|
|
50
|
+
exception: modifier.exception,
|
|
51
|
+
name: { ...modifier.name },
|
|
52
|
+
};
|
|
53
|
+
if (modifier.value) {
|
|
54
|
+
res.value = { ...modifier.value };
|
|
55
|
+
}
|
|
56
|
+
return res;
|
|
57
|
+
}),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export { cloneDomainListNode, cloneModifierListNode, cloneScriptletRuleNode };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 '../utils/type-guards.js';
|
|
8
|
+
import { clone } from '../utils/clone.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @file Utility functions for working with modifier nodes
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Creates a modifier node
|
|
15
|
+
*
|
|
16
|
+
* @param name Name of the modifier
|
|
17
|
+
* @param value Value of the modifier
|
|
18
|
+
* @param exception Whether the modifier is an exception
|
|
19
|
+
* @returns Modifier node
|
|
20
|
+
*/
|
|
21
|
+
function createModifierNode(name, value = undefined, exception = false) {
|
|
22
|
+
const result = {
|
|
23
|
+
type: 'Modifier',
|
|
24
|
+
exception,
|
|
25
|
+
name: {
|
|
26
|
+
type: 'Value',
|
|
27
|
+
value: name,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
if (!isUndefined(value)) {
|
|
31
|
+
result.value = {
|
|
32
|
+
type: 'Value',
|
|
33
|
+
value,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Creates a modifier list node
|
|
40
|
+
*
|
|
41
|
+
* @param modifiers Modifiers to put in the list (optional, defaults to an empty list)
|
|
42
|
+
* @returns Modifier list node
|
|
43
|
+
*/
|
|
44
|
+
function createModifierListNode(modifiers = []) {
|
|
45
|
+
const result = {
|
|
46
|
+
type: 'ModifierList',
|
|
47
|
+
// We need to clone the modifiers to avoid side effects
|
|
48
|
+
children: modifiers.length ? clone(modifiers) : [],
|
|
49
|
+
};
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { createModifierListNode, createModifierNode };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 '../utils/type-guards.js';
|
|
8
|
+
import { RuleCategory, NetworkRuleType } from '../nodes/index.js';
|
|
9
|
+
import { AdblockSyntax } from '../utils/adblockers.js';
|
|
10
|
+
import { clone } from '../utils/clone.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @file Utility functions for working with network rule nodes
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Creates a network rule node
|
|
17
|
+
*
|
|
18
|
+
* @param pattern Rule pattern
|
|
19
|
+
* @param modifiers Rule modifiers (optional, default: undefined)
|
|
20
|
+
* @param exception Exception rule flag (optional, default: false)
|
|
21
|
+
* @param syntax Adblock syntax (optional, default: Common)
|
|
22
|
+
* @returns Network rule node
|
|
23
|
+
*/
|
|
24
|
+
function createNetworkRuleNode(pattern, modifiers = undefined, exception = false, syntax = AdblockSyntax.Common) {
|
|
25
|
+
const result = {
|
|
26
|
+
category: RuleCategory.Network,
|
|
27
|
+
type: NetworkRuleType.NetworkRule,
|
|
28
|
+
syntax,
|
|
29
|
+
exception,
|
|
30
|
+
pattern: {
|
|
31
|
+
type: 'Value',
|
|
32
|
+
value: pattern,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
if (!isUndefined(modifiers)) {
|
|
36
|
+
result.modifiers = clone(modifiers);
|
|
37
|
+
}
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export { createNetworkRuleNode };
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { EMPTY } from '../utils/constants.js';
|
|
8
|
+
import { QuoteUtils } from '../utils/quotes.js';
|
|
9
|
+
import { isUndefined, isNull } from '../utils/type-guards.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @file Utility functions for working with scriptlet nodes
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Get name of the scriptlet from the scriptlet node
|
|
16
|
+
*
|
|
17
|
+
* @param scriptletNode Scriptlet node to get name of
|
|
18
|
+
* @returns Name of the scriptlet
|
|
19
|
+
* @throws If the scriptlet is empty
|
|
20
|
+
*/
|
|
21
|
+
function getScriptletName(scriptletNode) {
|
|
22
|
+
if (scriptletNode.children.length === 0) {
|
|
23
|
+
throw new Error('Empty scriptlet');
|
|
24
|
+
}
|
|
25
|
+
return scriptletNode.children[0]?.value ?? EMPTY;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Transform the nth argument of the scriptlet node
|
|
29
|
+
*
|
|
30
|
+
* @param scriptletNode Scriptlet node to transform argument of
|
|
31
|
+
* @param index Index of the argument to transform (index 0 is the scriptlet name)
|
|
32
|
+
* @param transform Function to transform the argument
|
|
33
|
+
*/
|
|
34
|
+
function transformNthScriptletArgument(scriptletNode, index, transform) {
|
|
35
|
+
const child = scriptletNode.children[index];
|
|
36
|
+
if (!isUndefined(child)) {
|
|
37
|
+
const transformed = transform(child?.value ?? null);
|
|
38
|
+
if (isNull(transformed)) {
|
|
39
|
+
// eslint-disable-next-line no-param-reassign
|
|
40
|
+
scriptletNode.children[index] = null;
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (isNull(child)) {
|
|
44
|
+
// eslint-disable-next-line no-param-reassign
|
|
45
|
+
scriptletNode.children[index] = {
|
|
46
|
+
type: 'Value',
|
|
47
|
+
value: transformed,
|
|
48
|
+
};
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
child.value = transformed;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Transform all arguments of the scriptlet node
|
|
56
|
+
*
|
|
57
|
+
* @param scriptletNode Scriptlet node to transform arguments of
|
|
58
|
+
* @param transform Function to transform the arguments
|
|
59
|
+
*/
|
|
60
|
+
function transformAllScriptletArguments(scriptletNode, transform) {
|
|
61
|
+
for (let i = 0; i < scriptletNode.children.length; i += 1) {
|
|
62
|
+
transformNthScriptletArgument(scriptletNode, i, transform);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Set name of the scriptlet.
|
|
67
|
+
* Modifies input `scriptletNode` if needed.
|
|
68
|
+
*
|
|
69
|
+
* @param scriptletNode Scriptlet node to set name of
|
|
70
|
+
* @param name Name to set
|
|
71
|
+
*/
|
|
72
|
+
function setScriptletName(scriptletNode, name) {
|
|
73
|
+
transformNthScriptletArgument(scriptletNode, 0, () => name);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Set quote type of the scriptlet parameters
|
|
77
|
+
*
|
|
78
|
+
* @param scriptletNode Scriptlet node to set quote type of
|
|
79
|
+
* @param quoteType Preferred quote type
|
|
80
|
+
*/
|
|
81
|
+
function setScriptletQuoteType(scriptletNode, quoteType) {
|
|
82
|
+
// null is a special value that means "no value", but we can't change its quote type,
|
|
83
|
+
// so we need to convert it to empty string
|
|
84
|
+
transformAllScriptletArguments(scriptletNode, (value) => QuoteUtils.setStringQuoteType(value ?? EMPTY, quoteType));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { getScriptletName, setScriptletName, setScriptletQuoteType, transformAllScriptletArguments, transformNthScriptletArgument };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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
|
+
/**
|
|
8
|
+
* Common class for the ABP snippet injection body.
|
|
9
|
+
* This class contains shared constants and utilities for handling ABP snippet injection bodies.
|
|
10
|
+
*/
|
|
11
|
+
class AbpSnippetInjectionBodyCommon {
|
|
12
|
+
/**
|
|
13
|
+
* Error messages used by the parser and generator.
|
|
14
|
+
*/
|
|
15
|
+
static ERROR_MESSAGES = {
|
|
16
|
+
/**
|
|
17
|
+
* Error message indicating that an ABP snippet call is empty.
|
|
18
|
+
*/
|
|
19
|
+
EMPTY_SCRIPTLET_CALL: 'Empty ABP snippet call',
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { AbpSnippetInjectionBodyCommon };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { AdblockSyntax } from '../utils/adblockers.js';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Possible AdGuard agent markers.
|
|
11
|
+
*/
|
|
12
|
+
const ADG_NAME_MARKERS = new Set([
|
|
13
|
+
'adguard',
|
|
14
|
+
'adg',
|
|
15
|
+
]);
|
|
16
|
+
/**
|
|
17
|
+
* Possible uBlock Origin agent markers.
|
|
18
|
+
*/
|
|
19
|
+
const UBO_NAME_MARKERS = new Set([
|
|
20
|
+
'ublock',
|
|
21
|
+
'ublock origin',
|
|
22
|
+
'ubo',
|
|
23
|
+
]);
|
|
24
|
+
/**
|
|
25
|
+
* Possible Adblock Plus agent markers.
|
|
26
|
+
*/
|
|
27
|
+
const ABP_NAME_MARKERS = new Set([
|
|
28
|
+
'adblock',
|
|
29
|
+
'adblock plus',
|
|
30
|
+
'adblockplus',
|
|
31
|
+
'abp',
|
|
32
|
+
]);
|
|
33
|
+
/**
|
|
34
|
+
* Returns the adblock syntax based on the adblock name parsed from the agent type comment.
|
|
35
|
+
* Needed for modifiers validation of network rules by AGLint.
|
|
36
|
+
*
|
|
37
|
+
* @param name Adblock name.
|
|
38
|
+
*
|
|
39
|
+
* @returns Adblock syntax.
|
|
40
|
+
*/
|
|
41
|
+
const getAdblockSyntax = (name) => {
|
|
42
|
+
let syntax = AdblockSyntax.Common;
|
|
43
|
+
const lowerCaseName = name.toLowerCase();
|
|
44
|
+
if (ADG_NAME_MARKERS.has(lowerCaseName)) {
|
|
45
|
+
syntax = AdblockSyntax.Adg;
|
|
46
|
+
}
|
|
47
|
+
else if (UBO_NAME_MARKERS.has(lowerCaseName)) {
|
|
48
|
+
syntax = AdblockSyntax.Ubo;
|
|
49
|
+
}
|
|
50
|
+
else if (ABP_NAME_MARKERS.has(lowerCaseName)) {
|
|
51
|
+
syntax = AdblockSyntax.Abp;
|
|
52
|
+
}
|
|
53
|
+
return syntax;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export { getAdblockSyntax };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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
|
+
/**
|
|
8
|
+
* Known uBO-specific pseudo-class names.
|
|
9
|
+
*/
|
|
10
|
+
const UboPseudoName = {
|
|
11
|
+
MatchesMedia: 'matches-media',
|
|
12
|
+
MatchesPath: 'matches-path',
|
|
13
|
+
Remove: 'remove',
|
|
14
|
+
Style: 'style',
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { UboPseudoName };
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.2 (build date: Tue, 17 Dec 2024 16:50:04 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 { GenericPlatform } from './platforms.js';
|
|
8
|
+
import { isUndefined } from '../utils/type-guards.js';
|
|
9
|
+
import { isGenericPlatform } from './utils/platform-helpers.js';
|
|
10
|
+
import { AdblockSyntax } from '../utils/adblockers.js';
|
|
11
|
+
|
|
12
|
+
/* eslint-disable no-bitwise */
|
|
13
|
+
/**
|
|
14
|
+
* @file Provides common compatibility table methods.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Base compatibility table class which provides common methods to work with compatibility data.
|
|
18
|
+
*
|
|
19
|
+
* @template T Compatibility data schema.
|
|
20
|
+
*/
|
|
21
|
+
class CompatibilityTableBase {
|
|
22
|
+
/**
|
|
23
|
+
* Compatibility table data.
|
|
24
|
+
*/
|
|
25
|
+
data;
|
|
26
|
+
/**
|
|
27
|
+
* Optional name transformer function. If provided,
|
|
28
|
+
* it will be called in all methods before processing compatibility data names.
|
|
29
|
+
*/
|
|
30
|
+
nameTransformer;
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new instance of the common compatibility table.
|
|
33
|
+
*
|
|
34
|
+
* @param data Compatibility table data.
|
|
35
|
+
* @param nameTransformer Optional name transformer function.
|
|
36
|
+
*/
|
|
37
|
+
constructor(data, nameTransformer = null) {
|
|
38
|
+
this.data = data;
|
|
39
|
+
this.nameTransformer = nameTransformer;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Helper method to get a 'row' from the compatibility table data by name.
|
|
43
|
+
*
|
|
44
|
+
* @param name Compatibility data name.
|
|
45
|
+
* @returns Compatibility table row storage or `null` if not found.
|
|
46
|
+
*/
|
|
47
|
+
getRowStorage(name) {
|
|
48
|
+
const idx = this.data.map[name];
|
|
49
|
+
if (isUndefined(idx)) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return this.data.shared[idx];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Checks whether a compatibility data `name` exists for any platform.
|
|
56
|
+
*
|
|
57
|
+
* @note Technically, do the same as `exists()` method with generic platform _any_
|
|
58
|
+
* but it is faster because it does not apply complex logic.
|
|
59
|
+
*
|
|
60
|
+
* @param name Compatibility data name.
|
|
61
|
+
*
|
|
62
|
+
* @returns True if the compatibility data exists, false otherwise.
|
|
63
|
+
*/
|
|
64
|
+
existsAny(name) {
|
|
65
|
+
const normalizedName = this.nameTransformer ? this.nameTransformer(name) : name;
|
|
66
|
+
return !isUndefined(this.data.map[normalizedName]);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Checks whether a compatibility data `name` exists for a specified platform.
|
|
70
|
+
*
|
|
71
|
+
* @param name Compatibility data name.
|
|
72
|
+
* @param platform Specific or generic platform.
|
|
73
|
+
*
|
|
74
|
+
* @returns True if the compatibility data exists, false otherwise.
|
|
75
|
+
*/
|
|
76
|
+
exists(name, platform) {
|
|
77
|
+
const normalizedName = this.nameTransformer ? this.nameTransformer(name) : name;
|
|
78
|
+
const data = this.getRowStorage(normalizedName);
|
|
79
|
+
if (!data) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
const isMatch = (idx) => {
|
|
83
|
+
const el = data.shared[idx];
|
|
84
|
+
return !isUndefined(el) && (el.name === normalizedName || !!el.aliases?.includes(normalizedName));
|
|
85
|
+
};
|
|
86
|
+
if (isGenericPlatform(platform)) {
|
|
87
|
+
// Since indexes are specific platforms in the compatibility table data,
|
|
88
|
+
// we can't index them directly if the platform is generic (union of specific platforms).
|
|
89
|
+
// In this case, we need to iterate over the keys and return true on the first match.
|
|
90
|
+
const keys = Object.keys(data.map);
|
|
91
|
+
for (let i = 0; i < keys.length; i += 1) {
|
|
92
|
+
const key = Number(keys[i]);
|
|
93
|
+
if (platform & key) {
|
|
94
|
+
const idx = data.map[key];
|
|
95
|
+
if (isMatch(idx)) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
const idx = data.map[platform];
|
|
103
|
+
return isMatch(idx);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Returns a compatibility data by name and specific platform.
|
|
107
|
+
*
|
|
108
|
+
* @param name The name of the compatibility data.
|
|
109
|
+
* @param platform The specific platform.
|
|
110
|
+
*
|
|
111
|
+
* @returns A single compatibility data or `null` if not found.
|
|
112
|
+
*/
|
|
113
|
+
getSingle(name, platform) {
|
|
114
|
+
const normalizedName = this.nameTransformer ? this.nameTransformer(name) : name;
|
|
115
|
+
const data = this.getRowStorage(normalizedName);
|
|
116
|
+
if (!data) {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
const idx = data.map[platform];
|
|
120
|
+
return isUndefined(idx) ? null : data.shared[idx];
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Returns all compatibility data records for name and specified platform.
|
|
124
|
+
*
|
|
125
|
+
* @param name Compatibility data name.
|
|
126
|
+
* @param platform Specific or generic platform.
|
|
127
|
+
*
|
|
128
|
+
* @returns Multiple records grouped by platforms.
|
|
129
|
+
* Technically, it is an object where keys are platform enums values and values are compatibility data records.
|
|
130
|
+
*
|
|
131
|
+
* @note Platform enum values can be converted to string names using {@link getSpecificPlatformName} on demand.
|
|
132
|
+
*/
|
|
133
|
+
getMultiple(name, platform) {
|
|
134
|
+
const normalizedName = this.nameTransformer ? this.nameTransformer(name) : name;
|
|
135
|
+
const data = this.getRowStorage(normalizedName);
|
|
136
|
+
if (!data) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
if (isGenericPlatform(platform)) {
|
|
140
|
+
const result = {};
|
|
141
|
+
const keys = Object.keys(data.map);
|
|
142
|
+
for (let i = 0; i < keys.length; i += 1) {
|
|
143
|
+
const key = Number(keys[i]);
|
|
144
|
+
if (platform & key) {
|
|
145
|
+
const idx = data.map[key];
|
|
146
|
+
if (!isUndefined(idx)) {
|
|
147
|
+
result[key] = data.shared[idx];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return result;
|
|
152
|
+
}
|
|
153
|
+
const idx = data.map[platform];
|
|
154
|
+
if (isUndefined(idx)) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
return { key: data.shared[idx] };
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Returns all compatibility data records for the specified platform.
|
|
161
|
+
*
|
|
162
|
+
* @param platform Specific or generic platform.
|
|
163
|
+
*
|
|
164
|
+
* @returns Array of multiple records grouped by platforms.
|
|
165
|
+
*/
|
|
166
|
+
getAllMultiple(platform) {
|
|
167
|
+
const result = [];
|
|
168
|
+
for (let i = 0; i < this.data.shared.length; i += 1) {
|
|
169
|
+
const data = this.data.shared[i];
|
|
170
|
+
const names = new Set(data.shared.map(({ name }) => name));
|
|
171
|
+
names.forEach((name) => {
|
|
172
|
+
const multipleRecords = this.getMultiple(name, platform);
|
|
173
|
+
if (multipleRecords) {
|
|
174
|
+
result.push(multipleRecords);
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
return result;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Returns the first compatibility data record for name and specified platform.
|
|
182
|
+
*
|
|
183
|
+
* @param name Compatibility data name.
|
|
184
|
+
* @param platform Specific or generic platform.
|
|
185
|
+
*
|
|
186
|
+
* @returns First found compatibility data record or `null` if not found.
|
|
187
|
+
*/
|
|
188
|
+
getFirst(name, platform) {
|
|
189
|
+
const normalizedName = this.nameTransformer ? this.nameTransformer(name) : name;
|
|
190
|
+
const data = this.getRowStorage(normalizedName);
|
|
191
|
+
if (!data) {
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
if (isGenericPlatform(platform)) {
|
|
195
|
+
const keys = Object.keys(data.map);
|
|
196
|
+
for (let i = 0; i < keys.length; i += 1) {
|
|
197
|
+
const key = Number(keys[i]);
|
|
198
|
+
if (platform & key) {
|
|
199
|
+
const idx = data.map[key];
|
|
200
|
+
if (!isUndefined(idx)) {
|
|
201
|
+
// return the first found record
|
|
202
|
+
return data.shared[idx];
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
const idx = data.map[platform];
|
|
209
|
+
if (isUndefined(idx)) {
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
return data.shared[idx];
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Returns all compatibility data records for the specified name.
|
|
216
|
+
*
|
|
217
|
+
* @param name Compatibility data name.
|
|
218
|
+
*
|
|
219
|
+
* @returns Array of multiple records grouped by platforms.
|
|
220
|
+
*/
|
|
221
|
+
getRow(name) {
|
|
222
|
+
const normalizedName = this.nameTransformer ? this.nameTransformer(name) : name;
|
|
223
|
+
const data = this.getRowStorage(normalizedName);
|
|
224
|
+
if (!data) {
|
|
225
|
+
return [];
|
|
226
|
+
}
|
|
227
|
+
return data.shared;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Returns all compatibility data grouped by products.
|
|
231
|
+
*
|
|
232
|
+
* @returns Array of multiple records grouped by products.
|
|
233
|
+
*/
|
|
234
|
+
getRowsByProduct() {
|
|
235
|
+
const result = [];
|
|
236
|
+
for (let i = 0; i < this.data.shared.length; i += 1) {
|
|
237
|
+
const data = this.data.shared[i];
|
|
238
|
+
const keys = Object.keys(data.map);
|
|
239
|
+
const row = {
|
|
240
|
+
[AdblockSyntax.Adg]: {},
|
|
241
|
+
[AdblockSyntax.Ubo]: {},
|
|
242
|
+
[AdblockSyntax.Abp]: {},
|
|
243
|
+
};
|
|
244
|
+
for (let j = 0; j < keys.length; j += 1) {
|
|
245
|
+
const key = Number(keys[j]);
|
|
246
|
+
if (key & GenericPlatform.AdgAny) {
|
|
247
|
+
row[AdblockSyntax.Adg][key] = data.shared[data.map[key]];
|
|
248
|
+
}
|
|
249
|
+
else if (key & GenericPlatform.UboAny) {
|
|
250
|
+
row[AdblockSyntax.Ubo][key] = data.shared[data.map[key]];
|
|
251
|
+
}
|
|
252
|
+
else if (key & GenericPlatform.AbpAny) {
|
|
253
|
+
row[AdblockSyntax.Abp][key] = data.shared[data.map[key]];
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
result.push(row);
|
|
257
|
+
}
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export { CompatibilityTableBase };
|