Use foxts more & Improve writing

This commit is contained in:
SukkaW 2025-06-21 15:39:39 +08:00
parent 53380ecd10
commit afac59f09c
7 changed files with 87 additions and 129 deletions

View File

@ -5,7 +5,7 @@ import { SHARED_DESCRIPTION } from './constants/description';
import { once } from 'foxts/once'; import { once } from 'foxts/once';
import { RulesetOutput } from './lib/rules/ruleset'; import { RulesetOutput } from './lib/rules/ruleset';
import { $$fetch } from './lib/fetch-retry'; import { $$fetch } from './lib/fetch-retry';
import { fastIpVersion } from './lib/misc'; import { fastIpVersion } from 'foxts/fast-ip-version';
export const getTelegramCIDRPromise = once(async () => { export const getTelegramCIDRPromise = once(async () => {
const resp = await $$fetch('https://core.telegram.org/resources/cidr.txt'); const resp = await $$fetch('https://core.telegram.org/resources/cidr.txt');

View File

@ -2,6 +2,7 @@ import { dirname } from 'node:path';
import fs from 'node:fs'; import fs from 'node:fs';
import type { PathLike } from 'node:fs'; import type { PathLike } from 'node:fs';
import fsp from 'node:fs/promises'; import fsp from 'node:fs/promises';
import { appendArrayInPlace } from 'foxts/append-array-in-place';
export type MaybePromise<T> = T | Promise<T>; export type MaybePromise<T> = T | Promise<T>;
@ -49,19 +50,23 @@ export const writeFile: Write = async (destination: string, input, dir = dirname
return fsp.writeFile(destination, input, { encoding: 'utf-8' }); return fsp.writeFile(destination, input, { encoding: 'utf-8' });
}; };
export const removeFiles = async (files: string[]) => Promise.all(files.map((file) => fsp.rm(file, { force: true })));
export function withBannerArray(title: string, description: string[] | readonly string[], date: Date, content: string[]) { export function withBannerArray(title: string, description: string[] | readonly string[], date: Date, content: string[]) {
return [ const result: string[] = [
'#########################################', '#########################################',
`# ${title}`, `# ${title}`,
`# Last Updated: ${date.toISOString()}`, `# Last Updated: ${date.toISOString()}`,
`# Size: ${content.length}`, `# Size: ${content.length}`
...description.map(line => (line ? `# ${line}` : '#')),
'#########################################',
...content,
'################## EOF ##################'
]; ];
appendArrayInPlace(result, description.map(line => (line ? `# ${line}` : '#')));
result.push('#########################################');
appendArrayInPlace(result, content);
result.push('################## EOF ##################', '');
return result;
}; };
export function notSupported(name: string) { export function notSupported(name: string) {
@ -84,7 +89,3 @@ export function isDirectoryEmptySync(path: PathLike) {
directoryHandle.closeSync(); directoryHandle.closeSync();
} }
} }
export function fastIpVersion(ip: string) {
return ip.includes(':') ? 6 : (ip.includes('.') ? 4 : 0);
}

View File

@ -1,7 +1,7 @@
import type { Span } from '../../trace'; import type { Span } from '../../trace';
import { HostnameSmolTrie } from '../trie'; import { HostnameSmolTrie } from '../trie';
import { not, nullthrow } from 'foxts/guard'; import { not, nullthrow } from 'foxts/guard';
import { fastIpVersion } from '../misc'; import { fastIpVersion } from 'foxts/fast-ip-version';
import type { MaybePromise } from '../misc'; import type { MaybePromise } from '../misc';
import type { BaseWriteStrategy } from '../writing-strategy/base'; import type { BaseWriteStrategy } from '../writing-strategy/base';
import { merge as mergeCidr } from 'fast-cidr-tools'; import { merge as mergeCidr } from 'fast-cidr-tools';

View File

@ -1,7 +1,8 @@
import { appendSetElementsToArray } from 'foxts/append-set-elements-to-array'; import { appendSetElementsToArray } from 'foxts/append-set-elements-to-array';
import { BaseWriteStrategy } from './base'; import { BaseWriteStrategy } from './base';
import { noop } from 'foxts/noop'; import { noop } from 'foxts/noop';
import { fastIpVersion, notSupported, withBannerArray } from '../misc'; import { notSupported, withBannerArray } from '../misc';
import { fastIpVersion } from 'foxts/fast-ip-version';
import { OUTPUT_CLASH_DIR } from '../../constants/dir'; import { OUTPUT_CLASH_DIR } from '../../constants/dir';
import { appendArrayInPlace } from 'foxts/append-array-in-place'; import { appendArrayInPlace } from 'foxts/append-array-in-place';
import { MARKER_DOMAIN } from '../../constants/description'; import { MARKER_DOMAIN } from '../../constants/description';

View File

@ -1,7 +1,8 @@
import { BaseWriteStrategy } from './base'; import { BaseWriteStrategy } from './base';
import { appendArrayInPlace } from 'foxts/append-array-in-place'; import { appendArrayInPlace } from 'foxts/append-array-in-place';
import { noop } from 'foxts/noop'; import { noop } from 'foxts/noop';
import { fastIpVersion, withIdentityContent } from '../misc'; import { withIdentityContent } from '../misc';
import { fastIpVersion } from 'foxts/fast-ip-version';
import stringify from 'json-stringify-pretty-compact'; import stringify from 'json-stringify-pretty-compact';
import { OUTPUT_SINGBOX_DIR } from '../../constants/dir'; import { OUTPUT_SINGBOX_DIR } from '../../constants/dir';
import { MARKER_DOMAIN } from '../../constants/description'; import { MARKER_DOMAIN } from '../../constants/description';

View File

@ -32,7 +32,7 @@
"fast-cidr-tools": "^0.3.2", "fast-cidr-tools": "^0.3.2",
"fast-fifo": "^1.3.2", "fast-fifo": "^1.3.2",
"fdir": "^6.4.6", "fdir": "^6.4.6",
"foxts": "^3.5.0", "foxts": "^3.6.0",
"hash-wasm": "^4.12.0", "hash-wasm": "^4.12.0",
"json-stringify-pretty-compact": "3.0.0", "json-stringify-pretty-compact": "3.0.0",
"null-prototype-object": "^1.2.0", "null-prototype-object": "^1.2.0",
@ -53,7 +53,7 @@
"devDependencies": { "devDependencies": {
"@eslint-sukka/node": "^6.22.1", "@eslint-sukka/node": "^6.22.1",
"@swc-node/register": "^1.10.10", "@swc-node/register": "^1.10.10",
"@swc/core": "^1.12.4", "@swc/core": "^1.12.5",
"@types/async-retry": "^1.4.9", "@types/async-retry": "^1.4.9",
"@types/better-sqlite3": "^7.6.13", "@types/better-sqlite3": "^7.6.13",
"@types/cli-progress": "^3.11.6", "@types/cli-progress": "^3.11.6",

177
pnpm-lock.yaml generated
View File

@ -53,8 +53,8 @@ importers:
specifier: ^6.4.6 specifier: ^6.4.6
version: 6.4.6(picomatch@4.0.2) version: 6.4.6(picomatch@4.0.2)
foxts: foxts:
specifier: ^3.5.0 specifier: ^3.6.0
version: 3.5.0 version: 3.6.0
hash-wasm: hash-wasm:
specifier: ^4.12.0 specifier: ^4.12.0
version: 4.12.0 version: 4.12.0
@ -109,10 +109,10 @@ importers:
version: 6.22.1(eslint@9.29.0)(typescript@5.8.3) version: 6.22.1(eslint@9.29.0)(typescript@5.8.3)
'@swc-node/register': '@swc-node/register':
specifier: ^1.10.10 specifier: ^1.10.10
version: 1.10.10(@swc/core@1.12.4)(@swc/types@0.1.23)(typescript@5.8.3) version: 1.10.10(@swc/core@1.12.5)(@swc/types@0.1.23)(typescript@5.8.3)
'@swc/core': '@swc/core':
specifier: ^1.12.4 specifier: ^1.12.5
version: 1.12.4 version: 1.12.5
'@types/async-retry': '@types/async-retry':
specifier: ^1.4.9 specifier: ^1.4.9
version: 1.4.9 version: 1.4.9
@ -232,10 +232,6 @@ packages:
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/js@9.28.0':
resolution: {integrity: sha512-fnqSjGWd/CoIp4EXIxWVK/sHA6DOHN4+8Ix2cX5ycOY7LG0UY8nHCU5pIp2eaE1Mc7Qd8kHspYNzYXT2ojPLzg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/js@9.29.0': '@eslint/js@9.29.0':
resolution: {integrity: sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==} resolution: {integrity: sha512-3PIF4cBw/y+1u2EazflInpV+lYsSG0aByVIQzAgb1m1MhHFSbqTyNqtBKHgWf/9Ykud+DhILS9EGkmekVhbKoQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@ -515,68 +511,68 @@ packages:
'@swc-node/sourcemap-support@0.5.1': '@swc-node/sourcemap-support@0.5.1':
resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==} resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==}
'@swc/core-darwin-arm64@1.12.4': '@swc/core-darwin-arm64@1.12.5':
resolution: {integrity: sha512-HihKfeitjZU2ab94Zf893sxzFryLKX0TweGsNXXOLNtkSMLw50auuYfpRM0BOL9/uXXtuCWgRIF6P030SAX5xQ==} resolution: {integrity: sha512-3WF+naP/qkt5flrTfJr+p07b522JcixKvIivM7FgvllA6LjJxf+pheoILrTS8IwrNAK/XtHfKWYcGY+3eaA4mA==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@swc/core-darwin-x64@1.12.4': '@swc/core-darwin-x64@1.12.5':
resolution: {integrity: sha512-meYCXHyYb6RDdu2N5PNAf0EelyxPBFhRcVo4kBFLuvuNb0m6EUg///VWy8MUMXq9/s9uzGS9kJVXXdRdr/d6FA==} resolution: {integrity: sha512-GCcD3dft8YN7unTBcW02Fx41jXp2MNQHCjx5ceWSEYOGvn7vBSUp7k7LkfTxGN5Ftxb9a1mxhPq8r4rD2u/aPw==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@swc/core-linux-arm-gnueabihf@1.12.4': '@swc/core-linux-arm-gnueabihf@1.12.5':
resolution: {integrity: sha512-szfDbf7mE8V64of0q/LSqbk+em+T+TD3uqnH40Z7Qu/aL8vi5CHgyLjWG2SLkLLpyjgkAUF6AKrupgnBYcC2NA==} resolution: {integrity: sha512-jWlzP/Y4+wbE/EJM+WGIDQsklLFV3g5LmbYTBgrY4+5nb517P31mkBzf5y2knfNWPrL7HzNu0578j3Zi2E6Iig==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@swc/core-linux-arm64-gnu@1.12.4': '@swc/core-linux-arm64-gnu@1.12.5':
resolution: {integrity: sha512-n0IY76w+Scx8m3HIVRvLkoResuwsQgjDfAk9bxn99dq4leQO+mE0fkPl0Yw/1BIsPh+kxGfopIJH9zsZ1Z2YrA==} resolution: {integrity: sha512-GkzgIUz+2r6J6Tn3hb7/4ByaWHRrRZt4vuN9BLAd+y65m2Bt0vlEpPtWhrB/TVe4hEkFR+W5PDETLEbUT4i0tQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@swc/core-linux-arm64-musl@1.12.4': '@swc/core-linux-arm64-musl@1.12.5':
resolution: {integrity: sha512-wE5jmFi5cEQyLy8WmCWmNwfKETrnzy2D8YNi/xpYWpLPWqPhcelpa6tswkfYlbsMmmOh7hQNoTba1QdGu0jvHQ==} resolution: {integrity: sha512-g0AJ7QmZPj3Uw+C5pDa48LAUG7JBgQmB0mN5cW+s2mjaFKT0mTSxYALtx/MDZwJExDPo0yJV8kSbFO1tvFPyhg==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@swc/core-linux-x64-gnu@1.12.4': '@swc/core-linux-x64-gnu@1.12.5':
resolution: {integrity: sha512-6S50Xd/7ePjEwrXyHMxpKTZ+KBrgUwMA8hQPbArUOwH4S5vHBr51heL0iXbUkppn1bkSr0J0IbOove5hzn+iqQ==} resolution: {integrity: sha512-PeYoSziNy+iNiBHPtAsO84bzBne/mbCsG5ijYkAhS1GVsDgohClorUvRXXhcUZoX2gr8TfSI9WLHo30K+DKiHg==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@swc/core-linux-x64-musl@1.12.4': '@swc/core-linux-x64-musl@1.12.5':
resolution: {integrity: sha512-hbYRyaHhC13vYKuGG5BrAG5fjjWEQFfQetuFp/4QKEoXDzdnabJoixxWTQACDL3m0JW32nJ+gUzsYIPtFYkwXg==} resolution: {integrity: sha512-EJrfCCIyuV5LLmYgKtIMwtgsnjVesdFe0IgQzEKs9OfB6cL6g7WO9conn8BkGX8jphVa7jChKxShDGkreWWDzA==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@swc/core-win32-arm64-msvc@1.12.4': '@swc/core-win32-arm64-msvc@1.12.5':
resolution: {integrity: sha512-e6EbfjPL8GA/bb1lc9Omtxjlz+1ThTsAuBsy4Q3Kpbuh6B3jclg8KzxU/6t91v23wG593mieTyR5f3Pr7X3AWw==} resolution: {integrity: sha512-FnwT7fxkJJMgsfiDoZKEVGyCzrPFbzpflFAAoTCUCu3MaHw6mW55o/MAAfofvJ1iIcEpec4o93OilsmKtpyO5Q==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@swc/core-win32-ia32-msvc@1.12.4': '@swc/core-win32-ia32-msvc@1.12.5':
resolution: {integrity: sha512-RG2FzmllBTUf4EksANlIvLckcBrLZEA0t13LIa6L213UZKQfEuDNHezqESgoVhJMg2S/tWauitATOCFgZNSmjg==} resolution: {integrity: sha512-jW6l4KFt9mIXSpGseE6BQOEFmbIeXeShDuWgldEJXKeXf/uPs8wrqv80XBIUwVpK0ZbmJwPQ0waGVj8UM3th2Q==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@swc/core-win32-x64-msvc@1.12.4': '@swc/core-win32-x64-msvc@1.12.5':
resolution: {integrity: sha512-oRHKnZlR83zaMeVUCmHENa4j5uNRAWbmEpjYbzRcfC45LPFNWKGWGAGERLx0u87XMUtTGqnVYxnBTHN/rzDHOw==} resolution: {integrity: sha512-AZszwuEjlz1tSNLQRm3T5OZJ5eebxjJlDQnnzXJmg0B7DJMRoaAe1HTLOmejxjFK6yWr7fh+pSeCw2PgQLxgqA==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@swc/core@1.12.4': '@swc/core@1.12.5':
resolution: {integrity: sha512-hn30ebV4njAn0NAUM+3a0qCF+MJgqTNSrfA/hUAbC6TVjOQy2OYGQwkUvCu/V7S2+rZxrUsTpKOnZ7qqECZV9Q==} resolution: {integrity: sha512-KxA0PHHIuUBmQ/Oi+xFpVzILj2Oo37sTtftCbyowQlyx5YOknEOw1kLpas5hMcpznXgFyAWbpK71xQps4INPgA==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
'@swc/helpers': '>=0.5.17' '@swc/helpers': '>=0.5.17'
@ -802,11 +798,6 @@ packages:
peerDependencies: peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
acorn@8.14.0:
resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
engines: {node: '>=0.4.0'}
hasBin: true
acorn@8.15.0: acorn@8.15.0:
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
engines: {node: '>=0.4.0'} engines: {node: '>=0.4.0'}
@ -1199,10 +1190,6 @@ packages:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
eslint-visitor-keys@4.2.0:
resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint-visitor-keys@4.2.1: eslint-visitor-keys@4.2.1:
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@ -1217,10 +1204,6 @@ packages:
jiti: jiti:
optional: true optional: true
espree@10.3.0:
resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
espree@10.4.0: espree@10.4.0:
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@ -1322,8 +1305,8 @@ packages:
resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
engines: {node: '>=14'} engines: {node: '>=14'}
foxts@3.5.0: foxts@3.6.0:
resolution: {integrity: sha512-gr1TsgUMJQ/T/zCIamTWg4VwfPrgbX8HMtmWKEzDMn8wiJZzzZZ5TeLjGSUXet49nvU3ZT9/4ZIcs5w53EnmCg==} resolution: {integrity: sha512-cnADo1dCBjJE4kvXJmpE4uoEjdeKCO5TLdMKBIoCvxJ6Z/vdjvpdlM1+B0gaYxu20RfDSwHJV2eFYcpM1rI9ig==}
fs-constants@1.0.0: fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
@ -1874,18 +1857,12 @@ packages:
tldts-core@6.1.86: tldts-core@6.1.86:
resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==}
tldts-core@7.0.5:
resolution: {integrity: sha512-o+2zicH2+bzj5PHV5M4U8OsRBJDOO0zADiTKZQTGdHSymGQYS21+V/YNrMxAxH9SopzMEXt5JuiRoOIZT5ZU9g==}
tldts-core@7.0.8: tldts-core@7.0.8:
resolution: {integrity: sha512-Ze39mm8EtocSXPbH6cv5rDeBBhehp8OLxWJKZXLEyv2dKMlblJsoAw2gmA0ZaU6iOwNlCZ4LrmaTW1reUQEmJw==} resolution: {integrity: sha512-Ze39mm8EtocSXPbH6cv5rDeBBhehp8OLxWJKZXLEyv2dKMlblJsoAw2gmA0ZaU6iOwNlCZ4LrmaTW1reUQEmJw==}
tldts-experimental@6.1.86: tldts-experimental@6.1.86:
resolution: {integrity: sha512-X3N3+SrwSajvANDyIBFa6tf/nO0VoqaXvvINSnQkZMGbzNlD+9G7Xb24Mtk3ZBVZJRGY7UynAJJL8kRVt6Z46Q==} resolution: {integrity: sha512-X3N3+SrwSajvANDyIBFa6tf/nO0VoqaXvvINSnQkZMGbzNlD+9G7Xb24Mtk3ZBVZJRGY7UynAJJL8kRVt6Z46Q==}
tldts-experimental@7.0.5:
resolution: {integrity: sha512-Ab2t64xKlD2TrYwBeVLDCXCQlTeDZcvbQz8higr/wVS0SJosYmURHErgD2UMqST/5uzEV8VDxMYJnjww+RFvhw==}
tldts-experimental@7.0.8: tldts-experimental@7.0.8:
resolution: {integrity: sha512-47LInzMIelfHqD1Gx5+PRYQBl6vU3Xt5KYY6AhqITIKldzu/ctwzdUpbm7AdmsRyzxnly9YH4GLHTtXPwhQhTw==} resolution: {integrity: sha512-47LInzMIelfHqD1Gx5+PRYQBl6vU3Xt5KYY6AhqITIKldzu/ctwzdUpbm7AdmsRyzxnly9YH4GLHTtXPwhQhTw==}
@ -2114,8 +2091,6 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@eslint/js@9.28.0': {}
'@eslint/js@9.29.0': {} '@eslint/js@9.29.0': {}
'@eslint/object-schema@2.1.6': {} '@eslint/object-schema@2.1.6': {}
@ -2139,7 +2114,7 @@ snapshots:
'@remusao/guess-url-type': 2.1.0 '@remusao/guess-url-type': 2.1.0
'@remusao/small': 2.1.0 '@remusao/small': 2.1.0
'@remusao/smaz': 2.2.0 '@remusao/smaz': 2.2.0
tldts-experimental: 7.0.5 tldts-experimental: 7.0.8
'@ghostery/url-parser@1.2.0': '@ghostery/url-parser@1.2.0':
dependencies: dependencies:
@ -2337,16 +2312,16 @@ snapshots:
'@sinclair/typebox@0.34.33': {} '@sinclair/typebox@0.34.33': {}
'@swc-node/core@1.13.3(@swc/core@1.12.4)(@swc/types@0.1.23)': '@swc-node/core@1.13.3(@swc/core@1.12.5)(@swc/types@0.1.23)':
dependencies: dependencies:
'@swc/core': 1.12.4 '@swc/core': 1.12.5
'@swc/types': 0.1.23 '@swc/types': 0.1.23
'@swc-node/register@1.10.10(@swc/core@1.12.4)(@swc/types@0.1.23)(typescript@5.8.3)': '@swc-node/register@1.10.10(@swc/core@1.12.5)(@swc/types@0.1.23)(typescript@5.8.3)':
dependencies: dependencies:
'@swc-node/core': 1.13.3(@swc/core@1.12.4)(@swc/types@0.1.23) '@swc-node/core': 1.13.3(@swc/core@1.12.5)(@swc/types@0.1.23)
'@swc-node/sourcemap-support': 0.5.1 '@swc-node/sourcemap-support': 0.5.1
'@swc/core': 1.12.4 '@swc/core': 1.12.5
colorette: 2.0.20 colorette: 2.0.20
debug: 4.4.1(supports-color@8.1.1) debug: 4.4.1(supports-color@8.1.1)
oxc-resolver: 5.0.0 oxc-resolver: 5.0.0
@ -2362,51 +2337,51 @@ snapshots:
source-map-support: 0.5.21 source-map-support: 0.5.21
tslib: 2.8.1 tslib: 2.8.1
'@swc/core-darwin-arm64@1.12.4': '@swc/core-darwin-arm64@1.12.5':
optional: true optional: true
'@swc/core-darwin-x64@1.12.4': '@swc/core-darwin-x64@1.12.5':
optional: true optional: true
'@swc/core-linux-arm-gnueabihf@1.12.4': '@swc/core-linux-arm-gnueabihf@1.12.5':
optional: true optional: true
'@swc/core-linux-arm64-gnu@1.12.4': '@swc/core-linux-arm64-gnu@1.12.5':
optional: true optional: true
'@swc/core-linux-arm64-musl@1.12.4': '@swc/core-linux-arm64-musl@1.12.5':
optional: true optional: true
'@swc/core-linux-x64-gnu@1.12.4': '@swc/core-linux-x64-gnu@1.12.5':
optional: true optional: true
'@swc/core-linux-x64-musl@1.12.4': '@swc/core-linux-x64-musl@1.12.5':
optional: true optional: true
'@swc/core-win32-arm64-msvc@1.12.4': '@swc/core-win32-arm64-msvc@1.12.5':
optional: true optional: true
'@swc/core-win32-ia32-msvc@1.12.4': '@swc/core-win32-ia32-msvc@1.12.5':
optional: true optional: true
'@swc/core-win32-x64-msvc@1.12.4': '@swc/core-win32-x64-msvc@1.12.5':
optional: true optional: true
'@swc/core@1.12.4': '@swc/core@1.12.5':
dependencies: dependencies:
'@swc/counter': 0.1.3 '@swc/counter': 0.1.3
'@swc/types': 0.1.23 '@swc/types': 0.1.23
optionalDependencies: optionalDependencies:
'@swc/core-darwin-arm64': 1.12.4 '@swc/core-darwin-arm64': 1.12.5
'@swc/core-darwin-x64': 1.12.4 '@swc/core-darwin-x64': 1.12.5
'@swc/core-linux-arm-gnueabihf': 1.12.4 '@swc/core-linux-arm-gnueabihf': 1.12.5
'@swc/core-linux-arm64-gnu': 1.12.4 '@swc/core-linux-arm64-gnu': 1.12.5
'@swc/core-linux-arm64-musl': 1.12.4 '@swc/core-linux-arm64-musl': 1.12.5
'@swc/core-linux-x64-gnu': 1.12.4 '@swc/core-linux-x64-gnu': 1.12.5
'@swc/core-linux-x64-musl': 1.12.4 '@swc/core-linux-x64-musl': 1.12.5
'@swc/core-win32-arm64-msvc': 1.12.4 '@swc/core-win32-arm64-msvc': 1.12.5
'@swc/core-win32-ia32-msvc': 1.12.4 '@swc/core-win32-ia32-msvc': 1.12.5
'@swc/core-win32-x64-msvc': 1.12.4 '@swc/core-win32-x64-msvc': 1.12.5
'@swc/counter@0.1.3': {} '@swc/counter@0.1.3': {}
@ -2572,7 +2547,7 @@ snapshots:
'@typescript-eslint/visitor-keys@8.33.1': '@typescript-eslint/visitor-keys@8.33.1':
dependencies: dependencies:
'@typescript-eslint/types': 8.33.1 '@typescript-eslint/types': 8.33.1
eslint-visitor-keys: 4.2.0 eslint-visitor-keys: 4.2.1
'@unrs/resolver-binding-darwin-arm64@1.7.9': '@unrs/resolver-binding-darwin-arm64@1.7.9':
optional: true optional: true
@ -2627,16 +2602,10 @@ snapshots:
'@unrs/resolver-binding-win32-x64-msvc@1.7.9': '@unrs/resolver-binding-win32-x64-msvc@1.7.9':
optional: true optional: true
acorn-jsx@5.3.2(acorn@8.14.0):
dependencies:
acorn: 8.14.0
acorn-jsx@5.3.2(acorn@8.15.0): acorn-jsx@5.3.2(acorn@8.15.0):
dependencies: dependencies:
acorn: 8.15.0 acorn: 8.15.0
acorn@8.14.0: {}
acorn@8.15.0: {} acorn@8.15.0: {}
ajv@6.12.6: ajv@6.12.6:
@ -2873,7 +2842,7 @@ snapshots:
dependencies: dependencies:
'@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.29.0) '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.29.0)
'@eslint-sukka/shared': 6.22.1(eslint@9.29.0)(typescript@5.8.3) '@eslint-sukka/shared': 6.22.1(eslint@9.29.0)(typescript@5.8.3)
'@eslint/js': 9.28.0 '@eslint/js': 9.29.0
'@typescript-eslint/parser': 8.33.1(eslint@9.29.0)(typescript@5.8.3) '@typescript-eslint/parser': 8.33.1(eslint@9.29.0)(typescript@5.8.3)
ci-info: 4.2.0 ci-info: 4.2.0
defu: 6.1.4 defu: 6.1.4
@ -2887,7 +2856,7 @@ snapshots:
eslint-plugin-regexp: 2.7.0(eslint@9.29.0) eslint-plugin-regexp: 2.7.0(eslint@9.29.0)
eslint-plugin-sukka: 6.22.1(eslint@9.29.0)(typescript@5.8.3) eslint-plugin-sukka: 6.22.1(eslint@9.29.0)(typescript@5.8.3)
eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0) eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.33.1(@typescript-eslint/parser@8.33.1(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)(typescript@5.8.3))(eslint@9.29.0)
foxts: 3.5.0 foxts: 3.6.0
jsonc-eslint-parser: 2.4.0 jsonc-eslint-parser: 2.4.0
picocolors: 1.1.1 picocolors: 1.1.1
typescript-eslint: 8.33.1(eslint@9.29.0)(typescript@5.8.3) typescript-eslint: 8.33.1(eslint@9.29.0)(typescript@5.8.3)
@ -2986,7 +2955,7 @@ snapshots:
eslint: 9.29.0 eslint: 9.29.0
eslint-compat-utils: 0.6.4(eslint@9.29.0) eslint-compat-utils: 0.6.4(eslint@9.29.0)
eslint-json-compat-utils: 0.2.1(eslint@9.29.0)(jsonc-eslint-parser@2.4.0) eslint-json-compat-utils: 0.2.1(eslint@9.29.0)(jsonc-eslint-parser@2.4.0)
espree: 10.3.0 espree: 10.4.0
graphemer: 1.4.0 graphemer: 1.4.0
jsonc-eslint-parser: 2.4.0 jsonc-eslint-parser: 2.4.0
natural-compare: 1.4.0 natural-compare: 1.4.0
@ -3037,7 +3006,7 @@ snapshots:
'@eslint-sukka/shared': 6.22.1(eslint@9.29.0)(typescript@5.8.3) '@eslint-sukka/shared': 6.22.1(eslint@9.29.0)(typescript@5.8.3)
'@typescript-eslint/type-utils': 8.33.1(eslint@9.29.0)(typescript@5.8.3) '@typescript-eslint/type-utils': 8.33.1(eslint@9.29.0)(typescript@5.8.3)
'@typescript-eslint/utils': 8.33.1(eslint@9.29.0)(typescript@5.8.3) '@typescript-eslint/utils': 8.33.1(eslint@9.29.0)(typescript@5.8.3)
foxts: 3.5.0 foxts: 3.6.0
optionalDependencies: optionalDependencies:
typescript: 5.8.3 typescript: 5.8.3
transitivePeerDependencies: transitivePeerDependencies:
@ -3059,8 +3028,6 @@ snapshots:
eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@3.4.3: {}
eslint-visitor-keys@4.2.0: {}
eslint-visitor-keys@4.2.1: {} eslint-visitor-keys@4.2.1: {}
eslint@9.29.0: eslint@9.29.0:
@ -3103,12 +3070,6 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
espree@10.3.0:
dependencies:
acorn: 8.14.0
acorn-jsx: 5.3.2(acorn@8.14.0)
eslint-visitor-keys: 4.2.0
espree@10.4.0: espree@10.4.0:
dependencies: dependencies:
acorn: 8.15.0 acorn: 8.15.0
@ -3117,8 +3078,8 @@ snapshots:
espree@9.6.1: espree@9.6.1:
dependencies: dependencies:
acorn: 8.14.0 acorn: 8.15.0
acorn-jsx: 5.3.2(acorn@8.14.0) acorn-jsx: 5.3.2(acorn@8.15.0)
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
esprima@4.0.1: {} esprima@4.0.1: {}
@ -3203,7 +3164,7 @@ snapshots:
cross-spawn: 7.0.6 cross-spawn: 7.0.6
signal-exit: 4.1.0 signal-exit: 4.1.0
foxts@3.5.0: foxts@3.6.0:
dependencies: dependencies:
fast-escape-html: 1.1.0 fast-escape-html: 1.1.0
@ -3383,7 +3344,7 @@ snapshots:
jsonc-eslint-parser@2.4.0: jsonc-eslint-parser@2.4.0:
dependencies: dependencies:
acorn: 8.14.0 acorn: 8.15.0
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
espree: 9.6.1 espree: 9.6.1
semver: 7.7.2 semver: 7.7.2
@ -3769,18 +3730,12 @@ snapshots:
tldts-core@6.1.86: {} tldts-core@6.1.86: {}
tldts-core@7.0.5: {}
tldts-core@7.0.8: {} tldts-core@7.0.8: {}
tldts-experimental@6.1.86: tldts-experimental@6.1.86:
dependencies: dependencies:
tldts-core: 6.1.86 tldts-core: 6.1.86
tldts-experimental@7.0.5:
dependencies:
tldts-core: 7.0.5
tldts-experimental@7.0.8: tldts-experimental@7.0.8:
dependencies: dependencies:
tldts-core: 7.0.8 tldts-core: 7.0.8
@ -3827,7 +3782,7 @@ snapshots:
undici-cache-store-better-sqlite3@1.0.0(undici@7.10.0): undici-cache-store-better-sqlite3@1.0.0(undici@7.10.0):
dependencies: dependencies:
better-sqlite3: 11.10.0 better-sqlite3: 11.10.0
foxts: 3.5.0 foxts: 3.6.0
undici: 7.10.0 undici: 7.10.0
undici-types@7.8.0: {} undici-types@7.8.0: {}