Refactor: adjust write strategy usage

This commit is contained in:
SukkaW 2025-01-29 21:24:00 +08:00
parent 956d98d7dc
commit f9163db26c
9 changed files with 365 additions and 209 deletions

View File

@ -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) => {

View File

@ -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;

View File

@ -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')
]);

View File

@ -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[],

View File

@ -57,7 +57,7 @@ export class FileOutput {
return this;
}
replaceStrategies(strategies: Array<BaseWriteStrategy | false>) {
public withStrategies(strategies: Array<BaseWriteStrategy | false>) {
this.strategies = strategies;
return this;
}
@ -444,7 +444,7 @@ export class FileOutput {
});
}
async output(): Promise<Array<string[] | null>> {
async compile(): Promise<Array<string[] | null>> {
await this.writeToStrategies();
return this.strategies.reduce<Array<string[] | null>>((acc, strategy) => {

View File

@ -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<false | BaseWriteStrategy>;
constructor(
span: Span,
id: string,
outputDir: string
) {
super(span, id);
this.strategies = [
new AdGuardHome(outputDir)
];
}
}

View File

@ -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)
];
}
}

View File

@ -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"
},

435
pnpm-lock.yaml generated
View File

@ -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: