Fix: use punycode.toASCII in trie dumping

This commit is contained in:
SukkaW
2025-03-17 17:31:22 +08:00
parent 62b93bbc03
commit 78f5b83b39
6 changed files with 24 additions and 10 deletions

View File

@@ -42,7 +42,7 @@ export const downloadPreviousBuild = task(require.main === module, __filename)(a
{
method: 'GET',
headers: {
'User-Agent': 'curl/8.9.1',
'User-Agent': 'curl/8.12.1',
// https://github.com/unjs/giget/issues/97
// https://gitlab.com/gitlab-org/gitlab/-/commit/50c11f278d18fe1f3fb12eb595067216bb58ade2
'sec-fetch-mode': 'same-origin'

View File

@@ -152,7 +152,7 @@ export class ResponseError<T extends UndiciResponseData | Response> extends Erro
export const defaultRequestInit = {
headers: {
'User-Agent': 'curl/8.9.1 (https://github.com/SukkaW/Surge)'
'User-Agent': 'curl/8.12.1 (https://github.com/SukkaW/Surge)'
}
};

View File

@@ -8,6 +8,7 @@ import { noop } from 'foxts/noop';
import { fastStringArrayJoin } from 'foxts/fast-string-array-join';
import { deleteBit, getBit, missingBit, setBit } from 'foxts/bitwise';
import { toASCII } from 'punycode/';
const START = 1 << 1;
const INCLUDE_ALL_SUBDOMAIN = 1 << 2;
@@ -358,13 +359,13 @@ abstract class Triebase<Meta = unknown> {
const onMatches = subdomainOnly
? (suffix: string[], subdomain: boolean) => { // fast path (default option)
const d = fastStringArrayJoin(suffix, '.');
const d = toASCII(fastStringArrayJoin(suffix, '.'));
if (!subdomain && subStringEqual(inputSuffix, d, 1)) return;
results.push(subdomain ? '.' + d : d);
}
: (suffix: string[], subdomain: boolean) => { // fast path (default option)
const d = fastStringArrayJoin(suffix, '.');
const d = toASCII(fastStringArrayJoin(suffix, '.'));
results.push(subdomain ? '.' + d : d);
};
@@ -417,7 +418,7 @@ abstract class Triebase<Meta = unknown> {
public dumpWithoutDot(onSuffix: (suffix: string, subdomain: boolean) => void, withSort = false) {
const handleSuffix = (suffix: string[], subdomain: boolean) => {
onSuffix(fastStringArrayJoin(suffix, '.'), subdomain);
onSuffix(toASCII(fastStringArrayJoin(suffix, '.')), subdomain);
};
if (withSort) {
@@ -434,11 +435,11 @@ abstract class Triebase<Meta = unknown> {
const handleSuffix = onSuffix
? (suffix: string[], subdomain: boolean) => {
const d = fastStringArrayJoin(suffix, '.');
const d = toASCII(fastStringArrayJoin(suffix, '.'));
onSuffix(subdomain ? '.' + d : d);
}
: (suffix: string[], subdomain: boolean) => {
const d = fastStringArrayJoin(suffix, '.');
const d = toASCII(fastStringArrayJoin(suffix, '.'));
results.push(subdomain ? '.' + d : d);
};
@@ -476,11 +477,11 @@ abstract class Triebase<Meta = unknown> {
const handleSuffix = onSuffix
? (suffix: string[], subdomain: boolean, meta: Meta | undefined) => {
const d = fastStringArrayJoin(suffix, '.');
const d = toASCII(fastStringArrayJoin(suffix, '.'));
return onSuffix(subdomain ? '.' + d : d, meta);
}
: (suffix: string[], subdomain: boolean, meta: Meta | undefined) => {
const d = fastStringArrayJoin(suffix, '.');
const d = toASCII(fastStringArrayJoin(suffix, '.'));
results.push([subdomain ? '.' + d : d, meta]);
};

View File

@@ -70,7 +70,7 @@ export async function parseGfwList() {
const res = await (await $$fetch('https://litter.catbox.moe/gv0bw6.csv', {
headers: {
accept: '*/*',
'user-agent': 'curl/8.9.1'
'user-agent': 'curl/8.12.1'
}
})).text();
const topDomains = parse(res);