diff --git a/Build/build-cdn-download-conf.ts b/Build/build-cdn-download-conf.ts index d03ad922..8d970981 100644 --- a/Build/build-cdn-download-conf.ts +++ b/Build/build-cdn-download-conf.ts @@ -11,7 +11,7 @@ import { sortDomains } from './lib/stable-sort-domain'; const getS3OSSDomainsPromise = (async (): Promise => { const trie = createTrie( - (await getPublicSuffixListTextPromise()).split('\n'), + await getPublicSuffixListTextPromise(), true, false ); diff --git a/Build/lib/download-publicsuffixlist.ts b/Build/lib/download-publicsuffixlist.ts index 12ac33ff..caa172a3 100644 --- a/Build/lib/download-publicsuffixlist.ts +++ b/Build/lib/download-publicsuffixlist.ts @@ -1,14 +1,17 @@ -import { TTL, fsFetchCache } from './cache-filesystem'; +import { TTL, deserializeArray, fsFetchCache, serializeArray } from './cache-filesystem'; import { defaultRequestInit, fetchWithRetry } from './fetch-retry'; import { createMemoizedPromise } from './memo-promise'; export const getPublicSuffixListTextPromise = createMemoizedPromise(() => fsFetchCache.apply( - 'https://publicsuffix.org/list/public_suffix_list.dat', - () => fetchWithRetry('https://publicsuffix.org/list/public_suffix_list.dat', defaultRequestInit).then(r => r.text()), + 'https://publicsuffix.org/list/public_suffix_list.dat array', + () => fetchWithRetry('https://publicsuffix.org/list/public_suffix_list.dat', defaultRequestInit) + .then(r => r.text()).then(text => text.split('\n')), { // https://github.com/publicsuffix/list/blob/master/.github/workflows/tld-update.yml // Though the action runs every 24 hours, the IANA list is updated every 7 days. // So a 3 day TTL should be enough. - ttl: TTL.THREE_DAYS() + ttl: TTL.THREE_DAYS(), + serializer: serializeArray, + deserializer: deserializeArray } )); diff --git a/Build/lib/fetch-retry.ts b/Build/lib/fetch-retry.ts index 1973a664..85ffc57c 100644 --- a/Build/lib/fetch-retry.ts +++ b/Build/lib/fetch-retry.ts @@ -127,7 +127,7 @@ function createFetchRetry($fetch: typeof fetch): FetchWithRetry { export const defaultRequestInit: RequestInit = { headers: { - 'User-Agent': 'curl/8.1.2 (https://github.com/SukkaW/Surge)' + 'User-Agent': 'curl/8.9.0 (https://github.com/SukkaW/Surge)' } }; diff --git a/Build/lib/normalize-domain.ts b/Build/lib/normalize-domain.ts index ac30829d..b0811950 100644 --- a/Build/lib/normalize-domain.ts +++ b/Build/lib/normalize-domain.ts @@ -1,4 +1,4 @@ -import { parse as tldtsParse } from 'tldts'; +import { parse as tldtsParse } from 'tldts-experimental'; import { isProbablyIpv4 } from './is-fast-ip'; export const normalizeDomain = (domain: string) => { if (!domain) return null; diff --git a/Build/lib/trie.ts b/Build/lib/trie.ts index f5f5b149..ba3fdcd1 100644 --- a/Build/lib/trie.ts +++ b/Build/lib/trie.ts @@ -402,8 +402,10 @@ export const createTrie = (from?: string[] | Set | null, hostnameMode = }, whitelist, - [inspect.custom]: (depth: number) => JSON.stringify(deepTrieNodeToJSON(root), null, 2).split('\n').map((line) => ' '.repeat(depth) + line).join('\n'), - + [inspect.custom]: (depth: number) => fastStringArrayJoin( + JSON.stringify(deepTrieNodeToJSON(root), null, 2).split('\n').map((line) => ' '.repeat(depth) + line), + '\n' + ), hostnameMode, smolTree };