diff --git a/Build/lib/cache-filesystem.ts b/Build/lib/cache-filesystem.ts index 62603871..31af2a34 100644 --- a/Build/lib/cache-filesystem.ts +++ b/Build/lib/cache-filesystem.ts @@ -290,7 +290,7 @@ export class Cache { // Most assets can be downloaded within 250ms. To avoid wasting bandwidth, we will wait for 500ms before downloading from the fallback URL. if (index > 0) { try { - await sleepWithAbort(300 + (index + 1) * 10, controller.signal); + await sleepWithAbort(100 + (index + 1) * 10, controller.signal); } catch { console.log(picocolors.gray('[fetch cancelled early]'), picocolors.gray(url)); throw new CustomAbortError(); diff --git a/Build/lib/rules/base.ts b/Build/lib/rules/base.ts index 6cfa2311..1344b504 100644 --- a/Build/lib/rules/base.ts +++ b/Build/lib/rules/base.ts @@ -1,6 +1,6 @@ import { OUTPUT_CLASH_DIR, OUTPUT_MODULES_DIR, OUTPUT_SINGBOX_DIR, OUTPUT_SURGE_DIR } from '../../constants/dir'; import type { Span } from '../../trace'; -import { createTrie } from '../trie'; +import { HostnameSmolTrie } from '../trie'; import stringify from 'json-stringify-pretty-compact'; import path from 'node:path'; import { withBannerArray } from '../misc'; @@ -12,7 +12,7 @@ import { readFileByLine } from '../fetch-text-by-line'; import { asyncWriteToStream } from '../async-write-to-stream'; export abstract class RuleOutput { - protected domainTrie = createTrie(null, true); + protected domainTrie = new HostnameSmolTrie(null); protected domainKeywords = new Set(); protected domainWildcard = new Set(); protected userAgent = new Set(); diff --git a/Build/validate-domestic.ts b/Build/validate-domestic.ts index 9dc16fc2..60f0ac5e 100644 --- a/Build/validate-domestic.ts +++ b/Build/validate-domestic.ts @@ -1,19 +1,14 @@ import { readFileByLine } from './lib/fetch-text-by-line'; import { parse } from 'csv-parse/sync'; -import { createTrie } from './lib/trie'; +import { HostnameSmolTrie } from './lib/trie'; import path from 'node:path'; import { processLine } from './lib/process-line'; import { SOURCE_DIR } from './constants/dir'; import { $fetch } from './lib/make-fetch-happen'; import { parseFelixDnsmasqFromResp } from './lib/parse-dnsmasq'; -async function parseFelixDnsmasq(url: string): Promise { - const resp = await $fetch(url); - return parseFelixDnsmasqFromResp(resp); -} - export async function parseDomesticList() { - const trie = createTrie(await parseFelixDnsmasq('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf')); + const trie = new HostnameSmolTrie(await parseFelixDnsmasqFromResp(await $fetch('https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf'))); const top5000 = new Set();