@adguard/agtree 3.3.0 → 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 +11 -7
- 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 +2 -1
- package/dist/converter/cosmetic/scriptlet.js +1 -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
|
@@ -1,10 +1,12 @@
|
|
|
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 { SpecificPlatform, GenericPlatform } from '../platforms.js';
|
|
8
|
+
import { AdblockProduct } from '../../utils/adblockers.js';
|
|
9
|
+
import { getBitCount } from '../../utils/bit-count.js';
|
|
8
10
|
|
|
9
11
|
/* eslint-disable no-bitwise */
|
|
10
12
|
/**
|
|
@@ -56,7 +58,16 @@ const GENERIC_PLATFORM_MAP = new Map([
|
|
|
56
58
|
['abp_any', GenericPlatform.AbpAny],
|
|
57
59
|
['any', GenericPlatform.Any],
|
|
58
60
|
]);
|
|
59
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Map of products to their platform name prefixes.
|
|
63
|
+
* Used for filtering generic platforms by product.
|
|
64
|
+
*/
|
|
65
|
+
const PRODUCT_PREFIX_MAP = {
|
|
66
|
+
[AdblockProduct.Adg]: 'Adg',
|
|
67
|
+
[AdblockProduct.Ubo]: 'Ubo',
|
|
68
|
+
[AdblockProduct.Abp]: 'Abp',
|
|
69
|
+
};
|
|
70
|
+
const SPECIFIC_PLATFORM_HUMAN_READABLE_NAME_MAP = new Map([
|
|
60
71
|
[SpecificPlatform.AdgOsWindows, 'AdGuard for Windows'],
|
|
61
72
|
[SpecificPlatform.AdgOsMac, 'AdGuard for Mac'],
|
|
62
73
|
[SpecificPlatform.AdgOsAndroid, 'AdGuard for Android'],
|
|
@@ -75,6 +86,8 @@ new Map([
|
|
|
75
86
|
[SpecificPlatform.AbpExtOpera, 'AdBlock Plus for Opera'],
|
|
76
87
|
[SpecificPlatform.AbpExtEdge, 'AdBlock Plus for Edge'],
|
|
77
88
|
[SpecificPlatform.AbpExtFirefox, 'AdBlock Plus for Firefox'],
|
|
89
|
+
]);
|
|
90
|
+
const GENERIC_PLATFORM_HUMAN_READABLE_NAME_MAP = new Map([
|
|
78
91
|
[GenericPlatform.AdgOsAny, 'AdGuard for any OS'],
|
|
79
92
|
[GenericPlatform.AdgSafariAny, 'AdGuard for any Safari'],
|
|
80
93
|
[GenericPlatform.AdgExtChromium, 'AdGuard for any Chromium-based extension'],
|
|
@@ -89,15 +102,207 @@ new Map([
|
|
|
89
102
|
[GenericPlatform.Any, 'Any platform'],
|
|
90
103
|
]);
|
|
91
104
|
/**
|
|
92
|
-
*
|
|
105
|
+
* Generic platforms for each product, ordered from most specific to least specific.
|
|
106
|
+
* Computed lazily on first access.
|
|
107
|
+
*/
|
|
108
|
+
let PRODUCT_GENERIC_PLATFORMS = null;
|
|
109
|
+
/**
|
|
110
|
+
* Map of products to their specific platforms.
|
|
111
|
+
* Cached after first call to avoid recomputing.
|
|
112
|
+
*/
|
|
113
|
+
let PRODUCT_SPECIFIC_PLATFORMS = null;
|
|
114
|
+
/**
|
|
115
|
+
* Initializes and returns the product generic platforms map.
|
|
116
|
+
* Filters all generic platforms by product prefix and sorts by specificity (fewer bits = more specific).
|
|
117
|
+
*
|
|
118
|
+
* @returns Map of products to their generic platforms, ordered from most to least specific.
|
|
119
|
+
*/
|
|
120
|
+
const getProductGenericPlatforms = () => {
|
|
121
|
+
if (PRODUCT_GENERIC_PLATFORMS !== null) {
|
|
122
|
+
return PRODUCT_GENERIC_PLATFORMS;
|
|
123
|
+
}
|
|
124
|
+
const result = {
|
|
125
|
+
[AdblockProduct.Adg]: [],
|
|
126
|
+
[AdblockProduct.Ubo]: [],
|
|
127
|
+
[AdblockProduct.Abp]: [],
|
|
128
|
+
};
|
|
129
|
+
// Iterate over all generic platforms and group by product prefix
|
|
130
|
+
const genericPlatformEntries = Object.entries(GenericPlatform);
|
|
131
|
+
for (const [name, platform] of genericPlatformEntries) {
|
|
132
|
+
// Check which product this platform belongs to
|
|
133
|
+
for (const [product, prefix] of Object.entries(PRODUCT_PREFIX_MAP)) {
|
|
134
|
+
if (name.startsWith(prefix)) {
|
|
135
|
+
result[product].push(platform);
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Sort each product's platforms by specificity (fewer bits set = more specific)
|
|
141
|
+
for (const product of Object.keys(result)) {
|
|
142
|
+
result[product].sort((a, b) => {
|
|
143
|
+
const bitsA = getBitCount(a);
|
|
144
|
+
const bitsB = getBitCount(b);
|
|
145
|
+
return bitsA - bitsB; // Ascending: fewer bits first (more specific)
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
// Cache the result as readonly
|
|
149
|
+
PRODUCT_GENERIC_PLATFORMS = result;
|
|
150
|
+
return PRODUCT_GENERIC_PLATFORMS;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Check if the platform is a generic platform (or a combination of platforms).
|
|
93
154
|
*
|
|
94
155
|
* @param platform Platform to check.
|
|
95
156
|
*
|
|
96
|
-
* @returns True if the platform is a generic platform, false
|
|
157
|
+
* @returns True if the platform is a generic platform or combined platforms, false if it's a specific platform.
|
|
97
158
|
*/
|
|
98
159
|
const isGenericPlatform = (platform) => {
|
|
99
|
-
// if more than one bit is set, it's a generic platform
|
|
100
|
-
|
|
160
|
+
// if more than one bit is set, it's a generic platform or combined platforms
|
|
161
|
+
// Cast to number for bitwise operations
|
|
162
|
+
const num = platform;
|
|
163
|
+
return !!(num & (num - 1));
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* Check if the platform has multiple products specified.
|
|
167
|
+
* Multiple products means at least 2 of: AdgAny, AbpAny, UboAny.
|
|
168
|
+
*
|
|
169
|
+
* @param platform Platform to check.
|
|
170
|
+
*
|
|
171
|
+
* @returns True if at least 2 products are specified, false otherwise.
|
|
172
|
+
*/
|
|
173
|
+
const hasPlatformMultipleProducts = (platform) => {
|
|
174
|
+
const hasAdg = !!(platform & GenericPlatform.AdgAny);
|
|
175
|
+
const hasAbp = !!(platform & GenericPlatform.AbpAny);
|
|
176
|
+
const hasUbo = !!(platform & GenericPlatform.UboAny);
|
|
177
|
+
return ((hasAdg && hasAbp)
|
|
178
|
+
|| (hasAdg && hasUbo)
|
|
179
|
+
|| (hasAbp && hasUbo));
|
|
180
|
+
};
|
|
181
|
+
/**
|
|
182
|
+
* Converts a platform to its corresponding adblock products.
|
|
183
|
+
*
|
|
184
|
+
* Note: This conversion is less specific than the platform itself, as it only returns
|
|
185
|
+
* which products (AdGuard/uBlock/Abp) are present, dropping specific platform information
|
|
186
|
+
* (e.g., Windows vs Chrome extension).
|
|
187
|
+
*
|
|
188
|
+
* @param platform Platform to convert.
|
|
189
|
+
*
|
|
190
|
+
* @returns Array of AdblockProduct values:
|
|
191
|
+
* - Empty array `[]` if platform is 0 or no products are found
|
|
192
|
+
* - Array of specific products based on which products are present
|
|
193
|
+
* (e.g., `['AdGuard', 'UblockOrigin']` if both AdGuard and uBlock Origin are specified)
|
|
194
|
+
* - `['AdGuard', 'UblockOrigin', 'AdblockPlus']` for GenericPlatform.Any
|
|
195
|
+
*/
|
|
196
|
+
const platformToAdblockProduct = (platform) => {
|
|
197
|
+
const products = [];
|
|
198
|
+
if (platform & GenericPlatform.AdgAny) {
|
|
199
|
+
products.push(AdblockProduct.Adg);
|
|
200
|
+
}
|
|
201
|
+
if (platform & GenericPlatform.UboAny) {
|
|
202
|
+
products.push(AdblockProduct.Ubo);
|
|
203
|
+
}
|
|
204
|
+
if (platform & GenericPlatform.AbpAny) {
|
|
205
|
+
products.push(AdblockProduct.Abp);
|
|
206
|
+
}
|
|
207
|
+
return products;
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* Optimizes platform representation by combining specific platforms into generic ones.
|
|
211
|
+
* Returns the minimal set of platforms needed to represent the input.
|
|
212
|
+
*
|
|
213
|
+
* @param extractedPlatforms Platform bits for a single product.
|
|
214
|
+
* @param productGenericPlatforms Array of generic platforms for this product, ordered by specificity.
|
|
215
|
+
*
|
|
216
|
+
* @returns Optimized array of platforms.
|
|
217
|
+
*/
|
|
218
|
+
const optimizePlatformRepresentation = (extractedPlatforms, productGenericPlatforms) => {
|
|
219
|
+
if (extractedPlatforms === 0) {
|
|
220
|
+
return [];
|
|
221
|
+
}
|
|
222
|
+
// Check if the input exactly matches any single generic platform (already optimal)
|
|
223
|
+
for (const genericPlatform of productGenericPlatforms) {
|
|
224
|
+
if (extractedPlatforms === genericPlatform) {
|
|
225
|
+
return [genericPlatform];
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
const result = [];
|
|
229
|
+
let remainingBits = extractedPlatforms;
|
|
230
|
+
// Try to match generic platforms from most specific to least specific
|
|
231
|
+
for (const genericPlatform of productGenericPlatforms) {
|
|
232
|
+
const genericBits = genericPlatform;
|
|
233
|
+
// Check if all bits of this generic platform are present in remaining bits
|
|
234
|
+
if ((remainingBits & genericBits) === genericBits) {
|
|
235
|
+
result.push(genericPlatform);
|
|
236
|
+
// Remove the matched bits from remaining
|
|
237
|
+
remainingBits &= ~genericBits;
|
|
238
|
+
// If no bits remain, we're done
|
|
239
|
+
if (remainingBits === 0) {
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// If there are remaining bits, we need to add them as specific platforms
|
|
245
|
+
// This shouldn't normally happen if our generic platforms cover all combinations,
|
|
246
|
+
// but we handle it for safety
|
|
247
|
+
if (remainingBits !== 0) {
|
|
248
|
+
result.push(remainingBits);
|
|
249
|
+
}
|
|
250
|
+
return result;
|
|
251
|
+
};
|
|
252
|
+
/**
|
|
253
|
+
* Splits a platform by products, returning a record mapping each product to its platforms.
|
|
254
|
+
* This is useful for iterating over each product separately when validating or processing.
|
|
255
|
+
*
|
|
256
|
+
* The function optimizes the platform representation by combining specific platforms
|
|
257
|
+
* into generic ones when possible, returning the minimal set needed.
|
|
258
|
+
*
|
|
259
|
+
* @param platform Platform to split (can be single or multi-product).
|
|
260
|
+
*
|
|
261
|
+
* @returns Record mapping products to optimized platform arrays:
|
|
262
|
+
* - Empty object `{}` if platform is 0 or no products are found
|
|
263
|
+
* - Object with single product key for single-product platforms
|
|
264
|
+
* - Object with multiple product keys for multi-product platforms
|
|
265
|
+
* - Each array contains the minimal representation using generic platforms where possible
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* ```typescript
|
|
269
|
+
* // Multi-product platform
|
|
270
|
+
* const platforms = getPlatformsByProduct(GenericPlatform.AdgAny | GenericPlatform.UboAny);
|
|
271
|
+
* // Returns: {
|
|
272
|
+
* // 'AdGuard': [GenericPlatform.AdgAny],
|
|
273
|
+
* // 'UblockOrigin': [GenericPlatform.UboAny]
|
|
274
|
+
* // }
|
|
275
|
+
*
|
|
276
|
+
* // Mixed specific and generic
|
|
277
|
+
* const mixed = SpecificPlatform.AdgExtChrome | SpecificPlatform.AdgExtFirefox | SpecificPlatform.AdgOsWindows;
|
|
278
|
+
* const result = getPlatformsByProduct(mixed);
|
|
279
|
+
* // Might return: { 'AdGuard': [GenericPlatform.AdgExtChromium, SpecificPlatform.AdgOsWindows] }
|
|
280
|
+
*
|
|
281
|
+
* // Iterate and validate for each product
|
|
282
|
+
* for (const [product, platformList] of Object.entries(platforms)) {
|
|
283
|
+
* for (const p of platformList) {
|
|
284
|
+
* const result = modifierValidator.validate(p, modifier);
|
|
285
|
+
* console.log(`${product}: ${result.valid}`);
|
|
286
|
+
* }
|
|
287
|
+
* }
|
|
288
|
+
* ```
|
|
289
|
+
*/
|
|
290
|
+
const getPlatformsByProduct = (platform) => {
|
|
291
|
+
const result = {};
|
|
292
|
+
const productPlatforms = getProductGenericPlatforms();
|
|
293
|
+
if (platform & GenericPlatform.AdgAny) {
|
|
294
|
+
const extracted = (platform & GenericPlatform.AdgAny);
|
|
295
|
+
result[AdblockProduct.Adg] = optimizePlatformRepresentation(extracted, productPlatforms[AdblockProduct.Adg]);
|
|
296
|
+
}
|
|
297
|
+
if (platform & GenericPlatform.UboAny) {
|
|
298
|
+
const extracted = (platform & GenericPlatform.UboAny);
|
|
299
|
+
result[AdblockProduct.Ubo] = optimizePlatformRepresentation(extracted, productPlatforms[AdblockProduct.Ubo]);
|
|
300
|
+
}
|
|
301
|
+
if (platform & GenericPlatform.AbpAny) {
|
|
302
|
+
const extracted = (platform & GenericPlatform.AbpAny);
|
|
303
|
+
result[AdblockProduct.Abp] = optimizePlatformRepresentation(extracted, productPlatforms[AdblockProduct.Abp]);
|
|
304
|
+
}
|
|
305
|
+
return result;
|
|
101
306
|
};
|
|
102
307
|
/**
|
|
103
308
|
* Returns the platform enum value for the given platform string name.
|
|
@@ -133,5 +338,83 @@ const getSpecificPlatformName = (platform) => {
|
|
|
133
338
|
}
|
|
134
339
|
return specificPlatform;
|
|
135
340
|
};
|
|
341
|
+
/**
|
|
342
|
+
* Returns the human-readable platform name for the given platform enum value.
|
|
343
|
+
*
|
|
344
|
+
* @param platform Platform enum value.
|
|
345
|
+
*
|
|
346
|
+
* @returns Human-readable platform name, e.g., 'AdGuard for Windows'.
|
|
347
|
+
*
|
|
348
|
+
* @throws Error if the platform is unknown.
|
|
349
|
+
*/
|
|
350
|
+
const getHumanReadablePlatformName = (platform) => {
|
|
351
|
+
// Try specific platform first
|
|
352
|
+
const specificPlatform = SPECIFIC_PLATFORM_HUMAN_READABLE_NAME_MAP.get(platform);
|
|
353
|
+
if (specificPlatform) {
|
|
354
|
+
return specificPlatform;
|
|
355
|
+
}
|
|
356
|
+
// Then try generic platform
|
|
357
|
+
const genericPlatform = GENERIC_PLATFORM_HUMAN_READABLE_NAME_MAP.get(platform);
|
|
358
|
+
if (genericPlatform) {
|
|
359
|
+
return genericPlatform;
|
|
360
|
+
}
|
|
361
|
+
throw new Error(`Unknown platform: ${platform}`);
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* Gets all specific platforms for a given AdblockProduct.
|
|
365
|
+
* Results are cached after the first call.
|
|
366
|
+
*
|
|
367
|
+
* @param product AdblockProduct to get specific platforms for.
|
|
368
|
+
*
|
|
369
|
+
* @returns Array of all specific platforms for the given product.
|
|
370
|
+
*
|
|
371
|
+
* @example
|
|
372
|
+
* ```typescript
|
|
373
|
+
* const adgPlatforms = getProductSpecificPlatforms(AdblockProduct.Adg);
|
|
374
|
+
* // Returns: [AdgOsWindows, AdgOsMac, AdgOsAndroid, AdgExtChrome, ...]
|
|
375
|
+
* ```
|
|
376
|
+
*/
|
|
377
|
+
const getProductSpecificPlatforms = (product) => {
|
|
378
|
+
// Initialize cache if needed
|
|
379
|
+
if (PRODUCT_SPECIFIC_PLATFORMS === null) {
|
|
380
|
+
const result = {
|
|
381
|
+
[AdblockProduct.Adg]: [],
|
|
382
|
+
[AdblockProduct.Ubo]: [],
|
|
383
|
+
[AdblockProduct.Abp]: [],
|
|
384
|
+
};
|
|
385
|
+
// Iterate over all specific platforms and group by product prefix
|
|
386
|
+
const specificPlatformEntries = Object.entries(SpecificPlatform);
|
|
387
|
+
for (const [name, platform] of specificPlatformEntries) {
|
|
388
|
+
// Check which product this platform belongs to
|
|
389
|
+
for (const [prod, prefix] of Object.entries(PRODUCT_PREFIX_MAP)) {
|
|
390
|
+
if (name.startsWith(prefix)) {
|
|
391
|
+
result[prod].push(platform);
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
// Cache the result as readonly
|
|
397
|
+
PRODUCT_SPECIFIC_PLATFORMS = result;
|
|
398
|
+
}
|
|
399
|
+
return PRODUCT_SPECIFIC_PLATFORMS[product];
|
|
400
|
+
};
|
|
401
|
+
/**
|
|
402
|
+
* Gets all available platform names from the platform maps.
|
|
403
|
+
*
|
|
404
|
+
* @returns Object containing arrays of all specific and generic platform names.
|
|
405
|
+
*
|
|
406
|
+
* @example
|
|
407
|
+
* ```typescript
|
|
408
|
+
* const { specificPlatformNames, genericPlatformNames } = getAllPlatformNames();
|
|
409
|
+
* // specificPlatformNames: ['adg_os_windows', 'adg_os_mac', 'adg_os_android', ...]
|
|
410
|
+
* // genericPlatformNames: ['adg_os_any', 'adg_safari_any', 'adg_ext_chromium', ...]
|
|
411
|
+
* ```
|
|
412
|
+
*/
|
|
413
|
+
const getAllPlatformNames = () => {
|
|
414
|
+
return {
|
|
415
|
+
specificPlatformNames: Array.from(SPECIFIC_PLATFORM_MAP.keys()),
|
|
416
|
+
genericPlatformNames: Array.from(GENERIC_PLATFORM_MAP.keys()),
|
|
417
|
+
};
|
|
418
|
+
};
|
|
136
419
|
|
|
137
|
-
export { GENERIC_PLATFORM_MAP, SPECIFIC_PLATFORM_MAP, SPECIFIC_PLATFORM_MAP_REVERSE, getPlatformId, getSpecificPlatformName, isGenericPlatform };
|
|
420
|
+
export { GENERIC_PLATFORM_MAP, SPECIFIC_PLATFORM_MAP, SPECIFIC_PLATFORM_MAP_REVERSE, getAllPlatformNames, getHumanReadablePlatformName, getPlatformId, getPlatformsByProduct, getProductGenericPlatforms, getProductSpecificPlatforms, getSpecificPlatformName, hasPlatformMultipleProducts, isGenericPlatform, platformToAdblockProduct };
|
|
@@ -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
|
|
@@ -31,7 +31,7 @@ const RESOURCE_TYPE_MODIFIER_MAP = Object.freeze({
|
|
|
31
31
|
* Gets the adblock modifier name for the given resource type.
|
|
32
32
|
*
|
|
33
33
|
* @param resourceType Resource type to get the modifier name for.
|
|
34
|
-
* @param platform Platform to get the modifier for.
|
|
34
|
+
* @param platform Platform to get the modifier for (can be specific, generic, or combined platforms).
|
|
35
35
|
*
|
|
36
36
|
* @returns A string containing the adblock modifier name for the given resource type
|
|
37
37
|
* or `null` if the modifier could not be found.
|
|
@@ -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
|
|
@@ -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
|
|
@@ -12,6 +12,7 @@ import { StringUtils } from '../../../utils/string.js';
|
|
|
12
12
|
import { MultiValueMap } from '../../../utils/multi-value-map.js';
|
|
13
13
|
import { clone } from '../../../utils/clone.js';
|
|
14
14
|
import { createConversionResult } from '../../base-interfaces/conversion-result.js';
|
|
15
|
+
import '../../../utils/adblockers.js';
|
|
15
16
|
import 'json5';
|
|
16
17
|
import 'sprintf-js';
|
|
17
18
|
import '@adguard/css-tokenizer';
|
|
@@ -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
|
|
@@ -11,6 +11,7 @@ import { LEGACY_EXT_CSS_ATTRIBUTE_PREFIX, ABP_EXT_CSS_PREFIX } from '../data/css
|
|
|
11
11
|
import { BaseConverter } from '../base-interfaces/base-converter.js';
|
|
12
12
|
import { createConversionResult } from '../base-interfaces/conversion-result.js';
|
|
13
13
|
import { CssTokenStream } from '../../parser/css/css-token-stream.js';
|
|
14
|
+
import '../../utils/adblockers.js';
|
|
14
15
|
import 'tldts';
|
|
15
16
|
import { QuoteUtils } from '../../utils/quotes.js';
|
|
16
17
|
import 'json5';
|
|
@@ -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
|
package/dist/converter/index.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
|
|
@@ -9,6 +9,7 @@ import { RuleParser } from '../parser/rule-parser.js';
|
|
|
9
9
|
import { RuleConverter } from './rule.js';
|
|
10
10
|
import { BaseConverter } from './base-interfaces/base-converter.js';
|
|
11
11
|
import { RuleGenerator } from '../generator/rule-generator.js';
|
|
12
|
+
import '../utils/adblockers.js';
|
|
12
13
|
import '@adguard/css-tokenizer';
|
|
13
14
|
import 'sprintf-js';
|
|
14
15
|
import '../parser/css/balancing.js';
|
package/dist/converter/rule.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
|
|
@@ -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
|