From a3f98c2f29a3513b74e93a563fa003a1b4ae7ccd Mon Sep 17 00:00:00 2001 From: SukkaW Date: Wed, 15 Oct 2025 00:31:27 +0800 Subject: [PATCH] Housekeeping & Make ESLint Happy --- Build/build-reject-domainset.ts | 183 +++++++------- Build/build-sspanel-appprofile.ts | 24 +- Build/constants/reject-data-source.ts | 11 +- Build/lib/rules/base.ts | 2 +- package.json | 8 +- pnpm-lock.yaml | 342 +++++++++++++------------- 6 files changed, 293 insertions(+), 277 deletions(-) diff --git a/Build/build-reject-domainset.ts b/Build/build-reject-domainset.ts index 778f0a59..c87f172e 100644 --- a/Build/build-reject-domainset.ts +++ b/Build/build-reject-domainset.ts @@ -24,6 +24,7 @@ import type { MaybePromise } from './lib/misc'; import { RulesetOutput } from './lib/rules/ruleset'; import { fetchAssets } from './lib/fetch-assets'; import { AUGUST_ASN, HUIZE_ASN } from '../Source/ip/badboy_asn'; +import { arrayPushNonNullish } from 'foxts/array-push-non-nullish'; const readLocalRejectDomainsetPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'domainset/reject.conf')); const readLocalRejectExtraDomainsetPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'domainset/reject_extra.conf')); @@ -117,102 +118,112 @@ export const buildRejectDomainSet = task(require.main === module, __filename)(as // Parse from AdGuard Filters await span .traceChild('download and process hosts / adblock filter rules') - .traceAsyncFn((childSpan) => Promise.all([ - + .traceAsyncFn((childSpan) => { + const promises: Array> = []; // Parse from remote hosts & domain lists - hostsDownloads.map(task => task(childSpan).then(appendArrayToRejectOutput)), - hostsExtraDownloads.map(task => task(childSpan).then(appendArrayToRejectExtraOutput)), - domainListsDownloads.map(task => task(childSpan).then(appendArrayToRejectOutput)), - domainListsExtraDownloads.map(task => task(childSpan).then(appendArrayToRejectExtraOutput)), + arrayPushNonNullish(promises, hostsDownloads.map(task => task(childSpan).then(appendArrayToRejectOutput))); + arrayPushNonNullish(promises, hostsExtraDownloads.map(task => task(childSpan).then(appendArrayToRejectExtraOutput))); + arrayPushNonNullish(promises, domainListsDownloads.map(task => task(childSpan).then(appendArrayToRejectOutput))); + arrayPushNonNullish(promises, domainListsExtraDownloads.map(task => task(childSpan).then(appendArrayToRejectExtraOutput))); - rejectPhisingDomainsetOutput.addFromDomainset(getPhishingDomains(childSpan)), + rejectPhisingDomainsetOutput.addFromDomainset(getPhishingDomains(childSpan)); - adguardFiltersDownloads.map( - task => task(childSpan).then(({ - filterRulesUrl, - whiteDomains, whiteDomainSuffixes, - blackDomains, blackDomainSuffixes, - blackIPs, blackWildcard, - whiteKeyword, blackKeyword - }) => { - addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomains); - addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomainSuffixes, suffix => '.' + suffix); + arrayPushNonNullish( + promises, + adguardFiltersDownloads.map( + task => task(childSpan).then(({ + filterRulesUrl, + whiteDomains, whiteDomainSuffixes, + blackDomains, blackDomainSuffixes, + blackIPs, blackWildcard, + whiteKeyword, blackKeyword + }) => { + addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomains); + addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomainSuffixes, suffix => '.' + suffix); - addArrayElementsToSet(filterRuleWhiteKeywords, whiteKeyword); + addArrayElementsToSet(filterRuleWhiteKeywords, whiteKeyword); - rejectDomainsetOutput.bulkAddDomain(blackDomains); - rejectDomainsetOutput.bulkAddDomainSuffix(blackDomainSuffixes); + rejectDomainsetOutput.bulkAddDomain(blackDomains); + rejectDomainsetOutput.bulkAddDomainSuffix(blackDomainSuffixes); - rejectDomainsetOutput.bulkAddDomainKeyword(blackKeyword); + rejectDomainsetOutput.bulkAddDomainKeyword(blackKeyword); - rejectDomainsetOutput.appendDataSource(filterRulesUrl); + rejectDomainsetOutput.appendDataSource(filterRulesUrl); - rejectNonIpRulesetOutput.bulkAddDomainWildcard(blackWildcard); - rejectNonIpRulesetOutput.appendDataSource(filterRulesUrl); + rejectNonIpRulesetOutput.bulkAddDomainWildcard(blackWildcard); + rejectNonIpRulesetOutput.appendDataSource(filterRulesUrl); - rejectIPOutput.bulkAddAnyCIDR(blackIPs, false); - rejectIPOutput.appendDataSource(filterRulesUrl); - }) - ), - adguardFiltersExtraDownloads.map( - task => task(childSpan).then(({ - filterRulesUrl, - whiteDomains, whiteDomainSuffixes, - blackDomains, blackDomainSuffixes, - blackIPs, blackWildcard, whiteKeyword, blackKeyword - }) => { - addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomains); - addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomainSuffixes, suffix => '.' + suffix); - addArrayElementsToSet(filterRuleWhiteKeywords, whiteKeyword); - - rejectExtraDomainsetOutput.bulkAddDomain(blackDomains); - rejectExtraDomainsetOutput.bulkAddDomainSuffix(blackDomainSuffixes); - - rejectExtraDomainsetOutput.bulkAddDomainKeyword(blackKeyword); - - rejectExtraDomainsetOutput.appendDataSource(filterRulesUrl); - - rejectIPOutput.bulkAddAnyCIDR(blackIPs, false); - rejectIPOutput.appendDataSource(filterRulesUrl); - - rejectNonIpRulesetOutput.bulkAddDomainWildcard(blackWildcard); - rejectNonIpRulesetOutput.appendDataSource(filterRulesUrl); - }) - ), - adguardFiltersWhitelistsDownloads.map( - task => task(childSpan).then(({ whiteDomains, whiteDomainSuffixes, blackDomains, blackDomainSuffixes, whiteKeyword, blackKeyword }) => { - addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomains); - addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomainSuffixes, suffix => '.' + suffix); - addArrayElementsToSet(filterRuleWhitelistDomainSets, blackDomains); - addArrayElementsToSet(filterRuleWhitelistDomainSets, blackDomainSuffixes, suffix => '.' + suffix); - addArrayElementsToSet(filterRuleWhiteKeywords, whiteKeyword); - addArrayElementsToSet(filterRuleWhiteKeywords, blackKeyword); - }) - ), - - span.traceChildAsync( - 'get bogus nxdomain ips', - () => fetchAssets(...BOGUS_NXDOMAIN_DNSMASQ, true, false) - .then(arr => { - for (let i = 0, len = arr.length; i < len; i++) { - const line = arr[i]; - if (line.startsWith('bogus-nxdomain=')) { - // bogus nxdomain needs to be blocked even after resolved - rejectIPOutput.addAnyCIDR( - line.slice(15).trim(), - false - ); - } - } - - return arr; + rejectIPOutput.bulkAddAnyCIDR(blackIPs, false); + rejectIPOutput.appendDataSource(filterRulesUrl); }) - ) - ].flat())); + ) + ); + + arrayPushNonNullish( + promises, + adguardFiltersExtraDownloads.map( + task => task(childSpan).then(({ + filterRulesUrl, + whiteDomains, whiteDomainSuffixes, + blackDomains, blackDomainSuffixes, + blackIPs, blackWildcard, whiteKeyword, blackKeyword + }) => { + addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomains); + addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomainSuffixes, suffix => '.' + suffix); + addArrayElementsToSet(filterRuleWhiteKeywords, whiteKeyword); + + rejectExtraDomainsetOutput.bulkAddDomain(blackDomains); + rejectExtraDomainsetOutput.bulkAddDomainSuffix(blackDomainSuffixes); + + rejectExtraDomainsetOutput.bulkAddDomainKeyword(blackKeyword); + + rejectExtraDomainsetOutput.appendDataSource(filterRulesUrl); + + rejectIPOutput.bulkAddAnyCIDR(blackIPs, false); + rejectIPOutput.appendDataSource(filterRulesUrl); + + rejectNonIpRulesetOutput.bulkAddDomainWildcard(blackWildcard); + rejectNonIpRulesetOutput.appendDataSource(filterRulesUrl); + }) + ) + ); + arrayPushNonNullish( + promises, + adguardFiltersWhitelistsDownloads.map( + task => task(childSpan).then(({ whiteDomains, whiteDomainSuffixes, blackDomains, blackDomainSuffixes, whiteKeyword, blackKeyword }) => { + addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomains); + addArrayElementsToSet(filterRuleWhitelistDomainSets, whiteDomainSuffixes, suffix => '.' + suffix); + addArrayElementsToSet(filterRuleWhitelistDomainSets, blackDomains); + addArrayElementsToSet(filterRuleWhitelistDomainSets, blackDomainSuffixes, suffix => '.' + suffix); + addArrayElementsToSet(filterRuleWhiteKeywords, whiteKeyword); + addArrayElementsToSet(filterRuleWhiteKeywords, blackKeyword); + }) + ) + ); + + promises.push(span.traceChildAsync( + 'get bogus nxdomain ips', + () => fetchAssets(...BOGUS_NXDOMAIN_DNSMASQ, true, false).then(arr => { + for (let i = 0, len = arr.length; i < len; i++) { + const line = arr[i]; + if (line.startsWith('bogus-nxdomain=')) { + // bogus nxdomain needs to be blocked even after resolved + rejectIPOutput.addAnyCIDR( + line.slice(15).trim(), + false + ); + } + } + // return arr; + }) + )); + + return Promise.all(promises); + }); if (foundDebugDomain.value) { - // eslint-disable-next-line sukka/unicorn/no-process-exit -- cli App + // eslint-disable-next-line sukka/unicorn/no-process-exit -- cli App process.exit(1); } @@ -231,8 +242,8 @@ export const buildRejectDomainSet = task(require.main === module, __filename)(as rejectExtraDomainsetOutput.whitelistDomain(domain); rejectPhisingDomainsetOutput.whitelistDomain(domain); - // DON'T Whitelist reject non_ip ruleset, we are force blocking thingshere - // rejectNonIpRulesetOutput.whitelistDomain(domain); + // DON'T Whitelist reject non_ip ruleset, we are force blocking thingshere + // rejectNonIpRulesetOutput.whitelistDomain(domain); } // we use "whitelistKeyword" method, this will be used to create kwfilter internally @@ -271,7 +282,7 @@ export const buildRejectDomainSet = task(require.main === module, __filename)(as rejectOutputAdGuardHome.domainTrie = rejectDomainsetOutput.domainTrie; await rejectOutputAdGuardHome - // .addFromRuleset(readLocalMyRejectRulesetPromise) + // .addFromRuleset(readLocalMyRejectRulesetPromise) .addFromRuleset(readLocalRejectRulesetPromise) .addFromRuleset(readFileIntoProcessedArray(path.join(SOURCE_DIR, 'non_ip/reject-drop.conf'))) .addFromRuleset(readFileIntoProcessedArray(path.join(SOURCE_DIR, 'non_ip/reject-no-drop.conf'))) diff --git a/Build/build-sspanel-appprofile.ts b/Build/build-sspanel-appprofile.ts index 70d19194..1e8888a2 100644 --- a/Build/build-sspanel-appprofile.ts +++ b/Build/build-sspanel-appprofile.ts @@ -30,6 +30,16 @@ const steamDomainsPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'do * This only generates a simplified version, for under-used users only. */ export const buildSSPanelUIMAppProfile = task(require.main === module, __filename)(async (span) => { + const streamRules = AllStreamServices.flatMap((i) => i.rules); + const [streamCidrs4, streamCidrs6] = AllStreamServices.reduce<[cidr4: string[], cidr6: string[]]>((acc, i) => { + if (i.ip) { + appendArrayInPlace(acc[0], i.ip.v4); + appendArrayInPlace(acc[1], i.ip.v6); + } + + return acc; + }, [[], []]); + const [ [domesticRules, directRules, lanRules], appleCdnDomains, @@ -38,12 +48,12 @@ export const buildSSPanelUIMAppProfile = task(require.main === module, __filenam neteaseMusicRules, microsoftRules, appleRules, - streamRules, + // streamRules, steamDomainset, globalRules, telegramRules, [domesticCidrs4, domesticCidrs6], - [streamCidrs4, streamCidrs6], + // [streamCidrs4, streamCidrs6], { ipcidr: telegramCidrs4, ipcidr6: telegramCidrs6 }, rawLanCidrs ] = await Promise.all([ @@ -56,8 +66,6 @@ export const buildSSPanelUIMAppProfile = task(require.main === module, __filenam // microsoft & apple - domains readFileIntoProcessedArray(path.join(OUTPUT_SURGE_DIR, 'non_ip/microsoft.conf')), readFileIntoProcessedArray(path.join(OUTPUT_SURGE_DIR, 'non_ip/apple_services.conf')), - // stream - domains - AllStreamServices.flatMap((i) => i.rules), // steam - domains steamDomainsPromise, // global - domains @@ -65,14 +73,6 @@ export const buildSSPanelUIMAppProfile = task(require.main === module, __filenam readFileIntoProcessedArray(path.join(OUTPUT_SURGE_DIR, 'non_ip/telegram.conf')), // domestic - ip cidr getChnCidrPromise(), - AllStreamServices.reduce<[cidr4: string[], cidr6: string[]]>((acc, i) => { - if (i.ip) { - appendArrayInPlace(acc[0], i.ip.v4); - appendArrayInPlace(acc[1], i.ip.v6); - } - - return acc; - }, [[], []]), // global - ip cidr getTelegramCIDRPromise(), // lan - ip cidr diff --git a/Build/constants/reject-data-source.ts b/Build/constants/reject-data-source.ts index 55aa5b4f..c2c036bd 100644 --- a/Build/constants/reject-data-source.ts +++ b/Build/constants/reject-data-source.ts @@ -145,6 +145,11 @@ export const DOMAIN_LISTS_EXTRA: HostsSource[] = [ 'https://curbengh.github.io/urlhaus-filter/urlhaus-filter-domains-online.txt' ], true + ], + [ + 'https://raw.githubusercontent.com/DandelionSprout/adfilt/refs/heads/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareDomains.txt', + [], + true ] // Spam404 // Not actively maintained, let's consider it is dead @@ -254,12 +259,6 @@ export const ADGUARD_FILTERS: AdGuardFilterSource[] = [ ] ] // - // [ - // 'https://raw.githubusercontent.com/DandelionSprout/adfilt/master/Alternate%20versions%20Anti-Malware%20List/AntiMalwareAdGuardHome.txt', - // [ - // 'https://adguardteam.github.io/HostlistsRegistry/assets/filter_12.txt' - // ] - // ] // Stalkerware // [ // 'https://raw.githubusercontent.com/AssoEchap/stalkerware-indicators/master/generated/hosts', diff --git a/Build/lib/rules/base.ts b/Build/lib/rules/base.ts index fbc6c639..dbfbf623 100644 --- a/Build/lib/rules/base.ts +++ b/Build/lib/rules/base.ts @@ -546,7 +546,7 @@ export class FileOutput { childSpan.traceChildSync('write to strategies', () => this.writeToStrategies()); return childSpan.traceChildAsync('output to disk', (childSpan) => { - const promises: Array | void> = []; + const promises: Array> = []; const descriptions = nullthrow(this.description, 'Missing description'); diff --git a/package.json b/package.json index 7849a3d5..a90f6262 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "fast-cidr-tools": "^0.3.3", "fast-uri": "^3.1.0", "fdir": "^6.5.0", - "foxts": "^4.4.0", + "foxts": "^4.5.0", "hash-wasm": "^4.12.0", "json-stringify-pretty-compact": "4.0.0", "null-prototype-object": "^1.2.3", @@ -49,7 +49,7 @@ "yauzl-promise": "^4.0.0" }, "devDependencies": { - "@eslint-sukka/node": "^7.3.3", + "@eslint-sukka/node": "^7.3.5", "@swc-node/register": "^1.11.1", "@swc/core": "^1.13.5", "@types/better-sqlite3": "^7.6.13", @@ -60,8 +60,8 @@ "@types/tar-fs": "^2.0.4", "@types/yauzl-promise": "^4.0.1", "eslint": "^9.37.0", - "eslint-config-sukka": "^7.3.3", - "eslint-formatter-sukka": "^7.3.3", + "eslint-config-sukka": "^7.3.5", + "eslint-formatter-sukka": "^7.3.5", "expect": "^30.2.0", "mitata": "^1.0.34", "mocha": "^11.7.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49de4479..44f73e89 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,8 +51,8 @@ importers: specifier: ^6.5.0 version: 6.5.0(picomatch@4.0.3) foxts: - specifier: ^4.4.0 - version: 4.4.0 + specifier: ^4.5.0 + version: 4.5.0 hash-wasm: specifier: ^4.12.0 version: 4.12.0 @@ -100,8 +100,8 @@ importers: version: 4.0.0 devDependencies: '@eslint-sukka/node': - specifier: ^7.3.3 - version: 7.3.3(eslint@9.37.0)(typescript@5.9.3) + specifier: ^7.3.5 + version: 7.3.5(eslint@9.37.0)(typescript@5.9.3) '@swc-node/register': specifier: ^1.11.1 version: 1.11.1(@swc/core@1.13.5)(@swc/types@0.1.24)(typescript@5.9.3) @@ -133,11 +133,11 @@ importers: specifier: ^9.37.0 version: 9.37.0 eslint-config-sukka: - specifier: ^7.3.3 - version: 7.3.3(@typescript-eslint/utils@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0)(typescript@5.9.3) + specifier: ^7.3.5 + version: 7.3.5(@typescript-eslint/utils@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0)(typescript@5.9.3) eslint-formatter-sukka: - specifier: ^7.3.3 - version: 7.3.3(eslint@9.37.0) + specifier: ^7.3.5 + version: 7.3.5(eslint@9.37.0) expect: specifier: ^30.2.0 version: 30.2.0 @@ -192,16 +192,16 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-sukka/eslint-plugin-stylistic@7.3.3': - resolution: {integrity: sha512-l7gket2oRda4qNpgbzpQMZWEjGsYSCqsG0IK3pHLqWc9phPUCSOPNMrFR2h7f1d6QekgYu2V/N7M4Es3M3t9KA==} + '@eslint-sukka/eslint-plugin-stylistic@7.3.5': + resolution: {integrity: sha512-YitFTu+Ajh3sktTNER9Vq5SmZ0yoka914WzSEIRKgOiNoHqMYIBNYMGROBYt97niY9nOr/VYxVixE2YiJHwnAg==} peerDependencies: eslint: '*' - '@eslint-sukka/node@7.3.3': - resolution: {integrity: sha512-CeSi/TGCDdHAi8bi4XkSjWZ72Z5w47fhWrFZNXT/YKodePjvruSQc5sajjETdhFBIZkhFg9AOM1tA0tE94YpkA==} + '@eslint-sukka/node@7.3.5': + resolution: {integrity: sha512-EoSV7fOaPmFFu7CxjDZ/ANqMQ/gEA2cdgfJ7qjsoqo9q0w/OUsFB/El8hH9/40rH1l8aJM9KLbu9yvQF3VfC2w==} - '@eslint-sukka/shared@7.3.3': - resolution: {integrity: sha512-GfdQaHYDGAKMLEMCSsaKmILs3bGZpV39DdomZyTcc3xr1g8XslBoKn22NtMjw3iAfY74q1jHRDAMUvPCqhFwgQ==} + '@eslint-sukka/shared@7.3.5': + resolution: {integrity: sha512-ttsaWyrIgx0ef7bqvYyvRtgZMxAODKB6uCKzE2QkDVTYx6cLbbHYPA0CgyOZzhSSOzWqkbUXdy+poEhU2EpVYA==} '@eslint/config-array@0.21.0': resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} @@ -690,63 +690,63 @@ packages: '@types/yauzl-promise@4.0.1': resolution: {integrity: sha512-qYEC3rJwqiJpdQ9b+bPNeuSY0c3JUM8vIuDy08qfuVN7xHm3ZDsHn2kGphUIB0ruEXrPGNXZ64nMUcu4fDjViQ==} - '@typescript-eslint/eslint-plugin@8.46.0': - resolution: {integrity: sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==} + '@typescript-eslint/eslint-plugin@8.46.1': + resolution: {integrity: sha512-rUsLh8PXmBjdiPY+Emjz9NX2yHvhS11v0SR6xNJkm5GM1MO9ea/1GoDKlHHZGrOJclL/cZ2i/vRUYVtjRhrHVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.46.0 + '@typescript-eslint/parser': ^8.46.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.46.0': - resolution: {integrity: sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==} + '@typescript-eslint/parser@8.46.1': + resolution: {integrity: sha512-6JSSaBZmsKvEkbRUkf7Zj7dru/8ZCrJxAqArcLaVMee5907JdtEbKGsZ7zNiIm/UAkpGUkaSMZEXShnN2D1HZA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.46.0': - resolution: {integrity: sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==} + '@typescript-eslint/project-service@8.46.1': + resolution: {integrity: sha512-FOIaFVMHzRskXr5J4Jp8lFVV0gz5ngv3RHmn+E4HYxSJ3DgDzU7fVI1/M7Ijh1zf6S7HIoaIOtln1H5y8V+9Zg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.46.0': - resolution: {integrity: sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==} + '@typescript-eslint/scope-manager@8.46.1': + resolution: {integrity: sha512-weL9Gg3/5F0pVQKiF8eOXFZp8emqWzZsOJuWRUNtHT+UNV2xSJegmpCNQHy37aEQIbToTq7RHKhWvOsmbM680A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.46.0': - resolution: {integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==} + '@typescript-eslint/tsconfig-utils@8.46.1': + resolution: {integrity: sha512-X88+J/CwFvlJB+mK09VFqx5FE4H5cXD+H/Bdza2aEWkSb8hnWIQorNcscRl4IEo1Cz9VI/+/r/jnGWkbWPx54g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.46.0': - resolution: {integrity: sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==} + '@typescript-eslint/type-utils@8.46.1': + resolution: {integrity: sha512-+BlmiHIiqufBxkVnOtFwjah/vrkF4MtKKvpXrKSPLCkCtAp8H01/VV43sfqA98Od7nJpDcFnkwgyfQbOG0AMvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.46.0': - resolution: {integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==} + '@typescript-eslint/types@8.46.1': + resolution: {integrity: sha512-C+soprGBHwWBdkDpbaRC4paGBrkIXxVlNohadL5o0kfhsXqOC6GYH2S/Obmig+I0HTDl8wMaRySwrfrXVP8/pQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.46.0': - resolution: {integrity: sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==} + '@typescript-eslint/typescript-estree@8.46.1': + resolution: {integrity: sha512-uIifjT4s8cQKFQ8ZBXXyoUODtRoAd7F7+G8MKmtzj17+1UbdzFl52AzRyZRyKqPHhgzvXunnSckVu36flGy8cg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.46.0': - resolution: {integrity: sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==} + '@typescript-eslint/utils@8.46.1': + resolution: {integrity: sha512-vkYUy6LdZS7q1v/Gxb2Zs7zziuXN0wxqsetJdeZdRe/f5dwJFglmuvZBfTUivCtjH725C1jWCDfpadadD95EDQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.46.0': - resolution: {integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==} + '@typescript-eslint/visitor-keys@8.46.1': + resolution: {integrity: sha512-ptkmIf2iDkNUjdeu2bQqhFPV1m6qTnFFjg7PPDjxKWaMaP0Z6I9l30Jr3g5QqbZGdw8YdYvLp+XnqnWWZOg/NA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@unrs/resolver-binding-android-arm-eabi@1.11.1': @@ -1009,8 +1009,8 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - comment-json@4.2.5: - resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==} + comment-json@4.4.1: + resolution: {integrity: sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==} engines: {node: '>= 6'} comment-parser@1.4.1: @@ -1059,6 +1059,15 @@ packages: supports-color: optional: true + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@4.0.0: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} @@ -1167,11 +1176,11 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-config-sukka@7.3.3: - resolution: {integrity: sha512-gafTceuX0NZzuk6p4dMBoHlm/ZZ4Pvs5f5MpNQwoleHvuQy1bl08UyNbbmN9cDa5djX27iKVOD/qw+/0jIPAtg==} + eslint-config-sukka@7.3.5: + resolution: {integrity: sha512-phX7VamyCVhUI/eDUNrIIfmNBh27XuzKgu28cvMOhBd5iYB+3HLK+/DTthxB7J5GUTKAfHd3zZR1GViWS7WdxQ==} - eslint-formatter-sukka@7.3.3: - resolution: {integrity: sha512-MX6RFVjCbivWCN0YI/AjWpOqPO7OMhafPdz1BHmlf2VVESj4T9dJYpGiFGi44hqYi2Jt8o6d3UPUwOLsBz0rrQ==} + eslint-formatter-sukka@7.3.5: + resolution: {integrity: sha512-d2dudNANB8hIma2c10jMn3MK7oC3ituv3cWuwj8ym+CbnnhGgu3Y5D6gSZea3BMgjZcwNMpWKTHpJ4j19MW5VQ==} peerDependencies: eslint: '*' @@ -1263,8 +1272,8 @@ packages: peerDependencies: eslint: '>=8.44.0' - eslint-plugin-sukka@7.3.3: - resolution: {integrity: sha512-eRGEBF5pd5nvFxVKzTje5ZRr0h3t7AQ5I6U4iVd/h6gyh9bx6v6OrnN+n11rNsD8GQSTbgUWrk/k+5+ElW6BiQ==} + eslint-plugin-sukka@7.3.5: + resolution: {integrity: sha512-1fC66OcoIUcyw74oFyd2IDEb7OLbnTGL6BxbzUso4x+nLJsVJSwLE9AfwN2rndZ5++MOv2EZIOD+GZMK0ioM6w==} peerDependencies: eslint: '*' typescript: '*' @@ -1428,8 +1437,8 @@ packages: foxts@3.15.0: resolution: {integrity: sha512-XaSnlPKgD23NGdfuUHAX50V9h17bavUEZthg3SBO8ajT3D0pFg6KhYRvKNOlB+t7MpKZ1fj22bUPssH5PY0h4w==} - foxts@4.4.0: - resolution: {integrity: sha512-JfNrapswF+lEebNmJXukHSiqEiX9ox0A6B3n70PqP9t9odoMMTccDNzY9qDoYDn8KqDkF9uWMQ5BBK7tHtPZhQ==} + foxts@4.5.0: + resolution: {integrity: sha512-1eWQ9TCj/F9NFYE0nZ3ou/84/Mk6qZioxYYkDMuinSeg/MZ6kb5SkXkjHJB68W3ESopmJRxdqpFigPjow86t1Q==} fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} @@ -1441,8 +1450,8 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-tsconfig@4.10.1: - resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@4.12.0: + resolution: {integrity: sha512-LScr2aNr2FbjAjZh2C6X6BxRx1/x+aTDExct/xyq2XKbYOiG5c0aK7pMsSuyc0brz3ibr/lbQiHD9jzt4lccJw==} github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -1480,10 +1489,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-own-prop@2.0.0: - resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} - engines: {node: '>=8'} - hash-wasm@4.12.0: resolution: {integrity: sha512-+/2B2rYLb48I/evdOIhP+K/DD2ca2fgBjp6O+GBEnCDk2e4rpeXIK8GvIyRPjTezgmWn9gmKwkQjjx6BtqDHVQ==} @@ -1711,8 +1716,8 @@ packages: napi-build-utils@2.0.0: resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} - napi-postinstall@0.3.3: - resolution: {integrity: sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==} + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} hasBin: true @@ -1854,10 +1859,6 @@ packages: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -1890,6 +1891,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + serialize-javascript@6.0.2: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} @@ -1998,8 +2004,8 @@ packages: resolution: {integrity: sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==} engines: {node: ^14.18.0 || >=16.0.0} - tapable@2.2.2: - resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + tapable@2.3.0: + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} tar-fs@2.1.3: @@ -2024,8 +2030,8 @@ packages: tinyexec@1.0.1: resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} tldts-core@7.0.17: @@ -2073,8 +2079,8 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript-eslint@8.46.0: - resolution: {integrity: sha512-6+ZrB6y2bT2DX3K+Qd9vn7OFOJR+xSLDj+Aw/N3zBwUt27uTw2sw2TE2+UcY1RiyBZkaGbTkVg9SSdPNUG6aUw==} + typescript-eslint@8.46.1: + resolution: {integrity: sha512-VHgijW803JafdSsDO8I761r3SHrgk4T00IdyQ+/UsthtgPRsBWQLqoSxOolxTpxRKi1kGXK0bSz4CoAc9ObqJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2229,24 +2235,24 @@ snapshots: '@eslint-community/regexpp@4.12.1': {} - '@eslint-sukka/eslint-plugin-stylistic@7.3.3(eslint@9.37.0)': + '@eslint-sukka/eslint-plugin-stylistic@7.3.5(eslint@9.37.0)': dependencies: eslint: 9.37.0 - '@eslint-sukka/node@7.3.3(eslint@9.37.0)(typescript@5.9.3)': + '@eslint-sukka/node@7.3.5(eslint@9.37.0)(typescript@5.9.3)': dependencies: - '@eslint-sukka/shared': 7.3.3(eslint@9.37.0)(typescript@5.9.3) + '@eslint-sukka/shared': 7.3.5(eslint@9.37.0)(typescript@5.9.3) eslint-plugin-n: 17.23.1(eslint@9.37.0)(typescript@5.9.3) - eslint-plugin-sukka: 7.3.3(eslint@9.37.0)(typescript@5.9.3) + eslint-plugin-sukka: 7.3.5(eslint@9.37.0)(typescript@5.9.3) transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-sukka/shared@7.3.3(eslint@9.37.0)(typescript@5.9.3)': + '@eslint-sukka/shared@7.3.5(eslint@9.37.0)(typescript@5.9.3)': dependencies: '@package-json/types': 0.0.12 - '@typescript-eslint/utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.1(eslint@9.37.0)(typescript@5.9.3) oxc-resolver: 11.9.0 transitivePeerDependencies: - eslint @@ -2686,14 +2692,14 @@ snapshots: dependencies: '@types/node': 24.7.2 - '@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.46.0(eslint@9.37.0)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.46.0 - '@typescript-eslint/type-utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.0 + '@typescript-eslint/parser': 8.46.1(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.1 + '@typescript-eslint/type-utils': 8.46.1(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.1(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.1 eslint: 9.37.0 graphemer: 1.4.0 ignore: 7.0.5 @@ -2703,80 +2709,80 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.46.0 - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.46.0 - debug: 4.4.1(supports-color@8.1.1) + '@typescript-eslint/scope-manager': 8.46.1 + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.1 + debug: 4.4.3 eslint: 9.37.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.46.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.46.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) - '@typescript-eslint/types': 8.46.0 - debug: 4.4.1(supports-color@8.1.1) + '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3) + '@typescript-eslint/types': 8.46.1 + debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.46.0': + '@typescript-eslint/scope-manager@8.46.1': dependencies: - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/visitor-keys': 8.46.0 + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/visitor-keys': 8.46.1 - '@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.46.1(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.46.0(eslint@9.37.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.1(eslint@9.37.0)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) - debug: 4.4.1(supports-color@8.1.1) + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.1(eslint@9.37.0)(typescript@5.9.3) + debug: 4.4.3 eslint: 9.37.0 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.46.0': {} + '@typescript-eslint/types@8.46.1': {} - '@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.46.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.46.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/visitor-keys': 8.46.0 - debug: 4.4.1(supports-color@8.1.1) + '@typescript-eslint/project-service': 8.46.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.1(typescript@5.9.3) + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/visitor-keys': 8.46.1 + debug: 4.4.3 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.7.2 + semver: 7.7.3 ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.46.0(eslint@9.37.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.1(eslint@9.37.0)(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0) - '@typescript-eslint/scope-manager': 8.46.0 - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.1 + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) eslint: 9.37.0 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.46.0': + '@typescript-eslint/visitor-keys@8.46.1': dependencies: - '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/types': 8.46.1 eslint-visitor-keys: 4.2.1 '@unrs/resolver-binding-android-arm-eabi@1.11.1': @@ -2990,13 +2996,11 @@ snapshots: colorette@2.0.20: {} - comment-json@4.2.5: + comment-json@4.4.1: dependencies: array-timsort: 1.0.3 core-util-is: 1.0.3 esprima: 4.0.1 - has-own-prop: 2.0.0 - repeat-string: 1.6.1 comment-parser@1.4.1: {} @@ -3032,6 +3036,10 @@ snapshots: optionalDependencies: supports-color: 8.1.1 + debug@4.4.3: + dependencies: + ms: 2.1.3 + decamelize@4.0.0: {} decompress-response@6.0.0: @@ -3064,7 +3072,7 @@ snapshots: dependencies: debug: 4.4.1(supports-color@8.1.1) dns2: https://codeload.github.com/lsongdev/node-dns/tar.gz/3adb7e91b3101c0e4f43ebaca3a568269ea04d11 - foxts: 4.4.0 + foxts: 4.5.0 tldts: 7.0.17 transitivePeerDependencies: - supports-color @@ -3094,7 +3102,7 @@ snapshots: enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.2 + tapable: 2.3.0 entities@2.2.0: {} @@ -3125,36 +3133,36 @@ snapshots: eslint-compat-utils@0.5.1(eslint@9.37.0): dependencies: eslint: 9.37.0 - semver: 7.7.2 + semver: 7.7.3 eslint-compat-utils@0.6.5(eslint@9.37.0): dependencies: eslint: 9.37.0 - semver: 7.7.2 + semver: 7.7.3 - eslint-config-sukka@7.3.3(@typescript-eslint/utils@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0)(typescript@5.9.3): + eslint-config-sukka@7.3.5(@typescript-eslint/utils@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0)(typescript@5.9.3): dependencies: '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.37.0) - '@eslint-sukka/eslint-plugin-stylistic': 7.3.3(eslint@9.37.0) - '@eslint-sukka/shared': 7.3.3(eslint@9.37.0)(typescript@5.9.3) + '@eslint-sukka/eslint-plugin-stylistic': 7.3.5(eslint@9.37.0) + '@eslint-sukka/shared': 7.3.5(eslint@9.37.0)(typescript@5.9.3) '@eslint/js': 9.37.0 - '@typescript-eslint/eslint-plugin': 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.1(eslint@9.37.0)(typescript@5.9.3) ci-info: 4.3.1 defu: 6.1.4 - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0))(eslint@9.37.0) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0))(eslint@9.37.0) eslint-plugin-autofix: 2.2.0(eslint@9.37.0) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0) eslint-plugin-jsonc: 2.21.0(eslint@9.37.0) eslint-plugin-paths: 1.1.0 eslint-plugin-promise: 7.2.1(eslint@9.37.0) eslint-plugin-regexp: 2.10.0(eslint@9.37.0) - eslint-plugin-sukka: 7.3.3(eslint@9.37.0)(typescript@5.9.3) - eslint-plugin-unused-imports: 4.2.0(@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0) - foxts: 4.4.0 + eslint-plugin-sukka: 7.3.5(eslint@9.37.0)(typescript@5.9.3) + eslint-plugin-unused-imports: 4.2.0(@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0) + foxts: 4.5.0 jsonc-eslint-parser: 2.4.1 picocolors: 1.1.1 - typescript-eslint: 8.46.0(eslint@9.37.0)(typescript@5.9.3) + typescript-eslint: 8.46.1(eslint@9.37.0)(typescript@5.9.3) transitivePeerDependencies: - '@eslint/json' - '@typescript-eslint/utils' @@ -3164,16 +3172,16 @@ snapshots: - supports-color - typescript - eslint-formatter-sukka@7.3.3(eslint@9.37.0): + eslint-formatter-sukka@7.3.5(eslint@9.37.0): dependencies: ci-info: 4.3.1 eslint: 9.37.0 - foxts: 4.4.0 + foxts: 4.5.0 picocolors: 1.1.1 eslint-import-context@0.1.9(unrs-resolver@1.11.1): dependencies: - get-tsconfig: 4.10.1 + get-tsconfig: 4.12.0 stable-hash-x: 0.2.0 optionalDependencies: unrs-resolver: 1.11.1 @@ -3187,18 +3195,18 @@ snapshots: - supports-color optional: true - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0))(eslint@9.37.0): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0))(eslint@9.37.0): dependencies: - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3 eslint: 9.37.0 eslint-import-context: 0.1.9(unrs-resolver@1.11.1) - get-tsconfig: 4.10.1 + get-tsconfig: 4.12.0 is-bun-module: 2.0.0 stable-hash-x: 0.2.0 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0) + eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0) transitivePeerDependencies: - supports-color @@ -3223,20 +3231,20 @@ snapshots: eslint: 9.37.0 eslint-compat-utils: 0.5.1(eslint@9.37.0) - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0): + eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.37.0): dependencies: - '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/types': 8.46.1 comment-parser: 1.4.1 - debug: 4.4.1(supports-color@8.1.1) + debug: 4.4.3 eslint: 9.37.0 eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 minimatch: 10.0.3 - semver: 7.7.2 + semver: 7.7.3 stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.1(eslint@9.37.0)(typescript@5.9.3) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color @@ -3262,18 +3270,18 @@ snapshots: enhanced-resolve: 5.18.3 eslint: 9.37.0 eslint-plugin-es-x: 7.8.0(eslint@9.37.0) - get-tsconfig: 4.10.1 + get-tsconfig: 4.12.0 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 - semver: 7.7.2 + semver: 7.7.3 ts-declaration-location: 1.0.7(typescript@5.9.3) transitivePeerDependencies: - typescript eslint-plugin-paths@1.1.0: dependencies: - comment-json: 4.2.5 + comment-json: 4.4.1 eslint-plugin-promise@7.2.1(eslint@9.37.0): dependencies: @@ -3291,24 +3299,24 @@ snapshots: regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-sukka@7.3.3(eslint@9.37.0)(typescript@5.9.3): + eslint-plugin-sukka@7.3.5(eslint@9.37.0)(typescript@5.9.3): dependencies: - '@eslint-sukka/shared': 7.3.3(eslint@9.37.0)(typescript@5.9.3) - '@typescript-eslint/type-utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) - '@typescript-eslint/types': 8.46.0 - '@typescript-eslint/utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + '@eslint-sukka/shared': 7.3.5(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.46.1(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/types': 8.46.1 + '@typescript-eslint/utils': 8.46.1(eslint@9.37.0)(typescript@5.9.3) eslint: 9.37.0 - foxts: 4.4.0 + foxts: 4.5.0 optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0): + eslint-plugin-unused-imports@4.2.0(@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0): dependencies: eslint: 9.37.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3) eslint-rule-composer@0.3.0: {} @@ -3416,7 +3424,7 @@ snapshots: fast-cidr-tools@0.3.3: dependencies: - foxts: 4.4.0 + foxts: 4.5.0 fast-deep-equal@3.1.3: {} @@ -3482,7 +3490,7 @@ snapshots: fast-escape-html: 1.1.0 fast-escape-regexp: 1.0.1 - foxts@4.4.0: + foxts@4.5.0: dependencies: fast-escape-html: 1.1.0 fast-escape-regexp: 1.0.1 @@ -3494,7 +3502,7 @@ snapshots: get-caller-file@2.0.5: {} - get-tsconfig@4.10.1: + get-tsconfig@4.12.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -3529,8 +3537,6 @@ snapshots: has-flag@4.0.0: {} - has-own-prop@2.0.0: {} - hash-wasm@4.12.0: {} hasown@2.0.2: @@ -3570,7 +3576,7 @@ snapshots: is-bun-module@2.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 is-core-module@2.16.1: dependencies: @@ -3677,7 +3683,7 @@ snapshots: acorn: 8.15.0 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - semver: 7.7.2 + semver: 7.7.3 keyv@4.5.4: dependencies: @@ -3762,7 +3768,7 @@ snapshots: napi-build-utils@2.0.0: {} - napi-postinstall@0.3.3: {} + napi-postinstall@0.3.4: {} natural-compare@1.4.0: {} @@ -3919,8 +3925,6 @@ snapshots: '@eslint-community/regexpp': 4.12.1 refa: 0.12.1 - repeat-string@1.6.1: {} - require-directory@2.1.1: {} resolve-from@4.0.0: {} @@ -3948,6 +3952,8 @@ snapshots: semver@7.7.2: {} + semver@7.7.3: {} + serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 @@ -4048,7 +4054,7 @@ snapshots: dependencies: '@pkgr/core': 0.2.9 - tapable@2.2.2: {} + tapable@2.3.0: {} tar-fs@2.1.3: dependencies: @@ -4109,7 +4115,7 @@ snapshots: tinyexec@1.0.1: {} - tinyglobby@0.2.14: + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 @@ -4155,12 +4161,12 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript-eslint@8.46.0(eslint@9.37.0)(typescript@5.9.3): + typescript-eslint@8.46.1(eslint@9.37.0)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.46.0(eslint@9.37.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.46.0(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0)(typescript@5.9.3))(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.1(eslint@9.37.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.46.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.1(eslint@9.37.0)(typescript@5.9.3) eslint: 9.37.0 typescript: 5.9.3 transitivePeerDependencies: @@ -4180,7 +4186,7 @@ snapshots: unrs-resolver@1.11.1: dependencies: - napi-postinstall: 0.3.3 + napi-postinstall: 0.3.4 optionalDependencies: '@unrs/resolver-binding-android-arm-eabi': 1.11.1 '@unrs/resolver-binding-android-arm64': 1.11.1