Chore: adjust AdGuard Filter parsing
Some checks failed
Build / Build (push) Has been cancelled
Build / Diff output (push) Has been cancelled
Build / Deploy (3.114.12) (push) Has been cancelled

This commit is contained in:
SukkaW
2026-07-13 22:19:48 +08:00
parent a27ee8395b
commit bf2ae1c238

View File

@@ -166,7 +166,7 @@ const kwfilter = createKeywordFilter([
']',
')',
',', // $3p,doc
'#',
'#', // ##+js
'%',
'&',
// '=', // maybe we want to support some modifier?
@@ -301,14 +301,14 @@ export function parse(line: string, result: [string, ParseType], includeThirdPar
if (
// filter.isCosmeticFilter() // always false
// filter.isNetworkFilter() // always true
filter.isElemHide()
|| filter.isGenericHide()
|| filter.isSpecificHide()
// filter.isElemHide() // just isGenericHide() || isSpecificHide()
filter.hasDomains()
|| (!filter.fromHttp() && !filter.fromHttps())
|| filter.isRedirect()
|| filter.isRedirectRule()
|| filter.hasDomains()
|| filter.isCSP() // must not be csp rule
|| (!filter.fromHttp() && !filter.fromHttps())
|| filter.isGenericHide()
|| filter.isSpecificHide()
) {
// not supported type
result[1] = ParseType.Null;
@@ -400,7 +400,7 @@ export function parse(line: string, result: [string, ParseType], includeThirdPar
// We now need to "salvage" the line as much as possible
let white = false;
let includeAllSubDomain = false;
let includeAllSubdomain = false;
if (
line.charCodeAt(0) === 64 // 64 `@`
@@ -408,7 +408,7 @@ export function parse(line: string, result: [string, ParseType], includeThirdPar
) {
sliceStart += 2;
white = true;
includeAllSubDomain = true;
includeAllSubdomain = true;
}
/**
@@ -423,11 +423,11 @@ export function parse(line: string, result: [string, ParseType], includeThirdPar
case 124: /** | */
// line.startsWith('@@|') || line.startsWith('|')
sliceStart += 1;
includeAllSubDomain = false;
includeAllSubdomain = false;
if (line[sliceStart] === '|') { // line.startsWith('@@||') || line.startsWith('||')
sliceStart += 1;
includeAllSubDomain = true;
includeAllSubdomain = true;
}
break;
@@ -439,7 +439,7 @@ export function parse(line: string, result: [string, ParseType], includeThirdPar
* `.wap.x4399.com^`
*/
sliceStart += 1;
includeAllSubDomain = true;
includeAllSubdomain = true;
break;
}
@@ -456,7 +456,7 @@ export function parse(line: string, result: [string, ParseType], includeThirdPar
* `://say.ac^`
*/
if (line[sliceStart + 1] === '/' && line[sliceStart + 2] === '/') {
includeAllSubDomain = false;
includeAllSubdomain = false;
sliceStart += 3;
}
break;
@@ -465,10 +465,10 @@ export function parse(line: string, result: [string, ParseType], includeThirdPar
case 104: { /** h */
/** |http://x.o2.pl^ */
if (line.startsWith('http://', sliceStart)) {
includeAllSubDomain = false;
includeAllSubdomain = false;
sliceStart += 7;
} else if (line.startsWith('https://', sliceStart)) {
includeAllSubDomain = false;
includeAllSubdomain = false;
sliceStart += 8;
}
break;
@@ -506,7 +506,7 @@ export function parse(line: string, result: [string, ParseType], includeThirdPar
white = true;
}
if (line.includes('all', indexOfDollar + 1)) {
includeAllSubDomain = true;
includeAllSubdomain = true;
}
/**
@@ -540,13 +540,13 @@ export function parse(line: string, result: [string, ParseType], includeThirdPar
return result;
}
return onHostname(sliced, white, includeAllSubDomain, line, result);
return onHostname(sliced, white, includeAllSubdomain, line, result);
}
function onHostname(
input: string,
white: boolean,
isIncludeAllSubDomain: boolean,
isIncludeAllSubdomain: boolean,
rawLine: string,
result: [string, ParseType]
) {
@@ -597,7 +597,7 @@ function onHostname(
if (white) {
result[0] = hostname;
result[1] = isIncludeAllSubDomain ? ParseType.WhiteIncludeSubdomain : ParseType.WhiteAbsolute;
result[1] = isIncludeAllSubdomain ? ParseType.WhiteIncludeSubdomain : ParseType.WhiteAbsolute;
return result;
}
@@ -617,7 +617,7 @@ function onHostname(
}
result[0] = hostname;
result[1] = isIncludeAllSubDomain ? ParseType.BlackIncludeSubdomain : ParseType.BlackAbsolute;
result[1] = isIncludeAllSubdomain ? ParseType.BlackIncludeSubdomain : ParseType.BlackAbsolute;
return result;
}