@adguard/agtree 3.3.1 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ast-utils/clone.js +1 -1
- package/dist/ast-utils/modifiers.js +1 -1
- package/dist/ast-utils/network-rules.js +1 -1
- package/dist/ast-utils/scriptlets.js +1 -1
- package/dist/common/abp-snippet-injection-body-common.js +1 -1
- package/dist/common/agent-common.js +1 -1
- package/dist/common/ubo-selector-common.js +1 -1
- package/dist/compatibility-tables/base.js +2 -2
- package/dist/compatibility-tables/compatibility-table-data.js +1 -1
- package/dist/compatibility-tables/modifiers.js +4 -3
- package/dist/compatibility-tables/platforms.js +32 -30
- package/dist/compatibility-tables/redirects.js +2 -2
- package/dist/compatibility-tables/schemas/base.js +1 -1
- package/dist/compatibility-tables/schemas/modifier.js +1 -1
- package/dist/compatibility-tables/schemas/platform.js +57 -4
- package/dist/compatibility-tables/schemas/redirect.js +1 -1
- package/dist/compatibility-tables/schemas/resource-type.js +1 -1
- package/dist/compatibility-tables/schemas/scriptlet.js +1 -1
- package/dist/compatibility-tables/scriptlets.js +1 -1
- package/dist/compatibility-tables/utils/platform-helpers.js +290 -7
- package/dist/compatibility-tables/utils/resource-type-helpers.js +2 -2
- package/dist/compatibility-tables/utils/zod-camelcase.js +1 -1
- package/dist/converter/base-interfaces/base-converter.js +1 -1
- package/dist/converter/base-interfaces/conversion-result.js +1 -1
- package/dist/converter/base-interfaces/rule-converter-base.js +1 -1
- package/dist/converter/comment/index.js +1 -1
- package/dist/converter/cosmetic/css.js +1 -1
- package/dist/converter/cosmetic/element-hiding.js +1 -1
- package/dist/converter/cosmetic/header-removal.js +1 -1
- package/dist/converter/cosmetic/html.js +1 -1
- package/dist/converter/cosmetic/index.js +1 -1
- package/dist/converter/cosmetic/rule-modifiers/adg.js +1 -1
- package/dist/converter/cosmetic/rule-modifiers/ubo.js +9 -1
- package/dist/converter/cosmetic/scriptlet.js +8 -1
- package/dist/converter/css/index.js +2 -1
- package/dist/converter/data/css.js +1 -1
- package/dist/converter/filter-list.js +1 -1
- package/dist/converter/index.js +1 -1
- package/dist/converter/misc/network-rule-modifier.js +1 -1
- package/dist/converter/network/index.js +1 -1
- package/dist/converter/raw-filter-list.js +1 -1
- package/dist/converter/raw-rule.js +2 -1
- package/dist/converter/rule.js +1 -1
- package/dist/deserializer/base-deserializer.js +1 -1
- package/dist/deserializer/comment/agent-comment-deserializer.js +1 -1
- package/dist/deserializer/comment/agent-deserializer.js +1 -1
- package/dist/deserializer/comment/comment-rule-deserializer.js +1 -1
- package/dist/deserializer/comment/config-comment-deserializer.js +1 -1
- package/dist/deserializer/comment/hint-comment-deserializer.js +1 -1
- package/dist/deserializer/comment/hint-deserializer.js +1 -1
- package/dist/deserializer/comment/metadata-comment-deserializer.js +1 -1
- package/dist/deserializer/comment/pre-processor-comment-deserializer.js +1 -1
- package/dist/deserializer/comment/simple-comment-deserializer.js +1 -1
- package/dist/deserializer/cosmetic/cosmetic-rule-deserializer.js +1 -1
- package/dist/deserializer/cosmetic/css-injection-body-deserializer.js +1 -1
- package/dist/deserializer/cosmetic/element-hiding-body-deserializer.js +1 -1
- package/dist/deserializer/cosmetic/scriptlet-body/abp-snippet-injection-body-deserializer.js +1 -1
- package/dist/deserializer/cosmetic/scriptlet-body/adg-scriptlet-injection-body-deserializer.js +1 -1
- package/dist/deserializer/cosmetic/scriptlet-body/scriptlet-body-deserializer.js +1 -1
- package/dist/deserializer/cosmetic/scriptlet-body/ubo-scriptlet-injection-body-deserializer.js +1 -1
- package/dist/deserializer/empty-rule-deserializer.js +1 -1
- package/dist/deserializer/filterlist-deserializer.js +1 -1
- package/dist/deserializer/index.js +1 -1
- package/dist/deserializer/invalid-rule-deserializer.js +1 -1
- package/dist/deserializer/invalid-rule-error-node-deserializer.js +1 -1
- package/dist/deserializer/misc/domain-list-deserializer.js +1 -1
- package/dist/deserializer/misc/list-item-deserializer.js +1 -1
- package/dist/deserializer/misc/list-items-deserializer.js +1 -1
- package/dist/deserializer/misc/logical-expression-deserializer.js +1 -1
- package/dist/deserializer/misc/modifier-deserializer.js +1 -1
- package/dist/deserializer/misc/modifier-list-deserializer.js +1 -1
- package/dist/deserializer/misc/parameter-list-deserializer.js +1 -1
- package/dist/deserializer/misc/value-deserializer.js +1 -1
- package/dist/deserializer/network/host-rule-deserializer.js +1 -1
- package/dist/deserializer/network/hostname-list-deserializer.js +1 -1
- package/dist/deserializer/network/network-rule-deserializer.js +1 -1
- package/dist/deserializer/rule-deserializer.js +1 -1
- package/dist/deserializer/syntax-deserialization-map.js +1 -1
- package/dist/errors/adblock-syntax-error.js +1 -1
- package/dist/errors/binary-schema-mismatch-error.js +1 -1
- package/dist/errors/not-implemented-error.js +1 -1
- package/dist/errors/rule-conversion-error.js +1 -1
- package/dist/generator/base-generator.js +1 -1
- package/dist/generator/comment/agent-comment-generator.js +1 -1
- package/dist/generator/comment/agent-generator.js +1 -1
- package/dist/generator/comment/comment-rule-generator.js +1 -1
- package/dist/generator/comment/config-comment-generator.js +1 -1
- package/dist/generator/comment/hint-comment-generator.js +1 -1
- package/dist/generator/comment/hint-generator.js +1 -1
- package/dist/generator/comment/metadata-comment-generator.js +1 -1
- package/dist/generator/comment/pre-processor-comment-generator.js +1 -1
- package/dist/generator/comment/simple-comment-generator.js +1 -1
- package/dist/generator/cosmetic/body/abp-snippet-injection-body-generator.js +1 -1
- package/dist/generator/cosmetic/body/adg-scriptlet-injection-body-generator.js +1 -1
- package/dist/generator/cosmetic/body/ubo-scriptlet-injection-body-generator.js +1 -1
- package/dist/generator/cosmetic/cosmetic-rule-body-generator.js +1 -1
- package/dist/generator/cosmetic/cosmetic-rule-generator.js +1 -1
- package/dist/generator/cosmetic/cosmetic-rule-pattern-generator.js +1 -1
- package/dist/generator/css/adg-css-injection-generator.js +1 -1
- package/dist/generator/filterlist-generator.js +1 -1
- package/dist/generator/index.js +1 -1
- package/dist/generator/misc/domain-list-generator.js +1 -1
- package/dist/generator/misc/list-items-generator.js +1 -1
- package/dist/generator/misc/logical-expression-generator.js +1 -1
- package/dist/generator/misc/modifier-generator.js +1 -1
- package/dist/generator/misc/modifier-list-generator.js +1 -1
- package/dist/generator/misc/parameter-list-generator.js +1 -1
- package/dist/generator/misc/value-generator.js +1 -1
- package/dist/generator/network/host-rule-generator.js +1 -1
- package/dist/generator/network/network-rule-generator.js +1 -1
- package/dist/generator/rule-generator.js +1 -1
- package/dist/index.js +4 -4
- package/dist/marshalling-utils/comment/agent-comment-common.js +1 -1
- package/dist/marshalling-utils/comment/agent-common.js +1 -1
- package/dist/marshalling-utils/comment/config-comment-common.js +1 -1
- package/dist/marshalling-utils/comment/hint-comment-common.js +1 -1
- package/dist/marshalling-utils/comment/hint-common.js +1 -1
- package/dist/marshalling-utils/comment/metadata-comment-common.js +1 -1
- package/dist/marshalling-utils/comment/pre-processor-comment-common.js +1 -1
- package/dist/marshalling-utils/comment/simple-comment-common.js +1 -1
- package/dist/marshalling-utils/cosmetic/body/abp-snippet-injection-body-common.js +1 -1
- package/dist/marshalling-utils/cosmetic/body/adg-scriptlet-injection-body-common.js +1 -1
- package/dist/marshalling-utils/cosmetic/body/css-injection-body-common.js +1 -1
- package/dist/marshalling-utils/cosmetic/body/element-hiding-body-common.js +1 -1
- package/dist/marshalling-utils/cosmetic/body/ubo-scriptlet-injection-body-common.js +1 -1
- package/dist/marshalling-utils/cosmetic/cosmetic-rule-common.js +1 -1
- package/dist/marshalling-utils/empty-rule-common.js +1 -1
- package/dist/marshalling-utils/filter-list-common.js +1 -1
- package/dist/marshalling-utils/invalid-rule-common.js +1 -1
- package/dist/marshalling-utils/invalid-rule-error-node-common.js +1 -1
- package/dist/marshalling-utils/misc/binary-type-common.js +1 -1
- package/dist/marshalling-utils/misc/domain-list-common.js +1 -1
- package/dist/marshalling-utils/misc/host-rule-common.js +1 -1
- package/dist/marshalling-utils/misc/hostname-list-common.js +1 -1
- package/dist/marshalling-utils/misc/list-item-common.js +1 -1
- package/dist/marshalling-utils/misc/logical-expression-common.js +1 -1
- package/dist/marshalling-utils/misc/modifier-common.js +1 -1
- package/dist/marshalling-utils/misc/modifier-list-common.js +1 -1
- package/dist/marshalling-utils/misc/parameter-list-common.js +1 -1
- package/dist/marshalling-utils/misc/value-common.js +1 -1
- package/dist/marshalling-utils/network/network-rule-common.js +1 -1
- package/dist/marshalling-utils/syntax-serialization-map.js +1 -1
- package/dist/nodes/index.js +1 -1
- package/dist/package.json.js +2 -2
- package/dist/parser/base-parser.js +1 -1
- package/dist/parser/comment/agent-comment-parser.js +1 -1
- package/dist/parser/comment/agent-parser.js +1 -1
- package/dist/parser/comment/comment-parser.js +1 -1
- package/dist/parser/comment/config-comment-parser.js +1 -1
- package/dist/parser/comment/hint-comment-parser.js +1 -1
- package/dist/parser/comment/hint-parser.js +1 -1
- package/dist/parser/comment/metadata-comment-parser.js +1 -1
- package/dist/parser/comment/preprocessor-parser.js +1 -1
- package/dist/parser/comment/simple-comment-parser.js +1 -1
- package/dist/parser/cosmetic/body/abp-snippet-injection-body-parser.js +1 -1
- package/dist/parser/cosmetic/body/adg-scriptlet-injection-body-parser.js +1 -1
- package/dist/parser/cosmetic/body/ubo-scriptlet-injection-body-parser.js +1 -1
- package/dist/parser/cosmetic/cosmetic-rule-parser.js +1 -1
- package/dist/parser/css/adg-css-injection-parser.js +1 -1
- package/dist/parser/css/balancing.js +1 -1
- package/dist/parser/css/constants.js +1 -1
- package/dist/parser/css/css-token-stream.js +1 -1
- package/dist/parser/css/ubo-selector-parser.js +1 -1
- package/dist/parser/filterlist-parser.js +1 -1
- package/dist/parser/index.js +1 -1
- package/dist/parser/misc/app-list-parser.js +1 -1
- package/dist/parser/misc/domain-list-parser.js +1 -1
- package/dist/parser/misc/list-items-parser.js +1 -1
- package/dist/parser/misc/logical-expression-parser.js +1 -1
- package/dist/parser/misc/method-list-parser.js +1 -1
- package/dist/parser/misc/modifier-list.js +1 -1
- package/dist/parser/misc/modifier-parser.js +1 -1
- package/dist/parser/misc/parameter-list-parser.js +1 -1
- package/dist/parser/misc/stealth-option-list-parser.js +1 -1
- package/dist/parser/misc/ubo-parameter-list-parser.js +1 -1
- package/dist/parser/misc/value-parser.js +1 -1
- package/dist/parser/network/host-rule-parser.js +1 -1
- package/dist/parser/network/network-rule-parser.js +1 -1
- package/dist/parser/options.js +1 -1
- package/dist/parser/rule-parser.js +1 -1
- package/dist/serializer/base-serializer.js +1 -1
- package/dist/serializer/comment/agent-comment-serializer.js +1 -1
- package/dist/serializer/comment/agent-serializer.js +1 -1
- package/dist/serializer/comment/comment-rule-serializer.js +1 -1
- package/dist/serializer/comment/config-comment-serializer.js +1 -1
- package/dist/serializer/comment/hint-comment-serializer.js +1 -1
- package/dist/serializer/comment/hint-serializer.js +1 -1
- package/dist/serializer/comment/metadata-comment-serializer.js +1 -1
- package/dist/serializer/comment/pre-processor-comment-serializer.js +1 -1
- package/dist/serializer/comment/simple-comment-serializer.js +1 -1
- package/dist/serializer/cosmetic/body/abp-snippet-injection-body-serializer.js +1 -1
- package/dist/serializer/cosmetic/body/adg-scriptlet-injection-body-serializer.js +1 -1
- package/dist/serializer/cosmetic/body/scriptlet-body-serializer.js +1 -1
- package/dist/serializer/cosmetic/body/ubo-scriptlet-injection-body-serializer.js +1 -1
- package/dist/serializer/cosmetic/cosmetic-rule-serializer.js +1 -1
- package/dist/serializer/cosmetic/css-injection-body-serializer.js +1 -1
- package/dist/serializer/cosmetic/element-hiding-body-serializer.js +1 -1
- package/dist/serializer/empty-rule-serializer.js +1 -1
- package/dist/serializer/filterlist-serializer.js +1 -1
- package/dist/serializer/index.js +1 -1
- package/dist/serializer/invalid-rule-error-node-serializer.js +1 -1
- package/dist/serializer/invalid-rule-serializer.js +1 -1
- package/dist/serializer/misc/domain-list-serializer.js +1 -1
- package/dist/serializer/misc/list-item-serializer.js +1 -1
- package/dist/serializer/misc/list-items-serializer.js +1 -1
- package/dist/serializer/misc/logical-expression-serializer.js +1 -1
- package/dist/serializer/misc/modifier-list-serializer.js +1 -1
- package/dist/serializer/misc/modifier-serializer.js +1 -1
- package/dist/serializer/misc/parameter-list-serializer.js +1 -1
- package/dist/serializer/misc/value-serializer.js +1 -1
- package/dist/serializer/network/host-rule-serializer.js +1 -1
- package/dist/serializer/network/hostname-list-serializer.js +1 -1
- package/dist/serializer/network/network-rule-serializer.js +1 -1
- package/dist/serializer/rule-serializer.js +1 -1
- package/dist/types/compatibility-tables/base.d.ts +11 -11
- package/dist/types/compatibility-tables/index.d.ts +3 -2
- package/dist/types/compatibility-tables/platforms.d.ts +67 -33
- package/dist/types/compatibility-tables/redirects.d.ts +3 -3
- package/dist/types/compatibility-tables/schemas/base.d.ts +1 -1
- package/dist/types/compatibility-tables/schemas/platform.d.ts +16 -5
- package/dist/types/compatibility-tables/utils/platform-helpers.d.ts +112 -3
- package/dist/types/compatibility-tables/utils/resource-type-helpers.d.ts +3 -3
- package/dist/types/index.d.ts +2 -2
- package/dist/types/utils/adblockers.d.ts +28 -0
- package/dist/types/utils/bit-count.d.ts +21 -0
- package/dist/types/utils/index.d.ts +2 -0
- package/dist/types/utils/noop-modifier.d.ts +8 -0
- package/dist/types/utils/storage-interface.d.ts +1 -1
- package/dist/types/utils/types.d.ts +21 -0
- package/dist/types/validator/constants.d.ts +0 -9
- package/dist/types/validator/helpers.d.ts +0 -8
- package/dist/types/validator/index.d.ts +10 -9
- package/dist/utils/adblockers.js +28 -5
- package/dist/utils/binary-schema-version.js +1 -1
- package/dist/utils/bit-count.js +37 -0
- package/dist/utils/byte-buffer.js +1 -1
- package/dist/utils/categorizer.js +1 -1
- package/dist/utils/clone.js +1 -1
- package/dist/utils/constants.js +1 -1
- package/dist/utils/cosmetic-rule-separator.js +1 -1
- package/dist/utils/deep-freeze.js +1 -1
- package/dist/utils/domain.js +1 -1
- package/dist/utils/error.js +1 -1
- package/dist/utils/index.js +2 -1
- package/dist/utils/input-byte-buffer.js +1 -1
- package/dist/utils/is-chromium.js +1 -1
- package/dist/utils/logical-expression.js +1 -1
- package/dist/utils/multi-value-map.js +1 -1
- package/dist/utils/noop-modifier.js +29 -0
- package/dist/utils/output-byte-buffer.js +1 -1
- package/dist/utils/position-provider.js +1 -1
- package/dist/utils/quotes.js +1 -1
- package/dist/utils/regexp.js +1 -1
- package/dist/utils/string.js +1 -1
- package/dist/utils/text-decoder-polyfill.js +1 -1
- package/dist/utils/text-encoder-polyfill.js +1 -1
- package/dist/utils/type-guards.js +1 -1
- package/dist/validator/constants.js +3 -13
- package/dist/validator/helpers.js +2 -13
- package/dist/validator/index.js +44 -48
- package/dist/validator/value.js +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/ast-utils/clone.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -181,7 +181,7 @@ class CompatibilityTableBase {
|
|
|
181
181
|
* Returns the first compatibility data record for name and specified platform.
|
|
182
182
|
*
|
|
183
183
|
* @param name Compatibility data name.
|
|
184
|
-
* @param platform Specific or
|
|
184
|
+
* @param platform Specific, generic, or combined platform.
|
|
185
185
|
*
|
|
186
186
|
* @returns First found compatibility data record or `null` if not found.
|
|
187
187
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
|
7
7
|
import { CompatibilityTableBase } from './base.js';
|
|
8
8
|
import { modifiersCompatibilityTableData } from './compatibility-table-data.js';
|
|
9
|
-
import { UNDERSCORE
|
|
9
|
+
import { UNDERSCORE } from '../utils/constants.js';
|
|
10
10
|
import { deepFreeze } from '../utils/deep-freeze.js';
|
|
11
|
+
import { isValidNoopModifier } from '../utils/noop-modifier.js';
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* @file Compatibility tables for modifiers.
|
|
@@ -22,7 +23,7 @@ import { deepFreeze } from '../utils/deep-freeze.js';
|
|
|
22
23
|
*/
|
|
23
24
|
const noopModifierNameNormalizer = (name) => {
|
|
24
25
|
if (name.startsWith(UNDERSCORE)) {
|
|
25
|
-
if (name
|
|
26
|
+
if (isValidNoopModifier(name)) {
|
|
26
27
|
// in compatibility tables, we just store '_', so we need to reduce the number of underscores to 1
|
|
27
28
|
// before checking the existence of the noop modifier
|
|
28
29
|
return UNDERSCORE;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -15,25 +15,26 @@
|
|
|
15
15
|
/**
|
|
16
16
|
* List of specific platforms.
|
|
17
17
|
*/
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
18
19
|
const SpecificPlatform = {
|
|
19
20
|
AdgOsWindows: 1,
|
|
20
|
-
AdgOsMac: 1 << 1,
|
|
21
|
-
AdgOsAndroid: 1 << 2,
|
|
22
|
-
AdgExtChrome: 1 << 3,
|
|
23
|
-
AdgExtOpera: 1 << 4,
|
|
24
|
-
AdgExtEdge: 1 << 5,
|
|
25
|
-
AdgExtFirefox: 1 << 6,
|
|
26
|
-
AdgCbAndroid: 1 << 7,
|
|
27
|
-
AdgCbIos: 1 << 8,
|
|
28
|
-
AdgCbSafari: 1 << 9,
|
|
29
|
-
UboExtChrome: 1 << 10,
|
|
30
|
-
UboExtOpera: 1 << 11,
|
|
31
|
-
UboExtEdge: 1 << 12,
|
|
32
|
-
UboExtFirefox: 1 << 13,
|
|
33
|
-
AbpExtChrome: 1 << 14,
|
|
34
|
-
AbpExtOpera: 1 << 15,
|
|
35
|
-
AbpExtEdge: 1 << 16,
|
|
36
|
-
AbpExtFirefox: 1 << 17,
|
|
21
|
+
AdgOsMac: (1 << 1),
|
|
22
|
+
AdgOsAndroid: (1 << 2),
|
|
23
|
+
AdgExtChrome: (1 << 3),
|
|
24
|
+
AdgExtOpera: (1 << 4),
|
|
25
|
+
AdgExtEdge: (1 << 5),
|
|
26
|
+
AdgExtFirefox: (1 << 6),
|
|
27
|
+
AdgCbAndroid: (1 << 7),
|
|
28
|
+
AdgCbIos: (1 << 8),
|
|
29
|
+
AdgCbSafari: (1 << 9),
|
|
30
|
+
UboExtChrome: (1 << 10),
|
|
31
|
+
UboExtOpera: (1 << 11),
|
|
32
|
+
UboExtEdge: (1 << 12),
|
|
33
|
+
UboExtFirefox: (1 << 13),
|
|
34
|
+
AbpExtChrome: (1 << 14),
|
|
35
|
+
AbpExtOpera: (1 << 15),
|
|
36
|
+
AbpExtEdge: (1 << 16),
|
|
37
|
+
AbpExtFirefox: (1 << 17),
|
|
37
38
|
};
|
|
38
39
|
const AdgOsAny = SpecificPlatform.AdgOsWindows
|
|
39
40
|
| SpecificPlatform.AdgOsMac
|
|
@@ -58,19 +59,20 @@ const Any = AdgAny | UboAny | AbpAny;
|
|
|
58
59
|
/**
|
|
59
60
|
* List of generic platforms (combinations of specific platforms).
|
|
60
61
|
*/
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
61
63
|
const GenericPlatform = {
|
|
62
|
-
AdgOsAny,
|
|
63
|
-
AdgSafariAny,
|
|
64
|
-
AdgExtChromium,
|
|
65
|
-
AdgExtAny,
|
|
66
|
-
AdgAny,
|
|
67
|
-
UboExtChromium,
|
|
68
|
-
UboExtAny,
|
|
69
|
-
UboAny,
|
|
70
|
-
AbpExtChromium,
|
|
71
|
-
AbpExtAny,
|
|
72
|
-
AbpAny,
|
|
73
|
-
Any,
|
|
64
|
+
AdgOsAny: AdgOsAny,
|
|
65
|
+
AdgSafariAny: AdgSafariAny,
|
|
66
|
+
AdgExtChromium: AdgExtChromium,
|
|
67
|
+
AdgExtAny: AdgExtAny,
|
|
68
|
+
AdgAny: AdgAny,
|
|
69
|
+
UboExtChromium: UboExtChromium,
|
|
70
|
+
UboExtAny: UboExtAny,
|
|
71
|
+
UboAny: UboAny,
|
|
72
|
+
AbpExtChromium: AbpExtChromium,
|
|
73
|
+
AbpExtAny: AbpExtAny,
|
|
74
|
+
AbpAny: AbpAny,
|
|
75
|
+
Any: Any,
|
|
74
76
|
};
|
|
75
77
|
|
|
76
78
|
export { GenericPlatform, SpecificPlatform };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -66,7 +66,7 @@ class RedirectsCompatibilityTable extends CompatibilityTableBase {
|
|
|
66
66
|
* based on the `resourceTypes` field.
|
|
67
67
|
*
|
|
68
68
|
* @param redirect Redirect name or redirect data.
|
|
69
|
-
* @param platform Platform to get the modifiers for.
|
|
69
|
+
* @param platform Platform to get the modifiers for (can be specific, generic, or combined platforms).
|
|
70
70
|
*
|
|
71
71
|
* @returns Set of resource type modifiers or an empty set if the redirect is not found or has no resource types.
|
|
72
72
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
6
6
|
*/
|
|
7
7
|
import zod from 'zod';
|
|
8
|
-
import { SPECIFIC_PLATFORM_MAP, GENERIC_PLATFORM_MAP } from '../utils/platform-helpers.js';
|
|
8
|
+
import { SPECIFIC_PLATFORM_MAP, GENERIC_PLATFORM_MAP, SPECIFIC_PLATFORM_MAP_REVERSE } from '../utils/platform-helpers.js';
|
|
9
9
|
import { isUndefined } from '../../utils/type-guards.js';
|
|
10
10
|
|
|
11
11
|
/* eslint-disable no-bitwise */
|
|
@@ -27,7 +27,7 @@ const PLATFORM_NEGATION = '~';
|
|
|
27
27
|
*
|
|
28
28
|
* @param rawPlatforms Raw platform string, e.g. 'adg_safari_any|adg_os_any'.
|
|
29
29
|
*
|
|
30
|
-
* @returns Platform bitmask.
|
|
30
|
+
* @returns Platform bitmask (can be specific, generic, or combined platforms).
|
|
31
31
|
*/
|
|
32
32
|
const parseRawPlatforms = (rawPlatforms) => {
|
|
33
33
|
// e.g. 'adg_safari_any|adg_os_any'
|
|
@@ -58,6 +58,59 @@ const parseRawPlatforms = (rawPlatforms) => {
|
|
|
58
58
|
}
|
|
59
59
|
return result;
|
|
60
60
|
};
|
|
61
|
+
/**
|
|
62
|
+
* Converts a platform bitmask back to a string representation.
|
|
63
|
+
* Prefers generic platforms over specific platforms where possible.
|
|
64
|
+
*
|
|
65
|
+
* @param bitmask Platform bitmask (can be specific, generic, or combined platforms).
|
|
66
|
+
*
|
|
67
|
+
* @returns Platform string, e.g. 'adg_safari_any|adg_os_any' or 'adg_os_windows|adg_ext_chrome'.
|
|
68
|
+
* @throws Error if the bitmask is 0 or contains unknown platforms.
|
|
69
|
+
*/
|
|
70
|
+
const stringifyPlatforms = (bitmask) => {
|
|
71
|
+
if (bitmask === 0) {
|
|
72
|
+
throw new Error('Invalid bitmask: 0');
|
|
73
|
+
}
|
|
74
|
+
// First, try to find an exact match in generic platforms
|
|
75
|
+
for (const [name, value] of GENERIC_PLATFORM_MAP.entries()) {
|
|
76
|
+
if (value === bitmask) {
|
|
77
|
+
return name;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Check if the bitmask can be represented as a combination of generic platforms
|
|
81
|
+
// Try to find the largest generic platforms that fit
|
|
82
|
+
const platforms = [];
|
|
83
|
+
let remaining = bitmask;
|
|
84
|
+
// Sort generic platforms by value (descending) to prefer larger combinations
|
|
85
|
+
const sortedGenericPlatforms = [...GENERIC_PLATFORM_MAP.entries()].sort((a, b) => b[1] - a[1]);
|
|
86
|
+
for (const [name, value] of sortedGenericPlatforms) {
|
|
87
|
+
// Check if this generic platform is fully contained in the remaining bitmask
|
|
88
|
+
if ((remaining & value) === value) {
|
|
89
|
+
platforms.push(name);
|
|
90
|
+
remaining &= ~value;
|
|
91
|
+
if (remaining === 0) {
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// If we still have remaining bits, add specific platforms
|
|
97
|
+
if (remaining !== 0) {
|
|
98
|
+
for (const [value, name] of SPECIFIC_PLATFORM_MAP_REVERSE.entries()) {
|
|
99
|
+
if (remaining & value) {
|
|
100
|
+
platforms.push(name);
|
|
101
|
+
remaining &= ~value;
|
|
102
|
+
if (remaining === 0) {
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// If there are still remaining bits, the bitmask contains unknown platforms
|
|
109
|
+
if (remaining !== 0) {
|
|
110
|
+
throw new Error(`Unknown platform bits in bitmask: ${remaining}`);
|
|
111
|
+
}
|
|
112
|
+
return platforms.join(PLATFORM_SEPARATOR);
|
|
113
|
+
};
|
|
61
114
|
/**
|
|
62
115
|
* Platform schema.
|
|
63
116
|
*/
|
|
@@ -66,4 +119,4 @@ zod
|
|
|
66
119
|
.min(1)
|
|
67
120
|
.transform((value) => parseRawPlatforms(value));
|
|
68
121
|
|
|
69
|
-
export { parseRawPlatforms };
|
|
122
|
+
export { PLATFORM_NEGATION, PLATFORM_SEPARATOR, parseRawPlatforms, stringifyPlatforms };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* AGTree v3.
|
|
2
|
+
* AGTree v3.4.0 (build date: Fri, 28 Nov 2025 09:46:33 GMT)
|
|
3
3
|
* (c) 2025 Adguard Software Ltd.
|
|
4
4
|
* Released under the MIT license
|
|
5
5
|
* https://github.com/AdguardTeam/tsurlfilter/tree/master/packages/agtree#readme
|