@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
|
@@ -0,0 +1,26 @@
|
|
|
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
|
+
* @file Customized error class for conversion errors.
|
|
9
|
+
*/
|
|
10
|
+
const ERROR_NAME = 'RuleConversionError';
|
|
11
|
+
/**
|
|
12
|
+
* Customized error class for conversion errors.
|
|
13
|
+
*/
|
|
14
|
+
class RuleConversionError extends Error {
|
|
15
|
+
/**
|
|
16
|
+
* Constructs a new `RuleConversionError` instance.
|
|
17
|
+
*
|
|
18
|
+
* @param message Error message
|
|
19
|
+
*/
|
|
20
|
+
constructor(message) {
|
|
21
|
+
super(message);
|
|
22
|
+
this.name = ERROR_NAME;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export { RuleConversionError };
|
|
@@ -0,0 +1,27 @@
|
|
|
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 { NotImplementedError } from '../errors/not-implemented-error.js';
|
|
8
|
+
|
|
9
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
10
|
+
/**
|
|
11
|
+
* @file Base generator class.
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Base class for generators. Each generator should extend this class.
|
|
15
|
+
*/
|
|
16
|
+
class BaseGenerator {
|
|
17
|
+
/**
|
|
18
|
+
* Generates a string from the AST node.
|
|
19
|
+
*
|
|
20
|
+
* @param node AST node to generate a string from.
|
|
21
|
+
*/
|
|
22
|
+
static generate(node) {
|
|
23
|
+
throw new NotImplementedError();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { BaseGenerator };
|
|
@@ -0,0 +1,31 @@
|
|
|
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 { SEMICOLON, SPACE, CLOSE_SQUARE_BRACKET, OPEN_SQUARE_BRACKET } from '../../utils/constants.js';
|
|
8
|
+
import { BaseGenerator } from '../base-generator.js';
|
|
9
|
+
import { AgentGenerator } from './agent-generator.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Generator for agent comment rules.
|
|
13
|
+
*/
|
|
14
|
+
class AgentCommentGenerator extends BaseGenerator {
|
|
15
|
+
/**
|
|
16
|
+
* Converts an adblock agent AST to a string.
|
|
17
|
+
*
|
|
18
|
+
* @param ast Agent rule AST
|
|
19
|
+
* @returns Raw string
|
|
20
|
+
*/
|
|
21
|
+
static generate(ast) {
|
|
22
|
+
let result = OPEN_SQUARE_BRACKET;
|
|
23
|
+
result += ast.children
|
|
24
|
+
.map(AgentGenerator.generate)
|
|
25
|
+
.join(SEMICOLON + SPACE);
|
|
26
|
+
result += CLOSE_SQUARE_BRACKET;
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { AgentCommentGenerator };
|
|
@@ -0,0 +1,36 @@
|
|
|
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 { BaseGenerator } from '../base-generator.js';
|
|
8
|
+
import { SPACE, EMPTY } from '../../utils/constants.js';
|
|
9
|
+
import { isUndefined } from '../../utils/type-guards.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Generator for adblock agent nodes.
|
|
13
|
+
* This class is responsible for converting adblock agent nodes into their string representation.
|
|
14
|
+
*/
|
|
15
|
+
class AgentGenerator extends BaseGenerator {
|
|
16
|
+
/**
|
|
17
|
+
* Converts an adblock agent node to a string.
|
|
18
|
+
*
|
|
19
|
+
* @param value Agent node
|
|
20
|
+
* @returns Raw string
|
|
21
|
+
*/
|
|
22
|
+
static generate(value) {
|
|
23
|
+
let result = EMPTY;
|
|
24
|
+
// Agent adblock name
|
|
25
|
+
result += value.adblock.value;
|
|
26
|
+
// Agent adblock version (if present)
|
|
27
|
+
if (!isUndefined(value.version)) {
|
|
28
|
+
// Add a space between the name and the version
|
|
29
|
+
result += SPACE;
|
|
30
|
+
result += value.version.value;
|
|
31
|
+
}
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export { AgentGenerator };
|
|
@@ -0,0 +1,47 @@
|
|
|
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 { CommentRuleType } from '../../nodes/index.js';
|
|
8
|
+
import { BaseGenerator } from '../base-generator.js';
|
|
9
|
+
import { AgentCommentGenerator } from './agent-comment-generator.js';
|
|
10
|
+
import { HintCommentGenerator } from './hint-comment-generator.js';
|
|
11
|
+
import { PreProcessorCommentGenerator } from './pre-processor-comment-generator.js';
|
|
12
|
+
import { MetadataCommentGenerator } from './metadata-comment-generator.js';
|
|
13
|
+
import { ConfigCommentGenerator } from './config-comment-generator.js';
|
|
14
|
+
import { SimpleCommentGenerator } from './simple-comment-generator.js';
|
|
15
|
+
|
|
16
|
+
/* eslint-disable no-param-reassign */
|
|
17
|
+
/**
|
|
18
|
+
* `CommentRuleGenerator` is responsible for generating any comment-like adblock rules.
|
|
19
|
+
*/
|
|
20
|
+
class CommentRuleGenerator extends BaseGenerator {
|
|
21
|
+
/**
|
|
22
|
+
* Converts a comment rule node to a string.
|
|
23
|
+
*
|
|
24
|
+
* @param node Comment rule node
|
|
25
|
+
* @returns Raw string
|
|
26
|
+
*/
|
|
27
|
+
static generate(node) {
|
|
28
|
+
switch (node.type) {
|
|
29
|
+
case CommentRuleType.AgentCommentRule:
|
|
30
|
+
return AgentCommentGenerator.generate(node);
|
|
31
|
+
case CommentRuleType.HintCommentRule:
|
|
32
|
+
return HintCommentGenerator.generate(node);
|
|
33
|
+
case CommentRuleType.PreProcessorCommentRule:
|
|
34
|
+
return PreProcessorCommentGenerator.generate(node);
|
|
35
|
+
case CommentRuleType.MetadataCommentRule:
|
|
36
|
+
return MetadataCommentGenerator.generate(node);
|
|
37
|
+
case CommentRuleType.ConfigCommentRule:
|
|
38
|
+
return ConfigCommentGenerator.generate(node);
|
|
39
|
+
case CommentRuleType.CommentRule:
|
|
40
|
+
return SimpleCommentGenerator.generate(node);
|
|
41
|
+
default:
|
|
42
|
+
throw new Error('Unknown comment rule type');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { CommentRuleGenerator };
|
|
@@ -0,0 +1,45 @@
|
|
|
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 { BaseGenerator } from '../base-generator.js';
|
|
8
|
+
import { SPACE, COMMA, EMPTY } from '../../utils/constants.js';
|
|
9
|
+
import { ParameterListGenerator } from '../misc/parameter-list-generator.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Converts inline configuration comment nodes to their string format.
|
|
13
|
+
*/
|
|
14
|
+
class ConfigCommentGenerator extends BaseGenerator {
|
|
15
|
+
/**
|
|
16
|
+
* Converts an inline configuration comment node to a string.
|
|
17
|
+
*
|
|
18
|
+
* @param node Inline configuration comment node
|
|
19
|
+
* @returns Raw string
|
|
20
|
+
*/
|
|
21
|
+
static generate(node) {
|
|
22
|
+
let result = EMPTY;
|
|
23
|
+
result += node.marker.value;
|
|
24
|
+
result += SPACE;
|
|
25
|
+
result += node.command.value;
|
|
26
|
+
if (node.params) {
|
|
27
|
+
result += SPACE;
|
|
28
|
+
if (node.params.type === 'ParameterList') {
|
|
29
|
+
result += ParameterListGenerator.generate(node.params, COMMA);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
// Trim JSON boundaries
|
|
33
|
+
result += JSON.stringify(node.params.value).slice(1, -1).trim();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Add comment within the config comment
|
|
37
|
+
if (node.comment) {
|
|
38
|
+
result += SPACE;
|
|
39
|
+
result += node.comment.value;
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { ConfigCommentGenerator };
|
|
@@ -0,0 +1,28 @@
|
|
|
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 { BaseGenerator } from '../base-generator.js';
|
|
8
|
+
import { SPACE, HINT_MARKER } from '../../utils/constants.js';
|
|
9
|
+
import { HintGenerator } from './hint-generator.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Hint comment generator.
|
|
13
|
+
*/
|
|
14
|
+
class HintCommentGenerator extends BaseGenerator {
|
|
15
|
+
/**
|
|
16
|
+
* Converts a hint rule node to a raw string.
|
|
17
|
+
*
|
|
18
|
+
* @param node Hint rule node
|
|
19
|
+
* @returns Raw string
|
|
20
|
+
*/
|
|
21
|
+
static generate(node) {
|
|
22
|
+
let result = HINT_MARKER + SPACE;
|
|
23
|
+
result += node.children.map(HintGenerator.generate).join(SPACE);
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { HintCommentGenerator };
|
|
@@ -0,0 +1,33 @@
|
|
|
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 { OPEN_PARENTHESIS, COMMA, CLOSE_PARENTHESIS, EMPTY } from '../../utils/constants.js';
|
|
8
|
+
import { BaseGenerator } from '../base-generator.js';
|
|
9
|
+
import { ParameterListGenerator } from '../misc/parameter-list-generator.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Hint generator.
|
|
13
|
+
*/
|
|
14
|
+
class HintGenerator extends BaseGenerator {
|
|
15
|
+
/**
|
|
16
|
+
* Generates a string representation of a hint.
|
|
17
|
+
*
|
|
18
|
+
* @param hint Hint AST node
|
|
19
|
+
* @returns String representation of the hint
|
|
20
|
+
*/
|
|
21
|
+
static generate(hint) {
|
|
22
|
+
let result = EMPTY;
|
|
23
|
+
result += hint.name.value;
|
|
24
|
+
if (hint.params && hint.params.children.length > 0) {
|
|
25
|
+
result += OPEN_PARENTHESIS;
|
|
26
|
+
result += ParameterListGenerator.generate(hint.params, COMMA);
|
|
27
|
+
result += CLOSE_PARENTHESIS;
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { HintGenerator };
|
|
@@ -0,0 +1,33 @@
|
|
|
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 { SPACE, COLON, EMPTY } from '../../utils/constants.js';
|
|
8
|
+
import { ValueGenerator } from '../misc/value-generator.js';
|
|
9
|
+
import { BaseGenerator } from '../base-generator.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Metadata comment generator.
|
|
13
|
+
*/
|
|
14
|
+
class MetadataCommentGenerator extends BaseGenerator {
|
|
15
|
+
/**
|
|
16
|
+
* Converts a metadata comment rule node to a string.
|
|
17
|
+
*
|
|
18
|
+
* @param node Metadata comment rule node.
|
|
19
|
+
* @returns Raw string.
|
|
20
|
+
*/
|
|
21
|
+
static generate(node) {
|
|
22
|
+
let result = EMPTY;
|
|
23
|
+
result += ValueGenerator.generate(node.marker);
|
|
24
|
+
result += SPACE;
|
|
25
|
+
result += ValueGenerator.generate(node.header);
|
|
26
|
+
result += COLON;
|
|
27
|
+
result += SPACE;
|
|
28
|
+
result += ValueGenerator.generate(node.value);
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { MetadataCommentGenerator };
|
|
@@ -0,0 +1,48 @@
|
|
|
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 { SAFARI_CB_AFFINITY, SPACE, OPEN_PARENTHESIS, CLOSE_PARENTHESIS, EMPTY, PREPROCESSOR_MARKER } from '../../utils/constants.js';
|
|
8
|
+
import { BaseGenerator } from '../base-generator.js';
|
|
9
|
+
import { ValueGenerator } from '../misc/value-generator.js';
|
|
10
|
+
import { ParameterListGenerator } from '../misc/parameter-list-generator.js';
|
|
11
|
+
import { LogicalExpressionGenerator } from '../misc/logical-expression-generator.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Pre-processor comment generator.
|
|
15
|
+
*/
|
|
16
|
+
class PreProcessorCommentGenerator extends BaseGenerator {
|
|
17
|
+
/**
|
|
18
|
+
* Converts a pre-processor comment node to a string.
|
|
19
|
+
*
|
|
20
|
+
* @param node Pre-processor comment node
|
|
21
|
+
* @returns Raw string
|
|
22
|
+
*/
|
|
23
|
+
static generate(node) {
|
|
24
|
+
let result = EMPTY;
|
|
25
|
+
result += PREPROCESSOR_MARKER;
|
|
26
|
+
result += node.name.value;
|
|
27
|
+
if (node.params) {
|
|
28
|
+
// Space is not allowed after "safari_cb_affinity" directive, so we need to handle it separately.
|
|
29
|
+
if (node.name.value !== SAFARI_CB_AFFINITY) {
|
|
30
|
+
result += SPACE;
|
|
31
|
+
}
|
|
32
|
+
if (node.params.type === 'Value') {
|
|
33
|
+
result += ValueGenerator.generate(node.params);
|
|
34
|
+
}
|
|
35
|
+
else if (node.params.type === 'ParameterList') {
|
|
36
|
+
result += OPEN_PARENTHESIS;
|
|
37
|
+
result += ParameterListGenerator.generate(node.params);
|
|
38
|
+
result += CLOSE_PARENTHESIS;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
result += LogicalExpressionGenerator.generate(node.params);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { PreProcessorCommentGenerator };
|
|
@@ -0,0 +1,29 @@
|
|
|
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 { BaseGenerator } from '../base-generator.js';
|
|
8
|
+
import { EMPTY } from '../../utils/constants.js';
|
|
9
|
+
import { ValueGenerator } from '../misc/value-generator.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Simple comment generator.
|
|
13
|
+
*/
|
|
14
|
+
class SimpleCommentGenerator extends BaseGenerator {
|
|
15
|
+
/**
|
|
16
|
+
* Converts a comment rule node to a string.
|
|
17
|
+
*
|
|
18
|
+
* @param node Comment rule node.
|
|
19
|
+
* @returns Raw string.
|
|
20
|
+
*/
|
|
21
|
+
static generate(node) {
|
|
22
|
+
let result = EMPTY;
|
|
23
|
+
result += ValueGenerator.generate(node.marker);
|
|
24
|
+
result += ValueGenerator.generate(node.text);
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export { SimpleCommentGenerator };
|
|
@@ -0,0 +1,38 @@
|
|
|
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 { SPACE, SEMICOLON } from '../../../utils/constants.js';
|
|
8
|
+
import { BaseGenerator } from '../../base-generator.js';
|
|
9
|
+
import { ParameterListGenerator } from '../../misc/parameter-list-generator.js';
|
|
10
|
+
import { AbpSnippetInjectionBodyCommon } from '../../../common/abp-snippet-injection-body-common.js';
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Adblock Plus snippet injection body generator.
|
|
14
|
+
*/
|
|
15
|
+
class AbpSnippetInjectionBodyGenerator extends BaseGenerator {
|
|
16
|
+
/**
|
|
17
|
+
* Generates a string representation of the Adblock Plus-style snippet call body.
|
|
18
|
+
*
|
|
19
|
+
* @param node Scriptlet injection rule body
|
|
20
|
+
* @returns String representation of the rule body
|
|
21
|
+
* @throws Error if the scriptlet call is empty
|
|
22
|
+
*/
|
|
23
|
+
static generate(node) {
|
|
24
|
+
const result = [];
|
|
25
|
+
if (node.children.length === 0) {
|
|
26
|
+
throw new Error(AbpSnippetInjectionBodyCommon.ERROR_MESSAGES.EMPTY_SCRIPTLET_CALL);
|
|
27
|
+
}
|
|
28
|
+
for (const scriptletCall of node.children) {
|
|
29
|
+
if (scriptletCall.children.length === 0) {
|
|
30
|
+
throw new Error(AbpSnippetInjectionBodyCommon.ERROR_MESSAGES.EMPTY_SCRIPTLET_CALL);
|
|
31
|
+
}
|
|
32
|
+
result.push(ParameterListGenerator.generate(scriptletCall, SPACE));
|
|
33
|
+
}
|
|
34
|
+
return result.join(SEMICOLON + SPACE);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export { AbpSnippetInjectionBodyGenerator };
|
|
@@ -0,0 +1,43 @@
|
|
|
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 { CLOSE_PARENTHESIS, EMPTY, ADG_SCRIPTLET_MASK, OPEN_PARENTHESIS } from '../../../utils/constants.js';
|
|
8
|
+
import { ParameterListGenerator } from '../../misc/parameter-list-generator.js';
|
|
9
|
+
import { BaseGenerator } from '../../base-generator.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* AdGuard scriptlet injection body generator.
|
|
13
|
+
*/
|
|
14
|
+
class AdgScriptletInjectionBodyGenerator extends BaseGenerator {
|
|
15
|
+
/**
|
|
16
|
+
* Error messages used by the generator.
|
|
17
|
+
*/
|
|
18
|
+
static ERROR_MESSAGES = {
|
|
19
|
+
NO_MULTIPLE_SCRIPTLET_CALLS: 'ADG syntaxes does not support multiple scriptlet calls within one single rule',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Generates a string representation of the AdGuard scriptlet call body.
|
|
23
|
+
*
|
|
24
|
+
* @param node Scriptlet injection rule body
|
|
25
|
+
* @returns String representation of the rule body
|
|
26
|
+
* @throws Error if the scriptlet call has multiple parameters
|
|
27
|
+
*/
|
|
28
|
+
static generate(node) {
|
|
29
|
+
const result = [];
|
|
30
|
+
if (node.children.length > 1) {
|
|
31
|
+
throw new Error(AdgScriptletInjectionBodyGenerator.ERROR_MESSAGES.NO_MULTIPLE_SCRIPTLET_CALLS);
|
|
32
|
+
}
|
|
33
|
+
result.push(ADG_SCRIPTLET_MASK);
|
|
34
|
+
result.push(OPEN_PARENTHESIS);
|
|
35
|
+
if (node.children.length > 0) {
|
|
36
|
+
result.push(ParameterListGenerator.generate(node.children[0]));
|
|
37
|
+
}
|
|
38
|
+
result.push(CLOSE_PARENTHESIS);
|
|
39
|
+
return result.join(EMPTY);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export { AdgScriptletInjectionBodyGenerator };
|
|
@@ -0,0 +1,45 @@
|
|
|
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 { BaseGenerator } from '../../base-generator.js';
|
|
8
|
+
import { CLOSE_PARENTHESIS, EMPTY, UBO_SCRIPTLET_MASK, OPEN_PARENTHESIS } from '../../../utils/constants.js';
|
|
9
|
+
import { ParameterListGenerator } from '../../misc/parameter-list-generator.js';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* uBlock scriptlet injection body generator.
|
|
13
|
+
*/
|
|
14
|
+
class UboScriptletInjectionBodyGenerator extends BaseGenerator {
|
|
15
|
+
/**
|
|
16
|
+
* Error messages used by the generator.
|
|
17
|
+
*/
|
|
18
|
+
static ERROR_MESSAGES = {
|
|
19
|
+
NO_MULTIPLE_SCRIPTLET_CALLS: 'uBO syntaxes does not support multiple scriptlet calls within one single rule',
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Generates a string representation of the uBlock scriptlet call body.
|
|
23
|
+
*
|
|
24
|
+
* @param node Scriptlet injection rule body
|
|
25
|
+
* @returns String representation of the rule body
|
|
26
|
+
* @throws Error if the scriptlet call has multiple parameters
|
|
27
|
+
*/
|
|
28
|
+
static generate(node) {
|
|
29
|
+
const result = [];
|
|
30
|
+
if (node.children.length > 1) {
|
|
31
|
+
throw new Error(UboScriptletInjectionBodyGenerator.ERROR_MESSAGES.NO_MULTIPLE_SCRIPTLET_CALLS);
|
|
32
|
+
}
|
|
33
|
+
// During generation, we only support the modern scriptlet mask
|
|
34
|
+
result.push(UBO_SCRIPTLET_MASK);
|
|
35
|
+
result.push(OPEN_PARENTHESIS);
|
|
36
|
+
if (node.children.length > 0) {
|
|
37
|
+
const [parameterListNode] = node.children;
|
|
38
|
+
result.push(ParameterListGenerator.generate(parameterListNode));
|
|
39
|
+
}
|
|
40
|
+
result.push(CLOSE_PARENTHESIS);
|
|
41
|
+
return result.join(EMPTY);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { UboScriptletInjectionBodyGenerator };
|
|
@@ -0,0 +1,94 @@
|
|
|
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 { BaseGenerator } from '../base-generator.js';
|
|
8
|
+
import { CosmeticRuleType } from '../../nodes/index.js';
|
|
9
|
+
import { CLOSE_PARENTHESIS, SPACE, COLON, OPEN_PARENTHESIS, EMPTY } from '../../utils/constants.js';
|
|
10
|
+
import { AdblockSyntax } from '../../utils/adblockers.js';
|
|
11
|
+
import { AdgScriptletInjectionBodyGenerator } from './body/adg-scriptlet-injection-body-generator.js';
|
|
12
|
+
import { AdgCssInjectionGenerator } from '../css/adg-css-injection-generator.js';
|
|
13
|
+
import { AbpSnippetInjectionBodyGenerator } from './body/abp-snippet-injection-body-generator.js';
|
|
14
|
+
import { UboScriptletInjectionBodyGenerator } from './body/ubo-scriptlet-injection-body-generator.js';
|
|
15
|
+
import { UboPseudoName } from '../../common/ubo-selector-common.js';
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Cosmetic rule body generator.
|
|
19
|
+
*/
|
|
20
|
+
class CosmeticRuleBodyGenerator extends BaseGenerator {
|
|
21
|
+
/**
|
|
22
|
+
* Generates the rule body from the node.
|
|
23
|
+
*
|
|
24
|
+
* @param node Cosmetic rule node
|
|
25
|
+
* @returns Raw rule body
|
|
26
|
+
* @example
|
|
27
|
+
* - '##.foo' → '.foo'
|
|
28
|
+
* - 'example.com,example.org##.foo' → '.foo'
|
|
29
|
+
* - 'example.com#%#//scriptlet('foo')' → '//scriptlet('foo')'
|
|
30
|
+
*
|
|
31
|
+
* @throws Error if the rule type is unknown
|
|
32
|
+
*/
|
|
33
|
+
static generate(node) {
|
|
34
|
+
let result = EMPTY;
|
|
35
|
+
switch (node.type) {
|
|
36
|
+
case CosmeticRuleType.ElementHidingRule:
|
|
37
|
+
result = node.body.selectorList.value;
|
|
38
|
+
break;
|
|
39
|
+
case CosmeticRuleType.CssInjectionRule:
|
|
40
|
+
if (node.syntax === AdblockSyntax.Adg) {
|
|
41
|
+
result = AdgCssInjectionGenerator.generate(node.body);
|
|
42
|
+
}
|
|
43
|
+
else if (node.syntax === AdblockSyntax.Ubo) {
|
|
44
|
+
if (node.body.mediaQueryList) {
|
|
45
|
+
result += COLON;
|
|
46
|
+
result += UboPseudoName.MatchesMedia;
|
|
47
|
+
result += OPEN_PARENTHESIS;
|
|
48
|
+
result += node.body.mediaQueryList.value;
|
|
49
|
+
result += CLOSE_PARENTHESIS;
|
|
50
|
+
result += SPACE;
|
|
51
|
+
}
|
|
52
|
+
result += node.body.selectorList.value;
|
|
53
|
+
if (node.body.remove) {
|
|
54
|
+
result += COLON;
|
|
55
|
+
result += UboPseudoName.Remove;
|
|
56
|
+
result += OPEN_PARENTHESIS;
|
|
57
|
+
result += CLOSE_PARENTHESIS;
|
|
58
|
+
}
|
|
59
|
+
else if (node.body.declarationList) {
|
|
60
|
+
result += COLON;
|
|
61
|
+
result += UboPseudoName.Style;
|
|
62
|
+
result += OPEN_PARENTHESIS;
|
|
63
|
+
result += node.body.declarationList.value;
|
|
64
|
+
result += CLOSE_PARENTHESIS;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
68
|
+
case CosmeticRuleType.HtmlFilteringRule:
|
|
69
|
+
case CosmeticRuleType.JsInjectionRule:
|
|
70
|
+
result = node.body.value;
|
|
71
|
+
break;
|
|
72
|
+
case CosmeticRuleType.ScriptletInjectionRule:
|
|
73
|
+
switch (node.syntax) {
|
|
74
|
+
case AdblockSyntax.Adg:
|
|
75
|
+
result = AdgScriptletInjectionBodyGenerator.generate(node.body);
|
|
76
|
+
break;
|
|
77
|
+
case AdblockSyntax.Abp:
|
|
78
|
+
result = AbpSnippetInjectionBodyGenerator.generate(node.body);
|
|
79
|
+
break;
|
|
80
|
+
case AdblockSyntax.Ubo:
|
|
81
|
+
result = UboScriptletInjectionBodyGenerator.generate(node.body);
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
throw new Error('Scriptlet rule should have an explicit syntax');
|
|
85
|
+
}
|
|
86
|
+
break;
|
|
87
|
+
default:
|
|
88
|
+
throw new Error('Unknown cosmetic rule type');
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export { CosmeticRuleBodyGenerator };
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
import { COLON, OPEN_PARENTHESIS, CLOSE_PARENTHESIS, SPACE, EMPTY } from '../../utils/constants.js';
|
|
9
|
+
import { BaseGenerator } from '../base-generator.js';
|
|
10
|
+
import { CosmeticRulePatternGenerator } from './cosmetic-rule-pattern-generator.js';
|
|
11
|
+
import { CosmeticRuleBodyGenerator } from './cosmetic-rule-body-generator.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* `CosmeticRuleGenerator` is responsible for generating cosmetic rules from their AST representation.
|
|
15
|
+
*
|
|
16
|
+
* This class takes a parsed cosmetic rule Abstract Syntax Tree (AST) and converts it back into a raw string format.
|
|
17
|
+
* It handles the generation of the pattern, separator, uBO rule modifiers, and the rule body.
|
|
18
|
+
*/
|
|
19
|
+
class CosmeticRuleGenerator extends BaseGenerator {
|
|
20
|
+
/**
|
|
21
|
+
* Converts a cosmetic rule AST into a string.
|
|
22
|
+
*
|
|
23
|
+
* @param node Cosmetic rule AST
|
|
24
|
+
* @returns Raw string
|
|
25
|
+
*/
|
|
26
|
+
static generate(node) {
|
|
27
|
+
let result = EMPTY;
|
|
28
|
+
// Pattern
|
|
29
|
+
result += CosmeticRulePatternGenerator.generate(node);
|
|
30
|
+
// Separator
|
|
31
|
+
result += node.separator.value;
|
|
32
|
+
// uBO rule modifiers
|
|
33
|
+
if (node.syntax === AdblockSyntax.Ubo && node.modifiers) {
|
|
34
|
+
node.modifiers.children.forEach((modifier) => {
|
|
35
|
+
result += COLON;
|
|
36
|
+
result += modifier.name.value;
|
|
37
|
+
if (modifier.value) {
|
|
38
|
+
result += OPEN_PARENTHESIS;
|
|
39
|
+
result += modifier.value.value;
|
|
40
|
+
result += CLOSE_PARENTHESIS;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
// If there are at least one modifier, add a space
|
|
44
|
+
if (node.modifiers.children.length) {
|
|
45
|
+
result += SPACE;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Body
|
|
49
|
+
result += CosmeticRuleBodyGenerator.generate(node);
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { CosmeticRuleGenerator };
|