mirror of
https://github.com/SukkaW/Surge.git
synced 2025-12-12 09:10:35 +08:00
Fix: sort AdGuardHome domains for stablity
This commit is contained in:
parent
f7e5ff1de5
commit
fbaa2654ce
@ -1,9 +1,8 @@
|
||||
import { invariant } from 'foxact/invariant';
|
||||
import createKeywordFilter from '../aho-corasick';
|
||||
import { buildParseDomainMap } from '../stable-sort-domain';
|
||||
import { buildParseDomainMap, sortDomains } from '../stable-sort-domain';
|
||||
import { RuleOutput } from './base';
|
||||
import type { SingboxSourceFormat } from '../singbox';
|
||||
import { appendArrayFromSet } from '../misc';
|
||||
|
||||
type Preprocessed = string[];
|
||||
|
||||
@ -96,8 +95,15 @@ export class DomainsetOutput extends RuleOutput<Preprocessed> {
|
||||
adguardhome(whitelist: Set<string | `.${string}`>): string[] {
|
||||
const results: string[] = [];
|
||||
|
||||
// whitelist
|
||||
appendArrayFromSet(results, whitelist, i => (i[0] === '.' ? '@@||' + i.slice(1) + '^' : '@@|' + i + '^'));
|
||||
const whitelistArray = sortDomains(Array.from(whitelist));
|
||||
for (let i = 0, len = whitelistArray.length; i < len; i++) {
|
||||
const domain = whitelistArray[i];
|
||||
if (domain[0] === '.') {
|
||||
results.push(`@@||${domain.slice(1)}^`);
|
||||
} else {
|
||||
results.push(`@@|${domain}^`);
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0, len = this.$preprocessed.length; i < len; i++) {
|
||||
const domain = this.$preprocessed[i];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user