diff --git a/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts b/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts index bef1bfeb..6035c104 100644 --- a/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts +++ b/Build/build-domestic-direct-lan-ruleset-dns-mapping-module.ts @@ -12,7 +12,7 @@ import * as yaml from 'yaml'; import { appendArrayInPlace } from './lib/append-array-in-place'; import { OUTPUT_INTERNAL_DIR, OUTPUT_MODULES_DIR, OUTPUT_MODULES_RULES_DIR, SOURCE_DIR } from './constants/dir'; import { RulesetOutput } from './lib/create-file'; -import { SurgeRuleSet } from './lib/writing-strategy/surge'; +import { SurgeOnlyRulesetOutput } from './lib/rules/ruleset'; export function createGetDnsMappingRule(allowWildcard: boolean) { const hasWildcard = (domain: string) => { @@ -115,16 +115,13 @@ export const buildDomesticRuleset = task(require.main === module, __filename)(as return; } - const output = new RulesetOutput(span, name.toLowerCase(), 'sukka_local_dns_mapping') + const output = new SurgeOnlyRulesetOutput(span, name.toLowerCase(), 'sukka_local_dns_mapping', OUTPUT_MODULES_RULES_DIR) .withTitle(`Sukka's Ruleset - Local DNS Mapping (${name})`) .withDescription([ ...SHARED_DESCRIPTION, '', 'This is an internal rule that is only referenced by sukka_local_dns_mapping.sgmodule', 'Do not use this file in your Rule section, all rules are included in non_ip/domestic.conf already.' - ]) - .replaceStrategies([ - new SurgeRuleSet('sukka_local_dns_mapping', OUTPUT_MODULES_RULES_DIR) ]); domains.forEach((domain) => { diff --git a/Build/build-reject-domainset.ts b/Build/build-reject-domainset.ts index 84155019..1a46e1d9 100644 --- a/Build/build-reject-domainset.ts +++ b/Build/build-reject-domainset.ts @@ -19,8 +19,7 @@ import { addArrayElementsToSet } from 'foxts/add-array-elements-to-set'; import { OUTPUT_INTERNAL_DIR, SOURCE_DIR } from './constants/dir'; import { DomainsetOutput } from './lib/create-file'; import { foundDebugDomain } from './lib/parse-filter/shared'; -import { AdGuardHome } from './lib/writing-strategy/adguardhome'; -import { FileOutput } from './lib/rules/base'; +import { AdGuardHomeOutput } from './lib/rules/domainset'; const readLocalRejectDomainsetPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'domainset/reject_sukka.conf')); const readLocalRejectExtraDomainsetPromise = readFileIntoProcessedArray(path.join(SOURCE_DIR, 'domainset/reject_sukka_extra.conf')); @@ -151,12 +150,11 @@ export const buildRejectDomainSet = task(require.main === module, __filename)(as // we are going to re-use rejectOutput's domainTrie and mutate it // so we must wait until we write rejectOutput to disk after we can mutate its trie - const rejectOutputAdGuardHome = new FileOutput(span, 'reject-adguardhome') + const rejectOutputAdGuardHome = new AdGuardHomeOutput(span, 'reject-adguardhome', OUTPUT_INTERNAL_DIR) .withTitle('Sukka\'s Ruleset - Blocklist for AdGuardHome') .withDescription([ 'The domainset supports AD blocking, tracking protection, privacy protection, anti-phishing, anti-mining' - ]) - .replaceStrategies([new AdGuardHome(OUTPUT_INTERNAL_DIR)]); + ]); rejectOutputAdGuardHome.domainTrie = rejectOutput.domainTrie; diff --git a/Build/build-sgmodule-always-realip.ts b/Build/build-sgmodule-always-realip.ts index 3bda5d65..fe2ad687 100644 --- a/Build/build-sgmodule-always-realip.ts +++ b/Build/build-sgmodule-always-realip.ts @@ -1,6 +1,6 @@ import path from 'node:path'; import { task } from './trace'; -import { compareAndWriteFile, DomainsetOutput } from './lib/create-file'; +import { compareAndWriteFile } from './lib/create-file'; import { DIRECTS, LAN } from '../Source/non_ip/direct'; import type { DNSMapping } from '../Source/non_ip/direct'; import { DOMESTICS, DOH_BOOTSTRAP } from '../Source/non_ip/domestic'; @@ -10,6 +10,7 @@ import { appendArrayInPlace } from './lib/append-array-in-place'; import { SHARED_DESCRIPTION } from './constants/description'; import { createGetDnsMappingRule } from './build-domestic-direct-lan-ruleset-dns-mapping-module'; import { ClashDomainSet } from './lib/writing-strategy/clash'; +import { FileOutput } from './lib/rules/base'; const HOSTNAMES = [ // Network Detection, Captive Portal @@ -39,14 +40,14 @@ const HOSTNAMES = [ export const buildAlwaysRealIPModule = task(require.main === module, __filename)(async (span) => { const surge: string[] = []; - const clashFakeIpFilter = new DomainsetOutput(span, 'clash_fake_ip_filter') + const clashFakeIpFilter = new FileOutput(span, 'clash_fake_ip_filter') .withTitle('Sukka\'s Ruleset - Always Real IP Plus') .withDescription([ ...SHARED_DESCRIPTION, '', 'Clash.Meta fake-ip-filter as ruleset' ]) - .replaceStrategies([ + .withStrategies([ new ClashDomainSet('domainset') ]); diff --git a/Build/build-sspanel-appprofile.ts b/Build/build-sspanel-appprofile.ts index 411a53be..9f38240b 100644 --- a/Build/build-sspanel-appprofile.ts +++ b/Build/build-sspanel-appprofile.ts @@ -7,12 +7,12 @@ import path from 'node:path'; import { ALL as AllStreamServices } from '../Source/stream'; import { getChnCidrPromise } from './build-chn-cidr'; import { getTelegramCIDRPromise } from './build-telegram-cidr'; -import { compareAndWriteFile, RulesetOutput } from './lib/create-file'; +import { compareAndWriteFile } from './lib/create-file'; import { getMicrosoftCdnRulesetPromise } from './build-microsoft-cdn'; import { isTruthy, nullthrow } from 'foxts/guard'; import { appendArrayInPlace } from './lib/append-array-in-place'; import { OUTPUT_INTERNAL_DIR, OUTPUT_SURGE_DIR, SOURCE_DIR } from './constants/dir'; -import { ClashClassicRuleSet } from './lib/writing-strategy/clash'; +import { ClashOnlyRulesetOutput } from './lib/rules/ruleset'; const POLICY_GROUPS: Array<[name: string, insertProxy: boolean, insertDirect: boolean]> = [ ['Default Proxy', true, false], @@ -79,8 +79,7 @@ export const buildSSPanelUIMAppProfile = task(require.main === module, __filenam readFileIntoProcessedArray(path.join(OUTPUT_SURGE_DIR, 'ip/lan.conf')) ] as const); - const domestic = new RulesetOutput(span, '_', 'non_ip') - .replaceStrategies([new ClashClassicRuleSet('non_ip')]) + const domestic = new ClashOnlyRulesetOutput(span, '_', 'non_ip') .addFromRuleset(domesticRules) .bulkAddDomainSuffix(appleCdnDomains) .bulkAddDomain(microsoftCdnDomains) @@ -88,61 +87,52 @@ export const buildSSPanelUIMAppProfile = task(require.main === module, __filenam .addFromRuleset(appleCnRules) .addFromRuleset(neteaseMusicRules); - const microsoftApple = new RulesetOutput(span, '_', 'non_ip') - .replaceStrategies([new ClashClassicRuleSet('non_ip')]) + const microsoftApple = new ClashOnlyRulesetOutput(span, '_', 'non_ip') .addFromRuleset(microsoftRules) .addFromRuleset(appleRules); - const stream = new RulesetOutput(span, '_', 'non_ip') - .replaceStrategies([new ClashClassicRuleSet('non_ip')]) + const stream = new ClashOnlyRulesetOutput(span, '_', 'non_ip') .addFromRuleset(streamRules); - const steam = new RulesetOutput(span, '_', 'non_ip') - .replaceStrategies([new ClashClassicRuleSet('non_ip')]) + const steam = new ClashOnlyRulesetOutput(span, '_', 'non_ip') .addFromDomainset(steamDomainset); - const global = new RulesetOutput(span, '_', 'non_ip') - .replaceStrategies([new ClashClassicRuleSet('non_ip')]) + const global = new ClashOnlyRulesetOutput(span, '_', 'non_ip') .addFromRuleset(globalRules) .addFromRuleset(telegramRules); - const direct = new RulesetOutput(span, '_', 'non_ip') - .replaceStrategies([new ClashClassicRuleSet('non_ip')]) + const direct = new ClashOnlyRulesetOutput(span, '_', 'non_ip') .addFromRuleset(directRules) .addFromRuleset(lanRules); - const domesticCidr = new RulesetOutput(span, '_', 'ip') - .replaceStrategies([new ClashClassicRuleSet('ip')]) + const domesticCidr = new ClashOnlyRulesetOutput(span, '_', 'ip') .bulkAddCIDR4(domesticCidrs4) .bulkAddCIDR6(domesticCidrs6); - const streamCidr = new RulesetOutput(span, '_', 'ip') - .replaceStrategies([new ClashClassicRuleSet('ip')]) + const streamCidr = new ClashOnlyRulesetOutput(span, '_', 'ip') .bulkAddCIDR4(streamCidrs4) .bulkAddCIDR6(streamCidrs6); - const telegramCidr = new RulesetOutput(span, '_', 'ip') - .replaceStrategies([new ClashClassicRuleSet('ip')]) + const telegramCidr = new ClashOnlyRulesetOutput(span, '_', 'ip') .bulkAddCIDR4(telegramCidrs4) .bulkAddCIDR6(telegramCidrs6); - const lanCidrs = new RulesetOutput(span, '_', 'ip') - .replaceStrategies([new ClashClassicRuleSet('ip')]) + const lanCidrs = new ClashOnlyRulesetOutput(span, '_', 'ip') .addFromRuleset(rawLanCidrs); const output = generateAppProfile( ...( (await Promise.all([ - domestic.output(), - microsoftApple.output(), - stream.output(), - steam.output(), - global.output(), - direct.output(), - domesticCidr.output(), - streamCidr.output(), - telegramCidr.output(), - lanCidrs.output() + domestic.compile(), + microsoftApple.compile(), + stream.compile(), + steam.compile(), + global.compile(), + direct.compile(), + domesticCidr.compile(), + streamCidr.compile(), + telegramCidr.compile(), + lanCidrs.compile() ])).map(output => nullthrow(output[0])) ) as [ string[], string[], string[], string[], string[], diff --git a/Build/lib/rules/base.ts b/Build/lib/rules/base.ts index 90d8c24a..eed169f1 100644 --- a/Build/lib/rules/base.ts +++ b/Build/lib/rules/base.ts @@ -57,7 +57,7 @@ export class FileOutput { return this; } - replaceStrategies(strategies: Array) { + public withStrategies(strategies: Array) { this.strategies = strategies; return this; } @@ -444,7 +444,7 @@ export class FileOutput { }); } - async output(): Promise> { + async compile(): Promise> { await this.writeToStrategies(); return this.strategies.reduce>((acc, strategy) => { diff --git a/Build/lib/rules/domainset.ts b/Build/lib/rules/domainset.ts index 396248b6..a398c694 100644 --- a/Build/lib/rules/domainset.ts +++ b/Build/lib/rules/domainset.ts @@ -1,3 +1,5 @@ +import type { Span } from '../../trace'; +import { AdGuardHome } from '../writing-strategy/adguardhome'; import type { BaseWriteStrategy } from '../writing-strategy/base'; import { ClashDomainSet } from '../writing-strategy/clash'; import { SingboxSource } from '../writing-strategy/singbox'; @@ -13,3 +15,19 @@ export class DomainsetOutput extends FileOutput { new SingboxSource(this.type) ]; } + +export class AdGuardHomeOutput extends FileOutput { + strategies: Array; + + constructor( + span: Span, + id: string, + outputDir: string + ) { + super(span, id); + + this.strategies = [ + new AdGuardHome(outputDir) + ]; + } +} diff --git a/Build/lib/rules/ruleset.ts b/Build/lib/rules/ruleset.ts index d00e4f90..1b48f3ee 100644 --- a/Build/lib/rules/ruleset.ts +++ b/Build/lib/rules/ruleset.ts @@ -15,3 +15,32 @@ export class RulesetOutput extends FileOutput { ]; } } + +export class SurgeOnlyRulesetOutput extends FileOutput { + constructor( + span: Span, + id: string, + protected type: 'non_ip' | 'ip' | (string & {}), + overrideOutputDir?: string + ) { + super(span, id); + + this.strategies = [ + new SurgeRuleSet(this.type, overrideOutputDir) + ]; + } +} + +export class ClashOnlyRulesetOutput extends FileOutput { + constructor( + span: Span, + id: string, + protected type: 'non_ip' | 'ip' | (string & {}) + ) { + super(span, id); + + this.strategies = [ + new ClashClassicRuleSet(this.type) + ]; + } +} diff --git a/package.json b/package.json index 8ef326ba..00383dda 100644 --- a/package.json +++ b/package.json @@ -48,21 +48,21 @@ "yaml": "^2.7.0" }, "devDependencies": { - "@eslint-sukka/node": "^6.13.2", + "@eslint-sukka/node": "^6.13.3", "@swc-node/register": "^1.10.9", - "@swc/core": "^1.10.9", + "@swc/core": "^1.10.11", "@types/async-retry": "^1.4.9", "@types/better-sqlite3": "^7.6.12", "@types/dns2": "^2.0.9", "@types/fast-fifo": "^1.3.0", "@types/mocha": "^10.0.10", - "@types/node": "^22.10.10", + "@types/node": "^22.12.0", "@types/tar-fs": "^2.0.4", "eslint": "^9.19.0", - "eslint-config-sukka": "^6.13.2", - "eslint-formatter-sukka": "^6.13.2", + "eslint-config-sukka": "^6.13.3", + "eslint-formatter-sukka": "^6.13.3", "expect": "^29.7.0", - "mitata": "^1.0.32", + "mitata": "^1.0.33", "mocha": "^11.1.0", "typescript": "^5.7.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3694dffa..54cf0a18 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,14 +99,14 @@ importers: version: 2.7.0 devDependencies: '@eslint-sukka/node': - specifier: ^6.13.2 - version: 6.13.2(eslint@9.19.0)(typescript@5.7.3) + specifier: ^6.13.3 + version: 6.13.3(eslint@9.19.0)(typescript@5.7.3) '@swc-node/register': specifier: ^1.10.9 - version: 1.10.9(@swc/core@1.10.9)(@swc/types@0.1.17)(typescript@5.7.3) + version: 1.10.9(@swc/core@1.10.11)(@swc/types@0.1.17)(typescript@5.7.3) '@swc/core': - specifier: ^1.10.9 - version: 1.10.9 + specifier: ^1.10.11 + version: 1.10.11 '@types/async-retry': specifier: ^1.4.9 version: 1.4.9 @@ -123,8 +123,8 @@ importers: specifier: ^10.0.10 version: 10.0.10 '@types/node': - specifier: ^22.10.10 - version: 22.10.10 + specifier: ^22.12.0 + version: 22.12.0 '@types/tar-fs': specifier: ^2.0.4 version: 2.0.4 @@ -132,17 +132,17 @@ importers: specifier: ^9.19.0 version: 9.19.0 eslint-config-sukka: - specifier: ^6.13.2 - version: 6.13.2(@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3) + specifier: ^6.13.3 + version: 6.13.3(@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3) eslint-formatter-sukka: - specifier: ^6.13.2 - version: 6.13.2 + specifier: ^6.13.3 + version: 6.13.3 expect: specifier: ^29.7.0 version: 29.7.0 mitata: - specifier: ^1.0.32 - version: 1.0.32 + specifier: ^1.0.33 + version: 1.0.33 mocha: specifier: ^11.1.0 version: 11.1.0 @@ -152,9 +152,6 @@ importers: packages: - '@antfu/utils@0.7.10': - resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -191,11 +188,11 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-sukka/node@6.13.2': - resolution: {integrity: sha512-b4VtJJDN/KBg8Y0hpxvI4LbazxgOQtuxqy+m0iWanfdSvm9Slnry3inCG4BNFch+ByG0HdSa4GB9zXFBejvG+A==} + '@eslint-sukka/node@6.13.3': + resolution: {integrity: sha512-gyXuUr+58LVepEUUal0Noe48A0zCER0VWjnPgS0FD4XXQn95S05tnobtsP7Y+Zcwi++dwhgSqFOvvjAUbIAMdg==} - '@eslint-sukka/shared@6.13.2': - resolution: {integrity: sha512-AiU0t7GLuO+5fiUXjsV3oz7UA8xX5z/UfYEjEfjY5BTZUGeZrFlbD4OQpDvNz5u705gOeopSIsOj1UNakfeFtQ==} + '@eslint-sukka/shared@6.13.3': + resolution: {integrity: sha512-7aPJ4UHdnn0jLRiYilHlYM+E61oHSHSmwqxHFvG2+x5MkPDvTkKoet9RKG/jN1LuyrGP2sXUgFo+LaIeY+mung==} '@eslint/config-array@0.19.1': resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} @@ -374,19 +371,19 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@stylistic/eslint-plugin-js@2.13.0': - resolution: {integrity: sha512-GPPDK4+fcbsQD58a3abbng2Dx+jBoxM5cnYjBM4T24WFZRZdlNSKvR19TxP8CPevzMOodQ9QVzNeqWvMXzfJRA==} + '@stylistic/eslint-plugin-js@3.0.0': + resolution: {integrity: sha512-GAAeTmhxk+lUz2rgQvoaYOlhe9G8vYlgN8D81QdA6fJCJdfcKTr7lAlToGCPLB/0iJtT4JXGuJoNJBiu6EOgcw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' - '@stylistic/eslint-plugin-plus@2.13.0': - resolution: {integrity: sha512-lIeo3pTQFsC3Bkw8+giAocqqmfynfEEWgrEq0KUOAfcTygDo5wQWuGFeR4LYxuof7sUxPDqGr6JgzbzXrWC34g==} + '@stylistic/eslint-plugin-plus@3.0.0': + resolution: {integrity: sha512-2dg3TjiKrh2/3knDmpU1Wroqm25fakgJjvkErxCZgoFc77J8ylHPXaVFKl0IiZXHeiRYqmxcVu1demoJdDy1UA==} peerDependencies: eslint: '*' - '@stylistic/eslint-plugin-ts@2.13.0': - resolution: {integrity: sha512-nooe1oTwz60T4wQhZ+5u0/GAu3ygkKF9vPPZeRn/meG71ntQ0EZXVOKEonluAYl/+CV2T+nN0dknHa4evAW13Q==} + '@stylistic/eslint-plugin-ts@3.0.0': + resolution: {integrity: sha512-wFMYXa3UKRwqxRK8lhlMlJ0XyuBEd/ElFygNHQR6qJ6pVnaAZk3mQ94RMN0XuXb9sCsQH4xXLpLbH7Svw84P4Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' @@ -407,68 +404,68 @@ packages: '@swc-node/sourcemap-support@0.5.1': resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==} - '@swc/core-darwin-arm64@1.10.9': - resolution: {integrity: sha512-XTHLtijFervv2B+i1ngM993umhSj9K1IeMomvU/Db84Asjur2XmD4KXt9QPnGDRFgv2kLSjZ+DDL25Qk0f4r+w==} + '@swc/core-darwin-arm64@1.10.11': + resolution: {integrity: sha512-ZpgEaNcx2e5D+Pd0yZGVbpSrEDOEubn7r2JXoNBf0O85lPjUm3HDzGRfLlV/MwxRPAkwm93eLP4l7gYnc50l3g==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.10.9': - resolution: {integrity: sha512-bi3el9/FV/la8HIsolSjeDar+tM7m9AmSF1w7X6ZByW2qgc4Z1tmq0A4M4H9aH3TfHesZbfq8hgaNtc2/VtzzQ==} + '@swc/core-darwin-x64@1.10.11': + resolution: {integrity: sha512-szObinnq2o7spXMDU5pdunmUeLrfV67Q77rV+DyojAiGJI1RSbEQotLOk+ONOLpoapwGUxOijFG4IuX1xiwQ2g==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.10.9': - resolution: {integrity: sha512-xsLHV02S+RTDuI+UJBkA2muNk/s0ETRpoc1K/gNt0i8BqTurPYkrvGDDALN9+leiUPydHvZi9P1qdExbgUJnXw==} + '@swc/core-linux-arm-gnueabihf@1.10.11': + resolution: {integrity: sha512-tVE8aXQwd8JUB9fOGLawFJa76nrpvp3dvErjozMmWSKWqtoeO7HV83aOrVtc8G66cj4Vq7FjTE9pOJeV1FbKRw==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.10.9': - resolution: {integrity: sha512-41hJgPoGhIa12U6Tud+yLF/m64YA3mGut3TmBEkj2R7rdJdE0mljdtR0tf4J2RoQaWZPPi0DBSqGdROiAEx9dg==} + '@swc/core-linux-arm64-gnu@1.10.11': + resolution: {integrity: sha512-geFkENU5GMEKO7FqHOaw9HVlpQEW10nICoM6ubFc0hXBv8dwRXU4vQbh9s/isLSFRftw1m4jEEWixAnXSw8bxQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.10.9': - resolution: {integrity: sha512-DUMRhl49b9r7bLg9oNzCdW4lLcDJKrRBn87Iq5APPvixsm1auGnsVQycGkQcDDKvVllxIFSbmCYzjagx3l8Hnw==} + '@swc/core-linux-arm64-musl@1.10.11': + resolution: {integrity: sha512-2mMscXe/ivq8c4tO3eQSbQDFBvagMJGlalXCspn0DgDImLYTEnt/8KHMUMGVfh0gMJTZ9q4FlGLo7mlnbx99MQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.10.9': - resolution: {integrity: sha512-xW0y88vQvmzYo3Gn7yFnY03TfHMwuca4aFH3ZmhwDNOYHmTOi6fmhAkg/13F/NrwjMYO+GnF5uJTjdjb3B6tdQ==} + '@swc/core-linux-x64-gnu@1.10.11': + resolution: {integrity: sha512-eu2apgDbC4xwsigpl6LS+iyw6a3mL6kB4I+6PZMbFF2nIb1Dh7RGnu70Ai6mMn1o80fTmRSKsCT3CKMfVdeNFg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.10.9': - resolution: {integrity: sha512-jYs32BEx+CPVuxN6NdsWEpdehjnmAag25jyJzwjQx+NCGYwHEV3bT5y8TX4eFhaVB1rafmqJOlYQPs4+MSyGCg==} + '@swc/core-linux-x64-musl@1.10.11': + resolution: {integrity: sha512-0n+wPWpDigwqRay4IL2JIvAqSKCXv6nKxPig9M7+epAlEQlqX+8Oq/Ap3yHtuhjNPb7HmnqNJLCXT1Wx+BZo0w==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.10.9': - resolution: {integrity: sha512-Uhh5T3Fq3Nyom96Bm3ACBNASH3iqNc76in7ewZz8PooUqeTIO8aZpsghnncjctRNE9T819/8btpiFIhHo3sKtg==} + '@swc/core-win32-arm64-msvc@1.10.11': + resolution: {integrity: sha512-7+bMSIoqcbXKosIVd314YjckDRPneA4OpG1cb3/GrkQTEDXmWT3pFBBlJf82hzJfw7b6lfv6rDVEFBX7/PJoLA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.10.9': - resolution: {integrity: sha512-bD5BpbojEsDfrAvT+1qjQPf5RCKLg4UL+3Uwm019+ZR02hd8qO538BlOnQdOqRqccu+75DF6aRglQ7AJ24Cs0Q==} + '@swc/core-win32-ia32-msvc@1.10.11': + resolution: {integrity: sha512-6hkLl4+3KjP/OFTryWxpW7YFN+w4R689TSPwiII4fFgsFNupyEmLWWakKfkGgV2JVA59L4Oi02elHy/O1sbgtw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.10.9': - resolution: {integrity: sha512-NwkuUNeBBQnAaXVvcGw8Zr6RR8kylyjFUnlYZZ3G0QkQZ4rYLXYTafAmiRjrfzgVb0LcMF/sBzJvGOk7SwtIDg==} + '@swc/core-win32-x64-msvc@1.10.11': + resolution: {integrity: sha512-kKNE2BGu/La2k2WFHovenqZvGQAHRIU+rd2/6a7D6EiQ6EyimtbhUqjCCZ+N1f5fIAnvM+sMdLiQJq4jdd/oOQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.10.9': - resolution: {integrity: sha512-MQ97YSXu2oibzm7wi4GNa7hhndjLuVt/lmO2sq53+P37oZmyg/JQ/IYYtSiC6UGK3+cHoiVAykrK+glxLjJbag==} + '@swc/core@1.10.11': + resolution: {integrity: sha512-3zGU5y3S20cAwot9ZcsxVFNsSVaptG+dKdmAxORSE3EX7ixe1Xn5kUwLlgIsM4qrwTUWCJDLNhRS+2HLFivcDg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -521,8 +518,8 @@ packages: '@types/mocha@10.0.10': resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} - '@types/node@22.10.10': - resolution: {integrity: sha512-X47y/mPNzxviAGY5TcYPtYL8JsY3kAq2n8fMmKoRCxq/c4v4pyGNCzM2R6+M5/umG4ZfHuT+sgqDYqWc9rJ6ww==} + '@types/node@22.12.0': + resolution: {integrity: sha512-Fll2FZ1riMjNmlmJOdAyY5pUbkftXslB5DgEzlIuNaiWhXd00FhWxVC/r4yV/4wBb9JfImTu+jiSvXTkJ7F/gA==} '@types/retry@0.12.5': resolution: {integrity: sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==} @@ -542,42 +539,79 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.21.0': - resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} + '@typescript-eslint/eslint-plugin@8.22.0': + resolution: {integrity: sha512-4Uta6REnz/xEJMvwf72wdUnC3rr4jAQf5jnTkeRQ9b6soxLxhDEbS/pfMPoJLDfFPNVRdryqWUIV/2GZzDJFZw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.21.0': - resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} + '@typescript-eslint/parser@8.22.0': + resolution: {integrity: sha512-MqtmbdNEdoNxTPzpWiWnqNac54h8JDAmkWtJExBVVnSrSmi9z+sZUt0LfKqk9rjqmKOIeRhO4fHHJ1nQIjduIQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/scope-manager@8.13.0': + resolution: {integrity: sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.21.0': resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.21.0': - resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} + '@typescript-eslint/scope-manager@8.22.0': + resolution: {integrity: sha512-/lwVV0UYgkj7wPSw0o8URy6YI64QmcOdwHuGuxWIYznO6d45ER0wXUbksr9pYdViAofpUCNJx/tAzNukgvaaiQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.22.0': + resolution: {integrity: sha512-NzE3aB62fDEaGjaAYZE4LH7I1MUwHooQ98Byq0G0y3kkibPJQIXVUspzlFOmOfHhiDLwKzMlWxaNv+/qcZurJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/types@8.13.0': + resolution: {integrity: sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.21.0': resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.22.0': + resolution: {integrity: sha512-0S4M4baNzp612zwpD4YOieP3VowOARgK2EkN/GBn95hpyF8E2fbMT55sRHWBq+Huaqk3b3XK+rxxlM8sPgGM6A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.13.0': + resolution: {integrity: sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/typescript-estree@8.21.0': resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/typescript-estree@8.22.0': + resolution: {integrity: sha512-SJX99NAS2ugGOzpyhMza/tX+zDwjvwAtQFLsBo3GQxiGcvaKlqGBkmZ+Y1IdiSi9h4Q0Lr5ey+Cp9CGWNY/F/w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/utils@8.13.0': + resolution: {integrity: sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/utils@8.21.0': resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -585,10 +619,25 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.8.0' + '@typescript-eslint/utils@8.22.0': + resolution: {integrity: sha512-T8oc1MbF8L+Bk2msAvCUzjxVB2Z2f+vXYfcucE2wOmYs7ZUwco5Ep0fYZw8quNwOiw9K8GYVL+Kgc2pETNTLOg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' + + '@typescript-eslint/visitor-keys@8.13.0': + resolution: {integrity: sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.21.0': resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.22.0': + resolution: {integrity: sha512-AWpYAXnUgvLNabGTy3uBylkgZoosva/miNd1I8Bz3SjotmQPbVqhO4Cczo8AsZ44XVErEBPr/CRSgaj8sG7g0w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -852,11 +901,11 @@ packages: peerDependencies: eslint: '>=6.0.0' - eslint-config-sukka@6.13.2: - resolution: {integrity: sha512-o6GGA3WuF50hRBNSu55KY7YUWOPqo+nDHr6s4JQjLhAEfGMct+5a49Q9gu+iyNWiDkz8zyYVCAlnLqpSTRnTzQ==} + eslint-config-sukka@6.13.3: + resolution: {integrity: sha512-A2+8j5ibwMTg9B3VnejBE7OjILlmk+ooP/Qq3OT02QGVtlCmFYvQ0LsiTc+/wvD8V19xTjkE4k/Qv21bu2M37g==} - eslint-formatter-sukka@6.13.2: - resolution: {integrity: sha512-fwcE3xfHqf7Xzki21DhxztoiM4TnMu3gHiyEIreHXWuUAdCm4P4lBaKkuFs3bcwe/p03AnyHEAJ4s8kA9uU51w==} + eslint-formatter-sukka@6.13.3: + resolution: {integrity: sha512-J1Su/+P1hXPv9ZOkt13L4V3hx99oHtIHFjj7poBcFNdV/SwE3ghDOI04oTmOMZJHi3QLmb/jQODFCOJmUBLydA==} eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} @@ -885,11 +934,6 @@ packages: '@eslint/json': optional: true - eslint-plugin-antfu@2.7.0: - resolution: {integrity: sha512-gZM3jq3ouqaoHmUNszb1Zo2Ux7RckSvkGksjLWz9ipBYGSv1EwwBETN6AdiUXn+RpVHXTbEMPAPlXJazcA6+iA==} - peerDependencies: - eslint: '*' - eslint-plugin-autofix@2.2.0: resolution: {integrity: sha512-lu8+0r+utyTroROqXIL+a8sUpICi6za22hIzlpb0+x0tQGRnOjhOKU7v8mC/NS/faDoVsw6xW3vUpc+Mcz5NWA==} engines: {node: '>=18'} @@ -932,8 +976,8 @@ packages: peerDependencies: eslint: '>=8.44.0' - eslint-plugin-sukka@6.13.2: - resolution: {integrity: sha512-XjczmRTelyXkA0BJmUySoqyZgnpWbuKag+iwo6JjTBvbkrWGr6uiLadNvcgi+DP1u375pnCuezBEoGA4A5uyow==} + eslint-plugin-sukka@6.13.3: + resolution: {integrity: sha512-EFe43NCfasusETyFKD42TMxoKUW1iKK1OHoMeC7rxTd1uSN6oMILf8UgXzRXTLimEmZ8kyQhLykcL/JazTQwrA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -1293,8 +1337,8 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - mitata@1.0.32: - resolution: {integrity: sha512-UioSpAqd+QRTzIjtudWKVar3LbNt0jKS6i7S12uvRxr+eiv77TK7oMi8gNRbdNPH1rKWxrA5M48/QqVKigSQ9Q==} + mitata@1.0.33: + resolution: {integrity: sha512-ZRbHD4ZGAbC1B9SYCZXjLox2scPCauhTPkXGk2o7CGj/wNeBNjagwFutphDCgJNbEF80fyMBcPdkfr+WFC9cHw==} mkdirp-classic@0.5.3: resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} @@ -1596,6 +1640,12 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + ts-api-utils@2.0.0: resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} engines: {node: '>=18.12'} @@ -1612,8 +1662,8 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typescript-eslint@8.21.0: - resolution: {integrity: sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw==} + typescript-eslint@8.22.0: + resolution: {integrity: sha512-Y2rj210FW1Wb6TWXzQc5+P+EWI9/zdS57hLEc0gnyuvdzWo8+Y8brKlbj0muejonhMI/xAZCnZZwjbIfv1CkOw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -1710,8 +1760,6 @@ packages: snapshots: - '@antfu/utils@0.7.10': {} - '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -1751,22 +1799,22 @@ snapshots: '@eslint-community/regexpp@4.12.1': {} - '@eslint-sukka/node@6.13.2(eslint@9.19.0)(typescript@5.7.3)': + '@eslint-sukka/node@6.13.3(eslint@9.19.0)(typescript@5.7.3)': dependencies: - '@eslint-sukka/shared': 6.13.2(eslint@9.19.0)(typescript@5.7.3) + '@eslint-sukka/shared': 6.13.3(eslint@9.19.0)(typescript@5.7.3) eslint-plugin-n: 17.15.1(eslint@9.19.0) - eslint-plugin-sukka: 6.13.2(eslint@9.19.0)(typescript@5.7.3) + eslint-plugin-sukka: 6.13.3(eslint@9.19.0)(typescript@5.7.3) transitivePeerDependencies: - eslint - supports-color - typescript - '@eslint-sukka/shared@6.13.2(eslint@9.19.0)(typescript@5.7.3)': + '@eslint-sukka/shared@6.13.3(eslint@9.19.0)(typescript@5.7.3)': dependencies: '@dual-bundle/import-meta-resolve': 4.1.0 '@package-json/types': 0.0.11 '@types/eslint': 9.6.1 - '@typescript-eslint/utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0)(typescript@5.7.3) transitivePeerDependencies: - eslint - supports-color @@ -1859,7 +1907,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.10.10 + '@types/node': 22.12.0 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -1945,19 +1993,21 @@ snapshots: '@sinclair/typebox@0.27.8': {} - '@stylistic/eslint-plugin-js@2.13.0(eslint@9.19.0)': + '@stylistic/eslint-plugin-js@3.0.0(eslint@9.19.0)': dependencies: eslint: 9.19.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 - '@stylistic/eslint-plugin-plus@2.13.0(eslint@9.19.0)': + '@stylistic/eslint-plugin-plus@3.0.0(eslint@9.19.0)': dependencies: eslint: 9.19.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 - '@stylistic/eslint-plugin-ts@2.13.0(eslint@9.19.0)(typescript@5.7.3)': + '@stylistic/eslint-plugin-ts@3.0.0(eslint@9.19.0)(typescript@5.7.3)': dependencies: - '@typescript-eslint/utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.13.0(eslint@9.19.0)(typescript@5.7.3) eslint: 9.19.0 eslint-visitor-keys: 4.2.0 espree: 10.3.0 @@ -1965,16 +2015,16 @@ snapshots: - supports-color - typescript - '@swc-node/core@1.13.3(@swc/core@1.10.9)(@swc/types@0.1.17)': + '@swc-node/core@1.13.3(@swc/core@1.10.11)(@swc/types@0.1.17)': dependencies: - '@swc/core': 1.10.9 + '@swc/core': 1.10.11 '@swc/types': 0.1.17 - '@swc-node/register@1.10.9(@swc/core@1.10.9)(@swc/types@0.1.17)(typescript@5.7.3)': + '@swc-node/register@1.10.9(@swc/core@1.10.11)(@swc/types@0.1.17)(typescript@5.7.3)': dependencies: - '@swc-node/core': 1.13.3(@swc/core@1.10.9)(@swc/types@0.1.17) + '@swc-node/core': 1.13.3(@swc/core@1.10.11)(@swc/types@0.1.17) '@swc-node/sourcemap-support': 0.5.1 - '@swc/core': 1.10.9 + '@swc/core': 1.10.11 colorette: 2.0.20 debug: 4.3.7(supports-color@8.1.1) oxc-resolver: 1.12.0 @@ -1990,51 +2040,51 @@ snapshots: source-map-support: 0.5.21 tslib: 2.8.1 - '@swc/core-darwin-arm64@1.10.9': + '@swc/core-darwin-arm64@1.10.11': optional: true - '@swc/core-darwin-x64@1.10.9': + '@swc/core-darwin-x64@1.10.11': optional: true - '@swc/core-linux-arm-gnueabihf@1.10.9': + '@swc/core-linux-arm-gnueabihf@1.10.11': optional: true - '@swc/core-linux-arm64-gnu@1.10.9': + '@swc/core-linux-arm64-gnu@1.10.11': optional: true - '@swc/core-linux-arm64-musl@1.10.9': + '@swc/core-linux-arm64-musl@1.10.11': optional: true - '@swc/core-linux-x64-gnu@1.10.9': + '@swc/core-linux-x64-gnu@1.10.11': optional: true - '@swc/core-linux-x64-musl@1.10.9': + '@swc/core-linux-x64-musl@1.10.11': optional: true - '@swc/core-win32-arm64-msvc@1.10.9': + '@swc/core-win32-arm64-msvc@1.10.11': optional: true - '@swc/core-win32-ia32-msvc@1.10.9': + '@swc/core-win32-ia32-msvc@1.10.11': optional: true - '@swc/core-win32-x64-msvc@1.10.9': + '@swc/core-win32-x64-msvc@1.10.11': optional: true - '@swc/core@1.10.9': + '@swc/core@1.10.11': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.17 optionalDependencies: - '@swc/core-darwin-arm64': 1.10.9 - '@swc/core-darwin-x64': 1.10.9 - '@swc/core-linux-arm-gnueabihf': 1.10.9 - '@swc/core-linux-arm64-gnu': 1.10.9 - '@swc/core-linux-arm64-musl': 1.10.9 - '@swc/core-linux-x64-gnu': 1.10.9 - '@swc/core-linux-x64-musl': 1.10.9 - '@swc/core-win32-arm64-msvc': 1.10.9 - '@swc/core-win32-ia32-msvc': 1.10.9 - '@swc/core-win32-x64-msvc': 1.10.9 + '@swc/core-darwin-arm64': 1.10.11 + '@swc/core-darwin-x64': 1.10.11 + '@swc/core-linux-arm-gnueabihf': 1.10.11 + '@swc/core-linux-arm64-gnu': 1.10.11 + '@swc/core-linux-arm64-musl': 1.10.11 + '@swc/core-linux-x64-gnu': 1.10.11 + '@swc/core-linux-x64-musl': 1.10.11 + '@swc/core-win32-arm64-msvc': 1.10.11 + '@swc/core-win32-ia32-msvc': 1.10.11 + '@swc/core-win32-x64-msvc': 1.10.11 '@swc/counter@0.1.3': {} @@ -2053,11 +2103,11 @@ snapshots: '@types/better-sqlite3@7.6.12': dependencies: - '@types/node': 22.10.10 + '@types/node': 22.12.0 '@types/dns2@2.0.9': dependencies: - '@types/node': 22.10.10 + '@types/node': 22.12.0 '@types/doctrine@0.0.9': {} @@ -2084,7 +2134,7 @@ snapshots: '@types/mocha@10.0.10': {} - '@types/node@22.10.10': + '@types/node@22.12.0': dependencies: undici-types: 6.20.0 @@ -2094,12 +2144,12 @@ snapshots: '@types/tar-fs@2.0.4': dependencies: - '@types/node': 22.10.10 + '@types/node': 22.12.0 '@types/tar-stream': 3.1.3 '@types/tar-stream@3.1.3': dependencies: - '@types/node': 22.10.10 + '@types/node': 22.12.0 '@types/yargs-parser@21.0.3': {} @@ -2107,14 +2157,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.21.0(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/parser': 8.22.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.22.0 eslint: 9.19.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -2124,27 +2174,37 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3)': + '@typescript-eslint/parser@8.22.0(eslint@9.19.0)(typescript@5.7.3)': dependencies: - '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/types': 8.21.0 - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/visitor-keys': 8.21.0 + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + '@typescript-eslint/visitor-keys': 8.22.0 debug: 4.4.0 eslint: 9.19.0 typescript: 5.7.3 transitivePeerDependencies: - supports-color + '@typescript-eslint/scope-manager@8.13.0': + dependencies: + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/visitor-keys': 8.13.0 + '@typescript-eslint/scope-manager@8.21.0': dependencies: '@typescript-eslint/types': 8.21.0 '@typescript-eslint/visitor-keys': 8.21.0 - '@typescript-eslint/type-utils@8.21.0(eslint@9.19.0)(typescript@5.7.3)': + '@typescript-eslint/scope-manager@8.22.0': dependencies: - '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/visitor-keys': 8.22.0 + + '@typescript-eslint/type-utils@8.22.0(eslint@9.19.0)(typescript@5.7.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0)(typescript@5.7.3) debug: 4.4.0 eslint: 9.19.0 ts-api-utils: 2.0.0(typescript@5.7.3) @@ -2152,8 +2212,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/types@8.13.0': {} + '@typescript-eslint/types@8.21.0': {} + '@typescript-eslint/types@8.22.0': {} + + '@typescript-eslint/typescript-estree@8.13.0(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/visitor-keys': 8.13.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.4.3(typescript@5.7.3) + optionalDependencies: + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/typescript-estree@8.21.0(typescript@5.7.3)': dependencies: '@typescript-eslint/types': 8.21.0 @@ -2168,6 +2247,31 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@8.22.0(typescript@5.7.3)': + dependencies: + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/visitor-keys': 8.22.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 2.0.0(typescript@5.7.3) + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.13.0(eslint@9.19.0)(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0) + '@typescript-eslint/scope-manager': 8.13.0 + '@typescript-eslint/types': 8.13.0 + '@typescript-eslint/typescript-estree': 8.13.0(typescript@5.7.3) + eslint: 9.19.0 + transitivePeerDependencies: + - supports-color + - typescript + '@typescript-eslint/utils@8.21.0(eslint@9.19.0)(typescript@5.7.3)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0) @@ -2179,11 +2283,32 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@8.22.0(eslint@9.19.0)(typescript@5.7.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.19.0) + '@typescript-eslint/scope-manager': 8.22.0 + '@typescript-eslint/types': 8.22.0 + '@typescript-eslint/typescript-estree': 8.22.0(typescript@5.7.3) + eslint: 9.19.0 + typescript: 5.7.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.13.0': + dependencies: + '@typescript-eslint/types': 8.13.0 + eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.21.0': dependencies: '@typescript-eslint/types': 8.21.0 eslint-visitor-keys: 4.2.0 + '@typescript-eslint/visitor-keys@8.22.0': + dependencies: + '@typescript-eslint/types': 8.22.0 + eslint-visitor-keys: 4.2.0 + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -2412,29 +2537,28 @@ snapshots: eslint: 9.19.0 semver: 7.6.3 - eslint-config-sukka@6.13.2(@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3): + eslint-config-sukka@6.13.3(@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3): dependencies: '@eslint-community/eslint-plugin-eslint-comments': 4.4.1(eslint@9.19.0) - '@eslint-sukka/shared': 6.13.2(eslint@9.19.0)(typescript@5.7.3) + '@eslint-sukka/shared': 6.13.3(eslint@9.19.0)(typescript@5.7.3) '@eslint/js': 9.19.0 - '@stylistic/eslint-plugin-js': 2.13.0(eslint@9.19.0) - '@stylistic/eslint-plugin-plus': 2.13.0(eslint@9.19.0) - '@stylistic/eslint-plugin-ts': 2.13.0(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/parser': 8.21.0(eslint@9.19.0)(typescript@5.7.3) + '@stylistic/eslint-plugin-js': 3.0.0(eslint@9.19.0) + '@stylistic/eslint-plugin-plus': 3.0.0(eslint@9.19.0) + '@stylistic/eslint-plugin-ts': 3.0.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.22.0(eslint@9.19.0)(typescript@5.7.3) ci-info: 4.1.0 defu: 6.1.4 eslint-import-resolver-typescript: 3.7.0(eslint-plugin-import-x@4.6.1(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0) - eslint-plugin-antfu: 2.7.0(eslint@9.19.0) eslint-plugin-autofix: 2.2.0(eslint@9.19.0) eslint-plugin-import-x: 4.6.1(eslint@9.19.0)(typescript@5.7.3) eslint-plugin-jsonc: 2.19.1(eslint@9.19.0) eslint-plugin-promise: 7.2.1(eslint@9.19.0) eslint-plugin-regexp: 2.7.0(eslint@9.19.0) - eslint-plugin-sukka: 6.13.2(eslint@9.19.0)(typescript@5.7.3) - eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0) + eslint-plugin-sukka: 6.13.3(eslint@9.19.0)(typescript@5.7.3) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0) jsonc-eslint-parser: 2.4.0 picocolors: 1.1.1 - typescript-eslint: 8.21.0(eslint@9.19.0)(typescript@5.7.3) + typescript-eslint: 8.22.0(eslint@9.19.0)(typescript@5.7.3) transitivePeerDependencies: - '@eslint/json' - '@typescript-eslint/eslint-plugin' @@ -2443,7 +2567,7 @@ snapshots: - supports-color - typescript - eslint-formatter-sukka@6.13.2: + eslint-formatter-sukka@6.13.3: dependencies: ci-info: 4.1.0 picocolors: 1.1.1 @@ -2478,11 +2602,6 @@ snapshots: esquery: 1.6.0 jsonc-eslint-parser: 2.4.0 - eslint-plugin-antfu@2.7.0(eslint@9.19.0): - dependencies: - '@antfu/utils': 0.7.10 - eslint: 9.19.0 - eslint-plugin-autofix@2.2.0(eslint@9.19.0): dependencies: eslint: 9.19.0 @@ -2560,22 +2679,22 @@ snapshots: regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-sukka@6.13.2(eslint@9.19.0)(typescript@5.7.3): + eslint-plugin-sukka@6.13.3(eslint@9.19.0)(typescript@5.7.3): dependencies: - '@eslint-sukka/shared': 6.13.2(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/type-utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) + '@eslint-sukka/shared': 6.13.3(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.22.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0)(typescript@5.7.3) optionalDependencies: typescript: 5.7.3 transitivePeerDependencies: - eslint - supports-color - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0): dependencies: eslint: 9.19.0 optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3) eslint-rule-composer@0.3.0: {} @@ -2848,7 +2967,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.10.10 + '@types/node': 22.12.0 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -2924,7 +3043,7 @@ snapshots: minipass@7.1.2: {} - mitata@1.0.32: {} + mitata@1.0.33: {} mkdirp-classic@0.5.3: {} @@ -3258,6 +3377,10 @@ snapshots: dependencies: is-number: 7.0.0 + ts-api-utils@1.4.3(typescript@5.7.3): + dependencies: + typescript: 5.7.3 + ts-api-utils@2.0.0(typescript@5.7.3): dependencies: typescript: 5.7.3 @@ -3272,11 +3395,11 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.21.0(eslint@9.19.0)(typescript@5.7.3): + typescript-eslint@8.22.0(eslint@9.19.0)(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/parser': 8.21.0(eslint@9.19.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/eslint-plugin': 8.22.0(@typescript-eslint/parser@8.22.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.22.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.22.0(eslint@9.19.0)(typescript@5.7.3) eslint: 9.19.0 typescript: 5.7.3 transitivePeerDependencies: