@adguard/filters-compiler 3.3.0-beta.1 → 3.3.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/index.cjs
CHANGED
|
@@ -17,7 +17,8 @@ var util = require('util');
|
|
|
17
17
|
var module$1 = require('module');
|
|
18
18
|
var jsdom = require('jsdom');
|
|
19
19
|
var crypto = require('crypto');
|
|
20
|
-
var
|
|
20
|
+
var dateFns = require('date-fns');
|
|
21
|
+
var utc = require('@date-fns/utc');
|
|
21
22
|
var fs$1 = require('fs/promises');
|
|
22
23
|
var tldts = require('tldts');
|
|
23
24
|
var Ajv = require('ajv');
|
|
@@ -1604,7 +1605,7 @@ const RULES_SEPARATOR = '\r\n';
|
|
|
1604
1605
|
let filterIdsPool = [];
|
|
1605
1606
|
let metadataFilterIdsPool = [];
|
|
1606
1607
|
|
|
1607
|
-
const OPTIMIZED_PLATFORMS_LIST = ['ext_safari', 'android', 'ios'];
|
|
1608
|
+
const OPTIMIZED_PLATFORMS_LIST = ['ext_safari', 'android', 'ios', 'ext_android_cb'];
|
|
1608
1609
|
|
|
1609
1610
|
const PLATFORM_FILTERS_DIR = 'filters';
|
|
1610
1611
|
const FILTERS_METADATA_FILE_JSON = 'filters.json';
|
|
@@ -1704,7 +1705,7 @@ const makeHeader = function (metadataFile, revisionFile, platformsJsonExpires) {
|
|
|
1704
1705
|
`! Title: ${metadata.name}`,
|
|
1705
1706
|
`! Description: ${metadata.description}`,
|
|
1706
1707
|
`! Version: ${revision.version}`,
|
|
1707
|
-
`! TimeUpdated: ${
|
|
1708
|
+
`! TimeUpdated: ${dateFns.format(revision.timeUpdated, 'yyyy-MM-dd\'T\'HH:mm:ssxxx', { in: utc.utc })}`,
|
|
1708
1709
|
`! Expires: ${expires} (update frequency)`,
|
|
1709
1710
|
];
|
|
1710
1711
|
};
|
|
@@ -2424,8 +2425,8 @@ const loadFilterMetadata = function (filterDir, includedFilterIds, excludedFilte
|
|
|
2424
2425
|
|
|
2425
2426
|
const result = JSON.parse(metadataString);
|
|
2426
2427
|
result.version = revision.version;
|
|
2427
|
-
result.timeUpdated =
|
|
2428
|
-
result.timeAdded =
|
|
2428
|
+
result.timeUpdated = dateFns.format(revision.timeUpdated, 'yyyy-MM-dd\'T\'HH:mm:ssxx', { in: utc.utc });
|
|
2429
|
+
result.timeAdded = dateFns.format(result.timeAdded, 'yyyy-MM-dd\'T\'HH:mm:ssxx', { in: utc.utc });
|
|
2429
2430
|
delete result.disabled;
|
|
2430
2431
|
|
|
2431
2432
|
const { filterId } = result;
|
|
@@ -4398,6 +4399,25 @@ const REPLACE_MODIFIER_PATTERNS = [
|
|
|
4398
4399
|
'\\$(?!#|(path|domain)=.*]|.*removeparam=).*replace(,|=|$)',
|
|
4399
4400
|
];
|
|
4400
4401
|
|
|
4402
|
+
/**
|
|
4403
|
+
* Pattern to check if rule contains `$urltransform` modifier
|
|
4404
|
+
* and does not contain non-basic modifiers like `$domain` or `$path`.
|
|
4405
|
+
*
|
|
4406
|
+
* Pattern parts:
|
|
4407
|
+
* - `\\$` — modifiers divider
|
|
4408
|
+
* - `(?!#|(path|domain)=.*]|.*removeparam=).*` — negative lookahead to exclude CSS rules (#$#) and rules like
|
|
4409
|
+
* `[$path=...]##.textad,[urltransform="ads"]` and rules with `$removeparam` modifier like `$removeparam=urltransform`
|
|
4410
|
+
* - `.*urltransform` — urltransform modifier itself
|
|
4411
|
+
* - `(,|=|$)` — end of line or modifiers divider, as `$urltransform` can be followed by other modifiers (`,`),
|
|
4412
|
+
* it may have a value (`=`), or it may be the last modifier in the rule (`$`).
|
|
4413
|
+
*
|
|
4414
|
+
* @example
|
|
4415
|
+
* ```||example.com^$urltransform=/firstpath/secondpath/```
|
|
4416
|
+
*/
|
|
4417
|
+
const URLTRANSFORM_MODIFIER_PATTERNS = [
|
|
4418
|
+
'\\$(?!#|(path|domain)=.*]|.*removeparam=).*urltransform(,|=|$)',
|
|
4419
|
+
];
|
|
4420
|
+
|
|
4401
4421
|
/* eslint-disable max-len */
|
|
4402
4422
|
|
|
4403
4423
|
/**
|
|
@@ -4676,6 +4696,7 @@ const SAFARI_BASED_EXTENSION_PATTERNS = [
|
|
|
4676
4696
|
...REMOVEHEADER_MODIFIER_PATTERNS,
|
|
4677
4697
|
...MP4_MODIFIER_PATTERNS,
|
|
4678
4698
|
...REPLACE_MODIFIER_PATTERNS,
|
|
4699
|
+
...URLTRANSFORM_MODIFIER_PATTERNS,
|
|
4679
4700
|
...STEALTH_MODIFIER_PATTERNS,
|
|
4680
4701
|
...COOKIE_MODIFIER_PATTERNS,
|
|
4681
4702
|
...APP_MODIFIER_PATTERNS,
|
|
@@ -4939,6 +4960,7 @@ const platformsConfig = {
|
|
|
4939
4960
|
...CSS_RULES_PATTERNS,
|
|
4940
4961
|
...MP4_MODIFIER_PATTERNS,
|
|
4941
4962
|
...REPLACE_MODIFIER_PATTERNS,
|
|
4963
|
+
...URLTRANSFORM_MODIFIER_PATTERNS,
|
|
4942
4964
|
...STEALTH_MODIFIER_PATTERNS,
|
|
4943
4965
|
...COOKIE_MODIFIER_PATTERNS,
|
|
4944
4966
|
...EMPTY_MODIFIER_PATTERNS,
|
|
@@ -4972,6 +4994,7 @@ const platformsConfig = {
|
|
|
4972
4994
|
...HTML_FILTERING_MODIFIER_PATTERNS,
|
|
4973
4995
|
...MP4_MODIFIER_PATTERNS,
|
|
4974
4996
|
...REPLACE_MODIFIER_PATTERNS,
|
|
4997
|
+
...URLTRANSFORM_MODIFIER_PATTERNS,
|
|
4975
4998
|
...STEALTH_MODIFIER_PATTERNS,
|
|
4976
4999
|
...COOKIE_MODIFIER_PATTERNS,
|
|
4977
5000
|
...APP_MODIFIER_PATTERNS,
|
package/dist/index.js
CHANGED
|
@@ -15,7 +15,8 @@ import { TextEncoder, TextDecoder } from 'util';
|
|
|
15
15
|
import { createRequire } from 'module';
|
|
16
16
|
import { JSDOM } from 'jsdom';
|
|
17
17
|
import crypto from 'crypto';
|
|
18
|
-
import
|
|
18
|
+
import { format } from 'date-fns';
|
|
19
|
+
import { utc } from '@date-fns/utc';
|
|
19
20
|
import fs$1 from 'fs/promises';
|
|
20
21
|
import { parse as parse$1 } from 'tldts';
|
|
21
22
|
import Ajv from 'ajv';
|
|
@@ -1601,7 +1602,7 @@ const RULES_SEPARATOR = '\r\n';
|
|
|
1601
1602
|
let filterIdsPool = [];
|
|
1602
1603
|
let metadataFilterIdsPool = [];
|
|
1603
1604
|
|
|
1604
|
-
const OPTIMIZED_PLATFORMS_LIST = ['ext_safari', 'android', 'ios'];
|
|
1605
|
+
const OPTIMIZED_PLATFORMS_LIST = ['ext_safari', 'android', 'ios', 'ext_android_cb'];
|
|
1605
1606
|
|
|
1606
1607
|
const PLATFORM_FILTERS_DIR = 'filters';
|
|
1607
1608
|
const FILTERS_METADATA_FILE_JSON = 'filters.json';
|
|
@@ -1701,7 +1702,7 @@ const makeHeader = function (metadataFile, revisionFile, platformsJsonExpires) {
|
|
|
1701
1702
|
`! Title: ${metadata.name}`,
|
|
1702
1703
|
`! Description: ${metadata.description}`,
|
|
1703
1704
|
`! Version: ${revision.version}`,
|
|
1704
|
-
`! TimeUpdated: ${
|
|
1705
|
+
`! TimeUpdated: ${format(revision.timeUpdated, 'yyyy-MM-dd\'T\'HH:mm:ssxxx', { in: utc })}`,
|
|
1705
1706
|
`! Expires: ${expires} (update frequency)`,
|
|
1706
1707
|
];
|
|
1707
1708
|
};
|
|
@@ -2421,8 +2422,8 @@ const loadFilterMetadata = function (filterDir, includedFilterIds, excludedFilte
|
|
|
2421
2422
|
|
|
2422
2423
|
const result = JSON.parse(metadataString);
|
|
2423
2424
|
result.version = revision.version;
|
|
2424
|
-
result.timeUpdated =
|
|
2425
|
-
result.timeAdded =
|
|
2425
|
+
result.timeUpdated = format(revision.timeUpdated, 'yyyy-MM-dd\'T\'HH:mm:ssxx', { in: utc });
|
|
2426
|
+
result.timeAdded = format(result.timeAdded, 'yyyy-MM-dd\'T\'HH:mm:ssxx', { in: utc });
|
|
2426
2427
|
delete result.disabled;
|
|
2427
2428
|
|
|
2428
2429
|
const { filterId } = result;
|
|
@@ -4395,6 +4396,25 @@ const REPLACE_MODIFIER_PATTERNS = [
|
|
|
4395
4396
|
'\\$(?!#|(path|domain)=.*]|.*removeparam=).*replace(,|=|$)',
|
|
4396
4397
|
];
|
|
4397
4398
|
|
|
4399
|
+
/**
|
|
4400
|
+
* Pattern to check if rule contains `$urltransform` modifier
|
|
4401
|
+
* and does not contain non-basic modifiers like `$domain` or `$path`.
|
|
4402
|
+
*
|
|
4403
|
+
* Pattern parts:
|
|
4404
|
+
* - `\\$` — modifiers divider
|
|
4405
|
+
* - `(?!#|(path|domain)=.*]|.*removeparam=).*` — negative lookahead to exclude CSS rules (#$#) and rules like
|
|
4406
|
+
* `[$path=...]##.textad,[urltransform="ads"]` and rules with `$removeparam` modifier like `$removeparam=urltransform`
|
|
4407
|
+
* - `.*urltransform` — urltransform modifier itself
|
|
4408
|
+
* - `(,|=|$)` — end of line or modifiers divider, as `$urltransform` can be followed by other modifiers (`,`),
|
|
4409
|
+
* it may have a value (`=`), or it may be the last modifier in the rule (`$`).
|
|
4410
|
+
*
|
|
4411
|
+
* @example
|
|
4412
|
+
* ```||example.com^$urltransform=/firstpath/secondpath/```
|
|
4413
|
+
*/
|
|
4414
|
+
const URLTRANSFORM_MODIFIER_PATTERNS = [
|
|
4415
|
+
'\\$(?!#|(path|domain)=.*]|.*removeparam=).*urltransform(,|=|$)',
|
|
4416
|
+
];
|
|
4417
|
+
|
|
4398
4418
|
/* eslint-disable max-len */
|
|
4399
4419
|
|
|
4400
4420
|
/**
|
|
@@ -4673,6 +4693,7 @@ const SAFARI_BASED_EXTENSION_PATTERNS = [
|
|
|
4673
4693
|
...REMOVEHEADER_MODIFIER_PATTERNS,
|
|
4674
4694
|
...MP4_MODIFIER_PATTERNS,
|
|
4675
4695
|
...REPLACE_MODIFIER_PATTERNS,
|
|
4696
|
+
...URLTRANSFORM_MODIFIER_PATTERNS,
|
|
4676
4697
|
...STEALTH_MODIFIER_PATTERNS,
|
|
4677
4698
|
...COOKIE_MODIFIER_PATTERNS,
|
|
4678
4699
|
...APP_MODIFIER_PATTERNS,
|
|
@@ -4936,6 +4957,7 @@ const platformsConfig = {
|
|
|
4936
4957
|
...CSS_RULES_PATTERNS,
|
|
4937
4958
|
...MP4_MODIFIER_PATTERNS,
|
|
4938
4959
|
...REPLACE_MODIFIER_PATTERNS,
|
|
4960
|
+
...URLTRANSFORM_MODIFIER_PATTERNS,
|
|
4939
4961
|
...STEALTH_MODIFIER_PATTERNS,
|
|
4940
4962
|
...COOKIE_MODIFIER_PATTERNS,
|
|
4941
4963
|
...EMPTY_MODIFIER_PATTERNS,
|
|
@@ -4969,6 +4991,7 @@ const platformsConfig = {
|
|
|
4969
4991
|
...HTML_FILTERING_MODIFIER_PATTERNS,
|
|
4970
4992
|
...MP4_MODIFIER_PATTERNS,
|
|
4971
4993
|
...REPLACE_MODIFIER_PATTERNS,
|
|
4994
|
+
...URLTRANSFORM_MODIFIER_PATTERNS,
|
|
4972
4995
|
...STEALTH_MODIFIER_PATTERNS,
|
|
4973
4996
|
...COOKIE_MODIFIER_PATTERNS,
|
|
4974
4997
|
...APP_MODIFIER_PATTERNS,
|
package/package.json
CHANGED
|
@@ -21,20 +21,21 @@
|
|
|
21
21
|
"pnpm": ">=10.33.4 <11"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@adguard/agtree": "4.1
|
|
24
|
+
"@adguard/agtree": "4.2.1",
|
|
25
25
|
"@adguard/css-tokenizer": "1.2.0",
|
|
26
26
|
"@adguard/ecss-tree": "2.0.1",
|
|
27
|
-
"@adguard/extended-css": "2.
|
|
27
|
+
"@adguard/extended-css": "2.2.0",
|
|
28
28
|
"@adguard/filters-downloader": "2.4.4",
|
|
29
29
|
"@adguard/logger": "2.0.0",
|
|
30
|
-
"@adguard/scriptlets": "2.
|
|
31
|
-
"@adguard/tsurlfilter": "
|
|
30
|
+
"@adguard/scriptlets": "2.5.1",
|
|
31
|
+
"@adguard/tsurlfilter": "6.0.3",
|
|
32
|
+
"@date-fns/utc": "2.1.1",
|
|
32
33
|
"@eslint/css-tree": "3.6.6",
|
|
33
34
|
"ajv": "8.17.1",
|
|
34
35
|
"child_process": "1.0.2",
|
|
36
|
+
"date-fns": "^4.4.0",
|
|
35
37
|
"jsdom": "21.1.2",
|
|
36
38
|
"md5": "2.3.0",
|
|
37
|
-
"moment": "2.30.1",
|
|
38
39
|
"tldts": "5.7.112",
|
|
39
40
|
"utf8": "3.0.0"
|
|
40
41
|
},
|
|
@@ -58,7 +59,7 @@
|
|
|
58
59
|
"typescript": "6.0.3",
|
|
59
60
|
"vitest": "3.0.5"
|
|
60
61
|
},
|
|
61
|
-
"version": "3.3.
|
|
62
|
+
"version": "3.3.1",
|
|
62
63
|
"scripts": {
|
|
63
64
|
"prebuild": "rimraf dist",
|
|
64
65
|
"build": "rollup --config rollup.config.js --silent",
|