@adguard/agtree 2.1.2 → 3.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ast-utils/clone.js +65 -0
- package/dist/cjs/ast-utils/modifiers.js +56 -0
- package/dist/cjs/ast-utils/network-rules.js +43 -0
- package/dist/cjs/ast-utils/scriptlets.js +93 -0
- package/dist/cjs/common/abp-snippet-injection-body-common.js +18 -0
- package/dist/cjs/common/agent-common.js +58 -0
- package/dist/cjs/common/ubo-selector-common.js +18 -0
- package/dist/cjs/compatibility-tables/base.js +264 -0
- package/dist/cjs/compatibility-tables/compatibility-table-data.js +15 -0
- package/dist/cjs/compatibility-tables/modifiers.js +57 -0
- package/dist/cjs/compatibility-tables/platforms.js +58 -0
- package/dist/cjs/compatibility-tables/redirects.js +102 -0
- package/dist/cjs/compatibility-tables/schemas/base.js +116 -0
- package/dist/cjs/compatibility-tables/schemas/modifier.js +107 -0
- package/dist/cjs/compatibility-tables/schemas/platform.js +71 -0
- package/dist/cjs/compatibility-tables/schemas/redirect.js +31 -0
- package/dist/cjs/compatibility-tables/schemas/resource-type.js +39 -0
- package/dist/cjs/compatibility-tables/schemas/scriptlet.js +81 -0
- package/dist/cjs/compatibility-tables/scriptlets.js +30 -0
- package/dist/cjs/compatibility-tables/utils/platform-helpers.js +112 -0
- package/dist/cjs/compatibility-tables/utils/resource-type-helpers.js +64 -0
- package/dist/cjs/compatibility-tables/utils/zod-camelcase.js +27 -0
- package/dist/cjs/converter/base-interfaces/base-converter.js +61 -0
- package/dist/cjs/converter/base-interfaces/conversion-result.js +41 -0
- package/dist/cjs/converter/base-interfaces/rule-converter-base.js +62 -0
- package/dist/cjs/converter/comment/index.js +56 -0
- package/dist/cjs/converter/cosmetic/css.js +71 -0
- package/dist/cjs/converter/cosmetic/element-hiding.js +64 -0
- package/dist/cjs/converter/cosmetic/header-removal.js +126 -0
- package/dist/cjs/converter/cosmetic/html.js +384 -0
- package/dist/cjs/converter/cosmetic/index.js +120 -0
- package/dist/cjs/converter/cosmetic/rule-modifiers/adg.js +81 -0
- package/dist/cjs/converter/cosmetic/scriptlet.js +356 -0
- package/dist/cjs/converter/css/index.js +193 -0
- package/dist/cjs/converter/data/css.js +133 -0
- package/dist/cjs/converter/filter-list.js +90 -0
- package/dist/cjs/converter/index.js +15 -0
- package/dist/cjs/converter/misc/network-rule-modifier.js +313 -0
- package/dist/cjs/converter/network/index.js +101 -0
- package/dist/cjs/converter/raw-filter-list.js +58 -0
- package/dist/cjs/converter/rule.js +83 -0
- package/dist/cjs/deserializer/base-deserializer.js +31 -0
- package/dist/cjs/deserializer/comment/agent-comment-deserializer.js +76 -0
- package/dist/cjs/deserializer/comment/agent-deserializer.js +67 -0
- package/dist/cjs/deserializer/comment/comment-rule-deserializer.js +109 -0
- package/dist/cjs/deserializer/comment/config-comment-deserializer.js +113 -0
- package/dist/cjs/deserializer/comment/hint-comment-deserializer.js +69 -0
- package/dist/cjs/deserializer/comment/hint-deserializer.js +88 -0
- package/dist/cjs/deserializer/comment/metadata-comment-deserializer.js +71 -0
- package/dist/cjs/deserializer/comment/pre-processor-comment-deserializer.js +114 -0
- package/dist/cjs/deserializer/comment/simple-comment-deserializer.js +67 -0
- package/dist/cjs/deserializer/cosmetic/cosmetic-rule-deserializer.js +127 -0
- package/dist/cjs/deserializer/cosmetic/css-injection-body-deserializer.js +55 -0
- package/dist/cjs/deserializer/cosmetic/element-hiding-body-deserializer.js +46 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +37 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +37 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +52 -0
- package/dist/cjs/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +38 -0
- package/dist/cjs/deserializer/empty-rule-deserializer.js +46 -0
- package/dist/cjs/deserializer/filterlist-deserializer.js +83 -0
- package/dist/cjs/deserializer/index.js +15 -0
- package/dist/cjs/deserializer/invalid-rule-deserializer.js +48 -0
- package/dist/cjs/deserializer/invalid-rule-error-node-deserializer.js +48 -0
- package/dist/cjs/deserializer/misc/domain-list-deserializer.js +66 -0
- package/dist/cjs/deserializer/misc/list-item-deserializer.js +65 -0
- package/dist/cjs/deserializer/misc/list-items-deserializer.js +28 -0
- package/dist/cjs/deserializer/misc/logical-expression-deserializer.js +199 -0
- package/dist/cjs/deserializer/misc/modifier-deserializer.js +89 -0
- package/dist/cjs/deserializer/misc/modifier-list-deserializer.js +58 -0
- package/dist/cjs/deserializer/misc/parameter-list-deserializer.js +62 -0
- package/dist/cjs/deserializer/misc/value-deserializer.js +52 -0
- package/dist/cjs/deserializer/network/host-rule-deserializer.js +81 -0
- package/dist/cjs/deserializer/network/hostname-list-deserializer.js +50 -0
- package/dist/cjs/deserializer/network/network-rule-deserializer.js +67 -0
- package/dist/cjs/deserializer/rule-deserializer.js +67 -0
- package/dist/cjs/deserializer/syntax-deserialization-map.js +23 -0
- package/dist/cjs/errors/adblock-syntax-error.js +41 -0
- package/dist/cjs/errors/binary-schema-mismatch-error.js +39 -0
- package/dist/cjs/errors/not-implemented-error.js +33 -0
- package/dist/cjs/errors/rule-conversion-error.js +28 -0
- package/dist/cjs/generator/base-generator.js +29 -0
- package/dist/cjs/generator/comment/agent-comment-generator.js +30 -0
- package/dist/cjs/generator/comment/agent-generator.js +34 -0
- package/dist/cjs/generator/comment/comment-rule-generator.js +102 -0
- package/dist/cjs/generator/comment/config-comment-generator.js +44 -0
- package/dist/cjs/generator/comment/hint-comment-generator.js +27 -0
- package/dist/cjs/generator/comment/hint-generator.js +32 -0
- package/dist/cjs/generator/comment/metadata-comment-generator.js +32 -0
- package/dist/cjs/generator/comment/pre-processor-comment-generator.js +47 -0
- package/dist/cjs/generator/comment/simple-comment-generator.js +28 -0
- package/dist/cjs/generator/cosmetic/body/abp-snippet-injection-body-generator.js +36 -0
- package/dist/cjs/generator/cosmetic/body/adg-scriptlet-injection-body-generator.js +41 -0
- package/dist/cjs/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js +43 -0
- package/dist/cjs/generator/cosmetic/cosmetic-rule-body-generator.js +92 -0
- package/dist/cjs/generator/cosmetic/cosmetic-rule-generator.js +66 -0
- package/dist/cjs/generator/cosmetic/cosmetic-rule-pattern-generator.js +41 -0
- package/dist/cjs/generator/css/adg-css-injection-generator.js +41 -0
- package/dist/cjs/generator/filterlist-generator.js +57 -0
- package/dist/cjs/generator/index.js +17 -0
- package/dist/cjs/generator/misc/domain-list-generator.js +25 -0
- package/dist/cjs/generator/misc/list-items-generator.js +38 -0
- package/dist/cjs/generator/misc/logical-expression-generator.js +47 -0
- package/dist/cjs/generator/misc/modifier-generator.js +33 -0
- package/dist/cjs/generator/misc/modifier-list-generator.js +28 -0
- package/dist/cjs/generator/misc/parameter-list-generator.js +41 -0
- package/dist/cjs/generator/misc/value-generator.js +23 -0
- package/dist/cjs/generator/network/host-rule-generator.js +38 -0
- package/dist/cjs/generator/network/network-rule-generator.js +37 -0
- package/dist/cjs/generator/rule-generator.js +64 -0
- package/dist/cjs/index.js +201 -0
- package/dist/cjs/marshalling-utils/comment/agent-comment-common.js +22 -0
- package/dist/cjs/marshalling-utils/comment/agent-common.js +43 -0
- package/dist/cjs/marshalling-utils/comment/config-comment-common.js +58 -0
- package/dist/cjs/marshalling-utils/comment/hint-comment-common.js +23 -0
- package/dist/cjs/marshalling-utils/comment/hint-common.js +60 -0
- package/dist/cjs/marshalling-utils/comment/metadata-comment-common.js +44 -0
- package/dist/cjs/marshalling-utils/comment/pre-processor-comment-common.js +63 -0
- package/dist/cjs/marshalling-utils/comment/simple-comment-common.js +23 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +64 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +68 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/css-injection-body-common.js +25 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/element-hiding-body-common.js +22 -0
- package/dist/cjs/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +116 -0
- package/dist/cjs/marshalling-utils/cosmetic/cosmetic-rule-common.js +51 -0
- package/dist/cjs/marshalling-utils/empty-rule-common.js +21 -0
- package/dist/cjs/marshalling-utils/filter-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/invalid-rule-common.js +22 -0
- package/dist/cjs/marshalling-utils/invalid-rule-error-node-common.js +23 -0
- package/dist/cjs/marshalling-utils/misc/binary-type-common.js +67 -0
- package/dist/cjs/marshalling-utils/misc/domain-list-common.js +39 -0
- package/dist/cjs/marshalling-utils/misc/host-rule-common.js +26 -0
- package/dist/cjs/marshalling-utils/misc/hostname-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/misc/list-item-common.js +23 -0
- package/dist/cjs/marshalling-utils/misc/logical-expression-common.js +89 -0
- package/dist/cjs/marshalling-utils/misc/modifier-common.js +236 -0
- package/dist/cjs/marshalling-utils/misc/modifier-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/misc/parameter-list-common.js +22 -0
- package/dist/cjs/marshalling-utils/misc/value-common.js +23 -0
- package/dist/cjs/marshalling-utils/network/network-rule-common.js +26 -0
- package/dist/cjs/marshalling-utils/syntax-serialization-map.js +32 -0
- package/dist/cjs/nodes/index.js +180 -0
- package/dist/cjs/package.json.js +11 -0
- package/dist/cjs/parser/base-parser.js +32 -0
- package/dist/cjs/parser/comment/agent-comment-parser.js +121 -0
- package/dist/cjs/parser/comment/agent-parser.js +111 -0
- package/dist/cjs/parser/comment/comment-parser.js +110 -0
- package/dist/cjs/parser/comment/config-comment-parser.js +139 -0
- package/dist/cjs/parser/comment/hint-comment-parser.js +119 -0
- package/dist/cjs/parser/comment/hint-parser.js +131 -0
- package/dist/cjs/parser/comment/metadata-comment-parser.js +131 -0
- package/dist/cjs/parser/comment/preprocessor-parser.js +201 -0
- package/dist/cjs/parser/comment/simple-comment-parser.js +108 -0
- package/dist/cjs/parser/cosmetic/body/abp-snippet-injection-body-parser.js +81 -0
- package/dist/cjs/parser/cosmetic/body/adg-scriptlet-injection-body-parser.js +151 -0
- package/dist/cjs/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js +112 -0
- package/dist/cjs/parser/cosmetic/cosmetic-rule-parser.js +456 -0
- package/dist/cjs/parser/css/adg-css-injection-parser.js +213 -0
- package/dist/cjs/parser/css/balancing.js +97 -0
- package/dist/cjs/parser/css/constants.js +21 -0
- package/dist/cjs/parser/css/css-token-stream.js +345 -0
- package/dist/cjs/parser/css/ubo-selector-parser.js +373 -0
- package/dist/cjs/parser/filterlist-parser.js +104 -0
- package/dist/cjs/parser/index.js +21 -0
- package/dist/cjs/parser/misc/app-list-parser.js +47 -0
- package/dist/cjs/parser/misc/domain-list-parser.js +54 -0
- package/dist/cjs/parser/misc/list-items-parser.js +116 -0
- package/dist/cjs/parser/misc/logical-expression-parser.js +283 -0
- package/dist/cjs/parser/misc/method-list-parser.js +48 -0
- package/dist/cjs/parser/misc/modifier-list.js +72 -0
- package/dist/cjs/parser/misc/modifier-parser.js +91 -0
- package/dist/cjs/parser/misc/parameter-list-parser.js +74 -0
- package/dist/cjs/parser/misc/stealth-option-list-parser.js +48 -0
- package/dist/cjs/parser/misc/ubo-parameter-list-parser.js +148 -0
- package/dist/cjs/parser/misc/value-parser.js +39 -0
- package/dist/cjs/parser/network/host-rule-parser.js +151 -0
- package/dist/cjs/parser/network/network-rule-parser.js +113 -0
- package/dist/cjs/parser/options.js +25 -0
- package/dist/cjs/parser/rule-parser.js +194 -0
- package/dist/cjs/serializer/base-serializer.js +31 -0
- package/dist/cjs/serializer/comment/agent-comment-serializer.js +73 -0
- package/dist/cjs/serializer/comment/agent-serializer.js +70 -0
- package/dist/cjs/serializer/comment/comment-rule-serializer.js +107 -0
- package/dist/cjs/serializer/comment/config-comment-serializer.js +84 -0
- package/dist/cjs/serializer/comment/hint-comment-serializer.js +64 -0
- package/dist/cjs/serializer/comment/hint-serializer.js +56 -0
- package/dist/cjs/serializer/comment/metadata-comment-serializer.js +75 -0
- package/dist/cjs/serializer/comment/pre-processor-comment-serializer.js +73 -0
- package/dist/cjs/serializer/comment/simple-comment-serializer.js +54 -0
- package/dist/cjs/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +38 -0
- package/dist/cjs/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +38 -0
- package/dist/cjs/serializer/cosmetic/body/scriptlet-body-serializer.js +49 -0
- package/dist/cjs/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +38 -0
- package/dist/cjs/serializer/cosmetic/cosmetic-rule-serializer.js +131 -0
- package/dist/cjs/serializer/cosmetic/css-injection-body-serializer.js +50 -0
- package/dist/cjs/serializer/cosmetic/element-hiding-body-serializer.js +39 -0
- package/dist/cjs/serializer/empty-rule-serializer.js +36 -0
- package/dist/cjs/serializer/filterlist-serializer.js +48 -0
- package/dist/cjs/serializer/index.js +13 -0
- package/dist/cjs/serializer/invalid-rule-error-node-serializer.js +40 -0
- package/dist/cjs/serializer/invalid-rule-serializer.js +39 -0
- package/dist/cjs/serializer/misc/domain-list-serializer.js +66 -0
- package/dist/cjs/serializer/misc/list-item-serializer.js +57 -0
- package/dist/cjs/serializer/misc/list-items-serializer.js +28 -0
- package/dist/cjs/serializer/misc/logical-expression-serializer.js +138 -0
- package/dist/cjs/serializer/misc/modifier-list-serializer.js +57 -0
- package/dist/cjs/serializer/misc/modifier-serializer.js +51 -0
- package/dist/cjs/serializer/misc/parameter-list-serializer.js +51 -0
- package/dist/cjs/serializer/misc/value-serializer.js +52 -0
- package/dist/cjs/serializer/network/host-rule-serializer.js +72 -0
- package/dist/cjs/serializer/network/hostname-list-serializer.js +49 -0
- package/dist/cjs/serializer/network/network-rule-serializer.js +56 -0
- package/dist/cjs/serializer/rule-serializer.js +63 -0
- package/dist/cjs/utils/adblockers.js +57 -0
- package/dist/cjs/utils/binary-schema-version.js +19 -0
- package/dist/cjs/utils/byte-buffer.js +93 -0
- package/dist/cjs/utils/categorizer.js +46 -0
- package/dist/cjs/utils/clone.js +30 -0
- package/dist/cjs/utils/constants.js +380 -0
- package/dist/cjs/utils/cosmetic-rule-separator.js +129 -0
- package/dist/cjs/utils/deep-freeze.js +34 -0
- package/dist/cjs/utils/domain.js +60 -0
- package/dist/cjs/utils/error.js +51 -0
- package/dist/cjs/utils/index.js +69 -0
- package/dist/cjs/utils/input-byte-buffer.js +259 -0
- package/dist/cjs/utils/is-chromium.js +22 -0
- package/dist/cjs/utils/logical-expression.js +94 -0
- package/dist/cjs/utils/multi-value-map.js +35 -0
- package/dist/cjs/utils/output-byte-buffer.js +225 -0
- package/dist/cjs/utils/position-provider.js +75 -0
- package/dist/cjs/utils/quotes.js +218 -0
- package/dist/cjs/utils/regexp.js +190 -0
- package/dist/cjs/utils/string.js +560 -0
- package/dist/cjs/utils/text-decoder-polyfill.js +109 -0
- package/dist/cjs/utils/text-encoder-polyfill.js +80 -0
- package/dist/cjs/utils/type-guards.js +52 -0
- package/dist/cjs/validator/constants.js +222 -0
- package/dist/cjs/validator/helpers.js +49 -0
- package/dist/cjs/validator/index.js +176 -0
- package/dist/cjs/validator/value.js +565 -0
- package/dist/cjs/version.js +20 -0
- package/dist/esm/ast-utils/clone.mjs +61 -0
- package/dist/esm/ast-utils/modifiers.mjs +53 -0
- package/dist/esm/ast-utils/network-rules.mjs +41 -0
- package/dist/esm/ast-utils/scriptlets.mjs +87 -0
- package/dist/esm/common/abp-snippet-injection-body-common.mjs +16 -0
- package/dist/esm/common/agent-common.mjs +56 -0
- package/dist/esm/common/ubo-selector-common.mjs +18 -0
- package/dist/esm/compatibility-tables/base.mjs +262 -0
- package/dist/esm/compatibility-tables/compatibility-table-data.mjs +11 -0
- package/dist/esm/compatibility-tables/modifiers.mjs +55 -0
- package/dist/esm/compatibility-tables/platforms.mjs +58 -0
- package/dist/esm/compatibility-tables/redirects.mjs +100 -0
- package/dist/esm/compatibility-tables/schemas/base.mjs +111 -0
- package/dist/esm/compatibility-tables/schemas/modifier.mjs +105 -0
- package/dist/esm/compatibility-tables/schemas/platform.mjs +69 -0
- package/dist/esm/compatibility-tables/schemas/redirect.mjs +29 -0
- package/dist/esm/compatibility-tables/schemas/resource-type.mjs +37 -0
- package/dist/esm/compatibility-tables/schemas/scriptlet.mjs +79 -0
- package/dist/esm/compatibility-tables/scriptlets.mjs +28 -0
- package/dist/esm/compatibility-tables/utils/platform-helpers.mjs +105 -0
- package/dist/esm/compatibility-tables/utils/resource-type-helpers.mjs +61 -0
- package/dist/esm/compatibility-tables/utils/zod-camelcase.mjs +25 -0
- package/dist/esm/converter/base-interfaces/base-converter.mjs +59 -0
- package/dist/esm/converter/base-interfaces/conversion-result.mjs +38 -0
- package/dist/esm/converter/base-interfaces/rule-converter-base.mjs +60 -0
- package/dist/esm/converter/comment/index.mjs +54 -0
- package/dist/esm/converter/cosmetic/css.mjs +69 -0
- package/dist/esm/converter/cosmetic/element-hiding.mjs +62 -0
- package/dist/esm/converter/cosmetic/header-removal.mjs +123 -0
- package/dist/esm/converter/cosmetic/html.mjs +381 -0
- package/dist/esm/converter/cosmetic/index.mjs +118 -0
- package/dist/esm/converter/cosmetic/rule-modifiers/adg.mjs +79 -0
- package/dist/esm/converter/cosmetic/scriptlet.mjs +354 -0
- package/dist/esm/converter/css/index.mjs +190 -0
- package/dist/esm/converter/data/css.mjs +126 -0
- package/dist/esm/converter/filter-list.mjs +88 -0
- package/dist/esm/converter/index.mjs +8 -0
- package/dist/esm/converter/misc/network-rule-modifier.mjs +311 -0
- package/dist/esm/converter/network/index.mjs +99 -0
- package/dist/esm/converter/raw-filter-list.mjs +56 -0
- package/dist/esm/converter/rule.mjs +81 -0
- package/dist/esm/deserializer/base-deserializer.mjs +29 -0
- package/dist/esm/deserializer/comment/agent-comment-deserializer.mjs +74 -0
- package/dist/esm/deserializer/comment/agent-deserializer.mjs +65 -0
- package/dist/esm/deserializer/comment/comment-rule-deserializer.mjs +107 -0
- package/dist/esm/deserializer/comment/config-comment-deserializer.mjs +111 -0
- package/dist/esm/deserializer/comment/hint-comment-deserializer.mjs +67 -0
- package/dist/esm/deserializer/comment/hint-deserializer.mjs +85 -0
- package/dist/esm/deserializer/comment/metadata-comment-deserializer.mjs +69 -0
- package/dist/esm/deserializer/comment/pre-processor-comment-deserializer.mjs +112 -0
- package/dist/esm/deserializer/comment/simple-comment-deserializer.mjs +65 -0
- package/dist/esm/deserializer/cosmetic/cosmetic-rule-deserializer.mjs +125 -0
- package/dist/esm/deserializer/cosmetic/css-injection-body-deserializer.mjs +53 -0
- package/dist/esm/deserializer/cosmetic/element-hiding-body-deserializer.mjs +44 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.mjs +35 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.mjs +35 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.mjs +50 -0
- package/dist/esm/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.mjs +35 -0
- package/dist/esm/deserializer/empty-rule-deserializer.mjs +44 -0
- package/dist/esm/deserializer/filterlist-deserializer.mjs +81 -0
- package/dist/esm/deserializer/index.mjs +8 -0
- package/dist/esm/deserializer/invalid-rule-deserializer.mjs +46 -0
- package/dist/esm/deserializer/invalid-rule-error-node-deserializer.mjs +46 -0
- package/dist/esm/deserializer/misc/domain-list-deserializer.mjs +64 -0
- package/dist/esm/deserializer/misc/list-item-deserializer.mjs +63 -0
- package/dist/esm/deserializer/misc/list-items-deserializer.mjs +26 -0
- package/dist/esm/deserializer/misc/logical-expression-deserializer.mjs +196 -0
- package/dist/esm/deserializer/misc/modifier-deserializer.mjs +87 -0
- package/dist/esm/deserializer/misc/modifier-list-deserializer.mjs +56 -0
- package/dist/esm/deserializer/misc/parameter-list-deserializer.mjs +60 -0
- package/dist/esm/deserializer/misc/value-deserializer.mjs +50 -0
- package/dist/esm/deserializer/network/host-rule-deserializer.mjs +79 -0
- package/dist/esm/deserializer/network/hostname-list-deserializer.mjs +48 -0
- package/dist/esm/deserializer/network/network-rule-deserializer.mjs +65 -0
- package/dist/esm/deserializer/rule-deserializer.mjs +65 -0
- package/dist/esm/deserializer/syntax-deserialization-map.mjs +21 -0
- package/dist/esm/errors/adblock-syntax-error.mjs +39 -0
- package/dist/esm/errors/binary-schema-mismatch-error.mjs +37 -0
- package/dist/esm/errors/not-implemented-error.mjs +31 -0
- package/dist/esm/errors/rule-conversion-error.mjs +26 -0
- package/dist/esm/generator/base-generator.mjs +27 -0
- package/dist/esm/generator/comment/agent-comment-generator.mjs +28 -0
- package/dist/esm/generator/comment/agent-generator.mjs +32 -0
- package/dist/esm/generator/comment/comment-rule-generator.mjs +100 -0
- package/dist/esm/generator/comment/config-comment-generator.mjs +42 -0
- package/dist/esm/generator/comment/hint-comment-generator.mjs +25 -0
- package/dist/esm/generator/comment/hint-generator.mjs +30 -0
- package/dist/esm/generator/comment/metadata-comment-generator.mjs +30 -0
- package/dist/esm/generator/comment/pre-processor-comment-generator.mjs +45 -0
- package/dist/esm/generator/comment/simple-comment-generator.mjs +26 -0
- package/dist/esm/generator/cosmetic/body/abp-snippet-injection-body-generator.mjs +34 -0
- package/dist/esm/generator/cosmetic/body/adg-scriptlet-injection-body-generator.mjs +39 -0
- package/dist/esm/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.mjs +41 -0
- package/dist/esm/generator/cosmetic/cosmetic-rule-body-generator.mjs +90 -0
- package/dist/esm/generator/cosmetic/cosmetic-rule-generator.mjs +64 -0
- package/dist/esm/generator/cosmetic/cosmetic-rule-pattern-generator.mjs +39 -0
- package/dist/esm/generator/css/adg-css-injection-generator.mjs +39 -0
- package/dist/esm/generator/filterlist-generator.mjs +55 -0
- package/dist/esm/generator/index.mjs +9 -0
- package/dist/esm/generator/misc/domain-list-generator.mjs +23 -0
- package/dist/esm/generator/misc/list-items-generator.mjs +36 -0
- package/dist/esm/generator/misc/logical-expression-generator.mjs +45 -0
- package/dist/esm/generator/misc/modifier-generator.mjs +31 -0
- package/dist/esm/generator/misc/modifier-list-generator.mjs +26 -0
- package/dist/esm/generator/misc/parameter-list-generator.mjs +39 -0
- package/dist/esm/generator/misc/value-generator.mjs +21 -0
- package/dist/esm/generator/network/host-rule-generator.mjs +36 -0
- package/dist/esm/generator/network/network-rule-generator.mjs +35 -0
- package/dist/esm/generator/rule-generator.mjs +62 -0
- package/dist/esm/index.mjs +70 -0
- package/dist/esm/marshalling-utils/comment/agent-comment-common.mjs +22 -0
- package/dist/esm/marshalling-utils/comment/agent-common.mjs +41 -0
- package/dist/esm/marshalling-utils/comment/config-comment-common.mjs +56 -0
- package/dist/esm/marshalling-utils/comment/hint-comment-common.mjs +23 -0
- package/dist/esm/marshalling-utils/comment/hint-common.mjs +57 -0
- package/dist/esm/marshalling-utils/comment/metadata-comment-common.mjs +42 -0
- package/dist/esm/marshalling-utils/comment/pre-processor-comment-common.mjs +60 -0
- package/dist/esm/marshalling-utils/comment/simple-comment-common.mjs +23 -0
- package/dist/esm/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.mjs +62 -0
- package/dist/esm/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.mjs +66 -0
- package/dist/esm/marshalling-utils/cosmetic/body/css-injection-body-common.mjs +25 -0
- package/dist/esm/marshalling-utils/cosmetic/body/element-hiding-body-common.mjs +22 -0
- package/dist/esm/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.mjs +114 -0
- package/dist/esm/marshalling-utils/cosmetic/cosmetic-rule-common.mjs +49 -0
- package/dist/esm/marshalling-utils/empty-rule-common.mjs +21 -0
- package/dist/esm/marshalling-utils/filter-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/invalid-rule-common.mjs +22 -0
- package/dist/esm/marshalling-utils/invalid-rule-error-node-common.mjs +23 -0
- package/dist/esm/marshalling-utils/misc/binary-type-common.mjs +67 -0
- package/dist/esm/marshalling-utils/misc/domain-list-common.mjs +37 -0
- package/dist/esm/marshalling-utils/misc/host-rule-common.mjs +26 -0
- package/dist/esm/marshalling-utils/misc/hostname-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/misc/list-item-common.mjs +23 -0
- package/dist/esm/marshalling-utils/misc/logical-expression-common.mjs +86 -0
- package/dist/esm/marshalling-utils/misc/modifier-common.mjs +232 -0
- package/dist/esm/marshalling-utils/misc/modifier-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/misc/parameter-list-common.mjs +22 -0
- package/dist/esm/marshalling-utils/misc/value-common.mjs +23 -0
- package/dist/esm/marshalling-utils/network/network-rule-common.mjs +26 -0
- package/dist/esm/marshalling-utils/syntax-serialization-map.mjs +30 -0
- package/dist/esm/nodes/index.mjs +180 -0
- package/dist/esm/package.json.mjs +9 -0
- package/dist/esm/parser/base-parser.mjs +30 -0
- package/dist/esm/parser/comment/agent-comment-parser.mjs +119 -0
- package/dist/esm/parser/comment/agent-parser.mjs +109 -0
- package/dist/esm/parser/comment/comment-parser.mjs +108 -0
- package/dist/esm/parser/comment/config-comment-parser.mjs +137 -0
- package/dist/esm/parser/comment/hint-comment-parser.mjs +117 -0
- package/dist/esm/parser/comment/hint-parser.mjs +129 -0
- package/dist/esm/parser/comment/metadata-comment-parser.mjs +129 -0
- package/dist/esm/parser/comment/preprocessor-parser.mjs +199 -0
- package/dist/esm/parser/comment/simple-comment-parser.mjs +106 -0
- package/dist/esm/parser/cosmetic/body/abp-snippet-injection-body-parser.mjs +79 -0
- package/dist/esm/parser/cosmetic/body/adg-scriptlet-injection-body-parser.mjs +149 -0
- package/dist/esm/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.mjs +110 -0
- package/dist/esm/parser/cosmetic/cosmetic-rule-parser.mjs +453 -0
- package/dist/esm/parser/css/adg-css-injection-parser.mjs +208 -0
- package/dist/esm/parser/css/balancing.mjs +94 -0
- package/dist/esm/parser/css/constants.mjs +18 -0
- package/dist/esm/parser/css/css-token-stream.mjs +343 -0
- package/dist/esm/parser/css/ubo-selector-parser.mjs +369 -0
- package/dist/esm/parser/filterlist-parser.mjs +102 -0
- package/dist/esm/parser/index.mjs +11 -0
- package/dist/esm/parser/misc/app-list-parser.mjs +45 -0
- package/dist/esm/parser/misc/domain-list-parser.mjs +52 -0
- package/dist/esm/parser/misc/list-items-parser.mjs +113 -0
- package/dist/esm/parser/misc/logical-expression-parser.mjs +281 -0
- package/dist/esm/parser/misc/method-list-parser.mjs +46 -0
- package/dist/esm/parser/misc/modifier-list.mjs +70 -0
- package/dist/esm/parser/misc/modifier-parser.mjs +89 -0
- package/dist/esm/parser/misc/parameter-list-parser.mjs +72 -0
- package/dist/esm/parser/misc/stealth-option-list-parser.mjs +46 -0
- package/dist/esm/parser/misc/ubo-parameter-list-parser.mjs +146 -0
- package/dist/esm/parser/misc/value-parser.mjs +37 -0
- package/dist/esm/parser/network/host-rule-parser.mjs +130 -0
- package/dist/esm/parser/network/network-rule-parser.mjs +111 -0
- package/dist/esm/parser/options.mjs +23 -0
- package/dist/esm/parser/rule-parser.mjs +192 -0
- package/dist/esm/serializer/base-serializer.mjs +29 -0
- package/dist/esm/serializer/comment/agent-comment-serializer.mjs +71 -0
- package/dist/esm/serializer/comment/agent-serializer.mjs +68 -0
- package/dist/esm/serializer/comment/comment-rule-serializer.mjs +105 -0
- package/dist/esm/serializer/comment/config-comment-serializer.mjs +82 -0
- package/dist/esm/serializer/comment/hint-comment-serializer.mjs +62 -0
- package/dist/esm/serializer/comment/hint-serializer.mjs +54 -0
- package/dist/esm/serializer/comment/metadata-comment-serializer.mjs +73 -0
- package/dist/esm/serializer/comment/pre-processor-comment-serializer.mjs +71 -0
- package/dist/esm/serializer/comment/simple-comment-serializer.mjs +52 -0
- package/dist/esm/serializer/cosmetic/body/abp-snippet-injection-body-serializer.mjs +36 -0
- package/dist/esm/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.mjs +36 -0
- package/dist/esm/serializer/cosmetic/body/scriptlet-body-serializer.mjs +47 -0
- package/dist/esm/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.mjs +36 -0
- package/dist/esm/serializer/cosmetic/cosmetic-rule-serializer.mjs +129 -0
- package/dist/esm/serializer/cosmetic/css-injection-body-serializer.mjs +48 -0
- package/dist/esm/serializer/cosmetic/element-hiding-body-serializer.mjs +37 -0
- package/dist/esm/serializer/empty-rule-serializer.mjs +34 -0
- package/dist/esm/serializer/filterlist-serializer.mjs +46 -0
- package/dist/esm/serializer/index.mjs +7 -0
- package/dist/esm/serializer/invalid-rule-error-node-serializer.mjs +38 -0
- package/dist/esm/serializer/invalid-rule-serializer.mjs +37 -0
- package/dist/esm/serializer/misc/domain-list-serializer.mjs +64 -0
- package/dist/esm/serializer/misc/list-item-serializer.mjs +55 -0
- package/dist/esm/serializer/misc/list-items-serializer.mjs +26 -0
- package/dist/esm/serializer/misc/logical-expression-serializer.mjs +136 -0
- package/dist/esm/serializer/misc/modifier-list-serializer.mjs +55 -0
- package/dist/esm/serializer/misc/modifier-serializer.mjs +49 -0
- package/dist/esm/serializer/misc/parameter-list-serializer.mjs +49 -0
- package/dist/esm/serializer/misc/value-serializer.mjs +50 -0
- package/dist/esm/serializer/network/host-rule-serializer.mjs +70 -0
- package/dist/esm/serializer/network/hostname-list-serializer.mjs +47 -0
- package/dist/esm/serializer/network/network-rule-serializer.mjs +54 -0
- package/dist/esm/serializer/rule-serializer.mjs +61 -0
- package/dist/esm/utils/adblockers.mjs +57 -0
- package/dist/esm/utils/binary-schema-version.mjs +17 -0
- package/dist/esm/utils/byte-buffer.mjs +91 -0
- package/dist/esm/utils/categorizer.mjs +44 -0
- package/dist/esm/utils/clone.mjs +28 -0
- package/dist/esm/utils/constants.mjs +249 -0
- package/dist/esm/utils/cosmetic-rule-separator.mjs +127 -0
- package/dist/esm/utils/deep-freeze.mjs +32 -0
- package/dist/esm/utils/domain.mjs +56 -0
- package/dist/esm/utils/error.mjs +49 -0
- package/dist/esm/utils/index.mjs +21 -0
- package/dist/esm/utils/input-byte-buffer.mjs +257 -0
- package/dist/esm/utils/is-chromium.mjs +20 -0
- package/dist/esm/utils/logical-expression.mjs +92 -0
- package/dist/esm/utils/multi-value-map.mjs +33 -0
- package/dist/esm/utils/output-byte-buffer.mjs +223 -0
- package/dist/esm/utils/position-provider.mjs +73 -0
- package/dist/esm/utils/quotes.mjs +215 -0
- package/dist/esm/utils/regexp.mjs +176 -0
- package/dist/esm/utils/string.mjs +556 -0
- package/dist/esm/utils/text-decoder-polyfill.mjs +107 -0
- package/dist/esm/utils/text-encoder-polyfill.mjs +78 -0
- package/dist/esm/utils/type-guards.mjs +47 -0
- package/dist/esm/validator/constants.mjs +210 -0
- package/dist/esm/validator/helpers.mjs +45 -0
- package/dist/esm/validator/index.mjs +174 -0
- package/dist/esm/validator/value.mjs +563 -0
- package/dist/esm/version.mjs +18 -0
- package/dist/types/ast-utils/clone.d.ts +26 -0
- package/dist/types/ast-utils/filter-list.d.ts +11 -0
- package/dist/types/ast-utils/modifiers.d.ts +20 -0
- package/dist/types/ast-utils/network-rules.d.ts +15 -0
- package/dist/types/ast-utils/scriptlets.d.ts +52 -0
- package/dist/types/common/abp-snippet-injection-body-common.d.ts +8 -0
- package/dist/types/common/agent-common.d.ts +10 -0
- package/dist/types/common/ubo-selector-common.d.ts +9 -0
- package/dist/types/compatibility-tables/base.d.ts +157 -0
- package/dist/types/compatibility-tables/compatibility-table-data.d.ts +67 -0
- package/dist/types/compatibility-tables/index.d.ts +13 -0
- package/dist/types/compatibility-tables/modifiers.d.ts +22 -0
- package/dist/types/compatibility-tables/platforms.d.ts +47 -0
- package/dist/types/compatibility-tables/redirects.d.ts +33 -0
- package/dist/types/compatibility-tables/schemas/base.d.ts +135 -0
- package/dist/types/compatibility-tables/schemas/index.d.ts +8 -0
- package/dist/types/compatibility-tables/schemas/modifier.d.ts +31 -0
- package/dist/types/compatibility-tables/schemas/platform.d.ts +16 -0
- package/dist/types/compatibility-tables/schemas/redirect.d.ts +25 -0
- package/dist/types/compatibility-tables/schemas/resource-type.d.ts +27 -0
- package/dist/types/compatibility-tables/schemas/scriptlet.d.ts +31 -0
- package/dist/types/compatibility-tables/scriptlets.d.ts +15 -0
- package/dist/types/compatibility-tables/types.d.ts +34 -0
- package/dist/types/compatibility-tables/utils/platform-helpers.d.ts +44 -0
- package/dist/types/compatibility-tables/utils/resource-type-helpers.d.ts +20 -0
- package/dist/types/compatibility-tables/utils/zod-camelcase.d.ts +15 -0
- package/dist/types/converter/base-interfaces/base-converter.d.ts +42 -0
- package/dist/types/converter/base-interfaces/conversion-result.d.ts +43 -0
- package/dist/types/converter/base-interfaces/rule-converter-base.d.ts +44 -0
- package/dist/types/converter/comment/index.d.ts +23 -0
- package/dist/types/converter/cosmetic/css.d.ts +23 -0
- package/dist/types/converter/cosmetic/element-hiding.d.ts +23 -0
- package/dist/types/converter/cosmetic/header-removal.d.ts +37 -0
- package/dist/types/converter/cosmetic/html.d.ts +54 -0
- package/dist/types/converter/cosmetic/index.d.ts +33 -0
- package/dist/types/converter/cosmetic/rule-modifiers/adg.d.ts +21 -0
- package/dist/types/converter/cosmetic/scriptlet.d.ts +33 -0
- package/dist/types/converter/css/index.d.ts +23 -0
- package/dist/types/converter/data/css.d.ts +48 -0
- package/dist/types/converter/filter-list.d.ts +31 -0
- package/dist/types/converter/index.d.ts +5 -0
- package/dist/types/converter/misc/network-rule-modifier.d.ts +35 -0
- package/dist/types/converter/network/index.d.ts +33 -0
- package/dist/types/converter/raw-filter-list.d.ts +31 -0
- package/dist/types/converter/raw-rule.d.ts +28 -0
- package/dist/types/converter/rule.d.ts +37 -0
- package/dist/types/deserializer/base-deserializer.d.ts +15 -0
- package/dist/types/deserializer/comment/agent-comment-deserializer.d.ts +34 -0
- package/dist/types/deserializer/comment/agent-deserializer.d.ts +25 -0
- package/dist/types/deserializer/comment/comment-rule-deserializer.d.ts +69 -0
- package/dist/types/deserializer/comment/config-comment-deserializer.d.ts +27 -0
- package/dist/types/deserializer/comment/hint-comment-deserializer.d.ts +24 -0
- package/dist/types/deserializer/comment/hint-deserializer.d.ts +26 -0
- package/dist/types/deserializer/comment/metadata-comment-deserializer.d.ts +26 -0
- package/dist/types/deserializer/comment/pre-processor-comment-deserializer.d.ts +29 -0
- package/dist/types/deserializer/comment/simple-comment-deserializer.d.ts +26 -0
- package/dist/types/deserializer/cosmetic/cosmetic-rule-deserializer.d.ts +12 -0
- package/dist/types/deserializer/cosmetic/css-injection-body-deserializer.d.ts +12 -0
- package/dist/types/deserializer/cosmetic/element-hiding-body-deserializer.d.ts +12 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.d.ts +13 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.d.ts +13 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.d.ts +15 -0
- package/dist/types/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.d.ts +14 -0
- package/dist/types/deserializer/empty-rule-deserializer.d.ts +12 -0
- package/dist/types/deserializer/filterlist-deserializer.d.ts +30 -0
- package/dist/types/deserializer/index.d.ts +2 -0
- package/dist/types/deserializer/invalid-rule-deserializer.d.ts +12 -0
- package/dist/types/deserializer/invalid-rule-error-node-deserializer.d.ts +12 -0
- package/dist/types/deserializer/misc/domain-list-deserializer.d.ts +15 -0
- package/dist/types/deserializer/misc/list-item-deserializer.d.ts +13 -0
- package/dist/types/deserializer/misc/list-items-deserializer.d.ts +12 -0
- package/dist/types/deserializer/misc/logical-expression-deserializer.d.ts +55 -0
- package/dist/types/deserializer/misc/modifier-deserializer.d.ts +18 -0
- package/dist/types/deserializer/misc/modifier-list-deserializer.d.ts +20 -0
- package/dist/types/deserializer/misc/parameter-list-deserializer.d.ts +14 -0
- package/dist/types/deserializer/misc/value-deserializer.d.ts +17 -0
- package/dist/types/deserializer/network/host-rule-deserializer.d.ts +30 -0
- package/dist/types/deserializer/network/hostname-list-deserializer.d.ts +12 -0
- package/dist/types/deserializer/network/network-rule-deserializer.d.ts +18 -0
- package/dist/types/deserializer/rule-deserializer.d.ts +17 -0
- package/dist/types/deserializer/syntax-deserialization-map.d.ts +2 -0
- package/dist/types/errors/adblock-syntax-error.d.ts +25 -0
- package/dist/types/errors/binary-schema-mismatch-error.d.ts +23 -0
- package/dist/types/errors/not-implemented-error.d.ts +14 -0
- package/dist/types/errors/rule-conversion-error.d.ts +14 -0
- package/dist/types/generator/base-generator.d.ts +12 -0
- package/dist/types/generator/comment/agent-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/agent-generator.d.ts +11 -0
- package/dist/types/generator/comment/comment-rule-generator.d.ts +67 -0
- package/dist/types/generator/comment/config-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/hint-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/hint-generator.d.ts +11 -0
- package/dist/types/generator/comment/index.d.ts +2 -0
- package/dist/types/generator/comment/metadata-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/pre-processor-comment-generator.d.ts +11 -0
- package/dist/types/generator/comment/simple-comment-generator.d.ts +11 -0
- package/dist/types/generator/cosmetic/body/abp-snippet-injection-body-generator.d.ts +11 -0
- package/dist/types/generator/cosmetic/body/adg-scriptlet-injection-body-generator.d.ts +17 -0
- package/dist/types/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.d.ts +17 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-body-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-generator.d.ts +36 -0
- package/dist/types/generator/cosmetic/cosmetic-rule-pattern-generator.d.ts +15 -0
- package/dist/types/generator/cosmetic/index.d.ts +1 -0
- package/dist/types/generator/css/adg-css-injection-generator.d.ts +12 -0
- package/dist/types/generator/css/ubo-selector-generator.d.ts +11 -0
- package/dist/types/generator/filterlist-generator.d.ts +17 -0
- package/dist/types/generator/index.d.ts +3 -0
- package/dist/types/generator/misc/domain-list-generator.d.ts +12 -0
- package/dist/types/generator/misc/list-items-generator.d.ts +22 -0
- package/dist/types/generator/misc/logical-expression-generator.d.ts +11 -0
- package/dist/types/generator/misc/modifier-generator.d.ts +11 -0
- package/dist/types/generator/misc/modifier-list-generator.d.ts +11 -0
- package/dist/types/generator/misc/parameter-list-generator.d.ts +12 -0
- package/dist/types/generator/misc/value-generator.d.ts +11 -0
- package/dist/types/generator/network/host-rule-generator.d.ts +11 -0
- package/dist/types/generator/network/index.d.ts +2 -0
- package/dist/types/generator/network/network-rule-generator.d.ts +11 -0
- package/dist/types/generator/rule-generator.d.ts +21 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/marshalling-utils/comment/agent-comment-common.d.ts +13 -0
- package/dist/types/marshalling-utils/comment/agent-common.d.ts +19 -0
- package/dist/types/marshalling-utils/comment/config-comment-common.d.ts +40 -0
- package/dist/types/marshalling-utils/comment/hint-comment-common.d.ts +14 -0
- package/dist/types/marshalling-utils/comment/hint-common.d.ts +32 -0
- package/dist/types/marshalling-utils/comment/metadata-comment-common.d.ts +20 -0
- package/dist/types/marshalling-utils/comment/pre-processor-comment-common.d.ts +36 -0
- package/dist/types/marshalling-utils/comment/simple-comment-common.d.ts +14 -0
- package/dist/types/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.d.ts +22 -0
- package/dist/types/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.d.ts +9 -0
- package/dist/types/marshalling-utils/cosmetic/body/css-injection-body-common.d.ts +16 -0
- package/dist/types/marshalling-utils/cosmetic/body/element-hiding-body-common.d.ts +13 -0
- package/dist/types/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.d.ts +9 -0
- package/dist/types/marshalling-utils/cosmetic/cosmetic-rule-common.d.ts +27 -0
- package/dist/types/marshalling-utils/empty-rule-common.d.ts +12 -0
- package/dist/types/marshalling-utils/filter-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/invalid-rule-common.d.ts +13 -0
- package/dist/types/marshalling-utils/invalid-rule-error-node-common.d.ts +14 -0
- package/dist/types/marshalling-utils/misc/binary-type-common.d.ts +56 -0
- package/dist/types/marshalling-utils/misc/domain-list-common.d.ts +23 -0
- package/dist/types/marshalling-utils/misc/host-rule-common.d.ts +17 -0
- package/dist/types/marshalling-utils/misc/hostname-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/misc/list-item-common.d.ts +14 -0
- package/dist/types/marshalling-utils/misc/logical-expression-common.d.ts +44 -0
- package/dist/types/marshalling-utils/misc/modifier-common.d.ts +40 -0
- package/dist/types/marshalling-utils/misc/modifier-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/misc/parameter-list-common.d.ts +13 -0
- package/dist/types/marshalling-utils/misc/value-common.d.ts +14 -0
- package/dist/types/marshalling-utils/network/network-rule-common.d.ts +17 -0
- package/dist/types/marshalling-utils/syntax-serialization-map.d.ts +2 -0
- package/dist/types/nodes/index.d.ts +1177 -0
- package/dist/types/parser/base-parser.d.ts +16 -0
- package/dist/types/parser/comment/agent-comment-parser.d.ts +42 -0
- package/dist/types/parser/comment/agent-parser.d.ts +33 -0
- package/dist/types/parser/comment/comment-parser.d.ts +76 -0
- package/dist/types/parser/comment/config-comment-parser.d.ts +31 -0
- package/dist/types/parser/comment/hint-comment-parser.d.ts +33 -0
- package/dist/types/parser/comment/hint-parser.d.ts +30 -0
- package/dist/types/parser/comment/metadata-comment-parser.d.ts +29 -0
- package/dist/types/parser/comment/preprocessor-parser.d.ts +43 -0
- package/dist/types/parser/comment/simple-comment-parser.d.ts +33 -0
- package/dist/types/parser/cosmetic/body/abp-snippet-injection-body-parser.d.ts +34 -0
- package/dist/types/parser/cosmetic/body/adg-scriptlet-injection-body-parser.d.ts +47 -0
- package/dist/types/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.d.ts +44 -0
- package/dist/types/parser/cosmetic/cosmetic-rule-parser.d.ts +51 -0
- package/dist/types/parser/css/adg-css-injection-parser.d.ts +28 -0
- package/dist/types/parser/css/balancing.d.ts +36 -0
- package/dist/types/parser/css/constants.d.ts +10 -0
- package/dist/types/parser/css/css-token-stream.d.ts +210 -0
- package/dist/types/parser/css/ubo-selector-parser.d.ts +46 -0
- package/dist/types/parser/filterlist-parser.d.ts +29 -0
- package/dist/types/parser/index.d.ts +5 -0
- package/dist/types/parser/misc/app-list-parser.d.ts +22 -0
- package/dist/types/parser/misc/domain-list-parser.d.ts +26 -0
- package/dist/types/parser/misc/list-items-parser.d.ts +34 -0
- package/dist/types/parser/misc/logical-expression-parser.d.ts +41 -0
- package/dist/types/parser/misc/method-list-parser.d.ts +22 -0
- package/dist/types/parser/misc/modifier-list.d.ts +24 -0
- package/dist/types/parser/misc/modifier-parser.d.ts +21 -0
- package/dist/types/parser/misc/parameter-list-parser.d.ts +14 -0
- package/dist/types/parser/misc/stealth-option-list-parser.d.ts +22 -0
- package/dist/types/parser/misc/ubo-parameter-list-parser.d.ts +18 -0
- package/dist/types/parser/misc/value-parser.d.ts +18 -0
- package/dist/types/parser/network/host-rule-parser.d.ts +35 -0
- package/dist/types/parser/network/network-rule-parser.d.ts +31 -0
- package/dist/types/parser/options.d.ts +41 -0
- package/dist/types/parser/rule-parser.d.ts +78 -0
- package/dist/types/serializer/base-serializer.d.ts +15 -0
- package/dist/types/serializer/comment/agent-comment-serializer.d.ts +34 -0
- package/dist/types/serializer/comment/agent-serializer.d.ts +24 -0
- package/dist/types/serializer/comment/comment-rule-serializer.d.ts +68 -0
- package/dist/types/serializer/comment/config-comment-serializer.d.ts +25 -0
- package/dist/types/serializer/comment/hint-comment-serializer.d.ts +23 -0
- package/dist/types/serializer/comment/hint-serializer.d.ts +24 -0
- package/dist/types/serializer/comment/metadata-comment-serializer.d.ts +25 -0
- package/dist/types/serializer/comment/pre-processor-comment-serializer.d.ts +28 -0
- package/dist/types/serializer/comment/simple-comment-serializer.d.ts +24 -0
- package/dist/types/serializer/cosmetic/body/abp-snippet-injection-body-serializer.d.ts +25 -0
- package/dist/types/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.d.ts +25 -0
- package/dist/types/serializer/cosmetic/body/scriptlet-body-serializer.d.ts +14 -0
- package/dist/types/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.d.ts +25 -0
- package/dist/types/serializer/cosmetic/cosmetic-rule-serializer.d.ts +26 -0
- package/dist/types/serializer/cosmetic/css-injection-body-serializer.d.ts +12 -0
- package/dist/types/serializer/cosmetic/element-hiding-body-serializer.d.ts +12 -0
- package/dist/types/serializer/empty-rule-serializer.d.ts +12 -0
- package/dist/types/serializer/filterlist-serializer.d.ts +16 -0
- package/dist/types/serializer/index.d.ts +1 -0
- package/dist/types/serializer/invalid-rule-error-node-serializer.d.ts +12 -0
- package/dist/types/serializer/invalid-rule-serializer.d.ts +12 -0
- package/dist/types/serializer/misc/domain-list-serializer.d.ts +21 -0
- package/dist/types/serializer/misc/list-item-serializer.d.ts +13 -0
- package/dist/types/serializer/misc/list-items-serializer.d.ts +12 -0
- package/dist/types/serializer/misc/logical-expression-serializer.d.ts +51 -0
- package/dist/types/serializer/misc/modifier-list-serializer.d.ts +20 -0
- package/dist/types/serializer/misc/modifier-serializer.d.ts +18 -0
- package/dist/types/serializer/misc/parameter-list-serializer.d.ts +14 -0
- package/dist/types/serializer/misc/value-serializer.d.ts +17 -0
- package/dist/types/serializer/network/host-rule-serializer.d.ts +30 -0
- package/dist/types/serializer/network/hostname-list-serializer.d.ts +12 -0
- package/dist/types/serializer/network/network-rule-serializer.d.ts +18 -0
- package/dist/types/serializer/rule-serializer.d.ts +17 -0
- package/dist/types/utils/adblockers.d.ts +48 -0
- package/dist/types/utils/binary-schema-version.d.ts +9 -0
- package/dist/types/utils/byte-buffer.d.ts +54 -0
- package/dist/types/utils/categorizer.d.ts +14 -0
- package/dist/types/utils/clone.d.ts +15 -0
- package/dist/types/utils/constants.d.ts +188 -0
- package/dist/types/utils/cosmetic-rule-separator.d.ts +45 -0
- package/dist/types/utils/deep-freeze.d.ts +13 -0
- package/dist/types/utils/domain.d.ts +26 -0
- package/dist/types/utils/error.d.ts +8 -0
- package/dist/types/utils/index.d.ts +15 -0
- package/dist/types/utils/input-byte-buffer.d.ts +140 -0
- package/dist/types/utils/is-chromium.d.ts +7 -0
- package/dist/types/utils/logical-expression.d.ts +45 -0
- package/dist/types/utils/multi-value-map.d.ts +16 -0
- package/dist/types/utils/output-byte-buffer.d.ts +126 -0
- package/dist/types/utils/position-provider.d.ts +46 -0
- package/dist/types/utils/quotes.d.ts +93 -0
- package/dist/types/utils/regexp.d.ts +54 -0
- package/dist/types/utils/storage-interface.d.ts +23 -0
- package/dist/types/utils/string.d.ts +277 -0
- package/dist/types/utils/text-decoder-polyfill.d.ts +14 -0
- package/dist/types/utils/text-encoder-polyfill.d.ts +18 -0
- package/dist/types/utils/type-guards.d.ts +47 -0
- package/dist/types/validator/constants.d.ts +89 -0
- package/dist/types/validator/helpers.d.ts +37 -0
- package/dist/types/validator/index.d.ts +38 -0
- package/dist/types/validator/value.d.ts +11 -0
- package/dist/types/version.d.ts +5 -0
- package/package.json +91 -37
- package/dist/agtree.d.ts +0 -4152
- package/dist/agtree.js +0 -15710
- package/dist/agtree.mjs +0 -15611
- package/dist/compatibility-table-data.js +0 -12634
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var adblockers = require('../utils/adblockers.js');
|
|
10
|
+
var commentParser = require('./comment/comment-parser.js');
|
|
11
|
+
var cosmeticRuleParser = require('./cosmetic/cosmetic-rule-parser.js');
|
|
12
|
+
var networkRuleParser = require('./network/network-rule-parser.js');
|
|
13
|
+
var index = require('../nodes/index.js');
|
|
14
|
+
var adblockSyntaxError = require('../errors/adblock-syntax-error.js');
|
|
15
|
+
var options = require('./options.js');
|
|
16
|
+
var baseParser = require('./base-parser.js');
|
|
17
|
+
var hostRuleParser = require('./network/host-rule-parser.js');
|
|
18
|
+
|
|
19
|
+
/* eslint-disable no-param-reassign */
|
|
20
|
+
/**
|
|
21
|
+
* `RuleParser` is responsible for parsing the rules.
|
|
22
|
+
*
|
|
23
|
+
* It automatically determines the category and syntax of the rule, so you can pass any kind of rule to it.
|
|
24
|
+
*/
|
|
25
|
+
class RuleParser extends baseParser.BaseParser {
|
|
26
|
+
/**
|
|
27
|
+
* Helper method to parse host rules if the `parseHostRules` option is enabled, otherwise it will
|
|
28
|
+
* parse network rules.
|
|
29
|
+
*
|
|
30
|
+
* @param raw Raw input to parse.
|
|
31
|
+
* @param options Global parser options.
|
|
32
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
33
|
+
* @returns Host rule or network rule node.
|
|
34
|
+
*/
|
|
35
|
+
static parseHostOrNetworkRule(raw, options, baseOffset) {
|
|
36
|
+
if (options.parseHostRules) {
|
|
37
|
+
try {
|
|
38
|
+
return hostRuleParser.HostRuleParser.parse(raw, options, baseOffset);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
// Ignore the error, and fall back to network rule parser
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return networkRuleParser.NetworkRuleParser.parse(raw, options, baseOffset);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parse an adblock rule. You can pass any kind of rule to this method, since it will automatically determine
|
|
48
|
+
* the category and syntax. If the rule is syntactically invalid, then an error will be thrown. If the
|
|
49
|
+
* syntax / compatibility cannot be determined clearly, then the value of the `syntax` property will be
|
|
50
|
+
* `Common`.
|
|
51
|
+
*
|
|
52
|
+
* For example, let's have this network rule:
|
|
53
|
+
* ```adblock
|
|
54
|
+
* ||example.org^$important
|
|
55
|
+
* ```
|
|
56
|
+
* The `syntax` property will be `Common`, since the rule is syntactically correct in every adblockers, but we
|
|
57
|
+
* cannot determine at parsing level whether `important` is an existing option or not, nor if it exists, then
|
|
58
|
+
* which adblocker supports it. This is why the `syntax` property is simply `Common` at this point.
|
|
59
|
+
* The concrete COMPATIBILITY of the rule will be determined later, in a different, higher-level layer, called
|
|
60
|
+
* "Compatibility table".
|
|
61
|
+
*
|
|
62
|
+
* But we can determinate the concrete syntax of this rule:
|
|
63
|
+
* ```adblock
|
|
64
|
+
* example.org#%#//scriptlet("scriptlet0", "arg0")
|
|
65
|
+
* ```
|
|
66
|
+
* since it is clearly an AdGuard-specific rule and no other adblockers uses this syntax natively. However, we also
|
|
67
|
+
* cannot determine the COMPATIBILITY of this rule, as it is not clear at this point whether the `scriptlet0`
|
|
68
|
+
* scriptlet is supported by AdGuard or not. This is also the task of the "Compatibility table". Here, we simply
|
|
69
|
+
* mark the rule with the `AdGuard` syntax in this case.
|
|
70
|
+
*
|
|
71
|
+
* @param raw Raw input to parse.
|
|
72
|
+
* @param options Global parser options.
|
|
73
|
+
* @param baseOffset Starting offset of the input. Node locations are calculated relative to this offset.
|
|
74
|
+
* @returns Adblock rule node
|
|
75
|
+
* @throws If the input matches a pattern but syntactically invalid
|
|
76
|
+
* @example
|
|
77
|
+
* Take a look at the following example:
|
|
78
|
+
* ```js
|
|
79
|
+
* // Parse a network rule
|
|
80
|
+
* const ast1 = RuleParser.parse("||example.org^$important");
|
|
81
|
+
*
|
|
82
|
+
* // Parse another network rule
|
|
83
|
+
* const ast2 = RuleParser.parse("/ads.js^$important,third-party,domain=example.org|~example.com");
|
|
84
|
+
*
|
|
85
|
+
* // Parse a cosmetic rule
|
|
86
|
+
* const ast2 = RuleParser.parse("example.org##.banner");
|
|
87
|
+
*
|
|
88
|
+
* // Parse another cosmetic rule
|
|
89
|
+
* const ast3 = RuleParser.parse("example.org#?#.banner:-abp-has(.ad)");
|
|
90
|
+
*
|
|
91
|
+
* // Parse a comment rule
|
|
92
|
+
* const ast4 = RuleParser.parse("! Comment");
|
|
93
|
+
*
|
|
94
|
+
* // Parse an empty rule
|
|
95
|
+
* const ast5 = RuleParser.parse("");
|
|
96
|
+
*
|
|
97
|
+
* // Parse a comment rule (with metadata)
|
|
98
|
+
* const ast6 = RuleParser.parse("! Title: Example");
|
|
99
|
+
*
|
|
100
|
+
* // Parse a pre-processor rule
|
|
101
|
+
* const ast7 = RuleParser.parse("!#if (adguard)");
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
static parse(raw, options$1 = options.defaultParserOptions, baseOffset = 0) {
|
|
105
|
+
try {
|
|
106
|
+
// Empty lines / rules (handle it just for convenience)
|
|
107
|
+
if (raw.trim().length === 0) {
|
|
108
|
+
const result = {
|
|
109
|
+
type: 'EmptyRule',
|
|
110
|
+
category: index.RuleCategory.Empty,
|
|
111
|
+
syntax: adblockers.AdblockSyntax.Common,
|
|
112
|
+
};
|
|
113
|
+
if (options$1.includeRaws) {
|
|
114
|
+
result.raws = {
|
|
115
|
+
text: raw,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (options$1.isLocIncluded) {
|
|
119
|
+
result.start = baseOffset;
|
|
120
|
+
result.end = baseOffset + raw.length;
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
}
|
|
124
|
+
// Try to parse the rule with all sub-parsers. If a rule doesn't match
|
|
125
|
+
// the pattern of a parser, then it will return `null`. For example, a
|
|
126
|
+
// network rule will not match the pattern of a comment rule, since it
|
|
127
|
+
// doesn't start with comment marker. But if the rule matches the
|
|
128
|
+
// pattern of a parser, then it will return the AST of the rule, or
|
|
129
|
+
// throw an error if the rule is syntactically invalid.
|
|
130
|
+
if (options$1.ignoreComments) {
|
|
131
|
+
if (commentParser.CommentParser.isCommentRule(raw)) {
|
|
132
|
+
const result = {
|
|
133
|
+
type: 'EmptyRule',
|
|
134
|
+
category: index.RuleCategory.Empty,
|
|
135
|
+
syntax: adblockers.AdblockSyntax.Common,
|
|
136
|
+
};
|
|
137
|
+
if (options$1.includeRaws) {
|
|
138
|
+
result.raws = {
|
|
139
|
+
text: raw,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
if (options$1.isLocIncluded) {
|
|
143
|
+
result.start = baseOffset;
|
|
144
|
+
result.end = baseOffset + raw.length;
|
|
145
|
+
}
|
|
146
|
+
return result;
|
|
147
|
+
}
|
|
148
|
+
return cosmeticRuleParser.CosmeticRuleParser.parse(raw, options$1, baseOffset)
|
|
149
|
+
|| RuleParser.parseHostOrNetworkRule(raw, options$1, baseOffset);
|
|
150
|
+
}
|
|
151
|
+
return commentParser.CommentParser.parse(raw, options$1, baseOffset)
|
|
152
|
+
|| cosmeticRuleParser.CosmeticRuleParser.parse(raw, options$1, baseOffset)
|
|
153
|
+
|| RuleParser.parseHostOrNetworkRule(raw, options$1, baseOffset);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
// If tolerant mode is disabled or the error is not known, then simply
|
|
157
|
+
// re-throw the error
|
|
158
|
+
if (!options$1.tolerant || !(error instanceof Error)) {
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
const errorNode = {
|
|
162
|
+
type: 'InvalidRuleError',
|
|
163
|
+
name: error.name,
|
|
164
|
+
message: error.message,
|
|
165
|
+
};
|
|
166
|
+
// If the error is an AdblockSyntaxError, then we can add the
|
|
167
|
+
// location of the error to the result
|
|
168
|
+
if (error instanceof adblockSyntaxError.AdblockSyntaxError) {
|
|
169
|
+
errorNode.start = error.start;
|
|
170
|
+
errorNode.end = error.end;
|
|
171
|
+
}
|
|
172
|
+
// Otherwise, return an invalid rule (tolerant mode)
|
|
173
|
+
const result = {
|
|
174
|
+
type: 'InvalidRule',
|
|
175
|
+
category: index.RuleCategory.Invalid,
|
|
176
|
+
syntax: adblockers.AdblockSyntax.Common,
|
|
177
|
+
raw,
|
|
178
|
+
error: errorNode,
|
|
179
|
+
};
|
|
180
|
+
if (options$1.includeRaws) {
|
|
181
|
+
result.raws = {
|
|
182
|
+
text: raw,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
if (options$1.isLocIncluded) {
|
|
186
|
+
result.start = baseOffset;
|
|
187
|
+
result.end = baseOffset + raw.length;
|
|
188
|
+
}
|
|
189
|
+
return result;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
exports.RuleParser = RuleParser;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var notImplementedError = require('../errors/not-implemented-error.js');
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @file Base serializer class.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Base class for serializers. Each serializer should extend this class.
|
|
16
|
+
*/
|
|
17
|
+
class BaseSerializer {
|
|
18
|
+
/**
|
|
19
|
+
* Serializes the AST node to a byte buffer.
|
|
20
|
+
*
|
|
21
|
+
* @param node AST node to serialize.
|
|
22
|
+
* @param buffer Output byte buffer to write to.
|
|
23
|
+
* @param args Additional, parser-specific arguments, if needed.
|
|
24
|
+
*/
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
26
|
+
static serialize(node, buffer, ...args) {
|
|
27
|
+
throw new notImplementedError.NotImplementedError();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
exports.BaseSerializer = BaseSerializer;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants = require('../../utils/constants.js');
|
|
10
|
+
var agentSerializer = require('./agent-serializer.js');
|
|
11
|
+
var typeGuards = require('../../utils/type-guards.js');
|
|
12
|
+
var baseSerializer = require('../base-serializer.js');
|
|
13
|
+
var agentCommentCommon = require('../../marshalling-utils/comment/agent-comment-common.js');
|
|
14
|
+
var binaryTypeCommon = require('../../marshalling-utils/misc/binary-type-common.js');
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* `AgentCommentSerializer` is responsible for serializing 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 AgentCommentSerializer extends baseSerializer.BaseSerializer {
|
|
39
|
+
/**
|
|
40
|
+
* Serializes an adblock agent list node to binary format.
|
|
41
|
+
*
|
|
42
|
+
* @param node Node to serialize.
|
|
43
|
+
* @param buffer ByteBuffer for writing binary data.
|
|
44
|
+
*/
|
|
45
|
+
// TODO: add support for raws, if ever needed
|
|
46
|
+
static serialize(node, buffer) {
|
|
47
|
+
buffer.writeUint8(binaryTypeCommon.BinaryTypeMarshallingMap.AgentRuleNode);
|
|
48
|
+
const count = node.children.length;
|
|
49
|
+
if (count) {
|
|
50
|
+
buffer.writeUint8(agentCommentCommon.AgentCommentMarshallingMap.Children);
|
|
51
|
+
// note: we store the count, because re-construction of the array is faster if we know the length
|
|
52
|
+
// 8 bits is more than enough here
|
|
53
|
+
if (count > constants.UINT8_MAX) {
|
|
54
|
+
throw new Error(`Too many children: ${count}, the limit is ${constants.UINT8_MAX}`);
|
|
55
|
+
}
|
|
56
|
+
buffer.writeUint8(count);
|
|
57
|
+
for (let i = 0; i < count; i += 1) {
|
|
58
|
+
agentSerializer.AgentSerializer.serialize(node.children[i], buffer);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!typeGuards.isUndefined(node.start)) {
|
|
62
|
+
buffer.writeUint8(agentCommentCommon.AgentCommentMarshallingMap.Start);
|
|
63
|
+
buffer.writeUint32(node.start);
|
|
64
|
+
}
|
|
65
|
+
if (!typeGuards.isUndefined(node.end)) {
|
|
66
|
+
buffer.writeUint8(agentCommentCommon.AgentCommentMarshallingMap.End);
|
|
67
|
+
buffer.writeUint32(node.end);
|
|
68
|
+
}
|
|
69
|
+
buffer.writeUint8(constants.NULL);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
exports.AgentCommentSerializer = AgentCommentSerializer;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants = require('../../utils/constants.js');
|
|
10
|
+
var valueSerializer = require('../misc/value-serializer.js');
|
|
11
|
+
var typeGuards = require('../../utils/type-guards.js');
|
|
12
|
+
var baseSerializer = require('../base-serializer.js');
|
|
13
|
+
var agentCommon = require('../../marshalling-utils/comment/agent-common.js');
|
|
14
|
+
var binaryTypeCommon = require('../../marshalling-utils/misc/binary-type-common.js');
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Value map for binary serialization. This helps to reduce the size of the serialized data,
|
|
18
|
+
* as it allows us to use a single byte to represent frequently used values.
|
|
19
|
+
*
|
|
20
|
+
* ! IMPORTANT: If you change values here, please update the {@link BINARY_SCHEMA_VERSION}!
|
|
21
|
+
*
|
|
22
|
+
* @note Only 256 values can be represented this way.
|
|
23
|
+
*/
|
|
24
|
+
let frequentAgentsSerializationMap;
|
|
25
|
+
const getFrequentAgentsSerializationMap = () => {
|
|
26
|
+
if (!frequentAgentsSerializationMap) {
|
|
27
|
+
frequentAgentsSerializationMap = new Map(Array.from(agentCommon.FREQUENT_AGENTS_DESERIALIZATION_MAP).map(([key, value]) => [value.toLowerCase(), key]));
|
|
28
|
+
}
|
|
29
|
+
return frequentAgentsSerializationMap;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* `AgentParser` is responsible for parsing single adblock agent elements.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* If the adblock agent rule is
|
|
36
|
+
* ```adblock
|
|
37
|
+
* [Adblock Plus 2.0; AdGuard]
|
|
38
|
+
* ```
|
|
39
|
+
* then the adblock agents are `Adblock Plus 2.0` and `AdGuard`, and this
|
|
40
|
+
* class is responsible for parsing them. The rule itself is parsed by
|
|
41
|
+
* `AgentCommentSerializer`, which uses this class to parse single agents.
|
|
42
|
+
*/
|
|
43
|
+
class AgentSerializer extends baseSerializer.BaseSerializer {
|
|
44
|
+
/**
|
|
45
|
+
* Serializes an agent node to binary format.
|
|
46
|
+
*
|
|
47
|
+
* @param node Node to serialize.
|
|
48
|
+
* @param buffer ByteBuffer for writing binary data.
|
|
49
|
+
*/
|
|
50
|
+
static serialize(node, buffer) {
|
|
51
|
+
buffer.writeUint8(binaryTypeCommon.BinaryTypeMarshallingMap.AgentNode);
|
|
52
|
+
buffer.writeUint8(agentCommon.AgentNodeMarshallingMap.Adblock);
|
|
53
|
+
valueSerializer.ValueSerializer.serialize(node.adblock, buffer, getFrequentAgentsSerializationMap(), true);
|
|
54
|
+
if (!typeGuards.isUndefined(node.version)) {
|
|
55
|
+
buffer.writeUint8(agentCommon.AgentNodeMarshallingMap.Version);
|
|
56
|
+
valueSerializer.ValueSerializer.serialize(node.version, buffer);
|
|
57
|
+
}
|
|
58
|
+
if (!typeGuards.isUndefined(node.start)) {
|
|
59
|
+
buffer.writeUint8(agentCommon.AgentNodeMarshallingMap.Start);
|
|
60
|
+
buffer.writeUint32(node.start);
|
|
61
|
+
}
|
|
62
|
+
if (!typeGuards.isUndefined(node.end)) {
|
|
63
|
+
buffer.writeUint8(agentCommon.AgentNodeMarshallingMap.End);
|
|
64
|
+
buffer.writeUint32(node.end);
|
|
65
|
+
}
|
|
66
|
+
buffer.writeUint8(constants.NULL);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
exports.AgentSerializer = AgentSerializer;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var agentCommentSerializer = require('./agent-comment-serializer.js');
|
|
10
|
+
var index = require('../../nodes/index.js');
|
|
11
|
+
var configCommentSerializer = require('./config-comment-serializer.js');
|
|
12
|
+
var hintCommentSerializer = require('./hint-comment-serializer.js');
|
|
13
|
+
var metadataCommentSerializer = require('./metadata-comment-serializer.js');
|
|
14
|
+
var preProcessorCommentSerializer = require('./pre-processor-comment-serializer.js');
|
|
15
|
+
var simpleCommentSerializer = require('./simple-comment-serializer.js');
|
|
16
|
+
var baseSerializer = require('../base-serializer.js');
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* `CommentRuleSerializer` is responsible for serializing any comment-like adblock rules.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* Example rules:
|
|
23
|
+
* - Adblock agent rules:
|
|
24
|
+
* - ```adblock
|
|
25
|
+
* [AdGuard]
|
|
26
|
+
* ```
|
|
27
|
+
* - ```adblock
|
|
28
|
+
* [Adblock Plus 2.0]
|
|
29
|
+
* ```
|
|
30
|
+
* - etc.
|
|
31
|
+
* - AdGuard hint rules:
|
|
32
|
+
* - ```adblock
|
|
33
|
+
* !+ NOT_OPTIMIZED
|
|
34
|
+
* ```
|
|
35
|
+
* - ```adblock
|
|
36
|
+
* !+ NOT_OPTIMIZED PLATFORM(windows)
|
|
37
|
+
* ```
|
|
38
|
+
* - etc.
|
|
39
|
+
* - Pre-processor rules:
|
|
40
|
+
* - ```adblock
|
|
41
|
+
* !#if (adguard)
|
|
42
|
+
* ```
|
|
43
|
+
* - ```adblock
|
|
44
|
+
* !#endif
|
|
45
|
+
* ```
|
|
46
|
+
* - etc.
|
|
47
|
+
* - Metadata rules:
|
|
48
|
+
* - ```adblock
|
|
49
|
+
* ! Title: My List
|
|
50
|
+
* ```
|
|
51
|
+
* - ```adblock
|
|
52
|
+
* ! Version: 2.0.150
|
|
53
|
+
* ```
|
|
54
|
+
* - etc.
|
|
55
|
+
* - AGLint inline config rules:
|
|
56
|
+
* - ```adblock
|
|
57
|
+
* ! aglint-enable some-rule
|
|
58
|
+
* ```
|
|
59
|
+
* - ```adblock
|
|
60
|
+
* ! aglint-disable some-rule
|
|
61
|
+
* ```
|
|
62
|
+
* - etc.
|
|
63
|
+
* - Simple comments:
|
|
64
|
+
* - Regular version:
|
|
65
|
+
* ```adblock
|
|
66
|
+
* ! This is just a comment
|
|
67
|
+
* ```
|
|
68
|
+
* - uBlock Origin / "hostlist" version:
|
|
69
|
+
* ```adblock
|
|
70
|
+
* # This is just a comment
|
|
71
|
+
* ```
|
|
72
|
+
* - etc.
|
|
73
|
+
*/
|
|
74
|
+
class CommentRuleSerializer extends baseSerializer.BaseSerializer {
|
|
75
|
+
/**
|
|
76
|
+
* Serializes a comment rule node to binary format.
|
|
77
|
+
*
|
|
78
|
+
* @param node Node to serialize.
|
|
79
|
+
* @param buffer ByteBuffer for writing binary data.
|
|
80
|
+
*/
|
|
81
|
+
static serialize(node, buffer) {
|
|
82
|
+
switch (node.type) {
|
|
83
|
+
case index.CommentRuleType.AgentCommentRule:
|
|
84
|
+
agentCommentSerializer.AgentCommentSerializer.serialize(node, buffer);
|
|
85
|
+
return;
|
|
86
|
+
case index.CommentRuleType.HintCommentRule:
|
|
87
|
+
hintCommentSerializer.HintCommentSerializer.serialize(node, buffer);
|
|
88
|
+
return;
|
|
89
|
+
case index.CommentRuleType.PreProcessorCommentRule:
|
|
90
|
+
preProcessorCommentSerializer.PreProcessorCommentSerializer.serialize(node, buffer);
|
|
91
|
+
return;
|
|
92
|
+
case index.CommentRuleType.MetadataCommentRule:
|
|
93
|
+
metadataCommentSerializer.MetadataCommentSerializer.serialize(node, buffer);
|
|
94
|
+
return;
|
|
95
|
+
case index.CommentRuleType.ConfigCommentRule:
|
|
96
|
+
configCommentSerializer.ConfigCommentSerializer.serialize(node, buffer);
|
|
97
|
+
return;
|
|
98
|
+
case index.CommentRuleType.CommentRule:
|
|
99
|
+
simpleCommentSerializer.SimpleCommentSerializer.serialize(node, buffer);
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
throw new Error('Unknown comment rule type');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
exports.CommentRuleSerializer = CommentRuleSerializer;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants = require('../../utils/constants.js');
|
|
10
|
+
var parameterListSerializer = require('../misc/parameter-list-serializer.js');
|
|
11
|
+
var valueSerializer = require('../misc/value-serializer.js');
|
|
12
|
+
var typeGuards = require('../../utils/type-guards.js');
|
|
13
|
+
var baseSerializer = require('../base-serializer.js');
|
|
14
|
+
var configCommentCommon = require('../../marshalling-utils/comment/config-comment-common.js');
|
|
15
|
+
var binaryTypeCommon = require('../../marshalling-utils/misc/binary-type-common.js');
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* `ConfigCommentParser` is responsible for parsing inline AGLint configuration rules.
|
|
19
|
+
* Generally, the idea is inspired by ESLint inline configuration comments.
|
|
20
|
+
*
|
|
21
|
+
* @see {@link https://eslint.org/docs/latest/user-guide/configuring/rules#using-configuration-comments}
|
|
22
|
+
*/
|
|
23
|
+
class ConfigCommentSerializer extends baseSerializer.BaseSerializer {
|
|
24
|
+
/**
|
|
25
|
+
* Serializes a config node to binary format.
|
|
26
|
+
*
|
|
27
|
+
* @param node Node to serialize.
|
|
28
|
+
* @param buffer ByteBuffer for writing binary data.
|
|
29
|
+
*/
|
|
30
|
+
static serializeConfigNode(node, buffer) {
|
|
31
|
+
buffer.writeUint8(binaryTypeCommon.BinaryTypeMarshallingMap.ConfigNode);
|
|
32
|
+
buffer.writeUint8(configCommentCommon.ConfigNodeMarshallingMap.Value);
|
|
33
|
+
// note: we don't support serializing generic objects, only AGTree nodes
|
|
34
|
+
// this is a very special case, so we just stringify the configuration object
|
|
35
|
+
buffer.writeString(JSON.stringify(node.value));
|
|
36
|
+
if (!typeGuards.isUndefined(node.start)) {
|
|
37
|
+
buffer.writeUint8(configCommentCommon.ConfigNodeMarshallingMap.Start);
|
|
38
|
+
buffer.writeUint32(node.start);
|
|
39
|
+
}
|
|
40
|
+
if (!typeGuards.isUndefined(node.end)) {
|
|
41
|
+
buffer.writeUint8(configCommentCommon.ConfigNodeMarshallingMap.End);
|
|
42
|
+
buffer.writeUint32(node.end);
|
|
43
|
+
}
|
|
44
|
+
buffer.writeUint8(constants.NULL);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Serializes a metadata comment node to binary format.
|
|
48
|
+
*
|
|
49
|
+
* @param node Node to serialize.
|
|
50
|
+
* @param buffer ByteBuffer for writing binary data.
|
|
51
|
+
*/
|
|
52
|
+
// TODO: add support for raws, if ever needed
|
|
53
|
+
static serialize(node, buffer) {
|
|
54
|
+
buffer.writeUint8(binaryTypeCommon.BinaryTypeMarshallingMap.ConfigCommentRuleNode);
|
|
55
|
+
buffer.writeUint8(configCommentCommon.ConfigCommentRuleMarshallingMap.Marker);
|
|
56
|
+
valueSerializer.ValueSerializer.serialize(node.marker, buffer);
|
|
57
|
+
buffer.writeUint8(configCommentCommon.ConfigCommentRuleMarshallingMap.Command);
|
|
58
|
+
valueSerializer.ValueSerializer.serialize(node.command, buffer, configCommentCommon.FREQUENT_COMMANDS_SERIALIZATION_MAP, true);
|
|
59
|
+
if (!typeGuards.isUndefined(node.params)) {
|
|
60
|
+
buffer.writeUint8(configCommentCommon.ConfigCommentRuleMarshallingMap.Params);
|
|
61
|
+
if (node.params.type === 'ParameterList') {
|
|
62
|
+
parameterListSerializer.ParameterListSerializer.serialize(node.params, buffer);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
ConfigCommentSerializer.serializeConfigNode(node.params, buffer);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (!typeGuards.isUndefined(node.comment)) {
|
|
69
|
+
buffer.writeUint8(configCommentCommon.ConfigCommentRuleMarshallingMap.Comment);
|
|
70
|
+
valueSerializer.ValueSerializer.serialize(node.comment, buffer);
|
|
71
|
+
}
|
|
72
|
+
if (!typeGuards.isUndefined(node.start)) {
|
|
73
|
+
buffer.writeUint8(configCommentCommon.ConfigCommentRuleMarshallingMap.Start);
|
|
74
|
+
buffer.writeUint32(node.start);
|
|
75
|
+
}
|
|
76
|
+
if (!typeGuards.isUndefined(node.end)) {
|
|
77
|
+
buffer.writeUint8(configCommentCommon.ConfigCommentRuleMarshallingMap.End);
|
|
78
|
+
buffer.writeUint32(node.end);
|
|
79
|
+
}
|
|
80
|
+
buffer.writeUint8(constants.NULL);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
exports.ConfigCommentSerializer = ConfigCommentSerializer;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants = require('../../utils/constants.js');
|
|
10
|
+
var hintSerializer = require('./hint-serializer.js');
|
|
11
|
+
var adblockers = require('../../utils/adblockers.js');
|
|
12
|
+
var typeGuards = require('../../utils/type-guards.js');
|
|
13
|
+
var baseSerializer = require('../base-serializer.js');
|
|
14
|
+
var hintCommentCommon = require('../../marshalling-utils/comment/hint-comment-common.js');
|
|
15
|
+
var binaryTypeCommon = require('../../marshalling-utils/misc/binary-type-common.js');
|
|
16
|
+
var syntaxSerializationMap = require('../../marshalling-utils/syntax-serialization-map.js');
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* `HintCommentSerializer` is responsible for serializing AdGuard hint rules.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* The following hint rule
|
|
23
|
+
* ```adblock
|
|
24
|
+
* !+ NOT_OPTIMIZED PLATFORM(windows)
|
|
25
|
+
* ```
|
|
26
|
+
* contains two hints: `NOT_OPTIMIZED` and `PLATFORM`.
|
|
27
|
+
* @see {@link https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#hints}
|
|
28
|
+
*/
|
|
29
|
+
class HintCommentSerializer extends baseSerializer.BaseSerializer {
|
|
30
|
+
/**
|
|
31
|
+
* Serializes a hint rule node to binary format.
|
|
32
|
+
*
|
|
33
|
+
* @param node Node to serialize.
|
|
34
|
+
* @param buffer ByteBuffer for writing binary data.
|
|
35
|
+
*/
|
|
36
|
+
// TODO: add support for raws, if ever needed
|
|
37
|
+
static serialize(node, buffer) {
|
|
38
|
+
buffer.writeUint8(binaryTypeCommon.BinaryTypeMarshallingMap.HintRuleNode);
|
|
39
|
+
if (node.syntax === adblockers.AdblockSyntax.Adg) {
|
|
40
|
+
buffer.writeUint8(hintCommentCommon.HintCommentMarshallingMap.Syntax);
|
|
41
|
+
buffer.writeUint8(syntaxSerializationMap.getSyntaxSerializationMap().get(adblockers.AdblockSyntax.Adg) ?? 0);
|
|
42
|
+
}
|
|
43
|
+
const count = node.children.length;
|
|
44
|
+
if (count) {
|
|
45
|
+
buffer.writeUint8(hintCommentCommon.HintCommentMarshallingMap.Children);
|
|
46
|
+
// note: we store the count, because re-construction of the array is faster if we know the length
|
|
47
|
+
buffer.writeUint8(count);
|
|
48
|
+
for (let i = 0; i < count; i += 1) {
|
|
49
|
+
hintSerializer.HintSerializer.serialize(node.children[i], buffer);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (!typeGuards.isUndefined(node.start)) {
|
|
53
|
+
buffer.writeUint8(hintCommentCommon.HintCommentMarshallingMap.Start);
|
|
54
|
+
buffer.writeUint32(node.start);
|
|
55
|
+
}
|
|
56
|
+
if (!typeGuards.isUndefined(node.end)) {
|
|
57
|
+
buffer.writeUint8(hintCommentCommon.HintCommentMarshallingMap.End);
|
|
58
|
+
buffer.writeUint32(node.end);
|
|
59
|
+
}
|
|
60
|
+
buffer.writeUint8(constants.NULL);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
exports.HintCommentSerializer = HintCommentSerializer;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* AGTree v3.0.0-alpha.1 (build date: Tue, 12 Nov 2024 16:11:58 GMT)
|
|
3
|
+
* (c) 2024 Adguard Software Ltd.
|
|
4
|
+
* Released under the MIT license
|
|
5
|
+
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
var constants = require('../../utils/constants.js');
|
|
10
|
+
var parameterListSerializer = require('../misc/parameter-list-serializer.js');
|
|
11
|
+
var valueSerializer = require('../misc/value-serializer.js');
|
|
12
|
+
var typeGuards = require('../../utils/type-guards.js');
|
|
13
|
+
var baseSerializer = require('../base-serializer.js');
|
|
14
|
+
var hintCommon = require('../../marshalling-utils/comment/hint-common.js');
|
|
15
|
+
var binaryTypeCommon = require('../../marshalling-utils/misc/binary-type-common.js');
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* `HintSerializer` is responsible for serializing AdGuard hints.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* If the hint rule is
|
|
22
|
+
* ```adblock
|
|
23
|
+
* !+ NOT_OPTIMIZED PLATFORM(windows)
|
|
24
|
+
* ```
|
|
25
|
+
* then the hints are `NOT_OPTIMIZED` and `PLATFORM(windows)`, and this
|
|
26
|
+
* class is responsible for parsing them. The rule itself is parsed by
|
|
27
|
+
* the `HintRuleParser`, which uses this class to parse single hints.
|
|
28
|
+
*/
|
|
29
|
+
class HintSerializer extends baseSerializer.BaseSerializer {
|
|
30
|
+
/**
|
|
31
|
+
* Serializes a hint node to binary format.
|
|
32
|
+
*
|
|
33
|
+
* @param node Node to serialize.
|
|
34
|
+
* @param buffer ByteBuffer for writing binary data.
|
|
35
|
+
*/
|
|
36
|
+
static serialize(node, buffer) {
|
|
37
|
+
buffer.writeUint8(binaryTypeCommon.BinaryTypeMarshallingMap.HintNode);
|
|
38
|
+
buffer.writeUint8(hintCommon.HintNodeMarshallingMap.Name);
|
|
39
|
+
valueSerializer.ValueSerializer.serialize(node.name, buffer, hintCommon.FREQUENT_HINTS_SERIALIZATION_MAP);
|
|
40
|
+
if (!typeGuards.isUndefined(node.params)) {
|
|
41
|
+
buffer.writeUint8(hintCommon.HintNodeMarshallingMap.Params);
|
|
42
|
+
parameterListSerializer.ParameterListSerializer.serialize(node.params, buffer, hintCommon.FREQUENT_PLATFORMS_SERIALIZATION_MAP);
|
|
43
|
+
}
|
|
44
|
+
if (!typeGuards.isUndefined(node.start)) {
|
|
45
|
+
buffer.writeUint8(hintCommon.HintNodeMarshallingMap.Start);
|
|
46
|
+
buffer.writeUint32(node.start);
|
|
47
|
+
}
|
|
48
|
+
if (!typeGuards.isUndefined(node.end)) {
|
|
49
|
+
buffer.writeUint8(hintCommon.HintNodeMarshallingMap.End);
|
|
50
|
+
buffer.writeUint32(node.end);
|
|
51
|
+
}
|
|
52
|
+
buffer.writeUint8(constants.NULL);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
exports.HintSerializer = HintSerializer;
|