@adguard/agtree 3.4.3 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ast-utils/clone.js +2 -2
- package/dist/ast-utils/modifiers.js +2 -2
- package/dist/ast-utils/network-rules.js +2 -2
- package/dist/ast-utils/scriptlets.js +2 -2
- package/dist/common/abp-snippet-injection-body-common.js +2 -2
- package/dist/common/agent-common.js +2 -2
- package/dist/common/ubo-html-filtering-body-common.js +40 -0
- package/dist/common/ubo-selector-common.js +2 -2
- package/dist/compatibility-tables/base.js +2 -2
- package/dist/compatibility-tables/compatibility-table-data.js +2 -2
- package/dist/compatibility-tables/modifiers.js +2 -2
- package/dist/compatibility-tables/platforms.js +2 -2
- package/dist/compatibility-tables/redirects.js +2 -2
- package/dist/compatibility-tables/schemas/base.js +2 -2
- package/dist/compatibility-tables/schemas/modifier.js +2 -2
- package/dist/compatibility-tables/schemas/platform.js +2 -2
- package/dist/compatibility-tables/schemas/redirect.js +2 -2
- package/dist/compatibility-tables/schemas/resource-type.js +2 -2
- package/dist/compatibility-tables/schemas/scriptlet.js +2 -2
- package/dist/compatibility-tables/scriptlets.js +2 -2
- package/dist/compatibility-tables/utils/platform-helpers.js +2 -2
- package/dist/compatibility-tables/utils/resource-type-helpers.js +2 -2
- package/dist/compatibility-tables/utils/zod-camelcase.js +2 -2
- package/dist/converter/base-interfaces/base-converter.js +2 -2
- package/dist/converter/base-interfaces/conversion-result.js +2 -2
- package/dist/converter/base-interfaces/rule-converter-base.js +2 -2
- package/dist/converter/comment/index.js +2 -2
- package/dist/converter/cosmetic/css.js +2 -2
- package/dist/converter/cosmetic/element-hiding.js +2 -2
- package/dist/converter/cosmetic/header-removal.js +24 -42
- package/dist/converter/cosmetic/html.js +580 -438
- package/dist/converter/cosmetic/index.js +3 -2
- package/dist/converter/cosmetic/rule-modifiers/adg.js +2 -2
- package/dist/converter/cosmetic/rule-modifiers/ubo.js +2 -2
- package/dist/converter/cosmetic/scriptlet.js +2 -2
- package/dist/converter/css/index.js +3 -2
- package/dist/converter/data/css.js +32 -54
- package/dist/converter/filter-list.js +2 -2
- package/dist/converter/index.js +2 -2
- package/dist/converter/misc/network-rule-modifier.js +2 -2
- package/dist/converter/network/index.js +2 -2
- package/dist/converter/raw-filter-list.js +2 -2
- package/dist/converter/raw-rule.js +6 -3
- package/dist/converter/rule.js +2 -2
- package/dist/errors/adblock-syntax-error.js +2 -2
- package/dist/errors/binary-schema-mismatch-error.js +2 -2
- package/dist/errors/not-implemented-error.js +2 -2
- package/dist/errors/rule-conversion-error.js +2 -2
- package/dist/generator/base-generator.js +2 -2
- package/dist/generator/comment/agent-comment-generator.js +2 -2
- package/dist/generator/comment/agent-generator.js +2 -2
- package/dist/generator/comment/comment-rule-generator.js +2 -2
- package/dist/generator/comment/config-comment-generator.js +2 -2
- package/dist/generator/comment/hint-comment-generator.js +2 -2
- package/dist/generator/comment/hint-generator.js +2 -2
- package/dist/generator/comment/metadata-comment-generator.js +2 -2
- package/dist/generator/comment/pre-processor-comment-generator.js +2 -2
- package/dist/generator/comment/simple-comment-generator.js +2 -2
- package/dist/generator/cosmetic/cosmetic-rule-body-generator.js +21 -6
- package/dist/generator/cosmetic/cosmetic-rule-generator.js +2 -2
- package/dist/generator/cosmetic/cosmetic-rule-pattern-generator.js +2 -2
- package/dist/generator/cosmetic/html-filtering-body/adg-html-filtering-body-generator.js +38 -0
- package/dist/generator/cosmetic/html-filtering-body/html-filtering-body-generator.js +32 -0
- package/dist/generator/cosmetic/html-filtering-body/ubo-html-filtering-body-generator.js +65 -0
- package/dist/generator/cosmetic/{body → scriptlet-body}/abp-snippet-injection-body-generator.js +2 -2
- package/dist/generator/cosmetic/{body → scriptlet-body}/adg-scriptlet-injection-body-generator.js +2 -2
- package/dist/generator/cosmetic/{body → scriptlet-body}/ubo-scriptlet-injection-body-generator.js +2 -2
- package/dist/generator/cosmetic/selector/attribute-selector-generator.js +42 -0
- package/dist/generator/cosmetic/selector/class-selector-generator.js +26 -0
- package/dist/generator/cosmetic/selector/complex-selector-generator.js +71 -0
- package/dist/generator/cosmetic/selector/id-selector-generator.js +26 -0
- package/dist/generator/cosmetic/selector/pseudo-class-selector-generator.js +35 -0
- package/dist/generator/cosmetic/selector/selector-combinator-generator.js +30 -0
- package/dist/generator/cosmetic/selector/selector-list-generator.js +41 -0
- package/dist/generator/cosmetic/selector/type-selector-generator.js +25 -0
- package/dist/generator/css/adg-css-injection-generator.js +5 -6
- package/dist/generator/filterlist-generator.js +2 -2
- package/dist/generator/index.js +2 -2
- package/dist/generator/misc/domain-list-generator.js +2 -2
- package/dist/generator/misc/list-items-generator.js +2 -2
- package/dist/generator/misc/logical-expression-generator.js +2 -2
- package/dist/generator/misc/modifier-generator.js +2 -2
- package/dist/generator/misc/modifier-list-generator.js +2 -2
- package/dist/generator/misc/parameter-list-generator.js +2 -2
- package/dist/generator/misc/value-generator.js +2 -2
- package/dist/generator/network/host-rule-generator.js +2 -2
- package/dist/generator/network/network-rule-generator.js +2 -2
- package/dist/generator/rule-generator.js +2 -2
- package/dist/index.js +4 -14
- package/dist/nodes/index.js +2 -2
- package/dist/package.json.js +3 -3
- package/dist/parser/base-parser.js +2 -2
- package/dist/parser/comment/agent-comment-parser.js +2 -2
- package/dist/parser/comment/agent-parser.js +2 -2
- package/dist/parser/comment/comment-parser.js +2 -2
- package/dist/parser/comment/config-comment-parser.js +2 -2
- package/dist/parser/comment/hint-comment-parser.js +2 -2
- package/dist/parser/comment/hint-parser.js +2 -2
- package/dist/parser/comment/metadata-comment-parser.js +2 -2
- package/dist/parser/comment/preprocessor-parser.js +2 -2
- package/dist/parser/comment/simple-comment-parser.js +2 -2
- package/dist/parser/cosmetic/cosmetic-rule-parser.js +10 -21
- package/dist/parser/cosmetic/html-filtering-body/adg-html-filtering-body-parser.js +49 -0
- package/dist/parser/cosmetic/html-filtering-body/html-filtering-body-parser.js +70 -0
- package/dist/parser/cosmetic/html-filtering-body/ubo-html-filtering-body-parser.js +180 -0
- package/dist/parser/cosmetic/{body → scriptlet-body}/abp-snippet-injection-body-parser.js +2 -2
- package/dist/parser/cosmetic/{body → scriptlet-body}/adg-scriptlet-injection-body-parser.js +2 -2
- package/dist/parser/cosmetic/{body → scriptlet-body}/ubo-scriptlet-injection-body-parser.js +2 -2
- package/dist/parser/cosmetic/selector/handlers/attribute-selector-handler.js +206 -0
- package/dist/parser/cosmetic/selector/handlers/class-selector-handler.js +48 -0
- package/dist/parser/cosmetic/selector/handlers/complex-selector-handler.js +67 -0
- package/dist/parser/cosmetic/selector/handlers/compound-selector-handler.js +97 -0
- package/dist/parser/cosmetic/selector/handlers/id-selector-handler.js +42 -0
- package/dist/parser/cosmetic/selector/handlers/pseudo-class-selector-handler.js +128 -0
- package/dist/parser/cosmetic/selector/handlers/type-selector-handler.js +58 -0
- package/dist/parser/cosmetic/selector/selector-list-parser.js +164 -0
- package/dist/parser/css/adg-css-injection-parser.js +4 -5
- package/dist/parser/css/balancing.js +2 -2
- package/dist/parser/css/constants.js +2 -2
- package/dist/parser/css/css-token-stream.js +41 -4
- package/dist/parser/css/ubo-selector-parser.js +2 -2
- package/dist/parser/filterlist-parser.js +2 -2
- package/dist/parser/index.js +2 -2
- package/dist/parser/misc/app-list-parser.js +2 -2
- package/dist/parser/misc/domain-list-parser.js +2 -2
- package/dist/parser/misc/list-items-parser.js +2 -2
- package/dist/parser/misc/logical-expression-parser.js +2 -2
- package/dist/parser/misc/method-list-parser.js +2 -2
- package/dist/parser/misc/modifier-list.js +2 -2
- package/dist/parser/misc/modifier-parser.js +2 -2
- package/dist/parser/misc/parameter-list-parser.js +2 -2
- package/dist/parser/misc/stealth-option-list-parser.js +2 -2
- package/dist/parser/misc/ubo-parameter-list-parser.js +2 -2
- package/dist/parser/misc/value-parser.js +2 -2
- package/dist/parser/network/host-rule-parser.js +2 -2
- package/dist/parser/network/network-rule-parser.js +2 -2
- package/dist/parser/options.js +3 -2
- package/dist/parser/rule-parser.js +2 -2
- package/dist/types/common/ubo-html-filtering-body-common.d.ts +12 -0
- package/dist/types/compatibility-tables/compatibility-table-data.d.ts +3 -3
- package/dist/types/compatibility-tables/schemas/redirect.d.ts +1 -1
- package/dist/types/compatibility-tables/schemas/scriptlet.d.ts +2 -2
- package/dist/types/converter/cosmetic/html.d.ts +167 -42
- package/dist/types/converter/data/css.d.ts +18 -6
- package/dist/types/generator/cosmetic/html-filtering-body/adg-html-filtering-body-generator.d.ts +17 -0
- package/dist/types/generator/cosmetic/html-filtering-body/html-filtering-body-generator.d.ts +17 -0
- package/dist/types/generator/cosmetic/html-filtering-body/ubo-html-filtering-body-generator.d.ts +30 -0
- package/dist/types/generator/cosmetic/selector/attribute-selector-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/selector/class-selector-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/selector/complex-selector-generator.d.ts +17 -0
- package/dist/types/generator/cosmetic/selector/id-selector-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/selector/pseudo-class-selector-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/selector/selector-combinator-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/selector/selector-list-generator.d.ts +17 -0
- package/dist/types/generator/cosmetic/selector/type-selector-generator.d.ts +15 -0
- package/dist/types/generator/css/adg-css-injection-generator.d.ts +1 -1
- package/dist/types/index.d.ts +3 -13
- package/dist/types/nodes/index.d.ts +159 -3
- package/dist/types/parser/cosmetic/html-filtering-body/adg-html-filtering-body-parser.d.ts +35 -0
- package/dist/types/parser/cosmetic/html-filtering-body/html-filtering-body-parser.d.ts +39 -0
- package/dist/types/parser/cosmetic/html-filtering-body/ubo-html-filtering-body-parser.d.ts +63 -0
- package/dist/types/parser/cosmetic/selector/context.d.ts +42 -0
- package/dist/types/parser/cosmetic/selector/handlers/attribute-selector-handler.d.ts +35 -0
- package/dist/types/parser/cosmetic/selector/handlers/class-selector-handler.d.ts +15 -0
- package/dist/types/parser/cosmetic/selector/handlers/complex-selector-handler.d.ts +20 -0
- package/dist/types/parser/cosmetic/selector/handlers/compound-selector-handler.d.ts +25 -0
- package/dist/types/parser/cosmetic/selector/handlers/id-selector-handler.d.ts +15 -0
- package/dist/types/parser/cosmetic/selector/handlers/pseudo-class-selector-handler.d.ts +15 -0
- package/dist/types/parser/cosmetic/selector/handlers/type-selector-handler.d.ts +15 -0
- package/dist/types/parser/cosmetic/selector/selector-list-parser.d.ts +38 -0
- package/dist/types/parser/css/adg-css-injection-parser.d.ts +0 -2
- package/dist/types/parser/css/css-token-stream.d.ts +18 -0
- package/dist/types/parser/network/network-rule-parser.d.ts +1 -1
- package/dist/types/parser/options.d.ts +5 -0
- package/dist/types/utils/constants.d.ts +1 -0
- package/dist/types/utils/index.d.ts +0 -6
- package/dist/types/utils/quotes.d.ts +44 -0
- package/dist/types/utils/regexp.d.ts +24 -0
- package/dist/utils/adblockers.js +2 -2
- package/dist/utils/bit-count.js +2 -2
- package/dist/utils/categorizer.js +2 -2
- package/dist/utils/clone.js +2 -2
- package/dist/utils/constants.js +6 -9
- package/dist/utils/cosmetic-rule-separator.js +2 -2
- package/dist/utils/deep-freeze.js +2 -2
- package/dist/utils/domain.js +2 -2
- package/dist/utils/error.js +2 -2
- package/dist/utils/index.js +2 -8
- package/dist/utils/logical-expression.js +2 -2
- package/dist/utils/multi-value-map.js +2 -2
- package/dist/utils/noop-modifier.js +2 -2
- package/dist/utils/position-provider.js +2 -2
- package/dist/utils/quotes.js +163 -10
- package/dist/utils/regexp.js +31 -2
- package/dist/utils/string.js +2 -2
- package/dist/utils/type-guards.js +3 -13
- package/dist/validator/constants.js +2 -2
- package/dist/validator/helpers.js +2 -2
- package/dist/validator/index.js +2 -2
- package/dist/validator/value.js +2 -2
- package/dist/version.js +2 -2
- package/package.json +6 -14
- package/dist/deserializer/base-deserializer.js +0 -29
- package/dist/deserializer/comment/agent-comment-deserializer.js +0 -79
- package/dist/deserializer/comment/agent-deserializer.js +0 -65
- package/dist/deserializer/comment/comment-rule-deserializer.js +0 -54
- package/dist/deserializer/comment/config-comment-deserializer.js +0 -111
- package/dist/deserializer/comment/hint-comment-deserializer.js +0 -72
- package/dist/deserializer/comment/hint-deserializer.js +0 -85
- package/dist/deserializer/comment/metadata-comment-deserializer.js +0 -69
- package/dist/deserializer/comment/pre-processor-comment-deserializer.js +0 -112
- package/dist/deserializer/comment/simple-comment-deserializer.js +0 -65
- package/dist/deserializer/cosmetic/cosmetic-rule-deserializer.js +0 -131
- package/dist/deserializer/cosmetic/css-injection-body-deserializer.js +0 -56
- package/dist/deserializer/cosmetic/element-hiding-body-deserializer.js +0 -48
- package/dist/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +0 -39
- package/dist/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +0 -40
- package/dist/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +0 -54
- package/dist/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +0 -38
- package/dist/deserializer/empty-rule-deserializer.js +0 -48
- package/dist/deserializer/filterlist-deserializer.js +0 -85
- package/dist/deserializer/index.js +0 -8
- package/dist/deserializer/invalid-rule-deserializer.js +0 -50
- package/dist/deserializer/invalid-rule-error-node-deserializer.js +0 -50
- package/dist/deserializer/misc/domain-list-deserializer.js +0 -64
- package/dist/deserializer/misc/list-item-deserializer.js +0 -69
- package/dist/deserializer/misc/list-items-deserializer.js +0 -30
- package/dist/deserializer/misc/logical-expression-deserializer.js +0 -196
- package/dist/deserializer/misc/modifier-deserializer.js +0 -87
- package/dist/deserializer/misc/modifier-list-deserializer.js +0 -61
- package/dist/deserializer/misc/parameter-list-deserializer.js +0 -64
- package/dist/deserializer/misc/value-deserializer.js +0 -50
- package/dist/deserializer/network/host-rule-deserializer.js +0 -67
- package/dist/deserializer/network/hostname-list-deserializer.js +0 -56
- package/dist/deserializer/network/network-rule-deserializer.js +0 -65
- package/dist/deserializer/rule-deserializer.js +0 -65
- package/dist/deserializer/syntax-deserialization-map.js +0 -21
- package/dist/marshalling-utils/comment/agent-comment-common.js +0 -21
- package/dist/marshalling-utils/comment/agent-common.js +0 -40
- package/dist/marshalling-utils/comment/config-comment-common.js +0 -54
- package/dist/marshalling-utils/comment/hint-comment-common.js +0 -22
- package/dist/marshalling-utils/comment/hint-common.js +0 -56
- package/dist/marshalling-utils/comment/metadata-comment-common.js +0 -41
- package/dist/marshalling-utils/comment/pre-processor-comment-common.js +0 -59
- package/dist/marshalling-utils/comment/simple-comment-common.js +0 -22
- package/dist/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +0 -61
- package/dist/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +0 -66
- package/dist/marshalling-utils/cosmetic/body/css-injection-body-common.js +0 -24
- package/dist/marshalling-utils/cosmetic/body/element-hiding-body-common.js +0 -21
- package/dist/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +0 -114
- package/dist/marshalling-utils/cosmetic/cosmetic-rule-common.js +0 -46
- package/dist/marshalling-utils/empty-rule-common.js +0 -20
- package/dist/marshalling-utils/filter-list-common.js +0 -21
- package/dist/marshalling-utils/invalid-rule-common.js +0 -21
- package/dist/marshalling-utils/invalid-rule-error-node-common.js +0 -22
- package/dist/marshalling-utils/misc/binary-type-common.js +0 -54
- package/dist/marshalling-utils/misc/domain-list-common.js +0 -36
- package/dist/marshalling-utils/misc/host-rule-common.js +0 -24
- package/dist/marshalling-utils/misc/hostname-list-common.js +0 -21
- package/dist/marshalling-utils/misc/list-item-common.js +0 -22
- package/dist/marshalling-utils/misc/logical-expression-common.js +0 -83
- package/dist/marshalling-utils/misc/modifier-common.js +0 -231
- package/dist/marshalling-utils/misc/modifier-list-common.js +0 -21
- package/dist/marshalling-utils/misc/parameter-list-common.js +0 -21
- package/dist/marshalling-utils/misc/value-common.js +0 -22
- package/dist/marshalling-utils/network/network-rule-common.js +0 -24
- package/dist/marshalling-utils/syntax-serialization-map.js +0 -30
- package/dist/serializer/base-serializer.js +0 -29
- package/dist/serializer/comment/agent-comment-serializer.js +0 -74
- package/dist/serializer/comment/agent-serializer.js +0 -59
- package/dist/serializer/comment/comment-rule-serializer.js +0 -105
- package/dist/serializer/comment/config-comment-serializer.js +0 -82
- package/dist/serializer/comment/hint-comment-serializer.js +0 -65
- package/dist/serializer/comment/hint-serializer.js +0 -54
- package/dist/serializer/comment/metadata-comment-serializer.js +0 -73
- package/dist/serializer/comment/pre-processor-comment-serializer.js +0 -71
- package/dist/serializer/comment/simple-comment-serializer.js +0 -52
- package/dist/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +0 -36
- package/dist/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +0 -36
- package/dist/serializer/cosmetic/body/scriptlet-body-serializer.js +0 -50
- package/dist/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +0 -36
- package/dist/serializer/cosmetic/cosmetic-rule-serializer.js +0 -120
- package/dist/serializer/cosmetic/css-injection-body-serializer.js +0 -51
- package/dist/serializer/cosmetic/element-hiding-body-serializer.js +0 -40
- package/dist/serializer/empty-rule-serializer.js +0 -37
- package/dist/serializer/filterlist-serializer.js +0 -45
- package/dist/serializer/index.js +0 -7
- package/dist/serializer/invalid-rule-error-node-serializer.js +0 -41
- package/dist/serializer/invalid-rule-serializer.js +0 -40
- package/dist/serializer/misc/domain-list-serializer.js +0 -64
- package/dist/serializer/misc/list-item-serializer.js +0 -58
- package/dist/serializer/misc/list-items-serializer.js +0 -29
- package/dist/serializer/misc/logical-expression-serializer.js +0 -136
- package/dist/serializer/misc/modifier-list-serializer.js +0 -58
- package/dist/serializer/misc/modifier-serializer.js +0 -49
- package/dist/serializer/misc/parameter-list-serializer.js +0 -52
- package/dist/serializer/misc/value-serializer.js +0 -50
- package/dist/serializer/network/host-rule-serializer.js +0 -70
- package/dist/serializer/network/hostname-list-serializer.js +0 -53
- package/dist/serializer/network/network-rule-serializer.js +0 -54
- package/dist/serializer/rule-serializer.js +0 -61
- package/dist/types/deserializer/base-deserializer.d.ts +0 -15
- package/dist/types/deserializer/comment/agent-comment-deserializer.d.ts +0 -34
- package/dist/types/deserializer/comment/agent-deserializer.d.ts +0 -25
- package/dist/types/deserializer/comment/comment-rule-deserializer.d.ts +0 -16
- package/dist/types/deserializer/comment/config-comment-deserializer.d.ts +0 -27
- package/dist/types/deserializer/comment/hint-comment-deserializer.d.ts +0 -24
- package/dist/types/deserializer/comment/hint-deserializer.d.ts +0 -26
- package/dist/types/deserializer/comment/metadata-comment-deserializer.d.ts +0 -26
- package/dist/types/deserializer/comment/pre-processor-comment-deserializer.d.ts +0 -29
- package/dist/types/deserializer/comment/simple-comment-deserializer.d.ts +0 -26
- package/dist/types/deserializer/cosmetic/cosmetic-rule-deserializer.d.ts +0 -18
- package/dist/types/deserializer/cosmetic/css-injection-body-deserializer.d.ts +0 -15
- package/dist/types/deserializer/cosmetic/element-hiding-body-deserializer.d.ts +0 -16
- package/dist/types/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.d.ts +0 -17
- package/dist/types/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.d.ts +0 -18
- package/dist/types/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.d.ts +0 -19
- package/dist/types/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.d.ts +0 -17
- package/dist/types/deserializer/empty-rule-deserializer.d.ts +0 -16
- package/dist/types/deserializer/filterlist-deserializer.d.ts +0 -34
- package/dist/types/deserializer/index.d.ts +0 -2
- package/dist/types/deserializer/invalid-rule-deserializer.d.ts +0 -16
- package/dist/types/deserializer/invalid-rule-error-node-deserializer.d.ts +0 -16
- package/dist/types/deserializer/misc/domain-list-deserializer.d.ts +0 -15
- package/dist/types/deserializer/misc/list-item-deserializer.d.ts +0 -19
- package/dist/types/deserializer/misc/list-items-deserializer.d.ts +0 -16
- package/dist/types/deserializer/misc/logical-expression-deserializer.d.ts +0 -55
- package/dist/types/deserializer/misc/modifier-deserializer.d.ts +0 -18
- package/dist/types/deserializer/misc/modifier-list-deserializer.d.ts +0 -20
- package/dist/types/deserializer/misc/parameter-list-deserializer.d.ts +0 -18
- package/dist/types/deserializer/misc/value-deserializer.d.ts +0 -17
- package/dist/types/deserializer/network/host-rule-deserializer.d.ts +0 -18
- package/dist/types/deserializer/network/hostname-list-deserializer.d.ts +0 -15
- package/dist/types/deserializer/network/network-rule-deserializer.d.ts +0 -18
- package/dist/types/deserializer/rule-deserializer.d.ts +0 -17
- package/dist/types/deserializer/syntax-deserialization-map.d.ts +0 -2
- package/dist/types/marshalling-utils/comment/agent-comment-common.d.ts +0 -14
- package/dist/types/marshalling-utils/comment/agent-common.d.ts +0 -20
- package/dist/types/marshalling-utils/comment/config-comment-common.d.ts +0 -42
- package/dist/types/marshalling-utils/comment/hint-comment-common.d.ts +0 -15
- package/dist/types/marshalling-utils/comment/hint-common.d.ts +0 -33
- package/dist/types/marshalling-utils/comment/metadata-comment-common.d.ts +0 -21
- package/dist/types/marshalling-utils/comment/pre-processor-comment-common.d.ts +0 -37
- package/dist/types/marshalling-utils/comment/simple-comment-common.d.ts +0 -15
- package/dist/types/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.d.ts +0 -23
- package/dist/types/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.d.ts +0 -9
- package/dist/types/marshalling-utils/cosmetic/body/css-injection-body-common.d.ts +0 -17
- package/dist/types/marshalling-utils/cosmetic/body/element-hiding-body-common.d.ts +0 -14
- package/dist/types/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.d.ts +0 -9
- package/dist/types/marshalling-utils/cosmetic/cosmetic-rule-common.d.ts +0 -28
- package/dist/types/marshalling-utils/empty-rule-common.d.ts +0 -13
- package/dist/types/marshalling-utils/filter-list-common.d.ts +0 -14
- package/dist/types/marshalling-utils/invalid-rule-common.d.ts +0 -14
- package/dist/types/marshalling-utils/invalid-rule-error-node-common.d.ts +0 -15
- package/dist/types/marshalling-utils/misc/binary-type-common.d.ts +0 -57
- package/dist/types/marshalling-utils/misc/domain-list-common.d.ts +0 -24
- package/dist/types/marshalling-utils/misc/host-rule-common.d.ts +0 -18
- package/dist/types/marshalling-utils/misc/hostname-list-common.d.ts +0 -14
- package/dist/types/marshalling-utils/misc/list-item-common.d.ts +0 -15
- package/dist/types/marshalling-utils/misc/logical-expression-common.d.ts +0 -47
- package/dist/types/marshalling-utils/misc/modifier-common.d.ts +0 -41
- package/dist/types/marshalling-utils/misc/modifier-list-common.d.ts +0 -14
- package/dist/types/marshalling-utils/misc/parameter-list-common.d.ts +0 -14
- package/dist/types/marshalling-utils/misc/value-common.d.ts +0 -15
- package/dist/types/marshalling-utils/network/network-rule-common.d.ts +0 -18
- package/dist/types/marshalling-utils/syntax-serialization-map.d.ts +0 -2
- package/dist/types/serializer/base-serializer.d.ts +0 -15
- package/dist/types/serializer/comment/agent-comment-serializer.d.ts +0 -34
- package/dist/types/serializer/comment/agent-serializer.d.ts +0 -15
- package/dist/types/serializer/comment/comment-rule-serializer.d.ts +0 -68
- package/dist/types/serializer/comment/config-comment-serializer.d.ts +0 -25
- package/dist/types/serializer/comment/hint-comment-serializer.d.ts +0 -23
- package/dist/types/serializer/comment/hint-serializer.d.ts +0 -24
- package/dist/types/serializer/comment/metadata-comment-serializer.d.ts +0 -25
- package/dist/types/serializer/comment/pre-processor-comment-serializer.d.ts +0 -28
- package/dist/types/serializer/comment/simple-comment-serializer.d.ts +0 -24
- package/dist/types/serializer/cosmetic/body/abp-snippet-injection-body-serializer.d.ts +0 -25
- package/dist/types/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.d.ts +0 -25
- package/dist/types/serializer/cosmetic/body/scriptlet-body-serializer.d.ts +0 -17
- package/dist/types/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.d.ts +0 -25
- package/dist/types/serializer/cosmetic/cosmetic-rule-serializer.d.ts +0 -19
- package/dist/types/serializer/cosmetic/css-injection-body-serializer.d.ts +0 -15
- package/dist/types/serializer/cosmetic/element-hiding-body-serializer.d.ts +0 -15
- package/dist/types/serializer/empty-rule-serializer.d.ts +0 -15
- package/dist/types/serializer/filterlist-serializer.d.ts +0 -15
- package/dist/types/serializer/index.d.ts +0 -1
- package/dist/types/serializer/invalid-rule-error-node-serializer.d.ts +0 -15
- package/dist/types/serializer/invalid-rule-serializer.d.ts +0 -15
- package/dist/types/serializer/misc/domain-list-serializer.d.ts +0 -21
- package/dist/types/serializer/misc/list-item-serializer.d.ts +0 -16
- package/dist/types/serializer/misc/list-items-serializer.d.ts +0 -15
- package/dist/types/serializer/misc/logical-expression-serializer.d.ts +0 -52
- package/dist/types/serializer/misc/modifier-list-serializer.d.ts +0 -20
- package/dist/types/serializer/misc/modifier-serializer.d.ts +0 -18
- package/dist/types/serializer/misc/parameter-list-serializer.d.ts +0 -17
- package/dist/types/serializer/misc/value-serializer.d.ts +0 -17
- package/dist/types/serializer/network/host-rule-serializer.d.ts +0 -30
- package/dist/types/serializer/network/hostname-list-serializer.d.ts +0 -15
- package/dist/types/serializer/network/network-rule-serializer.d.ts +0 -18
- package/dist/types/serializer/rule-serializer.d.ts +0 -17
- package/dist/types/utils/binary-schema-version.d.ts +0 -9
- package/dist/types/utils/byte-buffer.d.ts +0 -54
- package/dist/types/utils/input-byte-buffer.d.ts +0 -146
- package/dist/types/utils/is-chromium.d.ts +0 -7
- package/dist/types/utils/output-byte-buffer.d.ts +0 -132
- package/dist/types/utils/storage-interface.d.ts +0 -23
- package/dist/types/utils/text-decoder-polyfill.d.ts +0 -14
- package/dist/types/utils/text-encoder-polyfill.d.ts +0 -18
- package/dist/utils/binary-schema-version.js +0 -17
- package/dist/utils/byte-buffer.js +0 -91
- package/dist/utils/input-byte-buffer.js +0 -266
- package/dist/utils/is-chromium.js +0 -20
- package/dist/utils/output-byte-buffer.js +0 -231
- package/dist/utils/text-decoder-polyfill.js +0 -107
- package/dist/utils/text-encoder-polyfill.js +0 -78
- /package/dist/types/generator/cosmetic/{body → scriptlet-body}/abp-snippet-injection-body-generator.d.ts +0 -0
- /package/dist/types/generator/cosmetic/{body → scriptlet-body}/adg-scriptlet-injection-body-generator.d.ts +0 -0
- /package/dist/types/generator/cosmetic/{body → scriptlet-body}/ubo-scriptlet-injection-body-generator.d.ts +0 -0
- /package/dist/types/parser/cosmetic/{body → scriptlet-body}/abp-snippet-injection-body-parser.d.ts +0 -0
- /package/dist/types/parser/cosmetic/{body → scriptlet-body}/adg-scriptlet-injection-body-parser.d.ts +0 -0
- /package/dist/types/parser/cosmetic/{body → scriptlet-body}/ubo-scriptlet-injection-body-parser.d.ts +0 -0
package/dist/utils/quotes.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree
|
|
3
|
-
* (c)
|
|
2
|
+
* AGTree v4.0.0 (build date: Wed, 21 Jan 2026 17:25:36 GMT)
|
|
3
|
+
* (c) 2026 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
|
7
|
-
import { ESCAPE_CHARACTER, EMPTY, SINGLE_QUOTE, DOUBLE_QUOTE, BACKTICK_QUOTE, COMMA, SPACE } from './constants.js';
|
|
7
|
+
import { ESCAPE_CHARACTER, EMPTY, SINGLE_QUOTE, DOUBLE_QUOTE, BACKTICK_QUOTE, COMMA, SPACE, OPEN_PARENTHESIS, CLOSE_PARENTHESIS, OPEN_SQUARE_BRACKET, CLOSE_SQUARE_BRACKET } from './constants.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @file Utility functions for working with quotes
|
|
@@ -182,14 +182,17 @@ class QuoteUtils {
|
|
|
182
182
|
* @returns String without quotes
|
|
183
183
|
*/
|
|
184
184
|
static removeQuotesAndUnescape(string) {
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
185
|
+
const quoteType = QuoteUtils.getStringQuoteType(string);
|
|
186
|
+
switch (quoteType) {
|
|
187
|
+
case QuoteType.Single:
|
|
188
|
+
return QuoteUtils.unescapeSingleEscapedOccurrences(string.slice(1, -1), SINGLE_QUOTE);
|
|
189
|
+
case QuoteType.Double:
|
|
190
|
+
return QuoteUtils.unescapeSingleEscapedOccurrences(string.slice(1, -1), DOUBLE_QUOTE);
|
|
191
|
+
case QuoteType.Backtick:
|
|
192
|
+
return QuoteUtils.unescapeSingleEscapedOccurrences(string.slice(1, -1), BACKTICK_QUOTE);
|
|
193
|
+
default:
|
|
194
|
+
return string;
|
|
191
195
|
}
|
|
192
|
-
return string;
|
|
193
196
|
}
|
|
194
197
|
/**
|
|
195
198
|
* Wraps given `strings` with `quote` (defaults to single quote `'`)
|
|
@@ -209,6 +212,156 @@ class QuoteUtils {
|
|
|
209
212
|
.map((s) => QuoteUtils.setStringQuoteType(s, quoteType))
|
|
210
213
|
.join(separator);
|
|
211
214
|
}
|
|
215
|
+
/**
|
|
216
|
+
* Convert `""` to `\"` within strings inside of attribute selectors,
|
|
217
|
+
* because it is not compatible with the standard CSS syntax.
|
|
218
|
+
*
|
|
219
|
+
* @param selector CSS selector string.
|
|
220
|
+
*
|
|
221
|
+
* @returns Escaped CSS selector.
|
|
222
|
+
*
|
|
223
|
+
* @note In the legacy syntax, `""` is used to escape double quotes, but it cannot be used
|
|
224
|
+
* in the standard CSS syntax, so we use conversion functions to handle this.
|
|
225
|
+
* @note This function is intended to be used on whole attribute selector or whole selector strings.
|
|
226
|
+
*
|
|
227
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#tag-content}
|
|
228
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#wildcard}
|
|
229
|
+
*
|
|
230
|
+
* @example
|
|
231
|
+
* ```ts
|
|
232
|
+
* QuoteUtils.escapeAttributeDoubleQuotes('[attr="value with "" quotes"]');
|
|
233
|
+
* QuoteUtils.escapeAttributeDoubleQuotes('div[attr="value with "" quotes"] > span');
|
|
234
|
+
* ```
|
|
235
|
+
*/
|
|
236
|
+
static escapeAttributeDoubleQuotes(selector) {
|
|
237
|
+
const nestingBlockPairs = new Map([
|
|
238
|
+
[OPEN_PARENTHESIS, CLOSE_PARENTHESIS],
|
|
239
|
+
[OPEN_SQUARE_BRACKET, CLOSE_SQUARE_BRACKET],
|
|
240
|
+
[SINGLE_QUOTE, SINGLE_QUOTE],
|
|
241
|
+
[DOUBLE_QUOTE, DOUBLE_QUOTE],
|
|
242
|
+
[BACKTICK_QUOTE, BACKTICK_QUOTE],
|
|
243
|
+
]);
|
|
244
|
+
const nestingBlockStack = [];
|
|
245
|
+
const buffer = [];
|
|
246
|
+
for (let i = 0; i < selector.length; i += 1) {
|
|
247
|
+
const char = selector[i];
|
|
248
|
+
// Check if we are inside of an attribute selector's value
|
|
249
|
+
if (
|
|
250
|
+
// nesting will be 2 levels deep if we are inside of attribute selector's value
|
|
251
|
+
nestingBlockStack.length === 2
|
|
252
|
+
// and the outer block is an attribute selector
|
|
253
|
+
&& nestingBlockStack[0] === CLOSE_SQUARE_BRACKET
|
|
254
|
+
// and the inner block is a double quote
|
|
255
|
+
&& nestingBlockStack[1] === DOUBLE_QUOTE) {
|
|
256
|
+
// We found `""` inside of attribute selector's value
|
|
257
|
+
if (char === DOUBLE_QUOTE
|
|
258
|
+
&& selector[i + 1] === DOUBLE_QUOTE) {
|
|
259
|
+
// Convert `""` to `\"`
|
|
260
|
+
buffer.push(ESCAPE_CHARACTER);
|
|
261
|
+
buffer.push(DOUBLE_QUOTE);
|
|
262
|
+
// Skip the next double quote
|
|
263
|
+
i += 1;
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
// Normal character inside of attribute selector's value
|
|
267
|
+
buffer.push(char);
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
// Handle entering nesting blocks
|
|
271
|
+
if (nestingBlockPairs.has(char)
|
|
272
|
+
&& selector[i - 1] !== ESCAPE_CHARACTER) {
|
|
273
|
+
nestingBlockStack.push(nestingBlockPairs.get(char));
|
|
274
|
+
buffer.push(char);
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
// Handle exiting nesting blocks
|
|
278
|
+
if (nestingBlockStack.length > 0
|
|
279
|
+
&& char === nestingBlockStack[nestingBlockStack.length - 1]
|
|
280
|
+
&& selector[i - 1] !== ESCAPE_CHARACTER) {
|
|
281
|
+
nestingBlockStack.pop();
|
|
282
|
+
buffer.push(char);
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
// Normal character
|
|
286
|
+
buffer.push(char);
|
|
287
|
+
}
|
|
288
|
+
return buffer.join(EMPTY);
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Convert escaped double quotes `\"` to `""` within strings inside of attribute selectors,
|
|
292
|
+
* because it is not compatible with the standard CSS syntax.
|
|
293
|
+
*
|
|
294
|
+
* @param selector CSS selector string.
|
|
295
|
+
*
|
|
296
|
+
* @returns Unescaped CSS selector.
|
|
297
|
+
*
|
|
298
|
+
* @note In the legacy syntax, `""` is used to escape double quotes, but it cannot be used
|
|
299
|
+
* in the standard CSS syntax, so we use conversion functions to handle this.
|
|
300
|
+
* @note This function is intended to be used on whole attribute selector or whole selector strings.
|
|
301
|
+
*
|
|
302
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#tag-content}
|
|
303
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#wildcard}
|
|
304
|
+
*
|
|
305
|
+
* @example
|
|
306
|
+
* ```ts
|
|
307
|
+
* QuoteUtils.unescapeAttributeDoubleQuotes('[attr="value with \\" quotes"]');
|
|
308
|
+
* QuoteUtils.unescapeAttributeDoubleQuotes('div[attr="value with \\" quotes"] > span');
|
|
309
|
+
* ```
|
|
310
|
+
*/
|
|
311
|
+
static unescapeAttributeDoubleQuotes(selector) {
|
|
312
|
+
const nestingBlockPairs = new Map([
|
|
313
|
+
[OPEN_PARENTHESIS, CLOSE_PARENTHESIS],
|
|
314
|
+
[OPEN_SQUARE_BRACKET, CLOSE_SQUARE_BRACKET],
|
|
315
|
+
[SINGLE_QUOTE, SINGLE_QUOTE],
|
|
316
|
+
[DOUBLE_QUOTE, DOUBLE_QUOTE],
|
|
317
|
+
[BACKTICK_QUOTE, BACKTICK_QUOTE],
|
|
318
|
+
]);
|
|
319
|
+
const nestingBlockStack = [];
|
|
320
|
+
const buffer = [];
|
|
321
|
+
for (let i = 0; i < selector.length; i += 1) {
|
|
322
|
+
const char = selector[i];
|
|
323
|
+
// Check if we are inside of an attribute selector's value
|
|
324
|
+
if (
|
|
325
|
+
// nesting will be 2 levels deep if we are inside of attribute selector's value
|
|
326
|
+
nestingBlockStack.length === 2
|
|
327
|
+
// and the outer block is an attribute selector
|
|
328
|
+
&& nestingBlockStack[0] === CLOSE_SQUARE_BRACKET
|
|
329
|
+
// and the inner block is a double quote
|
|
330
|
+
&& nestingBlockStack[1] === DOUBLE_QUOTE) {
|
|
331
|
+
// We found `\"` inside of attribute selector's value
|
|
332
|
+
if (char === ESCAPE_CHARACTER
|
|
333
|
+
&& selector[i + 1] === DOUBLE_QUOTE) {
|
|
334
|
+
// Convert `\"` to `""`
|
|
335
|
+
buffer.push(DOUBLE_QUOTE);
|
|
336
|
+
buffer.push(DOUBLE_QUOTE);
|
|
337
|
+
// Skip the next double quote
|
|
338
|
+
i += 1;
|
|
339
|
+
continue;
|
|
340
|
+
}
|
|
341
|
+
// Normal character inside of attribute selector's value
|
|
342
|
+
buffer.push(char);
|
|
343
|
+
continue;
|
|
344
|
+
}
|
|
345
|
+
// Handle entering nesting blocks
|
|
346
|
+
if (nestingBlockPairs.has(char)
|
|
347
|
+
&& selector[i - 1] !== ESCAPE_CHARACTER) {
|
|
348
|
+
nestingBlockStack.push(nestingBlockPairs.get(char));
|
|
349
|
+
buffer.push(char);
|
|
350
|
+
continue;
|
|
351
|
+
}
|
|
352
|
+
// Handle exiting nesting blocks
|
|
353
|
+
if (nestingBlockStack.length > 0
|
|
354
|
+
&& char === nestingBlockStack[nestingBlockStack.length - 1]
|
|
355
|
+
&& selector[i - 1] !== ESCAPE_CHARACTER) {
|
|
356
|
+
nestingBlockStack.pop();
|
|
357
|
+
buffer.push(char);
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
360
|
+
// Normal character
|
|
361
|
+
buffer.push(char);
|
|
362
|
+
}
|
|
363
|
+
return buffer.join(EMPTY);
|
|
364
|
+
}
|
|
212
365
|
}
|
|
213
366
|
|
|
214
367
|
export { QUOTE_SET, QuoteType, QuoteUtils };
|
package/dist/utils/regexp.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree
|
|
3
|
-
* (c)
|
|
2
|
+
* AGTree v4.0.0 (build date: Wed, 21 Jan 2026 17:25:36 GMT)
|
|
3
|
+
* (c) 2026 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
|
7
|
+
import GlobToRegExp from 'glob-to-regexp';
|
|
7
8
|
import { CARET, ASTERISK, PIPE, DOT, CLOSE_CURLY_BRACKET, CLOSE_PARENTHESIS, CLOSE_SQUARE_BRACKET, DOLLAR_SIGN, ESCAPE_CHARACTER, OPEN_CURLY_BRACKET, OPEN_PARENTHESIS, OPEN_SQUARE_BRACKET, PLUS, QUESTION_MARK, SLASH, REGEX_MARKER, EMPTY } from './constants.js';
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -217,6 +218,34 @@ class RegExpUtils {
|
|
|
217
218
|
}
|
|
218
219
|
return result;
|
|
219
220
|
}
|
|
221
|
+
/**
|
|
222
|
+
* Creates a length-matching regular expression string: /^(?=.{min,max}$).*\/s
|
|
223
|
+
* Where:
|
|
224
|
+
* - (?=.{min,max}$) is a lookahead that ensures the string length is between min and max
|
|
225
|
+
* - .* matches any character (including newlines, due to the 's' flag)
|
|
226
|
+
*
|
|
227
|
+
* @param min Minimum length or `null` for no minimum (default to `0`).
|
|
228
|
+
* @param max Maximum length or `null` for no maximum (default to no maximum).
|
|
229
|
+
*
|
|
230
|
+
* @returns Length-matching regular expression string.
|
|
231
|
+
*/
|
|
232
|
+
static getLengthRegexp(min, max) {
|
|
233
|
+
return `/^(?=.{${min ?? 0},${max ?? ''}}$).*/s`;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Converts a glob pattern to a RegExp string with slashes and 's' flag.
|
|
237
|
+
*
|
|
238
|
+
* @param glob Glob pattern to convert.
|
|
239
|
+
*
|
|
240
|
+
* @returns RegExp string.
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
* // Returns '/^foo.*bar$/s'
|
|
244
|
+
* RegExpUtils.globToRegExp('foo*bar');
|
|
245
|
+
*/
|
|
246
|
+
static globToRegExp(glob) {
|
|
247
|
+
return `${REGEX_MARKER + GlobToRegExp(glob).source + REGEX_MARKER}s`;
|
|
248
|
+
}
|
|
220
249
|
}
|
|
221
250
|
|
|
222
251
|
export { ADBLOCK_URL_SEPARATOR, ADBLOCK_URL_SEPARATOR_REGEX, ADBLOCK_URL_START, ADBLOCK_URL_START_REGEX, ADBLOCK_WILDCARD, ADBLOCK_WILDCARD_REGEX, REGEX_ANY_CHARACTERS, REGEX_END, REGEX_NEGATION_PREFIX, REGEX_NEGATION_SUFFIX, REGEX_START, RegExpUtils, SPECIAL_REGEX_SYMBOLS };
|
package/dist/utils/string.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree
|
|
3
|
-
* (c)
|
|
2
|
+
* AGTree v4.0.0 (build date: Wed, 21 Jan 2026 17:25:36 GMT)
|
|
3
|
+
* (c) 2026 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree
|
|
3
|
-
* (c)
|
|
2
|
+
* AGTree v4.0.0 (build date: Wed, 21 Jan 2026 17:25:36 GMT)
|
|
3
|
+
* (c) 2026 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
|
@@ -33,15 +33,5 @@ const isNull = (value) => {
|
|
|
33
33
|
const isString = (value) => {
|
|
34
34
|
return typeof value === 'string';
|
|
35
35
|
};
|
|
36
|
-
/**
|
|
37
|
-
* Checks whether the given value is an array of Uint8Arrays.
|
|
38
|
-
*
|
|
39
|
-
* @param value Value to check.
|
|
40
|
-
*
|
|
41
|
-
* @returns True if the value type is an array of Uint8Arrays.
|
|
42
|
-
*/
|
|
43
|
-
const isArrayOfUint8Arrays = (value) => {
|
|
44
|
-
return Array.isArray(value) && value.every((chunk) => chunk instanceof Uint8Array);
|
|
45
|
-
};
|
|
46
36
|
|
|
47
|
-
export {
|
|
37
|
+
export { isNull, isString, isUndefined };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree
|
|
3
|
-
* (c)
|
|
2
|
+
* AGTree v4.0.0 (build date: Wed, 21 Jan 2026 17:25:36 GMT)
|
|
3
|
+
* (c) 2026 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree
|
|
3
|
-
* (c)
|
|
2
|
+
* AGTree v4.0.0 (build date: Wed, 21 Jan 2026 17:25:36 GMT)
|
|
3
|
+
* (c) 2026 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
package/dist/validator/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree
|
|
3
|
-
* (c)
|
|
2
|
+
* AGTree v4.0.0 (build date: Wed, 21 Jan 2026 17:25:36 GMT)
|
|
3
|
+
* (c) 2026 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
package/dist/validator/value.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree
|
|
3
|
-
* (c)
|
|
2
|
+
* AGTree v4.0.0 (build date: Wed, 21 Jan 2026 17:25:36 GMT)
|
|
3
|
+
* (c) 2026 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
package/dist/version.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree
|
|
3
|
-
* (c)
|
|
2
|
+
* AGTree v4.0.0 (build date: Wed, 21 Jan 2026 17:25:36 GMT)
|
|
3
|
+
* (c) 2026 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adguard/agtree",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Tool set for working with adblock filter lists",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adblock",
|
|
@@ -11,9 +11,7 @@
|
|
|
11
11
|
"ast",
|
|
12
12
|
"converter",
|
|
13
13
|
"validator",
|
|
14
|
-
"generator"
|
|
15
|
-
"serialize",
|
|
16
|
-
"deserialize"
|
|
14
|
+
"generator"
|
|
17
15
|
],
|
|
18
16
|
"author": "Adguard Software Ltd.",
|
|
19
17
|
"license": "MIT",
|
|
@@ -44,14 +42,6 @@
|
|
|
44
42
|
"types": "./dist/types/generator/index.d.ts",
|
|
45
43
|
"import": "./dist/generator/index.js"
|
|
46
44
|
},
|
|
47
|
-
"./serializer": {
|
|
48
|
-
"types": "./dist/types/serializer/index.d.ts",
|
|
49
|
-
"import": "./dist/serializer/index.js"
|
|
50
|
-
},
|
|
51
|
-
"./deserializer": {
|
|
52
|
-
"types": "./dist/types/deserializer/index.d.ts",
|
|
53
|
-
"import": "./dist/deserializer/index.js"
|
|
54
|
-
},
|
|
55
45
|
"./converter": {
|
|
56
46
|
"types": "./dist/types/converter/index.d.ts",
|
|
57
47
|
"import": "./dist/converter/index.js"
|
|
@@ -71,11 +61,11 @@
|
|
|
71
61
|
"dependencies": {
|
|
72
62
|
"camelcase-keys": "^7.0.2",
|
|
73
63
|
"clone-deep": "^4.0.1",
|
|
64
|
+
"glob-to-regexp": "^0.4.1",
|
|
74
65
|
"is-ip": "3.1.0",
|
|
75
66
|
"json5": "^2.2.3",
|
|
76
67
|
"sprintf-js": "^1.1.3",
|
|
77
68
|
"tldts": "^5.7.112",
|
|
78
|
-
"xregexp": "^5.1.1",
|
|
79
69
|
"zod": "3.24.4",
|
|
80
70
|
"@adguard/css-tokenizer": "^1.2.0"
|
|
81
71
|
},
|
|
@@ -89,6 +79,7 @@
|
|
|
89
79
|
"@swc/helpers": "^0.5.13",
|
|
90
80
|
"@types/clone-deep": "^4.0.1",
|
|
91
81
|
"@types/fs-extra": "^11.0.4",
|
|
82
|
+
"@types/glob-to-regexp": "^0.4.4",
|
|
92
83
|
"@types/js-yaml": "^4.0.5",
|
|
93
84
|
"@types/node": "^22.14.0",
|
|
94
85
|
"@types/sprintf-js": "^1.1.4",
|
|
@@ -119,7 +110,8 @@
|
|
|
119
110
|
"tsx": "^4.19.3",
|
|
120
111
|
"type-fest": "^4.18.0",
|
|
121
112
|
"typescript": "^5.7.3",
|
|
122
|
-
"vitest": "^4.0.15"
|
|
113
|
+
"vitest": "^4.0.15",
|
|
114
|
+
"xregexp": "^5.1.2"
|
|
123
115
|
},
|
|
124
116
|
"scripts": {
|
|
125
117
|
"build": "pnpm clean && pnpm build-txt && pnpm build-compatibility-tables-wiki && pnpm build-rollup && pnpm build-types",
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* AGTree v3.4.3 (build date: Thu, 11 Dec 2025 13:43:19 GMT)
|
|
3
|
-
* (c) 2025 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
|
-
/**
|
|
10
|
-
* @file Base deserializer class.
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Base class for deserializers. Each deserializer should extend this class.
|
|
14
|
-
*/
|
|
15
|
-
class BaseDeserializer {
|
|
16
|
-
/**
|
|
17
|
-
* Deserializes the AST node from a byte buffer.
|
|
18
|
-
*
|
|
19
|
-
* @param buffer Input byte buffer to read from.
|
|
20
|
-
* @param node Destination node to write to.
|
|
21
|
-
* @param args Additional, parser-specific arguments, if needed.
|
|
22
|
-
*/
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
24
|
-
static deserialize(buffer, node, ...args) {
|
|
25
|
-
throw new NotImplementedError();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export { BaseDeserializer };
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* AGTree v3.4.3 (build date: Thu, 11 Dec 2025 13:43:19 GMT)
|
|
3
|
-
* (c) 2025 Adguard Software Ltd.
|
|
4
|
-
* Released under the MIT license
|
|
5
|
-
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
-
*/
|
|
7
|
-
import { NULL } from '../../utils/constants.js';
|
|
8
|
-
import { CommentRuleType, RuleCategory } from '../../nodes/index.js';
|
|
9
|
-
import { AdblockSyntax } from '../../utils/adblockers.js';
|
|
10
|
-
import { BaseDeserializer } from '../base-deserializer.js';
|
|
11
|
-
import { AgentCommentMarshallingMap } from '../../marshalling-utils/comment/agent-comment-common.js';
|
|
12
|
-
import { AgentDeserializer } from './agent-deserializer.js';
|
|
13
|
-
import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
|
|
14
|
-
|
|
15
|
-
/* eslint-disable no-param-reassign */
|
|
16
|
-
/**
|
|
17
|
-
* `AgentCommentDeserializer` is responsible for deserializing an Adblock agent comments.
|
|
18
|
-
* Adblock agent comment marks that the filter list is supposed to
|
|
19
|
-
* be used by the specified ad blockers.
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* - ```adblock
|
|
23
|
-
* [AdGuard]
|
|
24
|
-
* ```
|
|
25
|
-
* - ```adblock
|
|
26
|
-
* [Adblock Plus 2.0]
|
|
27
|
-
* ```
|
|
28
|
-
* - ```adblock
|
|
29
|
-
* [uBlock Origin]
|
|
30
|
-
* ```
|
|
31
|
-
* - ```adblock
|
|
32
|
-
* [uBlock Origin 1.45.3]
|
|
33
|
-
* ```
|
|
34
|
-
* - ```adblock
|
|
35
|
-
* [Adblock Plus 2.0; AdGuard]
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
class AgentCommentDeserializer extends BaseDeserializer {
|
|
39
|
-
/**
|
|
40
|
-
* Deserializes an agent list node from binary format.
|
|
41
|
-
*
|
|
42
|
-
* @param buffer ByteBuffer for reading binary data.
|
|
43
|
-
* @param node Destination node.
|
|
44
|
-
*/
|
|
45
|
-
static deserialize(buffer, node) {
|
|
46
|
-
buffer.assertUint8(BinaryTypeMarshallingMap.AgentRuleNode);
|
|
47
|
-
node.type = CommentRuleType.AgentCommentRule;
|
|
48
|
-
node.syntax = AdblockSyntax.Common;
|
|
49
|
-
node.category = RuleCategory.Comment;
|
|
50
|
-
let prop = buffer.readUint8();
|
|
51
|
-
while (prop !== NULL) {
|
|
52
|
-
switch (prop) {
|
|
53
|
-
case AgentCommentMarshallingMap.Children:
|
|
54
|
-
node.children = new Array(buffer.readUint8());
|
|
55
|
-
// read children
|
|
56
|
-
for (let i = 0; i < node.children.length; i += 1) {
|
|
57
|
-
AgentDeserializer.deserialize(buffer, node.children[i] = {});
|
|
58
|
-
}
|
|
59
|
-
break;
|
|
60
|
-
case AgentCommentMarshallingMap.Start:
|
|
61
|
-
node.start = buffer.readUint32();
|
|
62
|
-
break;
|
|
63
|
-
case AgentCommentMarshallingMap.End:
|
|
64
|
-
node.end = buffer.readUint32();
|
|
65
|
-
break;
|
|
66
|
-
default:
|
|
67
|
-
throw new Error(`Invalid property: ${prop}`);
|
|
68
|
-
}
|
|
69
|
-
prop = buffer.readUint8();
|
|
70
|
-
}
|
|
71
|
-
// Maybe children are not present in the binary data,
|
|
72
|
-
// in this case, we should initialize it as an empty array.
|
|
73
|
-
if (!node.children) {
|
|
74
|
-
node.children = [];
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
export { AgentCommentDeserializer };
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* AGTree v3.4.3 (build date: Thu, 11 Dec 2025 13:43:19 GMT)
|
|
3
|
-
* (c) 2025 Adguard Software Ltd.
|
|
4
|
-
* Released under the MIT license
|
|
5
|
-
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
-
*/
|
|
7
|
-
import { NULL } from '../../utils/constants.js';
|
|
8
|
-
import { BaseDeserializer } from '../base-deserializer.js';
|
|
9
|
-
import { AgentNodeMarshallingMap, FREQUENT_AGENTS_DESERIALIZATION_MAP } from '../../marshalling-utils/comment/agent-common.js';
|
|
10
|
-
import { getAdblockSyntax } from '../../common/agent-common.js';
|
|
11
|
-
import { ValueDeserializer } from '../misc/value-deserializer.js';
|
|
12
|
-
import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
|
|
13
|
-
|
|
14
|
-
/* eslint-disable no-param-reassign */
|
|
15
|
-
/**
|
|
16
|
-
* `AgentDeserializer` is responsible for deserializing single adblock agent elements.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* If the adblock agent rule is
|
|
20
|
-
* ```adblock
|
|
21
|
-
* [Adblock Plus 2.0; AdGuard]
|
|
22
|
-
* ```
|
|
23
|
-
* then the adblock agents are `Adblock Plus 2.0` and `AdGuard`, and this
|
|
24
|
-
* class is responsible for parsing them. The rule itself is parsed by
|
|
25
|
-
* `AgentCommentSerializer`, which uses this class to parse single agents.
|
|
26
|
-
*/
|
|
27
|
-
class AgentDeserializer extends BaseDeserializer {
|
|
28
|
-
/**
|
|
29
|
-
* Deserializes an agent node from binary format.
|
|
30
|
-
*
|
|
31
|
-
* @param buffer ByteBuffer for reading binary data.
|
|
32
|
-
* @param node Destination node.
|
|
33
|
-
* @throws If the binary data is malformed.
|
|
34
|
-
*/
|
|
35
|
-
static deserialize(buffer, node) {
|
|
36
|
-
buffer.assertUint8(BinaryTypeMarshallingMap.AgentNode);
|
|
37
|
-
node.type = 'Agent';
|
|
38
|
-
let prop = buffer.readUint8();
|
|
39
|
-
while (prop !== NULL) {
|
|
40
|
-
switch (prop) {
|
|
41
|
-
case AgentNodeMarshallingMap.Adblock:
|
|
42
|
-
// eslint-disable-next-line max-len
|
|
43
|
-
ValueDeserializer.deserialize(buffer, node.adblock = {}, FREQUENT_AGENTS_DESERIALIZATION_MAP);
|
|
44
|
-
if (node.adblock) {
|
|
45
|
-
node.syntax = getAdblockSyntax(node.adblock.value);
|
|
46
|
-
}
|
|
47
|
-
break;
|
|
48
|
-
case AgentNodeMarshallingMap.Version:
|
|
49
|
-
ValueDeserializer.deserialize(buffer, node.version = {});
|
|
50
|
-
break;
|
|
51
|
-
case AgentNodeMarshallingMap.Start:
|
|
52
|
-
node.start = buffer.readUint32();
|
|
53
|
-
break;
|
|
54
|
-
case AgentNodeMarshallingMap.End:
|
|
55
|
-
node.end = buffer.readUint32();
|
|
56
|
-
break;
|
|
57
|
-
default:
|
|
58
|
-
throw new Error(`Invalid property: ${prop}`);
|
|
59
|
-
}
|
|
60
|
-
prop = buffer.readUint8();
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export { AgentDeserializer };
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* AGTree v3.4.3 (build date: Thu, 11 Dec 2025 13:43:19 GMT)
|
|
3
|
-
* (c) 2025 Adguard Software Ltd.
|
|
4
|
-
* Released under the MIT license
|
|
5
|
-
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
-
*/
|
|
7
|
-
import { AgentCommentDeserializer } from './agent-comment-deserializer.js';
|
|
8
|
-
import { ConfigCommentDeserializer } from './config-comment-deserializer.js';
|
|
9
|
-
import { HintCommentDeserializer } from './hint-comment-deserializer.js';
|
|
10
|
-
import { MetadataCommentDeserializer } from './metadata-comment-deserializer.js';
|
|
11
|
-
import { PreProcessorCommentDeserializer } from './pre-processor-comment-deserializer.js';
|
|
12
|
-
import { SimpleCommentDeserializer } from './simple-comment-deserializer.js';
|
|
13
|
-
import { BaseDeserializer } from '../base-deserializer.js';
|
|
14
|
-
import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* `CommentRuleDeserializer` is responsible for deserializing any comment-like adblock rules.
|
|
18
|
-
*/
|
|
19
|
-
class CommentRuleDeserializer extends BaseDeserializer {
|
|
20
|
-
/**
|
|
21
|
-
* Deserializes a comment rule node from binary format.
|
|
22
|
-
*
|
|
23
|
-
* @param buffer ByteBuffer for reading binary data.
|
|
24
|
-
* @param node Destination node.
|
|
25
|
-
* @throws If the binary data is malformed.
|
|
26
|
-
*/
|
|
27
|
-
static deserialize(buffer, node) {
|
|
28
|
-
const type = buffer.peekUint8();
|
|
29
|
-
switch (type) {
|
|
30
|
-
case BinaryTypeMarshallingMap.AgentRuleNode:
|
|
31
|
-
AgentCommentDeserializer.deserialize(buffer, node);
|
|
32
|
-
return;
|
|
33
|
-
case BinaryTypeMarshallingMap.HintRuleNode:
|
|
34
|
-
HintCommentDeserializer.deserialize(buffer, node);
|
|
35
|
-
return;
|
|
36
|
-
case BinaryTypeMarshallingMap.PreProcessorCommentRuleNode:
|
|
37
|
-
PreProcessorCommentDeserializer.deserialize(buffer, node);
|
|
38
|
-
return;
|
|
39
|
-
case BinaryTypeMarshallingMap.MetadataCommentRuleNode:
|
|
40
|
-
MetadataCommentDeserializer.deserialize(buffer, node);
|
|
41
|
-
return;
|
|
42
|
-
case BinaryTypeMarshallingMap.ConfigCommentRuleNode:
|
|
43
|
-
ConfigCommentDeserializer.deserialize(buffer, node);
|
|
44
|
-
return;
|
|
45
|
-
case BinaryTypeMarshallingMap.CommentRuleNode:
|
|
46
|
-
SimpleCommentDeserializer.deserialize(buffer, node);
|
|
47
|
-
return;
|
|
48
|
-
default:
|
|
49
|
-
throw new Error(`Unknown comment rule type: ${type}`);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export { CommentRuleDeserializer };
|