From 3d56bb540ab94cd16b539f06bb77da0fb8e70f42 Mon Sep 17 00:00:00 2001 From: SukkaW Date: Tue, 1 Jul 2025 00:58:27 +0800 Subject: [PATCH] Perf: use `fast-uri` in speedtest hosts --- Build/build-speedtest-domainset.ts | 6 ++++-- package.json | 1 + pnpm-lock.yaml | 8 ++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Build/build-speedtest-domainset.ts b/Build/build-speedtest-domainset.ts index 0c4c5e53..8563a70e 100644 --- a/Build/build-speedtest-domainset.ts +++ b/Build/build-speedtest-domainset.ts @@ -9,6 +9,8 @@ import { DomainsetOutput } from './lib/rules/domainset'; import { OUTPUT_SURGE_DIR, SOURCE_DIR } from './constants/dir'; import { $$fetch } from './lib/fetch-retry'; +import { fastUri } from 'fast-uri'; + interface SpeedTestServer { url: string, lat: string, @@ -27,7 +29,7 @@ interface SpeedTestServer { const getSpeedtestHostsGroupsPromise = $$fetch('https://speedtest-net-servers.cdn.skk.moe/servers.json') .then(res => res.json() as Promise) .then((data) => data.reduce((prev, cur) => { - let hn: string | null = null; + let hn: string | null | undefined = null; if (cur.host) { hn = tldts.getHostname(cur.host, { detectIp: false, validateHostname: true }); if (hn) { @@ -35,7 +37,7 @@ const getSpeedtestHostsGroupsPromise = $$fetch('https://speedtest-net-servers.cd } } if (cur.url) { - hn = tldts.getHostname(cur.url, { detectIp: false, validateHostname: true }); + hn = fastUri.parse(cur.url).host; if (hn) { prev.push(hn); } diff --git a/package.json b/package.json index 985623a7..65d91af0 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "dns2": "^2.1.0", "fast-cidr-tools": "^0.3.2", "fast-fifo": "^1.3.2", + "fast-uri": "^3.0.6", "fdir": "^6.4.6", "foxts": "^3.6.0", "hash-wasm": "^4.12.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87170881..18b16cc4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,6 +49,9 @@ importers: fast-fifo: specifier: ^1.3.2 version: 1.3.2 + fast-uri: + specifier: ^3.0.6 + version: 3.0.6 fdir: specifier: ^6.4.6 version: 6.4.6(picomatch@4.0.2) @@ -1309,6 +1312,9 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -3199,6 +3205,8 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-uri@3.0.6: {} + fastq@1.19.1: dependencies: reusify: 1.1.0