@adguard/agtree 3.4.3 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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
|
@@ -1,120 +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 { AdblockSyntax } from '../../utils/adblockers.js';
|
|
8
|
-
import { DomainListSerializer } from '../misc/domain-list-serializer.js';
|
|
9
|
-
import { NULL } from '../../utils/constants.js';
|
|
10
|
-
import { CosmeticRuleType } from '../../nodes/index.js';
|
|
11
|
-
import { AbpSnippetInjectionBodySerializer } from './body/abp-snippet-injection-body-serializer.js';
|
|
12
|
-
import { UboScriptletInjectionBodySerializer } from './body/ubo-scriptlet-injection-body-serializer.js';
|
|
13
|
-
import { AdgScriptletInjectionBodySerializer } from './body/adg-scriptlet-injection-body-serializer.js';
|
|
14
|
-
import { ValueSerializer } from '../misc/value-serializer.js';
|
|
15
|
-
import { isUndefined } from '../../utils/type-guards.js';
|
|
16
|
-
import { BaseSerializer } from '../base-serializer.js';
|
|
17
|
-
import { ElementHidingBodySerializer } from './element-hiding-body-serializer.js';
|
|
18
|
-
import { CssInjectionBodySerializer } from './css-injection-body-serializer.js';
|
|
19
|
-
import { ModifierListSerializer } from '../misc/modifier-list-serializer.js';
|
|
20
|
-
import { CosmeticRuleMarshallingMap, COSMETIC_RULE_SEPARATOR_SERIALIZATION_MAP } from '../../marshalling-utils/cosmetic/cosmetic-rule-common.js';
|
|
21
|
-
import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
|
|
22
|
-
import { getSyntaxSerializationMap } from '../../marshalling-utils/syntax-serialization-map.js';
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* `CosmeticRuleSerializer` is responsible for serializing cosmetic rules into a binary format.
|
|
26
|
-
*
|
|
27
|
-
* This class takes a cosmetic rule Abstract Syntax Tree (AST) and converts it into a compact binary representation.
|
|
28
|
-
* It handles the serialization of different types of cosmetic rules, including element hiding, CSS injection,
|
|
29
|
-
* JavaScript injection, HTML filtering, and scriptlet injection rules.
|
|
30
|
-
*/
|
|
31
|
-
class CosmeticRuleSerializer extends BaseSerializer {
|
|
32
|
-
/**
|
|
33
|
-
* Serializes a cosmetic rule node to binary format.
|
|
34
|
-
*
|
|
35
|
-
* @param node Node to serialize.
|
|
36
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
37
|
-
*/
|
|
38
|
-
// TODO: add support for raws, if ever needed
|
|
39
|
-
static serialize(node, buffer) {
|
|
40
|
-
// specific properties
|
|
41
|
-
switch (node.type) {
|
|
42
|
-
case CosmeticRuleType.ElementHidingRule:
|
|
43
|
-
// rule type
|
|
44
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.ElementHidingRule);
|
|
45
|
-
// syntax
|
|
46
|
-
buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
|
|
47
|
-
// rule body
|
|
48
|
-
ElementHidingBodySerializer.serialize(node.body, buffer);
|
|
49
|
-
break;
|
|
50
|
-
case CosmeticRuleType.CssInjectionRule:
|
|
51
|
-
// rule type
|
|
52
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.CssInjectionRule);
|
|
53
|
-
// syntax
|
|
54
|
-
buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
|
|
55
|
-
// rule body
|
|
56
|
-
CssInjectionBodySerializer.serialize(node.body, buffer);
|
|
57
|
-
break;
|
|
58
|
-
case CosmeticRuleType.JsInjectionRule:
|
|
59
|
-
// rule type
|
|
60
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.JsInjectionRule);
|
|
61
|
-
// syntax
|
|
62
|
-
buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
|
|
63
|
-
// rule body
|
|
64
|
-
ValueSerializer.serialize(node.body, buffer);
|
|
65
|
-
break;
|
|
66
|
-
case CosmeticRuleType.HtmlFilteringRule:
|
|
67
|
-
// rule type
|
|
68
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.HtmlFilteringRule);
|
|
69
|
-
// syntax
|
|
70
|
-
buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
|
|
71
|
-
// rule body
|
|
72
|
-
ValueSerializer.serialize(node.body, buffer);
|
|
73
|
-
break;
|
|
74
|
-
case CosmeticRuleType.ScriptletInjectionRule:
|
|
75
|
-
// rule type
|
|
76
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.ScriptletInjectionRule);
|
|
77
|
-
// syntax
|
|
78
|
-
buffer.writeUint8(getSyntaxSerializationMap().get(node.syntax) ?? 0);
|
|
79
|
-
// rule body
|
|
80
|
-
switch (node.syntax) {
|
|
81
|
-
case AdblockSyntax.Adg:
|
|
82
|
-
AdgScriptletInjectionBodySerializer.serialize(node.body, buffer);
|
|
83
|
-
break;
|
|
84
|
-
case AdblockSyntax.Abp:
|
|
85
|
-
AbpSnippetInjectionBodySerializer.serialize(node.body, buffer);
|
|
86
|
-
break;
|
|
87
|
-
case AdblockSyntax.Ubo:
|
|
88
|
-
UboScriptletInjectionBodySerializer.serialize(node.body, buffer);
|
|
89
|
-
break;
|
|
90
|
-
default:
|
|
91
|
-
throw new Error('Scriptlet rule should have an explicit syntax');
|
|
92
|
-
}
|
|
93
|
-
break;
|
|
94
|
-
default:
|
|
95
|
-
throw new Error('Unknown cosmetic rule type');
|
|
96
|
-
}
|
|
97
|
-
// common properties
|
|
98
|
-
buffer.writeUint8(CosmeticRuleMarshallingMap.Exception);
|
|
99
|
-
buffer.writeUint8(node.exception ? 1 : 0);
|
|
100
|
-
buffer.writeUint8(CosmeticRuleMarshallingMap.Separator);
|
|
101
|
-
ValueSerializer.serialize(node.separator, buffer, COSMETIC_RULE_SEPARATOR_SERIALIZATION_MAP);
|
|
102
|
-
if (node.modifiers) {
|
|
103
|
-
buffer.writeUint8(CosmeticRuleMarshallingMap.Modifiers);
|
|
104
|
-
ModifierListSerializer.serialize(node.modifiers, buffer);
|
|
105
|
-
}
|
|
106
|
-
buffer.writeUint8(CosmeticRuleMarshallingMap.Domains);
|
|
107
|
-
DomainListSerializer.serialize(node.domains, buffer);
|
|
108
|
-
if (!isUndefined(node.start)) {
|
|
109
|
-
buffer.writeUint8(CosmeticRuleMarshallingMap.Start);
|
|
110
|
-
buffer.writeUint32(node.start);
|
|
111
|
-
}
|
|
112
|
-
if (!isUndefined(node.end)) {
|
|
113
|
-
buffer.writeUint8(CosmeticRuleMarshallingMap.End);
|
|
114
|
-
buffer.writeUint32(node.end);
|
|
115
|
-
}
|
|
116
|
-
buffer.writeUint8(NULL);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
export { CosmeticRuleSerializer };
|
|
@@ -1,51 +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 { ValueSerializer } from '../misc/value-serializer.js';
|
|
8
|
-
import { isUndefined } from '../../utils/type-guards.js';
|
|
9
|
-
import { NULL } from '../../utils/constants.js';
|
|
10
|
-
import { BaseSerializer } from '../base-serializer.js';
|
|
11
|
-
import { CssInjectionRuleMarshallingMap } from '../../marshalling-utils/cosmetic/body/css-injection-body-common.js';
|
|
12
|
-
import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Serializer for CSS injection rule body nodes.
|
|
16
|
-
*/
|
|
17
|
-
class CssInjectionBodySerializer extends BaseSerializer {
|
|
18
|
-
/**
|
|
19
|
-
* Serializes a CSS injection rule body node to binary format.
|
|
20
|
-
*
|
|
21
|
-
* @param node Node to serialize.
|
|
22
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
23
|
-
*/
|
|
24
|
-
static serialize(node, buffer) {
|
|
25
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.CssInjectionRuleBody);
|
|
26
|
-
if (node.mediaQueryList) {
|
|
27
|
-
buffer.writeUint8(CssInjectionRuleMarshallingMap.MediaQueryList);
|
|
28
|
-
ValueSerializer.serialize(node.mediaQueryList, buffer);
|
|
29
|
-
}
|
|
30
|
-
buffer.writeUint8(CssInjectionRuleMarshallingMap.SelectorList);
|
|
31
|
-
ValueSerializer.serialize(node.selectorList, buffer);
|
|
32
|
-
if (node.declarationList) {
|
|
33
|
-
buffer.writeUint8(CssInjectionRuleMarshallingMap.DeclarationList);
|
|
34
|
-
ValueSerializer.serialize(node.declarationList, buffer);
|
|
35
|
-
}
|
|
36
|
-
if (node.remove) {
|
|
37
|
-
buffer.writeUint8(CssInjectionRuleMarshallingMap.Remove);
|
|
38
|
-
}
|
|
39
|
-
if (!isUndefined(node.start)) {
|
|
40
|
-
buffer.writeUint8(CssInjectionRuleMarshallingMap.Start);
|
|
41
|
-
buffer.writeUint32(node.start);
|
|
42
|
-
}
|
|
43
|
-
if (!isUndefined(node.end)) {
|
|
44
|
-
buffer.writeUint8(CssInjectionRuleMarshallingMap.End);
|
|
45
|
-
buffer.writeUint32(node.end);
|
|
46
|
-
}
|
|
47
|
-
buffer.writeUint8(NULL);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export { CssInjectionBodySerializer };
|
|
@@ -1,40 +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 { BaseSerializer } from '../base-serializer.js';
|
|
8
|
-
import { ValueSerializer } from '../misc/value-serializer.js';
|
|
9
|
-
import { isUndefined } from '../../utils/type-guards.js';
|
|
10
|
-
import { NULL } from '../../utils/constants.js';
|
|
11
|
-
import { ElementHidingRuleMarshallingMap } from '../../marshalling-utils/cosmetic/body/element-hiding-body-common.js';
|
|
12
|
-
import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Serializer for element hiding rule body nodes.
|
|
16
|
-
*/
|
|
17
|
-
class ElementHidingBodySerializer extends BaseSerializer {
|
|
18
|
-
/**
|
|
19
|
-
* Serializes an element hiding rule body node to binary format.
|
|
20
|
-
*
|
|
21
|
-
* @param node Node to serialize.
|
|
22
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
23
|
-
*/
|
|
24
|
-
static serialize(node, buffer) {
|
|
25
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.ElementHidingRuleBody);
|
|
26
|
-
buffer.writeUint8(ElementHidingRuleMarshallingMap.SelectorList);
|
|
27
|
-
ValueSerializer.serialize(node.selectorList, buffer);
|
|
28
|
-
if (!isUndefined(node.start)) {
|
|
29
|
-
buffer.writeUint8(ElementHidingRuleMarshallingMap.Start);
|
|
30
|
-
buffer.writeUint32(node.start);
|
|
31
|
-
}
|
|
32
|
-
if (!isUndefined(node.end)) {
|
|
33
|
-
buffer.writeUint8(ElementHidingRuleMarshallingMap.End);
|
|
34
|
-
buffer.writeUint32(node.end);
|
|
35
|
-
}
|
|
36
|
-
buffer.writeUint8(NULL);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export { ElementHidingBodySerializer };
|
|
@@ -1,37 +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 { BaseSerializer } from './base-serializer.js';
|
|
8
|
-
import { isUndefined } from '../utils/type-guards.js';
|
|
9
|
-
import { NULL } from '../utils/constants.js';
|
|
10
|
-
import { EmptyRuleMarshallingMap } from '../marshalling-utils/empty-rule-common.js';
|
|
11
|
-
import { BinaryTypeMarshallingMap } from '../marshalling-utils/misc/binary-type-common.js';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Serializer for empty rule nodes.
|
|
15
|
-
*/
|
|
16
|
-
class EmptyRuleSerializer extends BaseSerializer {
|
|
17
|
-
/**
|
|
18
|
-
* Serializes an empty rule node to binary format.
|
|
19
|
-
*
|
|
20
|
-
* @param node Node to serialize.
|
|
21
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
22
|
-
*/
|
|
23
|
-
static serialize(node, buffer) {
|
|
24
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.EmptyRule);
|
|
25
|
-
if (!isUndefined(node.start)) {
|
|
26
|
-
buffer.writeUint8(EmptyRuleMarshallingMap.Start);
|
|
27
|
-
buffer.writeUint32(node.start);
|
|
28
|
-
}
|
|
29
|
-
if (!isUndefined(node.end)) {
|
|
30
|
-
buffer.writeUint8(EmptyRuleMarshallingMap.End);
|
|
31
|
-
buffer.writeUint32(node.end);
|
|
32
|
-
}
|
|
33
|
-
buffer.writeUint8(NULL);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export { EmptyRuleSerializer };
|
|
@@ -1,45 +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 { isUndefined } from '../utils/type-guards.js';
|
|
9
|
-
import { BaseSerializer } from './base-serializer.js';
|
|
10
|
-
import { RuleSerializer } from './rule-serializer.js';
|
|
11
|
-
import { FilterListNodeMarshallingMap } from '../marshalling-utils/filter-list-common.js';
|
|
12
|
-
import { BinaryTypeMarshallingMap } from '../marshalling-utils/misc/binary-type-common.js';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Serializes filter list nodes to binary format.
|
|
16
|
-
*/
|
|
17
|
-
class FilterListSerializer extends BaseSerializer {
|
|
18
|
-
/**
|
|
19
|
-
* Serializes a filter list node to binary format.
|
|
20
|
-
*
|
|
21
|
-
* @param node Node to serialize.
|
|
22
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
23
|
-
*/
|
|
24
|
-
// TODO: add support for raws, if ever needed
|
|
25
|
-
static serialize(node, buffer) {
|
|
26
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.FilterListNode);
|
|
27
|
-
buffer.writeUint8(FilterListNodeMarshallingMap.Children);
|
|
28
|
-
const count = node.children.length;
|
|
29
|
-
buffer.writeUint32(count);
|
|
30
|
-
for (let i = 0; i < count; i += 1) {
|
|
31
|
-
RuleSerializer.serialize(node.children[i], buffer);
|
|
32
|
-
}
|
|
33
|
-
if (!isUndefined(node.start)) {
|
|
34
|
-
buffer.writeUint8(FilterListNodeMarshallingMap.Start);
|
|
35
|
-
buffer.writeUint32(node.start);
|
|
36
|
-
}
|
|
37
|
-
if (!isUndefined(node.end)) {
|
|
38
|
-
buffer.writeUint8(FilterListNodeMarshallingMap.End);
|
|
39
|
-
buffer.writeUint32(node.end);
|
|
40
|
-
}
|
|
41
|
-
buffer.writeUint8(NULL);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export { FilterListSerializer };
|
package/dist/serializer/index.js
DELETED
|
@@ -1,7 +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
|
-
export { RuleSerializer } from './rule-serializer.js';
|
|
@@ -1,41 +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 { BaseSerializer } from './base-serializer.js';
|
|
8
|
-
import { isUndefined } from '../utils/type-guards.js';
|
|
9
|
-
import { NULL } from '../utils/constants.js';
|
|
10
|
-
import { InvalidRuleErrorNodeMarshallingMap } from '../marshalling-utils/invalid-rule-error-node-common.js';
|
|
11
|
-
import { BinaryTypeMarshallingMap } from '../marshalling-utils/misc/binary-type-common.js';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Serializer for invalid rule error nodes.
|
|
15
|
-
*/
|
|
16
|
-
class InvalidRuleErrorNodeSerializer extends BaseSerializer {
|
|
17
|
-
/**
|
|
18
|
-
* Serializes an invalid rule error node to binary format.
|
|
19
|
-
*
|
|
20
|
-
* @param node Node to serialize.
|
|
21
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
22
|
-
*/
|
|
23
|
-
static serialize(node, buffer) {
|
|
24
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.InvalidRuleErrorNode);
|
|
25
|
-
buffer.writeUint8(InvalidRuleErrorNodeMarshallingMap.Name);
|
|
26
|
-
buffer.writeString(node.name);
|
|
27
|
-
buffer.writeUint8(InvalidRuleErrorNodeMarshallingMap.Message);
|
|
28
|
-
buffer.writeString(node.message);
|
|
29
|
-
if (!isUndefined(node.start)) {
|
|
30
|
-
buffer.writeUint8(InvalidRuleErrorNodeMarshallingMap.Start);
|
|
31
|
-
buffer.writeUint32(node.start);
|
|
32
|
-
}
|
|
33
|
-
if (!isUndefined(node.end)) {
|
|
34
|
-
buffer.writeUint8(InvalidRuleErrorNodeMarshallingMap.End);
|
|
35
|
-
buffer.writeUint32(node.end);
|
|
36
|
-
}
|
|
37
|
-
buffer.writeUint8(NULL);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export { InvalidRuleErrorNodeSerializer };
|
|
@@ -1,40 +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 { BaseSerializer } from './base-serializer.js';
|
|
8
|
-
import { isUndefined } from '../utils/type-guards.js';
|
|
9
|
-
import { NULL } from '../utils/constants.js';
|
|
10
|
-
import { InvalidRuleErrorNodeSerializer } from './invalid-rule-error-node-serializer.js';
|
|
11
|
-
import { InvalidRuleMarshallingMap } from '../marshalling-utils/invalid-rule-common.js';
|
|
12
|
-
import { BinaryTypeMarshallingMap } from '../marshalling-utils/misc/binary-type-common.js';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Serializer for invalid rule nodes.
|
|
16
|
-
*/
|
|
17
|
-
class InvalidRuleSerializer extends BaseSerializer {
|
|
18
|
-
/**
|
|
19
|
-
* Serializes an invalid rule node to binary format.
|
|
20
|
-
*
|
|
21
|
-
* @param node Node to serialize.
|
|
22
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
23
|
-
*/
|
|
24
|
-
static serialize(node, buffer) {
|
|
25
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.InvalidRule);
|
|
26
|
-
buffer.writeUint8(InvalidRuleMarshallingMap.Error);
|
|
27
|
-
InvalidRuleErrorNodeSerializer.serialize(node.error, buffer);
|
|
28
|
-
if (!isUndefined(node.start)) {
|
|
29
|
-
buffer.writeUint8(InvalidRuleMarshallingMap.Start);
|
|
30
|
-
buffer.writeUint32(node.start);
|
|
31
|
-
}
|
|
32
|
-
if (!isUndefined(node.end)) {
|
|
33
|
-
buffer.writeUint8(InvalidRuleMarshallingMap.End);
|
|
34
|
-
buffer.writeUint32(node.end);
|
|
35
|
-
}
|
|
36
|
-
buffer.writeUint8(NULL);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export { InvalidRuleSerializer };
|
|
@@ -1,64 +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, COMMA, PIPE } from '../../utils/constants.js';
|
|
8
|
-
import { isUndefined } from '../../utils/type-guards.js';
|
|
9
|
-
import { BaseSerializer } from '../base-serializer.js';
|
|
10
|
-
import { ListItemsSerializer } from './list-items-serializer.js';
|
|
11
|
-
import { DomainListMarshallingMap } from '../../marshalling-utils/misc/domain-list-common.js';
|
|
12
|
-
import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Value map for binary serialization. This helps to reduce the size of the serialized data,
|
|
16
|
-
* as it allows us to use a single byte to represent frequently used values.
|
|
17
|
-
*
|
|
18
|
-
* ! IMPORTANT: If you change values here, please update the {@link BINARY_SCHEMA_VERSION}!
|
|
19
|
-
*
|
|
20
|
-
* @note Only 256 values can be represented this way.
|
|
21
|
-
*/
|
|
22
|
-
const SEPARATOR_SERIALIZATION_MAP = new Map([
|
|
23
|
-
[COMMA, 0],
|
|
24
|
-
[PIPE, 1],
|
|
25
|
-
]);
|
|
26
|
-
/**
|
|
27
|
-
* `DomainListSerializer` is responsible for serializing a domain list.
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* - If the rule is `example.com,~example.net##.ads`, the domain list is `example.com,~example.net`.
|
|
31
|
-
* - If the rule is `ads.js^$script,domains=example.com|~example.org`, the domain list is `example.com|~example.org`.
|
|
32
|
-
* This serializer is responsible for serializing these domain lists.
|
|
33
|
-
* @see {@link https://help.eyeo.com/adblockplus/how-to-write-filters#elemhide_domains}
|
|
34
|
-
*/
|
|
35
|
-
class DomainListSerializer extends BaseSerializer {
|
|
36
|
-
/**
|
|
37
|
-
* Serializes a domain list node to binary format.
|
|
38
|
-
*
|
|
39
|
-
* @param node Node to serialize.
|
|
40
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
41
|
-
*/
|
|
42
|
-
static serialize(node, buffer) {
|
|
43
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.DomainListNode);
|
|
44
|
-
const separator = SEPARATOR_SERIALIZATION_MAP.get(node.separator);
|
|
45
|
-
if (isUndefined(separator)) {
|
|
46
|
-
throw new Error(`Invalid separator: ${node.separator}`);
|
|
47
|
-
}
|
|
48
|
-
buffer.writeUint8(DomainListMarshallingMap.Separator);
|
|
49
|
-
buffer.writeUint8(separator);
|
|
50
|
-
buffer.writeUint8(DomainListMarshallingMap.Children);
|
|
51
|
-
ListItemsSerializer.serialize(node.children, buffer);
|
|
52
|
-
if (!isUndefined(node.start)) {
|
|
53
|
-
buffer.writeUint8(DomainListMarshallingMap.Start);
|
|
54
|
-
buffer.writeUint32(node.start);
|
|
55
|
-
}
|
|
56
|
-
if (!isUndefined(node.end)) {
|
|
57
|
-
buffer.writeUint8(DomainListMarshallingMap.End);
|
|
58
|
-
buffer.writeUint32(node.end);
|
|
59
|
-
}
|
|
60
|
-
buffer.writeUint8(NULL);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
export { DomainListSerializer };
|
|
@@ -1,58 +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 { BaseSerializer } from '../base-serializer.js';
|
|
8
|
-
import { ListItemNodeType } from '../../nodes/index.js';
|
|
9
|
-
import { isUndefined } from '../../utils/type-guards.js';
|
|
10
|
-
import { NULL } from '../../utils/constants.js';
|
|
11
|
-
import { ListItemMarshallingMap } from '../../marshalling-utils/misc/list-item-common.js';
|
|
12
|
-
import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* Serializer for list item nodes.
|
|
16
|
-
*/
|
|
17
|
-
class ListItemSerializer extends BaseSerializer {
|
|
18
|
-
/**
|
|
19
|
-
* Serializes a list item to binary format.
|
|
20
|
-
*
|
|
21
|
-
* @param item List item to serialize.
|
|
22
|
-
* @param buffer Output byte buffer.
|
|
23
|
-
* @template T Type of the list item.
|
|
24
|
-
*/
|
|
25
|
-
static serialize(item, buffer) {
|
|
26
|
-
switch (item.type) {
|
|
27
|
-
case ListItemNodeType.App:
|
|
28
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.AppNode);
|
|
29
|
-
break;
|
|
30
|
-
case ListItemNodeType.Domain:
|
|
31
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.DomainNode);
|
|
32
|
-
break;
|
|
33
|
-
case ListItemNodeType.Method:
|
|
34
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.MethodNode);
|
|
35
|
-
break;
|
|
36
|
-
case ListItemNodeType.StealthOption:
|
|
37
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.StealthOptionNode);
|
|
38
|
-
break;
|
|
39
|
-
default:
|
|
40
|
-
throw new Error(`Invalid list item type: ${item.type}`);
|
|
41
|
-
}
|
|
42
|
-
buffer.writeUint8(ListItemMarshallingMap.Exception);
|
|
43
|
-
buffer.writeUint8(item.exception ? 1 : 0);
|
|
44
|
-
buffer.writeUint8(ListItemMarshallingMap.Value);
|
|
45
|
-
buffer.writeString(item.value);
|
|
46
|
-
if (!isUndefined(item.start)) {
|
|
47
|
-
buffer.writeUint8(ListItemMarshallingMap.Start);
|
|
48
|
-
buffer.writeUint32(item.start);
|
|
49
|
-
}
|
|
50
|
-
if (!isUndefined(item.end)) {
|
|
51
|
-
buffer.writeUint8(ListItemMarshallingMap.End);
|
|
52
|
-
buffer.writeUint32(item.end);
|
|
53
|
-
}
|
|
54
|
-
buffer.writeUint8(NULL);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export { ListItemSerializer };
|
|
@@ -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 { ListItemSerializer } from './list-item-serializer.js';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Serializer for list items.
|
|
11
|
-
*/
|
|
12
|
-
class ListItemsSerializer {
|
|
13
|
-
/**
|
|
14
|
-
* Serializes a list of items to binary format.
|
|
15
|
-
*
|
|
16
|
-
* @param items List of items to serialize.
|
|
17
|
-
* @param buffer Output byte buffer.
|
|
18
|
-
* @template T Type of the list items.
|
|
19
|
-
*/
|
|
20
|
-
static serialize(items, buffer) {
|
|
21
|
-
const { length } = items;
|
|
22
|
-
buffer.writeUint16(length);
|
|
23
|
-
for (let i = 0; i < length; i += 1) {
|
|
24
|
-
ListItemSerializer.serialize(items[i], buffer);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export { ListItemsSerializer };
|
|
@@ -1,136 +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 { isUndefined } from '../../utils/type-guards.js';
|
|
9
|
-
import { BaseSerializer } from '../base-serializer.js';
|
|
10
|
-
import { KNOWN_VARIABLES_SERIALIZATION_MAP, VariableNodeBinaryPropMarshallingMap, ParenthesisNodeBinaryPropMarshallingMap, OperatorNodeBinaryPropMarshallingMap, LOGICAL_EXPRESSION_OPERATOR_SERIALISATION_MAP } from '../../marshalling-utils/misc/logical-expression-common.js';
|
|
11
|
-
import { BinaryTypeMarshallingMap } from '../../marshalling-utils/misc/binary-type-common.js';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Possible node types in the logical expression.
|
|
15
|
-
*/
|
|
16
|
-
const NodeType = {
|
|
17
|
-
Variable: 'Variable',
|
|
18
|
-
Operator: 'Operator',
|
|
19
|
-
Parenthesis: 'Parenthesis',
|
|
20
|
-
};
|
|
21
|
-
/**
|
|
22
|
-
* `LogicalExpressionSerializer` is responsible for serializing logical expressions.
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* From the following rule:
|
|
26
|
-
* ```adblock
|
|
27
|
-
* !#if (adguard_ext_android_cb || adguard_ext_safari)
|
|
28
|
-
* ```
|
|
29
|
-
* this parser will parse the expression `(adguard_ext_android_cb || adguard_ext_safari)`.
|
|
30
|
-
*/
|
|
31
|
-
// TODO: Refactor this class
|
|
32
|
-
class LogicalExpressionSerializer extends BaseSerializer {
|
|
33
|
-
/**
|
|
34
|
-
* Serializes a variable node to binary format.
|
|
35
|
-
*
|
|
36
|
-
* @param node Node to serialize.
|
|
37
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
38
|
-
*/
|
|
39
|
-
// TODO: create a common serialize / deserialize interface for such nodes (Variable, Value, Parameter, etc.)
|
|
40
|
-
static serializeVariableNode(node, buffer) {
|
|
41
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.ExpressionVariableNode);
|
|
42
|
-
const frequentName = KNOWN_VARIABLES_SERIALIZATION_MAP.get(node.name);
|
|
43
|
-
if (!isUndefined(frequentName)) {
|
|
44
|
-
buffer.writeUint8(VariableNodeBinaryPropMarshallingMap.FrequentName);
|
|
45
|
-
buffer.writeUint8(frequentName);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
buffer.writeUint8(VariableNodeBinaryPropMarshallingMap.Name);
|
|
49
|
-
buffer.writeString(node.name);
|
|
50
|
-
}
|
|
51
|
-
if (!isUndefined(node.start)) {
|
|
52
|
-
buffer.writeUint8(VariableNodeBinaryPropMarshallingMap.Start);
|
|
53
|
-
buffer.writeUint32(node.start);
|
|
54
|
-
}
|
|
55
|
-
if (!isUndefined(node.end)) {
|
|
56
|
-
buffer.writeUint8(VariableNodeBinaryPropMarshallingMap.End);
|
|
57
|
-
buffer.writeUint32(node.end);
|
|
58
|
-
}
|
|
59
|
-
buffer.writeUint8(NULL);
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Serializes a parenthesis node to binary format.
|
|
63
|
-
*
|
|
64
|
-
* @param node Node to serialize.
|
|
65
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
66
|
-
*/
|
|
67
|
-
static serializeParenthesisNode(node, buffer) {
|
|
68
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.ExpressionParenthesisNode);
|
|
69
|
-
buffer.writeUint8(ParenthesisNodeBinaryPropMarshallingMap.Expression);
|
|
70
|
-
LogicalExpressionSerializer.serialize(node.expression, buffer);
|
|
71
|
-
if (!isUndefined(node.start)) {
|
|
72
|
-
buffer.writeUint8(ParenthesisNodeBinaryPropMarshallingMap.Start);
|
|
73
|
-
buffer.writeUint32(node.start);
|
|
74
|
-
}
|
|
75
|
-
if (!isUndefined(node.end)) {
|
|
76
|
-
buffer.writeUint8(ParenthesisNodeBinaryPropMarshallingMap.End);
|
|
77
|
-
buffer.writeUint32(node.end);
|
|
78
|
-
}
|
|
79
|
-
buffer.writeUint8(NULL);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Serializes an operator node to binary format.
|
|
83
|
-
*
|
|
84
|
-
* @param node Node to serialize.
|
|
85
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
86
|
-
*/
|
|
87
|
-
static serializeOperatorNode(node, buffer) {
|
|
88
|
-
buffer.writeUint8(BinaryTypeMarshallingMap.ExpressionOperatorNode);
|
|
89
|
-
buffer.writeUint8(OperatorNodeBinaryPropMarshallingMap.Operator);
|
|
90
|
-
const operatorBinary = LOGICAL_EXPRESSION_OPERATOR_SERIALISATION_MAP.get(node.operator);
|
|
91
|
-
if (isUndefined(operatorBinary)) {
|
|
92
|
-
throw new Error(`Unknown operator: ${node.operator}`);
|
|
93
|
-
}
|
|
94
|
-
buffer.writeUint8(operatorBinary);
|
|
95
|
-
buffer.writeUint8(OperatorNodeBinaryPropMarshallingMap.Left);
|
|
96
|
-
LogicalExpressionSerializer.serialize(node.left, buffer);
|
|
97
|
-
if (node.right) {
|
|
98
|
-
buffer.writeUint8(OperatorNodeBinaryPropMarshallingMap.Right);
|
|
99
|
-
LogicalExpressionSerializer.serialize(node.right, buffer);
|
|
100
|
-
}
|
|
101
|
-
if (!isUndefined(node.start)) {
|
|
102
|
-
buffer.writeUint8(OperatorNodeBinaryPropMarshallingMap.Start);
|
|
103
|
-
buffer.writeUint32(node.start);
|
|
104
|
-
}
|
|
105
|
-
if (!isUndefined(node.end)) {
|
|
106
|
-
buffer.writeUint8(OperatorNodeBinaryPropMarshallingMap.End);
|
|
107
|
-
buffer.writeUint32(node.end);
|
|
108
|
-
}
|
|
109
|
-
buffer.writeUint8(NULL);
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Serializes a logical expression node to binary format.
|
|
113
|
-
*
|
|
114
|
-
* @param node Node to serialize.
|
|
115
|
-
* @param buffer ByteBuffer for writing binary data.
|
|
116
|
-
*/
|
|
117
|
-
static serialize(node, buffer) {
|
|
118
|
-
switch (node.type) {
|
|
119
|
-
case NodeType.Variable:
|
|
120
|
-
LogicalExpressionSerializer.serializeVariableNode(node, buffer);
|
|
121
|
-
break;
|
|
122
|
-
case NodeType.Operator:
|
|
123
|
-
LogicalExpressionSerializer.serializeOperatorNode(node, buffer);
|
|
124
|
-
break;
|
|
125
|
-
case NodeType.Parenthesis:
|
|
126
|
-
LogicalExpressionSerializer.serializeParenthesisNode(node, buffer);
|
|
127
|
-
break;
|
|
128
|
-
default:
|
|
129
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
130
|
-
throw new Error(`Unexpected node type: ${node.type}`);
|
|
131
|
-
}
|
|
132
|
-
buffer.writeUint8(NULL);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export { LogicalExpressionSerializer, NodeType };
|