From 5910a354da8b1aace59486c81014e150c4c52c9c Mon Sep 17 00:00:00 2001 From: JounQin Date: Thu, 2 Jul 2026 18:17:31 +0800 Subject: [PATCH 1/8] fix: handle GraphQL errors from OpenCollective API (#119) --- src/providers/opencollective.ts | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/providers/opencollective.ts b/src/providers/opencollective.ts index 373bed7c..bc0fca3f 100644 --- a/src/providers/opencollective.ts +++ b/src/providers/opencollective.ts @@ -56,18 +56,21 @@ export async function fetchOpenCollectiveSponsors( offset = 0 do { const query = makeSubscriptionsQuery(id, slug, githubHandle, offset, !includePastSponsors) - const data = await $fetch(API, { + const { data, errors } = await $fetch(API, { method: 'POST', body: { query }, headers: { 'Api-Key': `${key}`, 'Content-Type': 'application/json', }, - }) as any - const nodes = data.data.account.orders.nodes - const totalCount = data.data.account.orders.totalCount + }) + if (errors?.length) { + throw new Error(`OpenCollective subscriptions query errors: ${errors.map((e: Error) => e.message).join('; ')}`) + } + const nodes = data.account.orders.nodes || [] + const totalCount = data.account.orders.totalCount - sponsors.push(...(nodes || [])) + sponsors.push(...nodes) if ((nodes.length) !== 0) { if (totalCount > offset + nodes.length) @@ -86,18 +89,21 @@ export async function fetchOpenCollectiveSponsors( ? undefined : new Date(now.getFullYear(), now.getMonth(), 1) const query = makeTransactionsQuery(id, slug, githubHandle, offset, dateFrom, undefined, sponseesMode) - const data = await $fetch(API, { + const { data, errors } = await $fetch(API, { method: 'POST', body: { query }, headers: { 'Api-Key': `${key}`, 'Content-Type': 'application/json', }, - }) as any - const nodes = data.data.account.transactions.nodes - const totalCount = data.data.account.transactions.totalCount + }) + if (errors?.length) { + throw new Error(`OpenCollective transactions query errors: ${errors.map((e: Error) => e.message).join('; ')}`) + } + const nodes = data.account.transactions.nodes || [] + const totalCount = data.account.transactions.totalCount - monthlyTransactions.push(...(nodes || [])) + monthlyTransactions.push(...nodes) if ((nodes.length) !== 0) { if (totalCount > offset + nodes.length) offset += nodes.length From ffc1b119284de9e8e2b1c8f1d45cd121f8bb1461 Mon Sep 17 00:00:00 2001 From: Igor Danchenko <64441155+igordanchenko@users.noreply.github.com> Date: Fri, 24 Jul 2026 20:02:21 -0700 Subject: [PATCH 2/8] fix: bump sharp to ^0.35.3 to address libvips security advisories (#123) --- package.json | 2 +- pnpm-lock.yaml | 329 +++++++++++++++++++++++++++---------------------- 2 files changed, 186 insertions(+), 145 deletions(-) diff --git a/package.json b/package.json index 79bcf0d7..bfb069dc 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ "consola": "^3.4.2", "dotenv": "^17.4.2", "ofetch": "^1.5.1", - "sharp": "^0.34.5", + "sharp": "^0.35.3", "unconfig": "^7.5.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48f81512..b681ef8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: specifier: ^1.5.1 version: 1.5.1 sharp: - specifier: ^0.34.5 - version: 0.34.5 + specifier: ^0.35.3 + version: 0.35.3(@types/node@25.9.1) unconfig: specifier: ^7.5.0 version: 7.5.0 @@ -208,6 +208,9 @@ packages: '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.11.2': + resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} + '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -615,156 +618,165 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@img/colour@1.0.0': - resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + '@img/colour@1.1.0': + resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.34.5': - resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-darwin-arm64@0.35.3': + resolution: {integrity: sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.5': - resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-darwin-x64@0.35.3': + resolution: {integrity: sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.4': - resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + '@img/sharp-freebsd-wasm32@0.35.3': + resolution: {integrity: sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==} + engines: {node: '>=20.9.0'} + os: [freebsd] + + '@img/sharp-libvips-darwin-arm64@1.3.2': + resolution: {integrity: sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.4': - resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + '@img/sharp-libvips-darwin-x64@1.3.2': + resolution: {integrity: sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.4': - resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + '@img/sharp-libvips-linux-arm64@1.3.2': + resolution: {integrity: sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.2.4': - resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + '@img/sharp-libvips-linux-arm@1.3.2': + resolution: {integrity: sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.2.4': - resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + '@img/sharp-libvips-linux-ppc64@1.3.2': + resolution: {integrity: sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.2.4': - resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + '@img/sharp-libvips-linux-riscv64@1.3.2': + resolution: {integrity: sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.2.4': - resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + '@img/sharp-libvips-linux-s390x@1.3.2': + resolution: {integrity: sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.2.4': - resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + '@img/sharp-libvips-linux-x64@1.3.2': + resolution: {integrity: sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': - resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': + resolution: {integrity: sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.2.4': - resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + '@img/sharp-libvips-linuxmusl-x64@1.3.2': + resolution: {integrity: sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-linux-arm64@0.34.5': - resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-arm64@0.35.3': + resolution: {integrity: sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.34.5': - resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-arm@0.35.3': + resolution: {integrity: sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==} + engines: {node: '>=20.9.0'} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.34.5': - resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-ppc64@0.35.3': + resolution: {integrity: sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==} + engines: {node: '>=20.9.0'} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-linux-riscv64@0.34.5': - resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-riscv64@0.35.3': + resolution: {integrity: sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==} + engines: {node: '>=20.9.0'} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.34.5': - resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-s390x@0.35.3': + resolution: {integrity: sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==} + engines: {node: '>=20.9.0'} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.34.5': - resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linux-x64@0.35.3': + resolution: {integrity: sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.34.5': - resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-arm64@0.35.3': + resolution: {integrity: sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.34.5': - resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-linuxmusl-x64@0.35.3': + resolution: {integrity: sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-wasm32@0.34.5': - resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-wasm32@0.35.3': + resolution: {integrity: sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==} + engines: {node: '>=20.9.0'} + + '@img/sharp-webcontainers-wasm32@0.35.3': + resolution: {integrity: sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==} + engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.5': - resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-arm64@0.35.3': + resolution: {integrity: sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==} + engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.5': - resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-ia32@0.35.3': + resolution: {integrity: sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==} + engines: {node: ^20.9.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.5': - resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + '@img/sharp-win32-x64@0.35.3': + resolution: {integrity: sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==} + engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] @@ -2621,9 +2633,19 @@ packages: engines: {node: '>=10'} hasBin: true - sharp@0.34.5: - resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} - engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + sharp@0.35.3: + resolution: {integrity: sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -3014,7 +3036,7 @@ snapshots: dependencies: empathic: 2.0.0 module-replacements: 3.0.0-beta.7 - semver: 7.7.4 + semver: 7.8.5 optionalDependencies: eslint: 10.4.0(jiti@2.7.0) @@ -3029,6 +3051,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 @@ -3294,100 +3321,110 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@img/colour@1.0.0': {} + '@img/colour@1.1.0': {} - '@img/sharp-darwin-arm64@0.34.5': + '@img/sharp-darwin-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-arm64': 1.3.2 optional: true - '@img/sharp-darwin-x64@0.34.5': + '@img/sharp-darwin-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.3.2 + optional: true + + '@img/sharp-freebsd-wasm32@0.35.3': + dependencies: + '@img/sharp-wasm32': 0.35.3 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.4': + '@img/sharp-libvips-darwin-arm64@1.3.2': optional: true - '@img/sharp-libvips-darwin-x64@1.2.4': + '@img/sharp-libvips-darwin-x64@1.3.2': optional: true - '@img/sharp-libvips-linux-arm64@1.2.4': + '@img/sharp-libvips-linux-arm64@1.3.2': optional: true - '@img/sharp-libvips-linux-arm@1.2.4': + '@img/sharp-libvips-linux-arm@1.3.2': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.4': + '@img/sharp-libvips-linux-ppc64@1.3.2': optional: true - '@img/sharp-libvips-linux-riscv64@1.2.4': + '@img/sharp-libvips-linux-riscv64@1.3.2': optional: true - '@img/sharp-libvips-linux-s390x@1.2.4': + '@img/sharp-libvips-linux-s390x@1.3.2': optional: true - '@img/sharp-libvips-linux-x64@1.2.4': + '@img/sharp-libvips-linux-x64@1.3.2': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.4': + '@img/sharp-libvips-linuxmusl-x64@1.3.2': optional: true - '@img/sharp-linux-arm64@0.34.5': + '@img/sharp-linux-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.3.2 optional: true - '@img/sharp-linux-arm@0.34.5': + '@img/sharp-linux-arm@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.3.2 optional: true - '@img/sharp-linux-ppc64@0.34.5': + '@img/sharp-linux-ppc64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.3.2 optional: true - '@img/sharp-linux-riscv64@0.34.5': + '@img/sharp-linux-riscv64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.3.2 optional: true - '@img/sharp-linux-s390x@0.34.5': + '@img/sharp-linux-s390x@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.3.2 optional: true - '@img/sharp-linux-x64@0.34.5': + '@img/sharp-linux-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.3.2 optional: true - '@img/sharp-linuxmusl-arm64@0.34.5': + '@img/sharp-linuxmusl-arm64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 optional: true - '@img/sharp-linuxmusl-x64@0.34.5': + '@img/sharp-linuxmusl-x64@0.35.3': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.3.2 optional: true - '@img/sharp-wasm32@0.34.5': + '@img/sharp-wasm32@0.35.3': dependencies: - '@emnapi/runtime': 1.10.0 + '@emnapi/runtime': 1.11.2 optional: true - '@img/sharp-win32-arm64@0.34.5': + '@img/sharp-webcontainers-wasm32@0.35.3': + dependencies: + '@img/sharp-wasm32': 0.35.3 optional: true - '@img/sharp-win32-ia32@0.34.5': + '@img/sharp-win32-arm64@0.35.3': optional: true - '@img/sharp-win32-x64@0.34.5': + '@img/sharp-win32-ia32@0.35.3': + optional: true + + '@img/sharp-win32-x64@0.35.3': optional: true '@jridgewell/sourcemap-codec@1.5.5': {} @@ -3691,7 +3728,7 @@ snapshots: eslint: 10.4.0(jiti@2.7.0) json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - semver: 7.7.4 + semver: 7.8.5 transitivePeerDependencies: - supports-color - typescript @@ -3738,7 +3775,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.58.1 debug: 4.4.3 minimatch: 10.2.5 - semver: 7.7.4 + semver: 7.8.5 tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 @@ -3753,7 +3790,7 @@ snapshots: '@typescript-eslint/visitor-keys': 8.59.4 debug: 4.4.3 minimatch: 10.2.5 - semver: 7.7.4 + semver: 7.8.5 tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 @@ -4209,7 +4246,7 @@ snapshots: eslint-compat-utils@0.5.1(eslint@10.4.0(jiti@2.7.0)): dependencies: eslint: 10.4.0(jiti@2.7.0) - semver: 7.7.4 + semver: 7.8.5 eslint-config-flat-gitignore@2.3.0(eslint@10.4.0(jiti@2.7.0)): dependencies: @@ -4268,7 +4305,7 @@ snapshots: html-entities: 2.6.0 object-deep-merge: 2.0.0 parse-imports-exports: 0.2.4 - semver: 7.7.4 + semver: 7.8.5 spdx-expression-parse: 4.0.0 to-valid-identifier: 1.0.0 transitivePeerDependencies: @@ -4299,7 +4336,7 @@ snapshots: globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 - semver: 7.7.4 + semver: 7.8.5 optionalDependencies: typescript: 6.0.3 @@ -4364,7 +4401,7 @@ snapshots: pluralize: 8.0.0 regexp-tree: 0.1.27 regjsparser: 0.13.1 - semver: 7.7.4 + semver: 7.8.5 strip-indent: 4.1.1 eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0)): @@ -4380,7 +4417,7 @@ snapshots: natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 7.1.0 - semver: 7.7.4 + semver: 7.8.5 vue-eslint-parser: 10.4.0(eslint@10.4.0(jiti@2.7.0)) xml-name-validator: 4.0.0 optionalDependencies: @@ -4625,7 +4662,7 @@ snapshots: dependencies: acorn: 8.16.0 eslint-visitor-keys: 5.0.1 - semver: 7.7.4 + semver: 7.8.5 jsonc-parser@3.3.1: {} @@ -5077,7 +5114,7 @@ snapshots: pkg-types: 2.3.0 postcss: 8.5.14 postcss-nested: 7.0.2(postcss@8.5.14) - semver: 7.7.4 + semver: 7.8.5 tinyglobby: 0.2.16 optionalDependencies: typescript: 6.0.3 @@ -5451,36 +5488,40 @@ snapshots: semver@7.7.4: {} - sharp@0.34.5: + semver@7.8.5: {} + + sharp@0.35.3(@types/node@25.9.1): dependencies: - '@img/colour': 1.0.0 + '@img/colour': 1.1.0 detect-libc: 2.1.2 - semver: 7.7.4 + semver: 7.8.5 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.5 - '@img/sharp-darwin-x64': 0.34.5 - '@img/sharp-libvips-darwin-arm64': 1.2.4 - '@img/sharp-libvips-darwin-x64': 1.2.4 - '@img/sharp-libvips-linux-arm': 1.2.4 - '@img/sharp-libvips-linux-arm64': 1.2.4 - '@img/sharp-libvips-linux-ppc64': 1.2.4 - '@img/sharp-libvips-linux-riscv64': 1.2.4 - '@img/sharp-libvips-linux-s390x': 1.2.4 - '@img/sharp-libvips-linux-x64': 1.2.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 - '@img/sharp-libvips-linuxmusl-x64': 1.2.4 - '@img/sharp-linux-arm': 0.34.5 - '@img/sharp-linux-arm64': 0.34.5 - '@img/sharp-linux-ppc64': 0.34.5 - '@img/sharp-linux-riscv64': 0.34.5 - '@img/sharp-linux-s390x': 0.34.5 - '@img/sharp-linux-x64': 0.34.5 - '@img/sharp-linuxmusl-arm64': 0.34.5 - '@img/sharp-linuxmusl-x64': 0.34.5 - '@img/sharp-wasm32': 0.34.5 - '@img/sharp-win32-arm64': 0.34.5 - '@img/sharp-win32-ia32': 0.34.5 - '@img/sharp-win32-x64': 0.34.5 + '@img/sharp-darwin-arm64': 0.35.3 + '@img/sharp-darwin-x64': 0.35.3 + '@img/sharp-freebsd-wasm32': 0.35.3 + '@img/sharp-libvips-darwin-arm64': 1.3.2 + '@img/sharp-libvips-darwin-x64': 1.3.2 + '@img/sharp-libvips-linux-arm': 1.3.2 + '@img/sharp-libvips-linux-arm64': 1.3.2 + '@img/sharp-libvips-linux-ppc64': 1.3.2 + '@img/sharp-libvips-linux-riscv64': 1.3.2 + '@img/sharp-libvips-linux-s390x': 1.3.2 + '@img/sharp-libvips-linux-x64': 1.3.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 + '@img/sharp-libvips-linuxmusl-x64': 1.3.2 + '@img/sharp-linux-arm': 0.35.3 + '@img/sharp-linux-arm64': 0.35.3 + '@img/sharp-linux-ppc64': 0.35.3 + '@img/sharp-linux-riscv64': 0.35.3 + '@img/sharp-linux-s390x': 0.35.3 + '@img/sharp-linux-x64': 0.35.3 + '@img/sharp-linuxmusl-arm64': 0.35.3 + '@img/sharp-linuxmusl-x64': 0.35.3 + '@img/sharp-webcontainers-wasm32': 0.35.3 + '@img/sharp-win32-arm64': 0.35.3 + '@img/sharp-win32-ia32': 0.35.3 + '@img/sharp-win32-x64': 0.35.3 + '@types/node': 25.9.1 shebang-command@2.0.0: dependencies: @@ -5717,7 +5758,7 @@ snapshots: eslint-visitor-keys: 5.0.1 espree: 11.2.0 esquery: 1.7.0 - semver: 7.7.4 + semver: 7.8.5 transitivePeerDependencies: - supports-color From 4af00144dae722cb62200a1e8766add65526c394 Mon Sep 17 00:00:00 2001 From: Kevin Deng Date: Mon, 3 Aug 2026 09:02:02 +0900 Subject: [PATCH 3/8] feat!: drop node < 22 support (#126) --- .vscode/settings.json | 3 - bin/sponsorkit.mjs | 2 - build.config.ts | 26 - example/tsconfig.json | 12 + package.json | 50 +- pnpm-lock.yaml | 3684 +++++++++++-------------------- src/cache.ts | 2 +- src/cli.ts | 9 +- src/configs/defaults.ts | 4 +- src/configs/env.ts | 8 +- src/configs/fallback.ts | 2 +- src/configs/index.ts | 14 +- src/configs/tier-presets.ts | 2 +- src/index.ts | 10 +- src/processing/image.ts | 6 +- src/processing/svg.ts | 10 +- src/providers/afdian.ts | 2 +- src/providers/github.ts | 4 +- src/providers/index.ts | 16 +- src/providers/liberapay.ts | 2 +- src/providers/opencollective.ts | 4 +- src/providers/patreon.ts | 2 +- src/providers/polar.ts | 2 +- src/renders/circles.ts | 4 +- src/renders/index.ts | 4 +- src/renders/tiers.ts | 8 +- src/run.ts | 20 +- src/types.ts | 2 +- tsconfig.json | 18 +- tsdown.config.ts | 19 + 30 files changed, 1378 insertions(+), 2573 deletions(-) delete mode 100755 bin/sponsorkit.mjs delete mode 100644 build.config.ts create mode 100644 example/tsconfig.json create mode 100644 tsdown.config.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index f54bc071..042934e5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,4 @@ { - // Enable the ESlint flat config support - "eslint.useFlatConfig": true, - // Disable the default formatter, use eslint instead "prettier.enable": false, "editor.formatOnSave": false, diff --git a/bin/sponsorkit.mjs b/bin/sponsorkit.mjs deleted file mode 100755 index 318916d1..00000000 --- a/bin/sponsorkit.mjs +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -import '../dist/cli.mjs' diff --git a/build.config.ts b/build.config.ts deleted file mode 100644 index c085f46a..00000000 --- a/build.config.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { defineBuildConfig } from 'unbuild' - -export default defineBuildConfig({ - entries: [ - 'src/index', - 'src/cli', - ], - declaration: 'node16', - clean: true, - rollup: { - inlineDependencies: [ - '@fast-csv/parse', - 'd3-hierarchy', - '@antfu/utils', - 'normalize-url', - 'p-limit', - 'yocto-queue', - 'lodash.escaperegexp', - 'lodash.isnil', - 'lodash.isfunction', - 'lodash.isundefined', - 'lodash.uniq', - 'lodash.groupby', - ], - }, -}) diff --git a/example/tsconfig.json b/example/tsconfig.json new file mode 100644 index 00000000..96162117 --- /dev/null +++ b/example/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "paths": { + "sponsorkit": [ + "../src/index.ts" + ] + }, + "declaration": false + }, + "exclude": [] +} diff --git a/package.json b/package.json index bfb069dc..0ca196cb 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "sponsorkit", "type": "module", "version": "17.1.1", - "packageManager": "pnpm@11.1.3", + "packageManager": "pnpm@11.18.0", "description": "Toolkit for generating sponsors images", "author": "Anthony Fu ", "license": "MIT", @@ -22,21 +22,22 @@ "sideEffects": false, "exports": { ".": "./dist/index.mjs", + "./cli": "./dist/cli.mjs", "./package.json": "./package.json" }, - "main": "./dist/index.mjs", - "module": "./dist/index.mjs", - "types": "./dist/index.d.mts", "bin": { - "sponsorkit": "./bin/sponsorkit.mjs" + "sponsorkit": "./dist/cli.mjs" }, "files": [ "bin", "dist" ], + "engines": { + "node": "^22.18.0 || ^24.11.0 || >=26.0.0" + + }, "scripts": { - "build": "unbuild", - "stub": "unbuild --stub", + "build": "tsdown", "dev": "tsx src/cli.ts", "test": "vitest", "lint": "eslint .", @@ -45,34 +46,35 @@ "release": "bumpp" }, "dependencies": { - "ansis": "^4.3.0", + "ansis": "^4.3.1", "cac": "^7.0.0", "consola": "^3.4.2", - "dotenv": "^17.4.2", + "d3-hierarchy": "^3.1.2", + "normalize-url": "^9.0.1", "ofetch": "^1.5.1", + "p-limit": "^7.3.1", "sharp": "^0.35.3", "unconfig": "^7.5.0" }, "devDependencies": { - "@antfu/eslint-config": "^9.0.0", - "@antfu/ni": "^30.1.0", + "@antfu/eslint-config": "^9.2.0", + "@antfu/ni": "^30.3.0", "@antfu/utils": "^9.3.0", "@fast-csv/parse": "^5.0.7", "@types/d3-hierarchy": "^3.1.7", - "@types/node": "^25.9.1", - "bumpp": "^11.1.0", - "d3-hierarchy": "^3.1.2", - "eslint": "^10.4.0", - "jiti": "^2.7.0", - "normalize-url": "^9.0.0", - "p-limit": "^7.3.0", - "tsx": "^4.22.3", + "@types/node": "^26.1.2", + "bumpp": "^12.1.1", + "eslint": "^10.8.0", + "tsdown": "^0.22.14", "typescript": "^6.0.3", - "unbuild": "^3.6.1", - "vite": "^8.0.13", - "vitest": "^4.1.6" + "vite": "^8.2.0", + "vitest": "^4.1.10" }, - "resolutions": { - "sponsorkit": "workspace:*" + "inlinedDependencies": { + "@antfu/utils": "9.3.0", + "@fast-csv/parse": "5.0.7", + "lodash.escaperegexp": "4.1.2", + "lodash.groupby": "4.6.0", + "lodash.uniq": "4.5.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b681ef8a..032b8288 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,33 +9,39 @@ importers: .: dependencies: ansis: - specifier: ^4.3.0 - version: 4.3.0 + specifier: ^4.3.1 + version: 4.3.1 cac: specifier: ^7.0.0 version: 7.0.0 consola: specifier: ^3.4.2 version: 3.4.2 - dotenv: - specifier: ^17.4.2 - version: 17.4.2 + d3-hierarchy: + specifier: ^3.1.2 + version: 3.1.2 + normalize-url: + specifier: ^9.0.1 + version: 9.0.1 ofetch: specifier: ^1.5.1 version: 1.5.1 + p-limit: + specifier: ^7.3.1 + version: 7.3.1 sharp: specifier: ^0.35.3 - version: 0.35.3(@types/node@25.9.1) + version: 0.35.3(@types/node@26.1.2) unconfig: specifier: ^7.5.0 version: 7.5.0 devDependencies: '@antfu/eslint-config': - specifier: ^9.0.0 - version: 9.0.0(@typescript-eslint/rule-tester@8.58.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(@typescript-eslint/typescript-estree@8.59.4(typescript@6.0.3))(@typescript-eslint/utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(@vue/compiler-sfc@3.3.12)(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.6(@types/node@25.9.1)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0))) + specifier: ^9.2.0 + version: 9.2.0(@typescript-eslint/typescript-estree@8.65.0(typescript@6.0.3))(@typescript-eslint/utils@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(@vue/compiler-sfc@3.3.12)(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.10(@types/node@26.1.2)(vite@8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0))) '@antfu/ni': - specifier: ^30.1.0 - version: 30.1.0 + specifier: ^30.3.0 + version: 30.3.0 '@antfu/utils': specifier: ^9.3.0 version: 9.3.0 @@ -46,41 +52,26 @@ importers: specifier: ^3.1.7 version: 3.1.7 '@types/node': - specifier: ^25.9.1 - version: 25.9.1 + specifier: ^26.1.2 + version: 26.1.2 bumpp: - specifier: ^11.1.0 - version: 11.1.0 - d3-hierarchy: - specifier: ^3.1.2 - version: 3.1.2 + specifier: ^12.1.1 + version: 12.1.1 eslint: - specifier: ^10.4.0 - version: 10.4.0(jiti@2.7.0) - jiti: - specifier: ^2.7.0 - version: 2.7.0 - normalize-url: - specifier: ^9.0.0 - version: 9.0.0 - p-limit: - specifier: ^7.3.0 - version: 7.3.0 - tsx: - specifier: ^4.22.3 - version: 4.22.3 + specifier: ^10.8.0 + version: 10.8.0(jiti@2.7.0) + tsdown: + specifier: ^0.22.14 + version: 0.22.14(typescript@6.0.3) typescript: specifier: ^6.0.3 version: 6.0.3 - unbuild: - specifier: ^3.6.1 - version: 3.6.1(typescript@6.0.3) vite: - specifier: ^8.0.13 - version: 8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0) + specifier: ^8.2.0 + version: 8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0) vitest: - specifier: ^4.1.6 - version: 4.1.6(@types/node@25.9.1)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0)) + specifier: ^4.1.10 + version: 4.1.10(@types/node@26.1.2)(vite@8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0)) example: devDependencies: @@ -90,8 +81,8 @@ importers: packages: - '@antfu/eslint-config@9.0.0': - resolution: {integrity: sha512-8aQW0UWHoNMdVxTfzs1+w10t26plsc9oFs8YhCyCtST5nnANJe/VAjqvR3hYI1l3PHBeo4tjVMg8wuu6g3OLlA==} + '@antfu/eslint-config@9.2.0': + resolution: {integrity: sha512-v/j0Pjn6Sj9CxHT8n4nIKI8lg4O/+P4G+Zdbg7u/3J6JaLayxRXsX2Twx0fjpUtoyxW5mdYd67QycVfr1ahirA==} hasBin: true peerDependencies: '@angular-eslint/eslint-plugin': ^21.1.0 @@ -101,9 +92,9 @@ packages: '@next/eslint-plugin-next': '>=15.0.0' '@prettier/plugin-xml': ^3.4.1 '@unocss/eslint-plugin': '>=0.50.0' - astro-eslint-parser: ^1.0.2 + astro-eslint-parser: '>=1.0.2' eslint: ^9.10.0 || ^10.0.0 - eslint-plugin-astro: ^1.2.0 + eslint-plugin-astro: '>=1.2.0' eslint-plugin-format: '>=0.1.0' eslint-plugin-jsx-a11y: '>=6.10.2' eslint-plugin-react-refresh: ^0.5.0 @@ -154,18 +145,14 @@ packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} - '@antfu/ni@30.1.0': - resolution: {integrity: sha512-3VuAbPjgY52rQNn4wABaXMhBU2Oq91uy6L8nX49eJ35OLI68CyckGU+HZxcaHix4ymuGM2nFL1D6sLpgODK5xw==} + '@antfu/ni@30.3.0': + resolution: {integrity: sha512-KkYFVPA1IvC3m+WBKUuY5oxYc4OdXr83jvnlOn8a+bJM10yQMu+slFN/1pDzAw2JZVi+FYP9IYjo4KaPIccMmA==} engines: {node: '>=20.19.0'} hasBin: true '@antfu/utils@9.3.0': resolution: {integrity: sha512-9hFT4RauhcUzqOE4f1+frMKLZrgNog5b06I7VmZQV1BkvwvqrbC8EBZf3L1eEL2AKb6rNKjER0sEvJiSP1FXEA==} - '@babel/code-frame@7.27.1': - resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -183,363 +170,51 @@ packages: resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} engines: {node: '>=6.9.0'} - '@clack/core@1.3.1': - resolution: {integrity: sha512-fT1qHVGAag4IEkrupZ6lRRbNCs1vS9P01KB/sG8zKgvUztbYtFBtQpjSITNwooDZ83tpsPzP0mRNs1/KVszCRA==} + '@clack/core@1.4.3': + resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.4.0': - resolution: {integrity: sha512-S0My7XPGIgpRWMDG8uRqalbgT+a6FmCUdOW+HaIOVVpUPHOb7RrpvjTjiODadKp06fsrVDJZlIzc6yCTp4AnxA==} + '@clack/prompts@1.7.0': + resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} engines: {node: '>= 20.12.0'} - '@e18e/eslint-plugin@0.4.1': - resolution: {integrity: sha512-Re00N8ad1HsNrzpuIX7Bhdr8RSaFWp6VgwJUEJF+47+D1CMcXoS7VNRkIG23e46pddhgxWU0cWk4wYiQIuMHqQ==} + '@e18e/eslint-plugin@0.5.1': + resolution: {integrity: sha512-mqUozeyNI9xvJbjrOO7y765dT7Kud3bwCm/DHwctxdEngPdJWQaS9BNGgpM1wCCzZfOtlKQh4ZRhm3VRomT9KA==} peerDependencies: eslint: ^9.0.0 || ^10.0.0 - oxlint: ^1.61.0 + oxlint: ^1.68.0 peerDependenciesMeta: eslint: optional: true oxlint: optional: true - '@emnapi/core@1.10.0': - resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/core@2.0.0-alpha.3': + resolution: {integrity: sha512-AZypUeJ/yByuxyS7BlSNRDOMLMlROYtjYdIAuBmJssVz1UJDSeYxLrdizhXCFYhedC5bqd/ASy8EuNXbVVXp9g==} '@emnapi/runtime@1.11.2': resolution: {integrity: sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA==} - '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@emnapi/runtime@2.0.0-alpha.3': + resolution: {integrity: sha512-hFPAhMUjJD9BSyCANEISPOogeXC9Zo9ZQl7L6vKnaVsMkCtzznaW/naYypeyl0Gv5rYfWYsZbpixTMpjDJzQeA==} + + '@emnapi/wasi-threads@2.0.1': + resolution: {integrity: sha512-9DsSk+o5NBX0CCJT8s0EROGSGxjR/tKu6aBTaVyq+SjAEQH4XcdcRxPBRzsBLizTTJ49MJjF+jgu3qnO9GLQcQ==} - '@es-joy/jsdoccomment@0.84.0': - resolution: {integrity: sha512-0xew1CxOam0gV5OMjh2KjFQZsKL2bByX1+q4j3E73MpYIdyUxcZb/xQct9ccUb+ve5KGUYbCUxyPnYB7RbuP+w==} + '@es-joy/jsdoccomment@0.88.0': + resolution: {integrity: sha512-GK/HL/claLLNo5KG705auIlZMwEtmn88ofSGuLsmVZwKBqMPJhW9DiznYNq07QEqz9BPtA3LBfYImtZmhVvRAw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@es-joy/jsdoccomment@0.86.0': - resolution: {integrity: sha512-ukZmRQ81WiTpDWO6D/cTBM7XbrNtutHKvAVnZN/8pldAwLoJArGOvkNyxPTBGsPjsoaQBJxlH+tE2TNA/92Qgw==} + '@es-joy/jsdoccomment@0.91.0': + resolution: {integrity: sha512-vgqlMGNNhZxwDYbUNIHj3Hskb4R28iqdXx90ufHyt/NeuTQkeqjTDslAs9I0/GCAfbxP5BpH5WsL1R1fht5Lxg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@es-joy/resolve.exports@1.2.0': resolution: {integrity: sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==} engines: {node: '>=10'} - '@esbuild/aix-ppc64@0.25.9': - resolution: {integrity: sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.28.0': - resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.25.9': - resolution: {integrity: sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.28.0': - resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.25.9': - resolution: {integrity: sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.28.0': - resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} - engines: {node: '>=18'} - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.25.9': - resolution: {integrity: sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.28.0': - resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} - engines: {node: '>=18'} - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.25.9': - resolution: {integrity: sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.28.0': - resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.25.9': - resolution: {integrity: sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.28.0': - resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.25.9': - resolution: {integrity: sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.28.0': - resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.25.9': - resolution: {integrity: sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.28.0': - resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} - engines: {node: '>=18'} - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.25.9': - resolution: {integrity: sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.28.0': - resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} - engines: {node: '>=18'} - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.25.9': - resolution: {integrity: sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.28.0': - resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} - engines: {node: '>=18'} - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.25.9': - resolution: {integrity: sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.28.0': - resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} - engines: {node: '>=18'} - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.25.9': - resolution: {integrity: sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.28.0': - resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} - engines: {node: '>=18'} - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.25.9': - resolution: {integrity: sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.28.0': - resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} - engines: {node: '>=18'} - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.25.9': - resolution: {integrity: sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.28.0': - resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} - engines: {node: '>=18'} - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.25.9': - resolution: {integrity: sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.28.0': - resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} - engines: {node: '>=18'} - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.25.9': - resolution: {integrity: sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.28.0': - resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} - engines: {node: '>=18'} - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.25.9': - resolution: {integrity: sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.28.0': - resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-arm64@0.25.9': - resolution: {integrity: sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-arm64@0.28.0': - resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} - engines: {node: '>=18'} - cpu: [arm64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.25.9': - resolution: {integrity: sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.28.0': - resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} - engines: {node: '>=18'} - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.25.9': - resolution: {integrity: sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-arm64@0.28.0': - resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.25.9': - resolution: {integrity: sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.28.0': - resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} - engines: {node: '>=18'} - cpu: [x64] - os: [openbsd] - - '@esbuild/openharmony-arm64@0.25.9': - resolution: {integrity: sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/openharmony-arm64@0.28.0': - resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} - engines: {node: '>=18'} - cpu: [arm64] - os: [openharmony] - - '@esbuild/sunos-x64@0.25.9': - resolution: {integrity: sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.28.0': - resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} - engines: {node: '>=18'} - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.25.9': - resolution: {integrity: sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.28.0': - resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} - engines: {node: '>=18'} - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.25.9': - resolution: {integrity: sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.28.0': - resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} - engines: {node: '>=18'} - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.25.9': - resolution: {integrity: sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.28.0': - resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} - engines: {node: '>=18'} - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-plugin-eslint-comments@4.7.1': - resolution: {integrity: sha512-Ql2nJFwA8wUGpILYGOQaT1glPsmvEwE0d+a+l7AALLzQvInqdbXJdx7aSu0DpUX9dB1wMVBMhm99/++S3MdEtQ==} + '@eslint-community/eslint-plugin-eslint-comments@4.7.2': + resolution: {integrity: sha512-LF03qURSwEWm2dz5wtdDCzNk+7Opl0X7q6I3undsaIuNsEiNvRV3BCtqu14Q/6Pzg1tBj44LcxpW2EpSLZStZw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 @@ -571,30 +246,34 @@ packages: resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.6.0': - resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} + '@eslint/config-helpers@0.7.0': + resolution: {integrity: sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/core@1.2.1': resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/markdown@8.0.1': - resolution: {integrity: sha512-WWKmld/EyNdEB8GMq7JMPX1SDWgyJAM1uhtCi5ySrqYQM4HQjmg11EX/q3ZpnpRXHfdccFtli3NBvvGaYjWyQw==} + '@eslint/css-tree@4.0.5': + resolution: {integrity: sha512-iPmijIAq4hlIJB86PYmY/fcZORHtjphSqICDbwuw32A/JmkhZQ/K/6TjHE03zqf3n5yABpVcbRAMG8Mi9ojy8g==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@3.0.5': - resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + '@eslint/markdown@8.0.3': + resolution: {integrity: sha512-rBTSSShrq7e4O+PWfeE4azH4/CWPNrC+VGxBXiW00o3vYVJnznsZiDayj3KC9JztIMVRZxZHn2nrDIUau/4j7A==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/plugin-kit@0.6.1': - resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/plugin-kit@0.7.1': resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/plugin-kit@0.7.2': + resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@fast-csv/parse@5.0.7': resolution: {integrity: sha512-MeuDeQj0DVmIGWky8STaKtvj232Gpq8kjrOGplHJ99Os7OO5CetVfXvUGqX/3GHYFOUsz6FK8isWtDY2XTFNWw==} @@ -783,18 +462,19 @@ packages: '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@napi-rs/wasm-runtime@1.1.4': - resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + '@napi-rs/wasm-runtime@1.2.1': + resolution: {integrity: sha512-KjZdi8Q1wh89gsVmghvbrMgWl6ZWmRmHV6wjB7/g4Zf0dyO+hH3neZUtuDNPO00qq5YE5RITVWvrIZKRaAmzGQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.3 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.3 '@ota-meshi/ast-token-store@0.3.0': resolution: {integrity: sha512-XRO0zi2NIUKq2lUk3T1ecFSld1fMWRKE6naRFGkgkdeosx7IslyUKNv5Dcb5PJTja9tHJoFu0v/7yEpAkrkrTg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@oxc-project/types@0.130.0': - resolution: {integrity: sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==} + '@oxc-project/types@0.142.0': + resolution: {integrity: sha512-7W+2q5AKQVU36fkaryontrHn3YDt1RyUYXatw9i5H8ocYe2sPKSFB6eS8WNPeRKiN1qAWWZUPm7gwFzJGrccqQ==} '@pkgr/core@0.2.9': resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==} @@ -803,97 +483,96 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@rolldown/binding-android-arm64@1.0.1': - resolution: {integrity: sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==} + '@rolldown/binding-android-arm64@1.2.1': + resolution: {integrity: sha512-02hOeOSryYxVrOIphmLAsqnCJWxwlzFk+pEt/N/i6OgT3lShHO7xGCU5cpgchRDHboAEbSjzgGh+O/u1GswQmA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.1': - resolution: {integrity: sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==} + '@rolldown/binding-darwin-arm64@1.2.1': + resolution: {integrity: sha512-fMsTOnN0OjFm3CyppWPitKnc8UlliVARUULW6cfU6AIqjdtgmSFWSk9vecHzZduv/yMWIHDlRhM1e8Iff9uAfA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.1': - resolution: {integrity: sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==} + '@rolldown/binding-darwin-x64@1.2.1': + resolution: {integrity: sha512-1wjKdz/XLGKHaTNHjQveQ/B23TKx4ItAqm1JbyVuvNPc4Ze0Fb48s49TAd/2zcplPl8okE/UbTgmlVfwT7eFeQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.1': - resolution: {integrity: sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==} + '@rolldown/binding-freebsd-x64@1.2.1': + resolution: {integrity: sha512-Fa0jHR07E7YBN4vOEsbVf2briYNsuOowfLJaXULZM0ldMlaCaj2LJgLMbMe4iacRyZmvR8efFhgR9wKuGclQUg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.1': - resolution: {integrity: sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.1': + resolution: {integrity: sha512-pzkgu1SSHGgRRyRZ4fbmSgmajbVt+epaLP99NDjFft69v/ypfTi6swBMiVdh2EkQ0OSnHE1lZDM7DRGkyAzUpA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.1': - resolution: {integrity: sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==} + '@rolldown/binding-linux-arm64-gnu@1.2.1': + resolution: {integrity: sha512-QI5SEDY8cbiYWHx0VO4vIc3UlS6a32vXHjU8Qy/17adEmZIPuByJg13UEvo9c/UCiUkdcVWY83C+b+JrwnNyUg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.0.1': - resolution: {integrity: sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==} + '@rolldown/binding-linux-arm64-musl@1.2.1': + resolution: {integrity: sha512-Sm41FyCeXqmYcERoYOCbGIL5hNfd8w9LQ7Y61Bev48HkcjaJqV/iiVOaiDxjVTRMS+QKrZmD8cfPt4uMVnvM+A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.0.1': - resolution: {integrity: sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==} + '@rolldown/binding-linux-ppc64-gnu@1.2.1': + resolution: {integrity: sha512-2x+WhXTGl9yJYPbltW/BSEPTVz9OIWQyER4N+gJEDWkkn904eRcBzELqh/Hf7K0w/ubGbKNMv0ZC+94QK/IFEg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.0.1': - resolution: {integrity: sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==} + '@rolldown/binding-linux-s390x-gnu@1.2.1': + resolution: {integrity: sha512-eEjmQpuRQayHPWWnywaWHkFT3ToPbP3RYy42VVd/B9aBGDA+Ol25EIWHxKQST3IiWJjikCWUF7KtbfqwZrzVwQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.0.1': - resolution: {integrity: sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==} + '@rolldown/binding-linux-x64-gnu@1.2.1': + resolution: {integrity: sha512-/Orga1fZYkLc/56jBICcHrKchl8Z2UKdDSr3LG9ToWO1lQ6a4Livk9Xz+9WN91zsz5QR3XQz2NNoSDEvP6qadw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.0.1': - resolution: {integrity: sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==} + '@rolldown/binding-linux-x64-musl@1.2.1': + resolution: {integrity: sha512-xxBJRL+0q0Kce7orznGWLuylHDY65vuARXZRpX+hPdv+DqK2c3NlCsVA98tlWzWNEE7yPqA/1NQ5nnCrj49Y5A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.0.1': - resolution: {integrity: sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==} + '@rolldown/binding-openharmony-arm64@1.2.1': + resolution: {integrity: sha512-M6AdXIXw3s+/8XpKMzdGDEXGS1S7kwUsy+rcTIUIOx5Ge4nXKCtAFHFV9YKkXvGcC5WMoTjAteLzlsQROVI0Yw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.1': - resolution: {integrity: sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [wasm32] + '@rolldown/binding-wasm32-wasi@1.2.1': + resolution: {integrity: sha512-/TX0SoRGojHzSAHpfVBbavRVSazg5U3h3Y3VXfcc0cdugq6kxdqw8LPGFiPr+/7gE/60zRcsOY2Vi9b9eT0jww==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} - '@rolldown/binding-win32-arm64-msvc@1.0.1': - resolution: {integrity: sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==} + '@rolldown/binding-win32-arm64-msvc@1.2.1': + resolution: {integrity: sha512-EvRrivJieyHG+AO9lleZWgq+g0+S7oV2C51yuqlcyU/R9net+sI4Pj0F+lUoP2bEr6TWX3SqFaaS0SzfLxSzkw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.1': - resolution: {integrity: sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==} + '@rolldown/binding-win32-x64-msvc@1.2.1': + resolution: {integrity: sha512-Z4eCmn5QJ/5+azF9knpLWKfVd9aidn0mAe9TpJgvBLId9Ax3t0+JVxBmT25Bv7NBbVW1TZyKjQjQReouMeH5UQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -901,195 +580,30 @@ packages: '@rolldown/pluginutils@1.0.1': resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} - '@rollup/plugin-alias@5.1.1': - resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@sindresorhus/base62@1.0.0': + resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==} + engines: {node: '>=18'} - '@rollup/plugin-commonjs@28.0.6': - resolution: {integrity: sha512-XSQB1K7FUU5QP+3lOQmVCE3I0FcbbNvmNT4VJSj93iUjayaARrTQeoRdiYQoftAJBLrR9t2agwAd3ekaTgHNlw==} - engines: {node: '>=16.0.0 || 14 >= 14.17'} - peerDependencies: - rollup: ^2.68.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - '@rollup/plugin-json@6.1.0': - resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} - engines: {node: '>=14.0.0'} + '@stylistic/eslint-plugin@5.10.0': + resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + eslint: ^9.0.0 || ^10.0.0 - '@rollup/plugin-node-resolve@16.0.1': - resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - '@rollup/plugin-replace@6.0.2': - resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} - '@rollup/rollup-android-arm-eabi@4.46.2': - resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==} - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.46.2': - resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==} - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.46.2': - resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==} - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.46.2': - resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==} - cpu: [x64] - os: [darwin] - - '@rollup/rollup-freebsd-arm64@4.46.2': - resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==} - cpu: [arm64] - os: [freebsd] - - '@rollup/rollup-freebsd-x64@4.46.2': - resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==} - cpu: [x64] - os: [freebsd] - - '@rollup/rollup-linux-arm-gnueabihf@4.46.2': - resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} - cpu: [arm] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm-musleabihf@4.46.2': - resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} - cpu: [arm] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-arm64-gnu@4.46.2': - resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-arm64-musl@4.46.2': - resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-loongarch64-gnu@4.46.2': - resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-ppc64-gnu@4.46.2': - resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-gnu@4.46.2': - resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-riscv64-musl@4.46.2': - resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@rollup/rollup-linux-s390x-gnu@4.46.2': - resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-gnu@4.46.2': - resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rollup/rollup-linux-x64-musl@4.46.2': - resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rollup/rollup-win32-arm64-msvc@4.46.2': - resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.46.2': - resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==} - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.46.2': - resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==} - cpu: [x64] - os: [win32] - - '@sindresorhus/base62@1.0.0': - resolution: {integrity: sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==} - engines: {node: '>=18'} - - '@standard-schema/spec@1.1.0': - resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} - - '@stylistic/eslint-plugin@5.10.0': - resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^9.0.0 || ^10.0.0 - - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} - - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} - - '@types/d3-hierarchy@3.1.7': - resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} - - '@types/debug@4.1.12': - resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} @@ -1100,6 +614,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -1115,68 +632,46 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node@25.9.1': - resolution: {integrity: sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==} - - '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + '@types/node@26.1.2': + resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.59.4': - resolution: {integrity: sha512-PegsU+XfyJJNjd4+u/k6f9yTyp0lEXXiPopUNobZcIAUJFGICFLN+sP0Rb3JehVmiij1Ph0dFGYqODoRo/2+6A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.59.4 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/parser@8.58.1': - resolution: {integrity: sha512-gGkiNMPqerb2cJSVcruigx9eHBlLG14fSdPdqMoOcBfh+vvn4iCq2C8MzUB89PrxOXk0y3GZ1yIWb9aOzL93bw==} + '@typescript-eslint/eslint-plugin@8.65.0': + resolution: {integrity: sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: + '@typescript-eslint/parser': ^8.65.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.59.4': - resolution: {integrity: sha512-zORHqO/tuhxY1zWuTvMUqddRxpiFJ72xVfcNoWpqdLjs6lfPbuQBJuW4pk+49/uBMy7Ssr4bzgjiKmmDB1UbZQ==} + '@typescript-eslint/parser@8.65.0': + resolution: {integrity: sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.58.1': - resolution: {integrity: sha512-gfQ8fk6cxhtptek+/8ZIqw8YrRW5048Gug8Ts5IYcMLCw18iUgrZAEY/D7s4hkI0FxEfGakKuPK/XUMPzPxi5g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.59.4': resolution: {integrity: sha512-Ly00Vu4oAacfDeHp2Zg85ioNG6l8HG+tN1D7J+xTHSxu9y0awYKJ2zH1rFBn8ZSfuGK+7FxK3Cgl3uAz0aZZLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/rule-tester@8.58.1': - resolution: {integrity: sha512-xNpISfU2bSCaw4zOy81xZJ3zC+CV6byOGRtMJGheAVqLGhRCX6NcA1UcKMpIWu4Vva8Jh76+j6VoeKKtYbeXNQ==} + '@typescript-eslint/project-service@8.65.0': + resolution: {integrity: sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - - '@typescript-eslint/scope-manager@8.58.1': - resolution: {integrity: sha512-TPYUEqJK6avLcEjumWsIuTpuYODTTDAtoMdt8ZZa93uWMTX13Nb8L5leSje1NluammvU+oI3QRr5lLXPgihX3w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/scope-manager@8.59.4': resolution: {integrity: sha512-mUeR/3H1WrTAddJrwut8OoPjfauaztMQmRwV5fQTUyNVJCLiUXXe4lGEyYIL2oFDpP7UtgbGJXCt72wT0z2S3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.58.1': - resolution: {integrity: sha512-JAr2hOIct2Q+qk3G+8YFfqkqi7sC86uNryT+2i5HzMa2MPjw4qNFvtjnw1IiA1rP7QhNKVe21mSSLaSjwA1Olw==} + '@typescript-eslint/scope-manager@8.65.0': + resolution: {integrity: sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/tsconfig-utils@8.59.4': resolution: {integrity: sha512-DLCpnKgD4alVxTBSKulK+gU1KCqOgUXfDRDXh2mZgzokQKa/70ax93I2uVO3m/LLvIAtWZIFoiifudmIqAxpMA==} @@ -1184,26 +679,26 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.59.4': - resolution: {integrity: sha512-uonTuPAAKr9XaBGqJ3LjYTh72zy5DyGesljO9gtmk/eFW0W1fRHjnwVYKB35Lm8d5Q5CluEW3gPHjTvZTmgrfA==} + '@typescript-eslint/tsconfig-utils@8.65.0': + resolution: {integrity: sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.58.1': - resolution: {integrity: sha512-io/dV5Aw5ezwzfPBBWLoT+5QfVtP8O7q4Kftjn5azJ88bYyp/ZMCsyW1lpKK46EXJcaYMZ1JtYj+s/7TdzmQMw==} + '@typescript-eslint/type-utils@8.65.0': + resolution: {integrity: sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/types@8.59.4': resolution: {integrity: sha512-F1o7WJcCq+bc8dwcO/YsSEOudAH8RDtaOhM6wcAQhcUsFhnWQl81JKy48q1hoxAU0qrzM89+31GYh1515Zde3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.58.1': - resolution: {integrity: sha512-w4w7WR7GHOjqqPnvAYbazq+Y5oS68b9CzasGtnd6jIeOIeKUzYzupGTB2T4LTPSv4d+WPeccbxuneTFHYgAAWg==} + '@typescript-eslint/types@8.65.0': + resolution: {integrity: sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/typescript-estree@8.59.4': resolution: {integrity: sha512-F+RuOmcDXo4+TPdfd/TCLS3m2nw8gE9XXyZLrA3JBfaA5tz9TtdkyD3YJFmPxulyc2cKbEok/CvFE3MgSLWnag==} @@ -1211,11 +706,10 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.58.1': - resolution: {integrity: sha512-Ln8R0tmWC7pTtLOzgJzYTXSCjJ9rDNHAqTaVONF4FEi2qwce8mD9iSOxOpLFFvWp/wBFlew0mjM1L1ihYWfBdQ==} + '@typescript-eslint/typescript-estree@8.65.0': + resolution: {integrity: sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/utils@8.59.4': @@ -1225,16 +719,23 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.58.1': - resolution: {integrity: sha512-y+vH7QE8ycjoa0bWciFg7OpFcipUuem1ujhrdLtq1gByKwfbC7bPeKsiny9e0urg93DqwGcHey+bGRKCnF1nZQ==} + '@typescript-eslint/utils@8.65.0': + resolution: {integrity: sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/visitor-keys@8.59.4': resolution: {integrity: sha512-U3gxVaDVnuZKhSspW/MzMxE1kq7zOdc072FcSNoqA1I9p8HyKbBFfEHoWckBAMgNMph4MamwS5iTVzFmrnt8TQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitest/eslint-plugin@1.6.17': - resolution: {integrity: sha512-sIVY9ZeVcXyPxFCNRkIt8Yw4keKIcUyp9/8qnmuomPwE+ST1htw5sZsbqdUMTiah9SmCg1JYoK9RqdDtPeNYYg==} + '@typescript-eslint/visitor-keys@8.65.0': + resolution: {integrity: sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitest/eslint-plugin@1.6.24': + resolution: {integrity: sha512-U5isuChJ58H1M6oRGaIotYbH2gM1rhzKUjtiarqpLNG/3+fzXIXs5RyTLrYQJmQPnXbvIMPFvI9z8ufpFZc8lg==} engines: {node: '>=18'} peerDependencies: '@typescript-eslint/eslint-plugin': '*' @@ -1249,11 +750,11 @@ packages: vitest: optional: true - '@vitest/expect@4.1.6': - resolution: {integrity: sha512-7EHDquPthALSV0jhhjgEW8FXaviMx7rSqu8W6oqCoAuOhKov814P99QDV1pxMA3QPv21YudvJngIhjrNI4opLg==} + '@vitest/expect@4.1.10': + resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} - '@vitest/mocker@4.1.6': - resolution: {integrity: sha512-MCFc63czMjEInOlcY2cpQCvCN+KgbAn+60xu9cMgP4sKaLC5JNAKw7JH8QdAnoAC88hW1IiSNZ+GgVXlN1UcMQ==} + '@vitest/mocker@4.1.10': + resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -1263,20 +764,20 @@ packages: vite: optional: true - '@vitest/pretty-format@4.1.6': - resolution: {integrity: sha512-h5SxD/IzNhZYnrSZRsUZQIC+vD0GY8cUvq0iwsmkFKixRCKLLWqCXa/FIQ4S1R+sI+PGoojkHsdNrbZiM9Qpgw==} + '@vitest/pretty-format@4.1.10': + resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} - '@vitest/runner@4.1.6': - resolution: {integrity: sha512-nOPCmn2+yD0ZNmKdsXGv/UxMMWbMuKeD6GyYncNwdkYDxpQvrPSKYj2rWuDjC2Y4b6w6hjip5dBKFzEUuZe3vA==} + '@vitest/runner@4.1.10': + resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} - '@vitest/snapshot@4.1.6': - resolution: {integrity: sha512-YhsdE6xAVfTDmzjxL2ZDUvjj+ZsgyOKe+TdQzqkD72wIOmHka8NuGQ6NpTNZv9D2Z63fbwWKJPeVpEw4EQgYxw==} + '@vitest/snapshot@4.1.10': + resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} - '@vitest/spy@4.1.6': - resolution: {integrity: sha512-JFKxMx6udhwKh/Ldo270e17QX710vgunMkuPAvXjHSvC6oqLWAHhVhjg/I71q0u0CBSErIODV1Kjv0FQNSWjdg==} + '@vitest/spy@4.1.10': + resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} - '@vitest/utils@4.1.6': - resolution: {integrity: sha512-FxIY+U81R3LGKCxaHHFRQ5+g6/iRgGLmeHWdp2Amj4ljQRrEIWHmZyDfDYBRZlpyqA7qKxtS9DD1dhk8RnRIVQ==} + '@vitest/utils@4.1.10': + resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} '@vue/compiler-core@3.3.12': resolution: {integrity: sha512-qAtjyG3GBLG0chzp5xGCyRLLe6wFCHmjI82aGzwuGKyznNP+GJJMxjc0wOYWDB2YKfho7niJFdoFpo0CZZQg9w==} @@ -1296,6 +797,131 @@ packages: '@vue/shared@3.3.12': resolution: {integrity: sha512-6p0Yin0pclvnER7BLNOQuod9Z+cxSYh8pSh7CzHnWNjAIP6zrTlCdHRvSCb1aYEx6i3Q3kvfuWU7nG16CgG1ag==} + '@yuku-codegen/binding-darwin-arm64@0.8.1': + resolution: {integrity: sha512-Ck0RmDBLc+R0dZpfTXmJFAvcuPf+npbJF1T/VhC9pPDGjNEOGwn4DwFcjhg//DfNIO+xgktsLSt5S4v0MFrToA==} + cpu: [arm64] + os: [darwin] + + '@yuku-codegen/binding-darwin-x64@0.8.1': + resolution: {integrity: sha512-6BDLLWi8wHbCghgkajS+OeVJX2jLY9pY9HV/qH9daLP1XCyMSPssEiXjKyPiJq+St5b+zcPgMEBF8cgJDNhMMQ==} + cpu: [x64] + os: [darwin] + + '@yuku-codegen/binding-freebsd-x64@0.8.1': + resolution: {integrity: sha512-Rd1PHfw2mxC8y00kWxYWDClnBC1NbSwPuq0zKLYPggE7mlOnV+eQ15futtaz/Q4BP+jOtEv9elxvP7by20h6Kw==} + cpu: [x64] + os: [freebsd] + + '@yuku-codegen/binding-linux-arm-gnu@0.8.1': + resolution: {integrity: sha512-/XGncN6jQ/CwXNgWwo+XnsUmILY1q1mbS1f38XnYOHw3DOKOISxVIAlD9IsmdrHLAUAncFlgFS3ky4OO9fvjyg==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@yuku-codegen/binding-linux-arm-musl@0.8.1': + resolution: {integrity: sha512-Rxut53qx3JbTkQ8+A6I8Lrplwz55HQVCjEsTsWF1uOpfgALdvuKSMPIE0gVqefEEcOSA9ASklbNacmXwiqnaMw==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@yuku-codegen/binding-linux-arm64-gnu@0.8.1': + resolution: {integrity: sha512-hBNkUPHX04BjB2oIIgIlYT2tog9x0rmBVkZep0f4LLYyFhdJfYM/s2pJ0c8ehQhhkQaJFokW4CxGhiVvVLlzWg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@yuku-codegen/binding-linux-arm64-musl@0.8.1': + resolution: {integrity: sha512-ePZZnmOxArA4jA3AWlJj3WdY5z1ahQSLwAYrv7mozkJVcrBz2wZgy8l9ukcHFpTxPyhxCAea4gBSZEqqsCYE3A==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@yuku-codegen/binding-linux-x64-gnu@0.8.1': + resolution: {integrity: sha512-LGAEXnQ4Xg/BtOuEirABwa9ByUTXFjealqXXAHVFb8EEmZu5QeHLtsdB2MA2IcYVAgW/QPkyqfnd80R4FltI2A==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@yuku-codegen/binding-linux-x64-musl@0.8.1': + resolution: {integrity: sha512-PPDMcQIKCNTOaLBBKh9SBM1EAPcsvnlShMAxq2D/twnSCSEUI9LfrR+G9J4P3o+46ZS4WN8mjZsj8p4PKOnKgw==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@yuku-codegen/binding-win32-arm64@0.8.1': + resolution: {integrity: sha512-W8A1QpstKYhg4e56s13L4ByQprQ1OXY3QFoNPIh6+4v/DEgqfhJ9ApU++e7zHQCQrhYjyQC/uWtxUcRqpyL/7Q==} + cpu: [arm64] + os: [win32] + + '@yuku-codegen/binding-win32-x64@0.8.1': + resolution: {integrity: sha512-zH7g7pLjfl3uZaNvYzd1PnCerU9fvhS16B7Z0z4Ai0S/oaGI53Y2xh8ylFDvDvmquEP7vay4O/zuLgvZeEsxVA==} + cpu: [x64] + os: [win32] + + '@yuku-parser/binding-darwin-arm64@0.8.1': + resolution: {integrity: sha512-iKQinrhsdxsGJ38msw4KaD7yotWw5N2nqMLeOPD+ttpZQKJc9nGL3VHMtISzCJ9Q09g0N3m91mYRFnIbXfhhig==} + cpu: [arm64] + os: [darwin] + + '@yuku-parser/binding-darwin-x64@0.8.1': + resolution: {integrity: sha512-k7zt2H3sWbYzwTGAK2TT6ma18w1XpwFAWgmBHiaMGHVe63aArrtO+55r6g7chXJ4joB6lb8SxYFyRQ974xfawQ==} + cpu: [x64] + os: [darwin] + + '@yuku-parser/binding-freebsd-x64@0.8.1': + resolution: {integrity: sha512-tQjrlkE/vYEBXZ+pM59FerIVD4Zfs2OpRvN3e8oo12pTcAbwTTxteZKWaedfUsZr+gKO4tLLAaFaFIwa5fQJFw==} + cpu: [x64] + os: [freebsd] + + '@yuku-parser/binding-linux-arm-gnu@0.8.1': + resolution: {integrity: sha512-LZQgyer5d5i1f5oot+x6EhANXPD4FeCgz2CiSiWFSFBeG1U2m5jz65LD8gZwzy4CP4QVxQFyX9BazVRskTbwuQ==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-arm-musl@0.8.1': + resolution: {integrity: sha512-69G1N4bPkygrus/ahtFxVdv9lzfvS65fuyMdDknn5BZU/gfFGBJyHeJ8UGgLPTyR3YptlJMuZhEkdgp6Qhfz2g==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-linux-arm64-gnu@0.8.1': + resolution: {integrity: sha512-XL5+JpKCl1ghQTnZezy41NzmPdk4rZ6s0Z8qvGsgNPJ6yrSD7Ne8iz20SZZd/nW720qHiJy/ux62rwzZ+/clMg==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-arm64-musl@0.8.1': + resolution: {integrity: sha512-Rj290yfrWlrV4/+HrAuoeJXMHdoNubJWKdhg1QDa/mvqa8MUYFd4IHuVYjP/WdQzEgOAWGrLC48vcnge6U3jbg==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-linux-x64-gnu@0.8.1': + resolution: {integrity: sha512-d3IDkhAxiUTVuGI6BKIMKUyLe7ZxMY5yLqyvvTqJD1WPnE0eJTsLeRFRBv7/HXsnAzDs0IgvoG5bjvUkHZ5kSg==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@yuku-parser/binding-linux-x64-musl@0.8.1': + resolution: {integrity: sha512-Oyp+2gGYKK/AvN2ZoauRn1LGPdkjME5/TE/l4a9mT0JdNeiRTvno42383bt04MWnAZcYS4Hv7YsiFOXUBeLdpA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@yuku-parser/binding-win32-arm64@0.8.1': + resolution: {integrity: sha512-H77lYgICWRZycGmLaojzg0aSs3Z3v8SZWkcEjl1Ql3s+Km2SyiQcZ7RGq++Wh5nJxpiDJGAzYDC74XqMNm2ZHg==} + cpu: [arm64] + os: [win32] + + '@yuku-parser/binding-win32-x64@0.8.1': + resolution: {integrity: sha512-ABniFzqYYn64NUEgmHTb6JxEzAlpmPu4cpMFjMBlR6cJXqL+vd7K1ae/yrt+NhUduHkJWJqG4lbHbV2yp9el3w==} + cpu: [x64] + os: [win32] + + '@yuku-toolchain/types@0.8.1': + resolution: {integrity: sha512-HcGEV3kOn9evBTm2ARYOFNKAI7sY9twQozCVd9EVdlsBlnKi0a2iv8xXxYVHFCBQpX3SvvPXBhk8lcK6NUTdNg==} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1309,8 +935,8 @@ packages: ajv@6.14.0: resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - ansis@4.3.0: - resolution: {integrity: sha512-44mvgtPvohuU/70DdY5Oz2AIrLJ9k6/5x4KmoSvPwO+5Moijo0+N9D0fKbbYZQWP1hNm5CpOf+E01jhxG/r8xg==} + ansis@4.3.1: + resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} engines: {node: '>=14'} are-docs-informative@0.0.2: @@ -1320,13 +946,6 @@ packages: args-tokenizer@0.3.0: resolution: {integrity: sha512-xXAd7G2Mll5W8uo37GETpQ2VrE84M181Z7ugHFGQnJZ50M2mbOv0osSZ9VsSgPfJQ+LVG0prSi0th+ELMsno7Q==} - autoprefixer@10.4.21: - resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} - engines: {node: ^10 || ^12 || >=14} - hasBin: true - peerDependencies: - postcss: ^8.1.0 - balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} @@ -1336,6 +955,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + baseline-browser-mapping@2.11.8: + resolution: {integrity: sha512-zAgkquC2WYF0PIc6XbNYkA2uuxxFavzgmX61R+dHDUa558V8Ejf8ozTZFR6QzM24RWu4kBcRkhJ5kpz77j9fnQ==} + engines: {node: '>=6.0.0'} + hasBin: true + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -1348,25 +972,30 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.28.7: + resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + builtin-modules@5.0.0: resolution: {integrity: sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==} engines: {node: '>=18.20'} - bumpp@11.1.0: - resolution: {integrity: sha512-jdwOGMyX8JIqpQ0N2RMRR87DHZaoJnUtui5lU9LqFfFK5JC0H8qY9uWqXoa+dEWt/K7rOmmsoyiZB8RBM7RPBQ==} - engines: {node: '>=20.19.0'} + bumpp@12.1.1: + resolution: {integrity: sha512-6zniIxMtt+yeEwmyL4s+gB54A1J8HVQPOIeABaFB2ScmG993Q+3+5MYAbJYu/kmZ1ZXS+KzwVb/ff5V4vBXiHA==} + engines: {node: ^22.18.0 || ^24.11.0 || >=26.0.0} hasBin: true cac@7.0.0: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} - caniuse-api@3.0.0: - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001787: resolution: {integrity: sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==} + caniuse-lite@1.0.30001806: + resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -1384,34 +1013,17 @@ packages: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - - clean-regexp@1.0.0: - resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} - engines: {node: '>=4'} - - colord@2.9.3: - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} - - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - comment-parser@1.4.5: - resolution: {integrity: sha512-aRDkn3uyIlCFfk5NUA+VdwMmMsh8JGhc4hapfV4yxymHGQ3BVskMQfoXGpCo5IoBuQ9tS5iiVKhCpTcB4pW4qw==} - engines: {node: '>= 12.0.0'} - comment-parser@1.4.6: resolution: {integrity: sha512-ObxuY6vnbWTN6Od72xfwN9DbzC7Y2vv8u1Soi9ahRKL37gb6y1qk6/dgjs+3JWuXJHWvsg3BXIwzd/rkmAwavg==} engines: {node: '>= 12.0.0'} - commondir@1.0.1: - resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + comment-parser@1.4.7: + resolution: {integrity: sha512-0h+uSNtQGW3D98eQt3jJ8L06Fves8hncB4V/PKdw/Qb8Hnk19VaKuTr55UNRYiSoVa7WwrFls+rh3ux9agmkeQ==} + engines: {node: '>= 12.0.0'} confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -1423,6 +1035,10 @@ packages: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} + convert-hrtime@5.0.0: + resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==} + engines: {node: '>=12'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1433,54 +1049,11 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - css-declaration-sorter@7.2.0: - resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} - engines: {node: ^14 || ^16 || >=18} - peerDependencies: - postcss: ^8.0.9 - - css-select@5.2.2: - resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} - - css-tree@2.2.1: - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - - css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - - css-what@6.2.2: - resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} - engines: {node: '>= 6'} - cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - cssnano-preset-default@7.0.8: - resolution: {integrity: sha512-d+3R2qwrUV3g4LEMOjnndognKirBZISylDZAF/TPeCWVjEwlXS2e4eN4ICkoobRe7pD3H6lltinKVyS1AJhdjQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - cssnano-utils@5.0.1: - resolution: {integrity: sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - cssnano@7.1.0: - resolution: {integrity: sha512-Pu3rlKkd0ZtlCUzBrKL1Z4YmhKppjC1H9jo7u1o4qaKqyhvixFgu5qLyNIAOjSTg9DjVPtUqdROq2EfpVMEe+w==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - csso@5.0.5: - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - d3-hierarchy@3.1.2: resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} engines: {node: '>=12'} @@ -1500,13 +1073,12 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.7: + resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -1514,6 +1086,10 @@ packages: destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-indent@7.0.2: + resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} + engines: {node: '>=12.20'} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -1525,28 +1101,23 @@ packages: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - - domelementtype@2.3.0: - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - - domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - - domutils@3.2.2: - resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - - dotenv@17.4.2: - resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} - engines: {node: '>=12'} + dts-resolver@3.0.0: + resolution: {integrity: sha512-1T1f+z+4tl9XD+m+0HBgWoL/nm0bOIffyWaUuUSBlFg/86IWvfx+wjNaO/ybU0AJzG9/Mi5hBUgGV6zCmWEN7Q==} + engines: {node: ^22.18.0 || >=24.0.0} + peerDependencies: + oxc-resolver: '>=11.0.0' + peerDependenciesMeta: + oxc-resolver: + optional: true electron-to-chromium@1.5.334: resolution: {integrity: sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==} - empathic@2.0.0: - resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} + electron-to-chromium@1.5.399: + resolution: {integrity: sha512-lEcqhErbHjXRvd41rnWLpzbyU/IXfIYo7QwaFWmxGeLiLyY2TBCdHnWY88vB+p3ubnihRypDm66panXl7TylLA==} + + empathic@2.0.1: + resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} engines: {node: '>=14'} enhanced-resolve@5.18.3: @@ -1560,24 +1131,10 @@ packages: es-module-lexer@2.0.0: resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} - esbuild@0.25.9: - resolution: {integrity: sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==} - engines: {node: '>=18'} - hasBin: true - - esbuild@0.28.0: - resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} - engines: {node: '>=18'} - hasBin: true - escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -1621,10 +1178,9 @@ packages: peerDependencies: eslint: '*' - eslint-plugin-command@3.5.2: - resolution: {integrity: sha512-PA59QAkQDwvcCMEt5lYLJLI3zDGVKJeC4id/pcRY2XdRYhSGW7iyYT1VC1N3bmpuvu6Qb/9QptiS3GJMjeGTJg==} + eslint-plugin-command@3.5.3: + resolution: {integrity: sha512-JIhmUOW2K2Dw1K+p4mtj5potkqTZ4ZaicrTkgCygPZCWErP2+O2F46n7ZwGKapeEjiwcVqoY8u01SxNUUXWPeQ==} peerDependencies: - '@typescript-eslint/rule-tester': '*' '@typescript-eslint/typescript-estree': '*' '@typescript-eslint/utils': '*' eslint: '*' @@ -1641,20 +1197,20 @@ packages: peerDependencies: eslint: ^9.0.0 || ^10.0.0 - eslint-plugin-jsdoc@62.9.0: - resolution: {integrity: sha512-PY7/X4jrVgoIDncUmITlUqK546Ltmx/Pd4Hdsu4CvSjryQZJI2mEV4vrdMufyTetMiZ5taNSqvK//BTgVUlNkA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint-plugin-jsdoc@63.3.2: + resolution: {integrity: sha512-5B3oO23iqbNJC/ru7uqIY80wmY66De1Q0+5kXQGHuLrGze/rL0Zw/YktMcqgYQ+kdHmgvY1q5TpRgl3yZMLmhQ==} + engines: {node: ^22.13.0 || >=24} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 - eslint-plugin-jsonc@3.1.2: - resolution: {integrity: sha512-dopTxdB22iuOkgKyJCupEC5IYBItUT4J/teq1H5ddUObcaYhOURxtJElZczdcYnnKCghNU/vccuyPkliy2Wxsg==} + eslint-plugin-jsonc@3.3.0: + resolution: {integrity: sha512-CsTR8aDcShDg6A71ZppLaWiPoSo2J1Ivjm5/c4Mnb9sxgwWq+WG2PgeoAnj7SwzDPJB75tlHvLrGy6ntooIitg==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=9.38.0' - eslint-plugin-n@18.0.1: - resolution: {integrity: sha512-q3ARhk+eZRc7myR0KHx+R3/GJeOHF+Ir6PK95Pu2tEX8Sl/4BIpmmVLva2kPrjC2gCmn6WHlHm+3yeo6Rxhycw==} + eslint-plugin-n@18.2.2: + resolution: {integrity: sha512-gOO0lIqwEjZ750kv9/SptCWArUoAZXJoBr0vYWTO2dCBxctHUXlBIigiC8xuxxr/NKqgIT6Ehz1xRcilj8a5cA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=8.57.1' @@ -1670,34 +1226,34 @@ packages: resolution: {integrity: sha512-4S3/9Nb7A2tiMcpzEQE9bQSlpeOz6WJkgryBuou/SA8W2x2c8Zf4j0NvTKBjv6qNhF9T79tmkecm/0CHqV0UGg==} engines: {node: '>=5.0.0'} - eslint-plugin-perfectionist@5.9.0: - resolution: {integrity: sha512-8TWzg02zmnBdZwCkWLi8jhzqXI+fE7Z/RwV8SL6xD45tJ8Bp3wGuYL2XtQgfe/Wd0eBqOUX+s6ey73IyszvKTA==} + eslint-plugin-perfectionist@5.10.0: + resolution: {integrity: sha512-HiqpDrUDbGrMC6iHQbemgDyHJ0366Vyz/qRWmxQcSAkmG25cXr8BdRgx8yAhOKhEfBXn8Rnf/mTCsV4EqUJSxg==} engines: {node: ^20.0.0 || >=22.0.0} peerDependencies: eslint: ^8.45.0 || ^9.0.0 || ^10.0.0 - eslint-plugin-pnpm@1.6.0: - resolution: {integrity: sha512-dxmt9r3zvPaft6IugS4i0k16xag3fTbOvm/road5uV9Y8qUCQT0xzheSh3gMlYAlC6vXRpfArBDsTZ7H7JKCbg==} + eslint-plugin-pnpm@1.7.0: + resolution: {integrity: sha512-SZaPARN1+NMqAjQOlQjHu59SnN/o299N5Z4HTyhwWYnfkQkjdiydayHBegwXER3VecRF/Rf7eHw3sGcTF+uLOQ==} peerDependencies: eslint: ^9.0.0 || ^10.0.0 - eslint-plugin-regexp@3.1.0: - resolution: {integrity: sha512-qGXIC3DIKZHcK1H9A9+Byz9gmndY6TTSRkSMTZpNXdyCw2ObSehRgccJv35n9AdUakEjQp5VFNLas6BMXizCZg==} + eslint-plugin-regexp@3.1.1: + resolution: {integrity: sha512-MxR5nqoQCtVWmJwia0D2+NlXX1xzdpkslsVOZLEYQ4PQWEaL65PCZXURxaBc3lPnkNFpNxzMIRmYVxdl8giXRA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=9.38.0' - eslint-plugin-toml@1.3.1: - resolution: {integrity: sha512-1l00fBP03HIt9IPV7ZxBi7x0y0NMdEZmakL1jBD6N/FoKBvfKxPw5S8XkmzBecOnFBTn5Z8sNJtL5vdf9cpRMQ==} + eslint-plugin-toml@1.5.0: + resolution: {integrity: sha512-qBjRywEkKxO2uYOjus//6GVF1r+Hg5QDkRO8RTY6XcaXgWfBU0DhwpFmJa2Ljf0Sz49r7DdZlpKwwHmJ4nmH1Q==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} peerDependencies: eslint: '>=9.38.0' - eslint-plugin-unicorn@64.0.0: - resolution: {integrity: sha512-rNZwalHh8i0UfPlhNwg5BTUO1CMdKNmjqe+TgzOTZnpKoi8VBgsW7u9qCHIdpxEzZ1uwrJrPF0uRb7l//K38gA==} - engines: {node: ^20.10.0 || >=21.0.0} + eslint-plugin-unicorn@72.0.0: + resolution: {integrity: sha512-hqO6ksoOHO+ZhdseTuKRVQbx9U7PRO/cv8qAR1mctwzdVO2hYud8uS9luAhp43RJgziYgHAph8eHyipT8GL0ng==} + engines: {node: '>=22'} peerDependencies: - eslint: '>=9.38.0' + eslint: '>=10.4' eslint-plugin-unused-imports@4.4.1: resolution: {integrity: sha512-oZGYUz1X3sRMGUB+0cZyK2VcvRX5lm/vB56PgNNcU+7ficUCKm66oZWKUubXWnOuPjQ8PvmXtCViXBMONPe7tQ==} @@ -1708,8 +1264,8 @@ packages: '@typescript-eslint/eslint-plugin': optional: true - eslint-plugin-vue@10.9.1: - resolution: {integrity: sha512-cHB0Tf4Duvzwecwd/AqWzZvF/QszE13BhjVUpVXWCy9AeMR5GjkAjP3i85vqgLgOuTmkHR1OJ5oMeqLHtuw8zg==} + eslint-plugin-vue@10.10.0: + resolution: {integrity: sha512-dL9x9rBHqqNcByWiLOHK6L0SB97V82/NC0cZRn9cXPjM7pCuWlpQQP9bFH4vjBv80ej1ZpzAkuD8zWH1o9bZbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 @@ -1722,8 +1278,8 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-yml@3.3.2: - resolution: {integrity: sha512-XjmOB/fLBwYHqevnpclPL938V+9ExX7xw1hPaM3IPePGyMFRV1giS16RjSTNhIyCv/Oh0G0PEdmmZPATJ02YCw==} + eslint-plugin-yml@3.6.0: + resolution: {integrity: sha512-8lSqBIiOJO8ms1gktdlNaVGm3zXQJiYeKhQmtIG66XzU58kFDOjQae4sufQEMGHC4bP8VxiaH3tjU5PpDB6euw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} peerDependencies: eslint: '>=9.38.0' @@ -1750,8 +1306,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.4.0: - resolution: {integrity: sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==} + eslint@10.8.0: + resolution: {integrity: sha512-nuKKvN+oIBO0koN7Tm7dlkmnkc21mtt0QJLwAKzjLq14y6lRTdVG36MZHJ8eQHwdJMwZbQNMlPOYedMq/oVJvQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -1839,9 +1395,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - fix-dts-default-cjs-exports@1.0.1: - resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -1853,16 +1406,14 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} - fraction.js@4.3.7: - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function-timeout@1.0.2: + resolution: {integrity: sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==} + engines: {node: '>=18'} fzf@0.5.2: resolution: {integrity: sha512-Tt4kuxLXFKHy8KT40zwsUPUkg1CrsgY25FxA2U/j/0WgEDCk3ddc/zLTCCcbSHX9FcKtLuVaDGtGE/STWC+j3Q==} @@ -1870,6 +1421,10 @@ packages: get-tsconfig@4.10.1: resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + get-tsconfig@5.0.0-beta.5: + resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} + engines: {node: '>=20.20.0'} + github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} @@ -1881,8 +1436,8 @@ packages: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} - globals@17.6.0: - resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} + globals@17.8.0: + resolution: {integrity: sha512-Zz/LMDZScFmkakeL2cTHzf+PbWKdpU3uclqkZT7TjDG58j5WPt0PpA+n9uPI24fZtlw07q0OtEi84K+umsRzqQ==} engines: {node: '>=18'} globrex@0.1.2: @@ -1891,16 +1446,16 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hookable@5.5.3: - resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hookable@6.1.1: + resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} html-entities@2.6.0: resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + identifier-regex@1.1.0: + resolution: {integrity: sha512-SLX4H/vtcYlYnL7XqnuJKHU7Z8517TgsW9nmQiGOgMCjQ8V/deLYu6bEmbGoXe7WMMhc9+EUGyFFneHja8KabA==} + engines: {node: '>=18'} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1909,6 +1464,10 @@ packages: resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} engines: {node: '>= 4'} + import-without-cache@0.4.0: + resolution: {integrity: sha512-NkJQA7oZ4YHQhd2+H3BoRFKF3d/XNsiKpHZCQEMH9pDX27hQQLsTyOocyRgaIVtf8gHX3Nt3LPkR4e5EdtPAGQ==} + engines: {node: ^22.18.0 || >=24.0.0} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -1921,10 +1480,6 @@ packages: resolution: {integrity: sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==} engines: {node: '>=18.20'} - is-core-module@2.16.1: - resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} - engines: {node: '>= 0.4'} - is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1933,34 +1488,25 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} - - is-reference@1.2.1: - resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-identifier@1.1.0: + resolution: {integrity: sha512-NhOds0mDx9lJu+1lBRO0xbwFo5nobA7GCk/0e5xjr6+6XugX985+0OyGX35BNrTkPAsdLcIKg02HUQJOK8D8kw==} + engines: {node: '>=18'} isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - jiti@2.7.0: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - jsdoc-type-pratt-parser@7.1.1: - resolution: {integrity: sha512-/2uqY7x6bsrpi3i9LVU6J89352C0rpMk0as8trXxCtvd4kPk1ke/Eyif6wqfSLvoNJqcDG9Vk4UsXgygzCt2xA==} - engines: {node: '>=20.0.0'} - jsdoc-type-pratt-parser@7.2.0: resolution: {integrity: sha512-dh140MMgjyg3JhJZY/+iEzW+NO5xR2gpbDFKHqotCmexElVntw7GjWjt511+C/Ef02RU5TKYrJo/Xlzk+OLaTw==} engines: {node: '>=20.0.0'} + jsdoc-type-pratt-parser@8.0.0: + resolution: {integrity: sha512-uQu/fXVqVaMg6gM8/E5G5+eygVcZ1NV0Z51CvqhNa2bDWxvHMl484ETr6vph4oPyC+KUcbP/w2W2pewfCiR9aQ==} + engines: {node: '>=20.0.0'} + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -1989,93 +1535,86 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - knitwork@1.2.0: - resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lightningcss-android-arm64@1.32.0: - resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] - lightningcss-darwin-arm64@1.32.0: - resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.32.0: - resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.32.0: - resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.32.0: - resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.32.0: - resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - lightningcss-linux-arm64-musl@1.32.0: - resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] libc: [musl] - lightningcss-linux-x64-gnu@1.32.0: - resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [glibc] - lightningcss-linux-x64-musl@1.32.0: - resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] libc: [musl] - lightningcss-win32-arm64-msvc@1.32.0: - resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.32.0: - resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.32.0: - resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} engines: {node: '>= 12.0.0'} - lilconfig@3.1.3: - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} - engines: {node: '>=14'} - - local-pkg@1.1.2: - resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} + local-pkg@1.2.1: + resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==} engines: {node: '>=14'} locate-path@6.0.0: @@ -2088,12 +1627,6 @@ packages: lodash.groupby@4.6.0: resolution: {integrity: sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==} - lodash.memoize@4.1.2: - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.uniq@4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} @@ -2103,6 +1636,10 @@ packages: magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + make-asynchronous@1.1.0: + resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==} + engines: {node: '>=18'} + markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -2145,11 +1682,8 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - mdn-data@2.0.28: - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} - - mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + mdn-data@2.29.0: + resolution: {integrity: sha512-pVxQFCcaYUEAH853+v7yoI/qzhxXSq1bTb9obMYGYAN1c3Hen+XDCEvr296XhstrwlSTNgOR7mCSD4JPjbJe5A==} micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -2245,38 +1779,17 @@ packages: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} - mkdist@2.3.0: - resolution: {integrity: sha512-thkRk+pHdudjdZT3FJpPZ2+pncI6mGlH/B+KBVddlZj4MrFGW41sRIv1wZawZUHU8v7cttGaj+5nx8P+dG664A==} - hasBin: true - peerDependencies: - sass: ^1.85.0 - typescript: '>=5.7.3' - vue: ^3.5.13 - vue-sfc-transformer: ^0.1.1 - vue-tsc: ^1.8.27 || ^2.0.21 - peerDependenciesMeta: - sass: - optional: true - typescript: - optional: true - vue: - optional: true - vue-sfc-transformer: - optional: true - vue-tsc: - optional: true - mlly@1.7.4: resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} - module-replacements@3.0.0-beta.7: - resolution: {integrity: sha512-n1F9l3gF1wNh13xmnXS2JU7P9c3DlzCgVEyLKrVN0U37RwrXyYoePMMvYvs/6aUONAxbnscphzESZTCorXFh7Q==} + module-replacements@3.1.0: + resolution: {integrity: sha512-MSTNGqlp2q0seRlrAA/FK3SUkGnmPeexeKWuCjeJ7HobD2RCjk4f8ry8lJ+nUQFDVBAHSdC4TdjyJSaocnR7Uw==} ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.16: + resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -2293,22 +1806,23 @@ packages: node-releases@2.0.37: resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} - normalize-range@0.1.2: - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} - engines: {node: '>=0.10.0'} + node-releases@2.0.51: + resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} + engines: {node: '>=18'} - normalize-url@9.0.0: - resolution: {integrity: sha512-z9nC87iaZXXySbWWtTHfCFJyFvKaUAW6lODhikG7ILSbVgmwuFjUqkgnheHvAUcGedO29e2QGBRXMUD64aurqQ==} + normalize-url@9.0.1: + resolution: {integrity: sha512-ARftfC5HdUNu9jJeL8pHj8debUIHA2b91FizCoMzY4lG6dDX13jdvTK0TBe24IBDRf2HvJSzzwEPvmbkQWHRSg==} engines: {node: '>=20'} nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - object-deep-merge@2.0.0: - resolution: {integrity: sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==} + object-deep-merge@2.0.1: + resolution: {integrity: sha512-aKttDKcU3pyZqKcCkDhsMn70WmZFG2JGDQLP9EcLyTSIFQRCPWLAmBZRLJnrVUrhPG1jETEEbfdgbNtJf1LyMg==} - obug@2.1.1: - resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} @@ -2317,21 +1831,32 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + p-event@6.0.1: + resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} + engines: {node: '>=16.17'} + p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@7.3.0: - resolution: {integrity: sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==} + p-limit@7.3.1: + resolution: {integrity: sha512-0trZaiG7Y7kN/Egy9a8j47t9osC0Tch4PaIWd9yGF6bvmlk7muExRvGNYb8sXBwEKMoNKsbNN9P8EefuQekE4Q==} engines: {node: '>=20'} p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} + p-timeout@6.1.4: + resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} + engines: {node: '>=14.16'} + package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + package-manager-detector@1.8.0: + resolution: {integrity: sha512-yQA4H19AmPEoMUeavPMDIe1higySl/gH/yaQrkT/s07Qp+7pp2hYz30N3z2l5BkjVkF9Ow6o0wjJamm2y7Sn0A==} + parse-gitignore@2.0.0: resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} engines: {node: '>=14'} @@ -2350,17 +1875,14 @@ packages: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} engines: {node: '>=12'} pkg-types@1.3.1: @@ -2373,196 +1895,21 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - pnpm-workspace-yaml@1.6.0: - resolution: {integrity: sha512-uUy4dK3E11sp7nK+hnT7uAWfkBMe00KaUw8OG3NuNlYQoTk4sc9pcdIy1+XIP85v9Tvr02mK3JPaNNrP0QyRaw==} - - postcss-calc@10.1.1: - resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} - engines: {node: ^18.12 || ^20.9 || >=22.0} - peerDependencies: - postcss: ^8.4.38 - - postcss-colormin@7.0.4: - resolution: {integrity: sha512-ziQuVzQZBROpKpfeDwmrG+Vvlr0YWmY/ZAk99XD+mGEBuEojoFekL41NCsdhyNUtZI7DPOoIWIR7vQQK9xwluw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-convert-values@7.0.6: - resolution: {integrity: sha512-MD/eb39Mr60hvgrqpXsgbiqluawYg/8K4nKsqRsuDX9f+xN1j6awZCUv/5tLH8ak3vYp/EMXwdcnXvfZYiejCQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-discard-comments@7.0.4: - resolution: {integrity: sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-discard-duplicates@7.0.2: - resolution: {integrity: sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-discard-empty@7.0.1: - resolution: {integrity: sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-discard-overridden@7.0.1: - resolution: {integrity: sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-merge-longhand@7.0.5: - resolution: {integrity: sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-merge-rules@7.0.6: - resolution: {integrity: sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-minify-font-values@7.0.1: - resolution: {integrity: sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-minify-gradients@7.0.1: - resolution: {integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-minify-params@7.0.4: - resolution: {integrity: sha512-3OqqUddfH8c2e7M35W6zIwv7jssM/3miF9cbCSb1iJiWvtguQjlxZGIHK9JRmc8XAKmE2PFGtHSM7g/VcW97sw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-minify-selectors@7.0.5: - resolution: {integrity: sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-nested@7.0.2: - resolution: {integrity: sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==} - engines: {node: '>=18.0'} - peerDependencies: - postcss: ^8.2.14 - - postcss-normalize-charset@7.0.1: - resolution: {integrity: sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-normalize-display-values@7.0.1: - resolution: {integrity: sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-normalize-positions@7.0.1: - resolution: {integrity: sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-normalize-repeat-style@7.0.1: - resolution: {integrity: sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 + pnpm-workspace-yaml@1.7.0: + resolution: {integrity: sha512-cgjaozHkjWL4H8oKZydEWE4mg31XydK3/1cLKjHvwnFAXutp45yAlMKljpOdZEq4TtLuzYAMvy9j05wRm3aoPw==} - postcss-normalize-string@7.0.1: - resolution: {integrity: sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-normalize-timing-functions@7.0.1: - resolution: {integrity: sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-normalize-unicode@7.0.4: - resolution: {integrity: sha512-LvIURTi1sQoZqj8mEIE8R15yvM+OhbR1avynMtI9bUzj5gGKR/gfZFd8O7VMj0QgJaIFzxDwxGl/ASMYAkqO8g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-normalize-url@7.0.1: - resolution: {integrity: sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-normalize-whitespace@7.0.1: - resolution: {integrity: sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-ordered-values@7.0.2: - resolution: {integrity: sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-reduce-initial@7.0.4: - resolution: {integrity: sha512-rdIC9IlMBn7zJo6puim58Xd++0HdbvHeHaPgXsimMfG1ijC5A9ULvNLSE0rUKVJOvNMcwewW4Ga21ngyJjY/+Q==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-reduce-transforms@7.0.1: - resolution: {integrity: sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + postcss-selector-parser@7.1.4: + resolution: {integrity: sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==} engines: {node: '>=4'} - postcss-svgo@7.1.0: - resolution: {integrity: sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w==} - engines: {node: ^18.12.0 || ^20.9.0 || >= 18} - peerDependencies: - postcss: ^8.4.32 - - postcss-unique-selectors@7.0.4: - resolution: {integrity: sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.5.14: - resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} + postcss@8.5.25: + resolution: {integrity: sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - pretty-bytes@7.0.1: - resolution: {integrity: sha512-285/jRCYIbMGDciDdrw0KPNC4LKEEwz/bwErcYNxSJOi4CpGUuLpb9gQpg3XJP0XYj9ldSRluXxih4lX2YN8Xw==} - engines: {node: '>=20'} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2573,6 +1920,10 @@ packages: quansync@1.0.0: resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + quote-js-string@0.1.0: + resolution: {integrity: sha512-Y3NoRtprEEZQD8RfxMCfS0ZTqc4e+i18OrXEXAvpM6TfC/3y+0L5rNbZiSnbBBEkDfFzbpd8o+cE8q3/anjMGA==} + engines: {node: '>=22'} + refa@0.12.1: resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -2581,12 +1932,8 @@ packages: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - regexp-tree@0.1.27: - resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} - hasBin: true - - regjsparser@0.13.1: - resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} + regjsparser@0.13.2: + resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==} hasBin: true reserved-identifiers@1.2.0: @@ -2596,43 +1943,34 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} - engines: {node: '>= 0.4'} - hasBin: true - - rolldown@1.0.1: - resolution: {integrity: sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - - rollup-plugin-dts@6.2.3: - resolution: {integrity: sha512-UgnEsfciXSPpASuOelix7m4DrmyQgiaWBnvI0TM4GxuDh5FkqW8E5hu57bCxXB90VvR1WNfLV80yEDN18UogSA==} - engines: {node: '>=16'} + rolldown-plugin-dts@0.27.14: + resolution: {integrity: sha512-ZvuDDwoIpRK9RPxDXratCpklFO9QZZWndf/sd0VBFb4LEj0jj07UcHK9OCh7V4XiFz2Z89ziyBC2K6tJiDjrbw==} + engines: {node: ^22.18.0 || >=24.11.0} peerDependencies: - rollup: ^3.29.4 || ^4 - typescript: ^4.5 || ^5.0 + '@typescript/native-preview': '*' + '@volar/typescript': ~2.4.0 + rolldown: ^1.0.0 + typescript: ^5.0.0 || ^6.0.0 || ~7.0.0 + vue-tsc: ~3.2.0 || ~3.3.0 + peerDependenciesMeta: + '@typescript/native-preview': + optional: true + '@volar/typescript': + optional: true + typescript: + optional: true + vue-tsc: + optional: true - rollup@4.46.2: - resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==} - engines: {node: '>=18.0.0', npm: '>=8.0.0'} + rolldown@1.2.1: + resolution: {integrity: sha512-4FKJhg8d3OiyQOA6Q1Q0hoFFpW9/OoX+VsHzpECsdsIZoOArrAK90gl59YK/Z+gnDel45bgJZK03ozH/9bCqEw==} + engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - scslre@0.3.0: resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} engines: {node: ^14.0.0 || >=16.0.0} - scule@1.3.0: - resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} - - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} - hasBin: true - semver@7.8.5: resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} engines: {node: '>=10'} @@ -2668,8 +2006,8 @@ packages: spdx-exceptions@2.5.0: resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} - spdx-expression-parse@4.0.0: - resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + spdx-expression-parse@5.0.0: + resolution: {integrity: sha512-vngmw3Rgn+o2arXNbnZaj5UtOEBuWBfvaI+Wc8GFfykIhA5/vdK9/Sp/XkLv63dykz2rxKDvKEHupF5P0FORcQ==} spdx-license-ids@3.0.22: resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==} @@ -2684,20 +2022,9 @@ packages: resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} engines: {node: '>=12'} - stylehacks@7.0.6: - resolution: {integrity: sha512-iitguKivmsueOmTO0wmxURXBP8uqOO+zikLGZ7Mm9e/94R4w5T999Js2taS/KBOnQ/wdC3jN3vNSrkGDrlnqQg==} - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} - peerDependencies: - postcss: ^8.4.32 - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - svgo@4.0.0: - resolution: {integrity: sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==} - engines: {node: '>=16'} - hasBin: true + super-regex@1.1.0: + resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==} + engines: {node: '>=18'} synckit@0.11.12: resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} @@ -2707,15 +2034,19 @@ packages: resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} + time-span@5.1.0: + resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==} + engines: {node: '>=12'} + tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@1.1.2: - resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} engines: {node: '>=18'} - tinyglobby@0.2.16: - resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} tinyrainbow@3.1.0: @@ -2730,24 +2061,61 @@ packages: resolution: {integrity: sha512-A5F0cM6+mDleacLIEUkmfpkBbnHJFV1d2rprHU2MXNk7mlxHq2zGojA+SRvQD1RoMo9gqjZPWEaKG4v1BQ48lw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + ts-api-utils@2.5.0: resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' + tsdown@0.22.14: + resolution: {integrity: sha512-ule7Y+fsAN2iZbLDoo7C4KYljFJNJJ+fLshyn+9gozeTspVersWHxwdGB+Dm2hzA38s6muFnUTl0jK3vJm9ifQ==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + peerDependencies: + '@arethetypeswrong/core': ^0.18.1 + '@tsdown/css': 0.22.14 + '@tsdown/exe': 0.22.14 + '@vitejs/devtools': '*' + publint: ^0.3.8 + tsx: '*' + typescript: ^5.0.0 || ^6.0.0 || ^7.0.0 + unplugin-unused: ^0.5.0 + unrun: '*' + peerDependenciesMeta: + '@arethetypeswrong/core': + optional: true + '@tsdown/css': + optional: true + '@tsdown/exe': + optional: true + '@vitejs/devtools': + optional: true + publint: + optional: true + tsx: + optional: true + typescript: + optional: true + unplugin-unused: + optional: true + unrun: + optional: true + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.22.3: - resolution: {integrity: sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==} - engines: {node: '>=18.0.0'} - hasBin: true - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} + type-fest@4.41.0: + resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} + engines: {node: '>=16'} + typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} @@ -2756,23 +2124,14 @@ packages: ufo@1.6.1: resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} - unbuild@3.6.1: - resolution: {integrity: sha512-+U5CdtrdjfWkZhuO4N9l5UhyiccoeMEXIc2Lbs30Haxb+tRwB3VwB8AoZRxlAzORXunenSo+j6lh45jx+xkKgg==} - hasBin: true - peerDependencies: - typescript: ^5.9.2 - peerDependenciesMeta: - typescript: - optional: true - unconfig-core@7.5.0: resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} unconfig@7.5.0: resolution: {integrity: sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA==} - undici-types@7.24.6: - resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -2789,10 +2148,6 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - untyped@2.0.0: - resolution: {integrity: sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g==} - hasBin: true - update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true @@ -2805,13 +2160,17 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - vite@8.0.13: - resolution: {integrity: sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==} + verkit@0.3.1: + resolution: {integrity: sha512-w2Eo8LSIIoW7qxNBzT7/17k+bh8plXo7G3dHjEIDqPlnluhzaxr9JX8F28VSYEtDvc1/a3WBDih6xNUZseebXg==} + engines: {node: '>=18.12.0'} + + vite@8.2.0: + resolution: {integrity: sha512-pn+CFpM0lwDeKwmOq1ZaBK/9sjorZcgqxki6MbY/jPEVd9vichIlmlD4HmQ5wdP5EgqQCFRaACBxMC7uEGc6lQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 - '@vitejs/devtools': ^0.1.18 + '@vitejs/devtools': ^0.4.0 esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 @@ -2848,20 +2207,20 @@ packages: yaml: optional: true - vitest@4.1.6: - resolution: {integrity: sha512-6lvjbS3p9b4CrdCmguzbh2/4uoXhGE2q71R4OX5sqF9R1bo9Xd6fGrMAfvp5wnCzlBnFVdCOp6onuTQVbo8iUQ==} + vitest@4.1.10: + resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.1.6 - '@vitest/browser-preview': 4.1.6 - '@vitest/browser-webdriverio': 4.1.6 - '@vitest/coverage-istanbul': 4.1.6 - '@vitest/coverage-v8': 4.1.6 - '@vitest/ui': 4.1.6 + '@vitest/browser-playwright': 4.1.10 + '@vitest/browser-preview': 4.1.10 + '@vitest/browser-webdriverio': 4.1.10 + '@vitest/coverage-istanbul': 4.1.10 + '@vitest/coverage-v8': 4.1.10 + '@vitest/ui': 4.1.10 happy-dom: '*' jsdom: '*' vite: ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -2889,12 +2248,15 @@ packages: jsdom: optional: true - vue-eslint-parser@10.4.0: - resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} + vue-eslint-parser@10.4.1: + resolution: {integrity: sha512-Gk6gRDj0n/fkRa3C3l0bBheoBckUq/Rs0F/TvMWIS6nzzx67amAViMe9CkNgsP2tXyQONvGiHQESHwFtZ3aYDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + web-worker@1.5.0: + resolution: {integrity: sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw==} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -2909,14 +2271,18 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} yaml-eslint-parser@2.0.0: resolution: {integrity: sha512-h0uDm97wvT2bokfwwTmY6kJ1hp6YDFL0nRHwNKz8s/VD1FH/vvZjAKoMUE+un0eaYBSG7/c6h+lJTP+31tjgTw==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} + yaml-eslint-parser@2.1.0: + resolution: {integrity: sha512-1zo9KRfp6vIAXBEhWAz09ex3hUwh3T+/6dGbGteHvNseA0Uk4FgQnPES55klZ6cDzSy9FpgKS0D/CoLUvCCj4w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + yaml@2.9.0: resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} @@ -2930,329 +2296,174 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@antfu/eslint-config@9.0.0(@typescript-eslint/rule-tester@8.58.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(@typescript-eslint/typescript-estree@8.59.4(typescript@6.0.3))(@typescript-eslint/utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(@vue/compiler-sfc@3.3.12)(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.6(@types/node@25.9.1)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0)))': - dependencies: - '@antfu/install-pkg': 1.1.0 - '@clack/prompts': 1.4.0 - '@e18e/eslint-plugin': 0.4.1(eslint@10.4.0(jiti@2.7.0)) - '@eslint-community/eslint-plugin-eslint-comments': 4.7.1(eslint@10.4.0(jiti@2.7.0)) - '@eslint/markdown': 8.0.1 - '@stylistic/eslint-plugin': 5.10.0(eslint@10.4.0(jiti@2.7.0)) - '@typescript-eslint/eslint-plugin': 8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - '@vitest/eslint-plugin': 1.6.17(@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.6(@types/node@25.9.1)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0))) - ansis: 4.3.0 - cac: 7.0.0 - eslint: 10.4.0(jiti@2.7.0) - eslint-config-flat-gitignore: 2.3.0(eslint@10.4.0(jiti@2.7.0)) - eslint-flat-config-utils: 3.2.0 - eslint-merge-processors: 2.0.0(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-antfu: 3.2.3(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-command: 3.5.2(@typescript-eslint/rule-tester@8.58.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(@typescript-eslint/typescript-estree@8.59.4(typescript@6.0.3))(@typescript-eslint/utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-import-lite: 0.6.0(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-jsdoc: 62.9.0(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-jsonc: 3.1.2(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-n: 18.0.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - eslint-plugin-no-only-tests: 3.4.0 - eslint-plugin-perfectionist: 5.9.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - eslint-plugin-pnpm: 1.6.0(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-regexp: 3.1.0(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-toml: 1.3.1(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-unicorn: 64.0.0(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0)) - eslint-plugin-vue: 10.9.1(@stylistic/eslint-plugin@5.10.0(eslint@10.4.0(jiti@2.7.0)))(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0))) - eslint-plugin-yml: 3.3.2(eslint@10.4.0(jiti@2.7.0)) - eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.3.12)(eslint@10.4.0(jiti@2.7.0)) - globals: 17.6.0 - local-pkg: 1.1.2 - parse-gitignore: 2.0.0 - toml-eslint-parser: 1.0.3 - vue-eslint-parser: 10.4.0(eslint@10.4.0(jiti@2.7.0)) - yaml-eslint-parser: 2.0.0 - transitivePeerDependencies: - - '@eslint/json' - - '@typescript-eslint/rule-tester' - - '@typescript-eslint/typescript-estree' - - '@typescript-eslint/utils' - - '@vue/compiler-sfc' - - oxlint - - supports-color - - ts-declaration-location - - typescript - - vitest - - '@antfu/install-pkg@1.1.0': - dependencies: - package-manager-detector: 1.6.0 - tinyexec: 1.1.2 - - '@antfu/ni@30.1.0': - dependencies: - fzf: 0.5.2 - package-manager-detector: 1.6.0 - tinyexec: 1.1.2 - tinyglobby: 0.2.16 - - '@antfu/utils@9.3.0': {} - - '@babel/code-frame@7.27.1': - dependencies: - '@babel/helper-validator-identifier': 7.28.5 - js-tokens: 4.0.0 - picocolors: 1.1.1 - optional: true - - '@babel/helper-string-parser@7.27.1': {} - - '@babel/helper-validator-identifier@7.28.5': {} - - '@babel/parser@7.28.3': - dependencies: - '@babel/types': 7.28.2 - - '@babel/types@7.28.2': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - - '@clack/core@1.3.1': - dependencies: - fast-wrap-ansi: 0.2.0 - sisteransi: 1.0.5 - - '@clack/prompts@1.4.0': - dependencies: - '@clack/core': 1.3.1 - fast-string-width: 3.0.2 - fast-wrap-ansi: 0.2.0 - sisteransi: 1.0.5 - - '@e18e/eslint-plugin@0.4.1(eslint@10.4.0(jiti@2.7.0))': - dependencies: - empathic: 2.0.0 - module-replacements: 3.0.0-beta.7 - semver: 7.8.5 - optionalDependencies: - eslint: 10.4.0(jiti@2.7.0) - - '@emnapi/core@1.10.0': - dependencies: - '@emnapi/wasi-threads': 1.2.1 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.10.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.2': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.1': - dependencies: - tslib: 2.8.1 - optional: true - - '@es-joy/jsdoccomment@0.84.0': - dependencies: - '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.59.4 - comment-parser: 1.4.5 - esquery: 1.7.0 - jsdoc-type-pratt-parser: 7.1.1 - - '@es-joy/jsdoccomment@0.86.0': - dependencies: - '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.59.4 - comment-parser: 1.4.6 - esquery: 1.7.0 - jsdoc-type-pratt-parser: 7.2.0 - - '@es-joy/resolve.exports@1.2.0': {} - - '@esbuild/aix-ppc64@0.25.9': - optional: true - - '@esbuild/aix-ppc64@0.28.0': - optional: true - - '@esbuild/android-arm64@0.25.9': - optional: true - - '@esbuild/android-arm64@0.28.0': - optional: true - - '@esbuild/android-arm@0.25.9': - optional: true - - '@esbuild/android-arm@0.28.0': - optional: true - - '@esbuild/android-x64@0.25.9': - optional: true - - '@esbuild/android-x64@0.28.0': - optional: true - - '@esbuild/darwin-arm64@0.25.9': - optional: true - - '@esbuild/darwin-arm64@0.28.0': - optional: true - - '@esbuild/darwin-x64@0.25.9': - optional: true - - '@esbuild/darwin-x64@0.28.0': - optional: true - - '@esbuild/freebsd-arm64@0.25.9': - optional: true - - '@esbuild/freebsd-arm64@0.28.0': - optional: true - - '@esbuild/freebsd-x64@0.25.9': - optional: true - - '@esbuild/freebsd-x64@0.28.0': - optional: true - - '@esbuild/linux-arm64@0.25.9': - optional: true - - '@esbuild/linux-arm64@0.28.0': - optional: true - - '@esbuild/linux-arm@0.25.9': - optional: true - - '@esbuild/linux-arm@0.28.0': - optional: true - - '@esbuild/linux-ia32@0.25.9': - optional: true - - '@esbuild/linux-ia32@0.28.0': - optional: true - - '@esbuild/linux-loong64@0.25.9': - optional: true - - '@esbuild/linux-loong64@0.28.0': - optional: true - - '@esbuild/linux-mips64el@0.25.9': - optional: true - - '@esbuild/linux-mips64el@0.28.0': - optional: true - - '@esbuild/linux-ppc64@0.25.9': - optional: true - - '@esbuild/linux-ppc64@0.28.0': - optional: true - - '@esbuild/linux-riscv64@0.25.9': - optional: true - - '@esbuild/linux-riscv64@0.28.0': - optional: true + yuku-ast@0.8.1: + resolution: {integrity: sha512-+k1E2f08y0k1+vpdD1KUCzDh2JXvwirMa8YR2Jr7VCS4zAo3eT5A/HbJCqaVGd6idaPY0gwLM9C4seEY4h10Hw==} - '@esbuild/linux-s390x@0.25.9': - optional: true + yuku-codegen@0.8.1: + resolution: {integrity: sha512-/4Sbg9K9HpCe3PidmMbs9TzJ62gq3KmQY279TB0EGKdMoM8LfcmIg4E9wS2J/ylbFuQaWcYqf5dBKr8zubdlKA==} - '@esbuild/linux-s390x@0.28.0': - optional: true + yuku-parser@0.8.1: + resolution: {integrity: sha512-YvUz2jdFMIq0QjN8LmI32ox+RBCn3l8VToAXVQ5QFfLTxSxmGZS6JP80ptePEju+CpeTdINLmUm7Ewodzh1QnQ==} - '@esbuild/linux-x64@0.25.9': - optional: true + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - '@esbuild/linux-x64@0.28.0': - optional: true +snapshots: - '@esbuild/netbsd-arm64@0.25.9': - optional: true + '@antfu/eslint-config@9.2.0(@typescript-eslint/typescript-estree@8.65.0(typescript@6.0.3))(@typescript-eslint/utils@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(@vue/compiler-sfc@3.3.12)(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.10(@types/node@26.1.2)(vite@8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0)))': + dependencies: + '@antfu/install-pkg': 1.1.0 + '@clack/prompts': 1.7.0 + '@e18e/eslint-plugin': 0.5.1(eslint@10.8.0(jiti@2.7.0)) + '@eslint-community/eslint-plugin-eslint-comments': 4.7.2(eslint@10.8.0(jiti@2.7.0)) + '@eslint/markdown': 8.0.3 + '@stylistic/eslint-plugin': 5.10.0(eslint@10.8.0(jiti@2.7.0)) + '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) + '@vitest/eslint-plugin': 1.6.24(@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.10(@types/node@26.1.2)(vite@8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0))) + ansis: 4.3.1 + cac: 7.0.0 + eslint: 10.8.0(jiti@2.7.0) + eslint-config-flat-gitignore: 2.3.0(eslint@10.8.0(jiti@2.7.0)) + eslint-flat-config-utils: 3.2.0 + eslint-merge-processors: 2.0.0(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-antfu: 3.2.3(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-command: 3.5.3(@typescript-eslint/typescript-estree@8.65.0(typescript@6.0.3))(@typescript-eslint/utils@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-import-lite: 0.6.0(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-jsdoc: 63.3.2(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-jsonc: 3.3.0(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-n: 18.2.2(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) + eslint-plugin-no-only-tests: 3.4.0 + eslint-plugin-perfectionist: 5.10.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) + eslint-plugin-pnpm: 1.7.0(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-regexp: 3.1.1(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-toml: 1.5.0(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-unicorn: 72.0.0(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-unused-imports: 4.4.1(@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0)) + eslint-plugin-vue: 10.10.0(@stylistic/eslint-plugin@5.10.0(eslint@10.8.0(jiti@2.7.0)))(@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(vue-eslint-parser@10.4.1(eslint@10.8.0(jiti@2.7.0))) + eslint-plugin-yml: 3.6.0(eslint@10.8.0(jiti@2.7.0)) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.3.12)(eslint@10.8.0(jiti@2.7.0)) + globals: 17.8.0 + local-pkg: 1.2.1 + parse-gitignore: 2.0.0 + toml-eslint-parser: 1.0.3 + vue-eslint-parser: 10.4.1(eslint@10.8.0(jiti@2.7.0)) + yaml-eslint-parser: 2.1.0 + transitivePeerDependencies: + - '@eslint/json' + - '@typescript-eslint/typescript-estree' + - '@typescript-eslint/utils' + - '@vue/compiler-sfc' + - oxlint + - supports-color + - ts-declaration-location + - typescript + - vitest - '@esbuild/netbsd-arm64@0.28.0': - optional: true + '@antfu/install-pkg@1.1.0': + dependencies: + package-manager-detector: 1.6.0 + tinyexec: 1.2.4 - '@esbuild/netbsd-x64@0.25.9': - optional: true + '@antfu/ni@30.3.0': + dependencies: + fzf: 0.5.2 + package-manager-detector: 1.8.0 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 - '@esbuild/netbsd-x64@0.28.0': - optional: true + '@antfu/utils@9.3.0': {} - '@esbuild/openbsd-arm64@0.25.9': - optional: true + '@babel/helper-string-parser@7.27.1': {} - '@esbuild/openbsd-arm64@0.28.0': - optional: true + '@babel/helper-validator-identifier@7.28.5': {} - '@esbuild/openbsd-x64@0.25.9': - optional: true + '@babel/parser@7.28.3': + dependencies: + '@babel/types': 7.28.2 - '@esbuild/openbsd-x64@0.28.0': - optional: true + '@babel/types@7.28.2': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 - '@esbuild/openharmony-arm64@0.25.9': - optional: true + '@clack/core@1.4.3': + dependencies: + fast-wrap-ansi: 0.2.0 + sisteransi: 1.0.5 - '@esbuild/openharmony-arm64@0.28.0': - optional: true + '@clack/prompts@1.7.0': + dependencies: + '@clack/core': 1.4.3 + fast-string-width: 3.0.2 + fast-wrap-ansi: 0.2.0 + sisteransi: 1.0.5 - '@esbuild/sunos-x64@0.25.9': - optional: true + '@e18e/eslint-plugin@0.5.1(eslint@10.8.0(jiti@2.7.0))': + dependencies: + empathic: 2.0.1 + module-replacements: 3.1.0 + semver: 7.8.5 + optionalDependencies: + eslint: 10.8.0(jiti@2.7.0) - '@esbuild/sunos-x64@0.28.0': + '@emnapi/core@2.0.0-alpha.3': + dependencies: + '@emnapi/wasi-threads': 2.0.1 + tslib: 2.8.1 optional: true - '@esbuild/win32-arm64@0.25.9': + '@emnapi/runtime@1.11.2': + dependencies: + tslib: 2.8.1 optional: true - '@esbuild/win32-arm64@0.28.0': + '@emnapi/runtime@2.0.0-alpha.3': + dependencies: + tslib: 2.8.1 optional: true - '@esbuild/win32-ia32@0.25.9': + '@emnapi/wasi-threads@2.0.1': + dependencies: + tslib: 2.8.1 optional: true - '@esbuild/win32-ia32@0.28.0': - optional: true + '@es-joy/jsdoccomment@0.88.0': + dependencies: + '@types/estree': 1.0.9 + '@typescript-eslint/types': 8.59.4 + comment-parser: 1.4.7 + esquery: 1.7.0 + jsdoc-type-pratt-parser: 7.2.0 - '@esbuild/win32-x64@0.25.9': - optional: true + '@es-joy/jsdoccomment@0.91.0': + dependencies: + '@types/estree': 1.0.9 + '@typescript-eslint/types': 8.65.0 + comment-parser: 1.4.7 + esquery: 1.7.0 + jsdoc-type-pratt-parser: 8.0.0 - '@esbuild/win32-x64@0.28.0': - optional: true + '@es-joy/resolve.exports@1.2.0': {} - '@eslint-community/eslint-plugin-eslint-comments@4.7.1(eslint@10.4.0(jiti@2.7.0))': + '@eslint-community/eslint-plugin-eslint-comments@4.7.2(eslint@10.8.0(jiti@2.7.0))': dependencies: escape-string-regexp: 4.0.0 - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) ignore: 7.0.5 - '@eslint-community/eslint-utils@4.9.1(eslint@10.4.0(jiti@2.7.0))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.8.0(jiti@2.7.0))': dependencies: - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@2.0.5(eslint@10.4.0(jiti@2.7.0))': + '@eslint/compat@2.0.5(eslint@10.8.0(jiti@2.7.0))': dependencies: '@eslint/core': 1.2.1 optionalDependencies: - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) '@eslint/config-array@0.23.5': dependencies: @@ -3266,7 +2477,7 @@ snapshots: dependencies: '@eslint/core': 1.2.1 - '@eslint/config-helpers@0.6.0': + '@eslint/config-helpers@0.7.0': dependencies: '@eslint/core': 1.2.1 @@ -3274,10 +2485,15 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/markdown@8.0.1': + '@eslint/css-tree@4.0.5': + dependencies: + mdn-data: 2.29.0 + source-map-js: 1.2.1 + + '@eslint/markdown@8.0.3': dependencies: '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.6.1 + '@eslint/plugin-kit': 0.7.2 github-slugger: 2.0.0 mdast-util-from-markdown: 2.0.2 mdast-util-frontmatter: 2.0.1 @@ -3292,12 +2508,12 @@ snapshots: '@eslint/object-schema@3.0.5': {} - '@eslint/plugin-kit@0.6.1': + '@eslint/plugin-kit@0.7.1': dependencies: '@eslint/core': 1.2.1 levn: 0.4.1 - '@eslint/plugin-kit@0.7.1': + '@eslint/plugin-kit@0.7.2': dependencies: '@eslint/core': 1.2.1 levn: 0.4.1 @@ -3429,16 +2645,16 @@ snapshots: '@jridgewell/sourcemap-codec@1.5.5': {} - '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@napi-rs/wasm-runtime@1.2.1(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.1 + '@emnapi/core': 2.0.0-alpha.3 + '@emnapi/runtime': 2.0.0-alpha.3 + '@tybys/wasm-util': 0.10.3 optional: true '@ota-meshi/ast-token-store@0.3.0': {} - '@oxc-project/types@0.130.0': {} + '@oxc-project/types@0.142.0': {} '@pkgr/core@0.2.9': {} @@ -3446,179 +2662,72 @@ snapshots: dependencies: quansync: 1.0.0 - '@rolldown/binding-android-arm64@1.0.1': + '@rolldown/binding-android-arm64@1.2.1': optional: true - '@rolldown/binding-darwin-arm64@1.0.1': + '@rolldown/binding-darwin-arm64@1.2.1': optional: true - '@rolldown/binding-darwin-x64@1.0.1': + '@rolldown/binding-darwin-x64@1.2.1': optional: true - '@rolldown/binding-freebsd-x64@1.0.1': + '@rolldown/binding-freebsd-x64@1.2.1': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.1': + '@rolldown/binding-linux-arm-gnueabihf@1.2.1': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.1': + '@rolldown/binding-linux-arm64-gnu@1.2.1': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.1': + '@rolldown/binding-linux-arm64-musl@1.2.1': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.1': + '@rolldown/binding-linux-ppc64-gnu@1.2.1': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.1': + '@rolldown/binding-linux-s390x-gnu@1.2.1': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.1': + '@rolldown/binding-linux-x64-gnu@1.2.1': optional: true - '@rolldown/binding-linux-x64-musl@1.0.1': + '@rolldown/binding-linux-x64-musl@1.2.1': optional: true - '@rolldown/binding-openharmony-arm64@1.0.1': + '@rolldown/binding-openharmony-arm64@1.2.1': optional: true - '@rolldown/binding-wasm32-wasi@1.0.1': + '@rolldown/binding-wasm32-wasi@1.2.1': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@emnapi/core': 2.0.0-alpha.3 + '@emnapi/runtime': 2.0.0-alpha.3 + '@napi-rs/wasm-runtime': 1.2.1(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.1': + '@rolldown/binding-win32-arm64-msvc@1.2.1': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.1': + '@rolldown/binding-win32-x64-msvc@1.2.1': optional: true '@rolldown/pluginutils@1.0.1': {} - '@rollup/plugin-alias@5.1.1(rollup@4.46.2)': - optionalDependencies: - rollup: 4.46.2 - - '@rollup/plugin-commonjs@28.0.6(rollup@4.46.2)': - dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) - commondir: 1.0.1 - estree-walker: 2.0.2 - fdir: 6.5.0(picomatch@4.0.4) - is-reference: 1.2.1 - magic-string: 0.30.21 - picomatch: 4.0.4 - optionalDependencies: - rollup: 4.46.2 - - '@rollup/plugin-json@6.1.0(rollup@4.46.2)': - dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) - optionalDependencies: - rollup: 4.46.2 - - '@rollup/plugin-node-resolve@16.0.1(rollup@4.46.2)': - dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-module: 1.0.0 - resolve: 1.22.10 - optionalDependencies: - rollup: 4.46.2 - - '@rollup/plugin-replace@6.0.2(rollup@4.46.2)': - dependencies: - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) - magic-string: 0.30.21 - optionalDependencies: - rollup: 4.46.2 - - '@rollup/pluginutils@5.2.0(rollup@4.46.2)': - dependencies: - '@types/estree': 1.0.8 - estree-walker: 2.0.2 - picomatch: 4.0.4 - optionalDependencies: - rollup: 4.46.2 - - '@rollup/rollup-android-arm-eabi@4.46.2': - optional: true - - '@rollup/rollup-android-arm64@4.46.2': - optional: true - - '@rollup/rollup-darwin-arm64@4.46.2': - optional: true - - '@rollup/rollup-darwin-x64@4.46.2': - optional: true - - '@rollup/rollup-freebsd-arm64@4.46.2': - optional: true - - '@rollup/rollup-freebsd-x64@4.46.2': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.46.2': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.46.2': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.46.2': - optional: true - - '@rollup/rollup-linux-loongarch64-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-ppc64-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-riscv64-musl@4.46.2': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.46.2': - optional: true - - '@rollup/rollup-linux-x64-musl@4.46.2': - optional: true - - '@rollup/rollup-win32-arm64-msvc@4.46.2': - optional: true - - '@rollup/rollup-win32-ia32-msvc@4.46.2': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.46.2': - optional: true - '@sindresorhus/base62@1.0.0': {} '@standard-schema/spec@1.1.0': {} - '@stylistic/eslint-plugin@5.10.0(eslint@10.4.0(jiti@2.7.0))': + '@stylistic/eslint-plugin@5.10.0(eslint@10.8.0(jiti@2.7.0))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)) '@typescript-eslint/types': 8.59.4 - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 - picomatch: 4.0.4 + picomatch: 4.0.5 - '@tybys/wasm-util@0.10.1': + '@tybys/wasm-util@0.10.3': dependencies: tslib: 2.8.1 optional: true @@ -3639,6 +2748,8 @@ snapshots: '@types/estree@1.0.8': {} + '@types/estree@1.0.9': {} + '@types/hast@3.0.4': dependencies: '@types/unist': 3.0.3 @@ -3653,23 +2764,21 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node@25.9.1': + '@types/node@26.1.2': dependencies: - undici-types: 7.24.6 - - '@types/resolve@1.20.2': {} + undici-types: 8.3.0 '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.4 - '@typescript-eslint/type-utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.4 - eslint: 10.4.0(jiti@2.7.0) + '@typescript-eslint/parser': 8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/type-utils': 8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.65.0 + eslint: 10.8.0(jiti@2.7.0) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -3677,31 +2786,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.58.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.58.1 - '@typescript-eslint/types': 8.58.1 - '@typescript-eslint/typescript-estree': 8.58.1(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.58.1 - debug: 4.4.3 - eslint: 10.4.0(jiti@2.7.0) - typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.59.4 - '@typescript-eslint/types': 8.59.4 - '@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.4 + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.65.0 debug: 4.4.3 - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.58.1(typescript@6.0.3)': + '@typescript-eslint/project-service@8.59.4(typescript@6.0.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.59.4(typescript@6.0.3) '@typescript-eslint/types': 8.59.4 @@ -3710,78 +2807,49 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.59.4(typescript@6.0.3)': + '@typescript-eslint/project-service@8.65.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.4(typescript@6.0.3) - '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@6.0.3) + '@typescript-eslint/types': 8.65.0 debug: 4.4.3 typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/rule-tester@8.58.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': - dependencies: - '@typescript-eslint/parser': 8.58.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.58.1(typescript@6.0.3) - '@typescript-eslint/utils': 8.58.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - ajv: 6.14.0 - eslint: 10.4.0(jiti@2.7.0) - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - semver: 7.8.5 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/scope-manager@8.58.1': - dependencies: - '@typescript-eslint/types': 8.58.1 - '@typescript-eslint/visitor-keys': 8.58.1 - '@typescript-eslint/scope-manager@8.59.4': dependencies: '@typescript-eslint/types': 8.59.4 '@typescript-eslint/visitor-keys': 8.59.4 - '@typescript-eslint/tsconfig-utils@8.58.1(typescript@6.0.3)': + '@typescript-eslint/scope-manager@8.65.0': dependencies: - typescript: 6.0.3 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/visitor-keys': 8.65.0 '@typescript-eslint/tsconfig-utils@8.59.4(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.65.0(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.59.4 - '@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - debug: 4.4.3 - eslint: 10.4.0(jiti@2.7.0) - ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.58.1': {} - - '@typescript-eslint/types@8.59.4': {} - '@typescript-eslint/typescript-estree@8.58.1(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.58.1(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.58.1(typescript@6.0.3) - '@typescript-eslint/types': 8.58.1 - '@typescript-eslint/visitor-keys': 8.58.1 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) debug: 4.4.3 - minimatch: 10.2.5 - semver: 7.8.5 - tinyglobby: 0.2.16 + eslint: 10.8.0(jiti@2.7.0) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color + '@typescript-eslint/types@8.59.4': {} + + '@typescript-eslint/types@8.65.0': {} + '@typescript-eslint/typescript-estree@8.59.4(typescript@6.0.3)': dependencies: '@typescript-eslint/project-service': 8.59.4(typescript@6.0.3) @@ -3791,94 +2859,109 @@ snapshots: debug: 4.4.3 minimatch: 10.2.5 semver: 7.8.5 - tinyglobby: 0.2.16 + tinyglobby: 0.2.17 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.58.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.65.0(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.58.1 - '@typescript-eslint/types': 8.58.1 - '@typescript-eslint/typescript-estree': 8.58.1(typescript@6.0.3) - eslint: 10.4.0(jiti@2.7.0) + '@typescript-eslint/project-service': 8.65.0(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@6.0.3) + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/visitor-keys': 8.65.0 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.8.5 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/utils@8.59.4(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)) '@typescript-eslint/scope-manager': 8.59.4 '@typescript-eslint/types': 8.59.4 '@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3) - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.58.1': + '@typescript-eslint/utils@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.58.1 - eslint-visitor-keys: 5.0.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.65.0 + '@typescript-eslint/types': 8.65.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) + eslint: 10.8.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color '@typescript-eslint/visitor-keys@8.59.4': dependencies: '@typescript-eslint/types': 8.59.4 eslint-visitor-keys: 5.0.1 - '@vitest/eslint-plugin@1.6.17(@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.6(@types/node@25.9.1)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0)))': + '@typescript-eslint/visitor-keys@8.65.0': + dependencies: + '@typescript-eslint/types': 8.65.0 + eslint-visitor-keys: 5.0.1 + + '@vitest/eslint-plugin@1.6.24(@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3)(vitest@4.1.10(@types/node@26.1.2)(vite@8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0)))': dependencies: '@typescript-eslint/scope-manager': 8.59.4 - '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 10.4.0(jiti@2.7.0) + '@typescript-eslint/utils': 8.59.4(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 10.8.0(jiti@2.7.0) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) typescript: 6.0.3 - vitest: 4.1.6(@types/node@25.9.1)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0)) + vitest: 4.1.10(@types/node@26.1.2)(vite@8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0)) transitivePeerDependencies: - supports-color - '@vitest/expect@4.1.6': + '@vitest/expect@4.1.10': dependencies: '@standard-schema/spec': 1.1.0 '@types/chai': 5.2.2 - '@vitest/spy': 4.1.6 - '@vitest/utils': 4.1.6 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.6(vite@8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0))': dependencies: - '@vitest/spy': 4.1.6 + '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0) + vite: 8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0) - '@vitest/pretty-format@4.1.6': + '@vitest/pretty-format@4.1.10': dependencies: tinyrainbow: 3.1.0 - '@vitest/runner@4.1.6': + '@vitest/runner@4.1.10': dependencies: - '@vitest/utils': 4.1.6 + '@vitest/utils': 4.1.10 pathe: 2.0.3 - '@vitest/snapshot@4.1.6': + '@vitest/snapshot@4.1.10': dependencies: - '@vitest/pretty-format': 4.1.6 - '@vitest/utils': 4.1.6 + '@vitest/pretty-format': 4.1.10 + '@vitest/utils': 4.1.10 magic-string: 0.30.21 pathe: 2.0.3 - '@vitest/spy@4.1.6': {} + '@vitest/spy@4.1.10': {} - '@vitest/utils@4.1.6': + '@vitest/utils@4.1.10': dependencies: - '@vitest/pretty-format': 4.1.6 + '@vitest/pretty-format': 4.1.10 convert-source-map: 2.0.0 tinyrainbow: 3.1.0 @@ -3904,23 +2987,91 @@ snapshots: '@vue/shared': 3.3.12 estree-walker: 2.0.2 magic-string: 0.30.21 - postcss: 8.5.14 + postcss: 8.5.25 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.3.12': - dependencies: - '@vue/compiler-dom': 3.3.12 - '@vue/shared': 3.3.12 + '@vue/compiler-ssr@3.3.12': + dependencies: + '@vue/compiler-dom': 3.3.12 + '@vue/shared': 3.3.12 + + '@vue/reactivity-transform@3.3.12': + dependencies: + '@babel/parser': 7.28.3 + '@vue/compiler-core': 3.3.12 + '@vue/shared': 3.3.12 + estree-walker: 2.0.2 + magic-string: 0.30.21 + + '@vue/shared@3.3.12': {} + + '@yuku-codegen/binding-darwin-arm64@0.8.1': + optional: true + + '@yuku-codegen/binding-darwin-x64@0.8.1': + optional: true + + '@yuku-codegen/binding-freebsd-x64@0.8.1': + optional: true + + '@yuku-codegen/binding-linux-arm-gnu@0.8.1': + optional: true + + '@yuku-codegen/binding-linux-arm-musl@0.8.1': + optional: true + + '@yuku-codegen/binding-linux-arm64-gnu@0.8.1': + optional: true + + '@yuku-codegen/binding-linux-arm64-musl@0.8.1': + optional: true + + '@yuku-codegen/binding-linux-x64-gnu@0.8.1': + optional: true + + '@yuku-codegen/binding-linux-x64-musl@0.8.1': + optional: true + + '@yuku-codegen/binding-win32-arm64@0.8.1': + optional: true + + '@yuku-codegen/binding-win32-x64@0.8.1': + optional: true + + '@yuku-parser/binding-darwin-arm64@0.8.1': + optional: true + + '@yuku-parser/binding-darwin-x64@0.8.1': + optional: true + + '@yuku-parser/binding-freebsd-x64@0.8.1': + optional: true + + '@yuku-parser/binding-linux-arm-gnu@0.8.1': + optional: true + + '@yuku-parser/binding-linux-arm-musl@0.8.1': + optional: true + + '@yuku-parser/binding-linux-arm64-gnu@0.8.1': + optional: true + + '@yuku-parser/binding-linux-arm64-musl@0.8.1': + optional: true + + '@yuku-parser/binding-linux-x64-gnu@0.8.1': + optional: true + + '@yuku-parser/binding-linux-x64-musl@0.8.1': + optional: true + + '@yuku-parser/binding-win32-arm64@0.8.1': + optional: true - '@vue/reactivity-transform@3.3.12': - dependencies: - '@babel/parser': 7.28.3 - '@vue/compiler-core': 3.3.12 - '@vue/shared': 3.3.12 - estree-walker: 2.0.2 - magic-string: 0.30.21 + '@yuku-parser/binding-win32-x64@0.8.1': + optional: true - '@vue/shared@3.3.12': {} + '@yuku-toolchain/types@0.8.1': {} acorn-jsx@5.3.2(acorn@8.16.0): dependencies: @@ -3935,26 +3086,18 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ansis@4.3.0: {} + ansis@4.3.1: {} are-docs-informative@0.0.2: {} args-tokenizer@0.3.0: {} - autoprefixer@10.4.21(postcss@8.5.14): - dependencies: - browserslist: 4.28.2 - caniuse-lite: 1.0.30001787 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.1.1 - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - balanced-match@4.0.4: {} baseline-browser-mapping@2.10.17: {} + baseline-browser-mapping@2.11.8: {} + boolbase@1.0.0: {} brace-expansion@5.0.5: @@ -3969,31 +3112,34 @@ snapshots: node-releases: 2.0.37 update-browserslist-db: 1.2.3(browserslist@4.28.2) + browserslist@4.28.7: + dependencies: + baseline-browser-mapping: 2.11.8 + caniuse-lite: 1.0.30001806 + electron-to-chromium: 1.5.399 + node-releases: 2.0.51 + update-browserslist-db: 1.2.3(browserslist@4.28.7) + builtin-modules@5.0.0: {} - bumpp@11.1.0: + bumpp@12.1.1: dependencies: args-tokenizer: 0.3.0 cac: 7.0.0 jsonc-parser: 3.3.1 - package-manager-detector: 1.6.0 - semver: 7.7.4 - tinyexec: 1.1.2 - tinyglobby: 0.2.16 + package-manager-detector: 1.8.0 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 unconfig: 7.5.0 + verkit: 0.3.1 yaml: 2.9.0 cac@7.0.0: {} - caniuse-api@3.0.0: - dependencies: - browserslist: 4.28.2 - caniuse-lite: 1.0.30001787 - lodash.memoize: 4.1.2 - lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001787: {} + caniuse-lite@1.0.30001806: {} + ccount@2.0.1: {} chai@6.2.2: {} @@ -4004,25 +3150,11 @@ snapshots: ci-info@4.4.0: {} - citty@0.1.6: - dependencies: - consola: 3.4.2 - - clean-regexp@1.0.0: - dependencies: - escape-string-regexp: 1.0.5 - - colord@2.9.3: {} - - commander@11.1.0: {} - commander@8.3.0: {} - comment-parser@1.4.5: {} - comment-parser@1.4.6: {} - commondir@1.0.1: {} + comment-parser@1.4.7: {} confbox@0.1.8: {} @@ -4030,6 +3162,8 @@ snapshots: consola@3.4.2: {} + convert-hrtime@5.0.0: {} + convert-source-map@2.0.0: {} core-js-compat@3.49.0: @@ -4042,80 +3176,8 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-declaration-sorter@7.2.0(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - - css-select@5.2.2: - dependencies: - boolbase: 1.0.0 - css-what: 6.2.2 - domhandler: 5.0.3 - domutils: 3.2.2 - nth-check: 2.1.1 - - css-tree@2.2.1: - dependencies: - mdn-data: 2.0.28 - source-map-js: 1.2.1 - - css-tree@3.1.0: - dependencies: - mdn-data: 2.12.2 - source-map-js: 1.2.1 - - css-what@6.2.2: {} - cssesc@3.0.0: {} - cssnano-preset-default@7.0.8(postcss@8.5.14): - dependencies: - browserslist: 4.28.2 - css-declaration-sorter: 7.2.0(postcss@8.5.14) - cssnano-utils: 5.0.1(postcss@8.5.14) - postcss: 8.5.14 - postcss-calc: 10.1.1(postcss@8.5.14) - postcss-colormin: 7.0.4(postcss@8.5.14) - postcss-convert-values: 7.0.6(postcss@8.5.14) - postcss-discard-comments: 7.0.4(postcss@8.5.14) - postcss-discard-duplicates: 7.0.2(postcss@8.5.14) - postcss-discard-empty: 7.0.1(postcss@8.5.14) - postcss-discard-overridden: 7.0.1(postcss@8.5.14) - postcss-merge-longhand: 7.0.5(postcss@8.5.14) - postcss-merge-rules: 7.0.6(postcss@8.5.14) - postcss-minify-font-values: 7.0.1(postcss@8.5.14) - postcss-minify-gradients: 7.0.1(postcss@8.5.14) - postcss-minify-params: 7.0.4(postcss@8.5.14) - postcss-minify-selectors: 7.0.5(postcss@8.5.14) - postcss-normalize-charset: 7.0.1(postcss@8.5.14) - postcss-normalize-display-values: 7.0.1(postcss@8.5.14) - postcss-normalize-positions: 7.0.1(postcss@8.5.14) - postcss-normalize-repeat-style: 7.0.1(postcss@8.5.14) - postcss-normalize-string: 7.0.1(postcss@8.5.14) - postcss-normalize-timing-functions: 7.0.1(postcss@8.5.14) - postcss-normalize-unicode: 7.0.4(postcss@8.5.14) - postcss-normalize-url: 7.0.1(postcss@8.5.14) - postcss-normalize-whitespace: 7.0.1(postcss@8.5.14) - postcss-ordered-values: 7.0.2(postcss@8.5.14) - postcss-reduce-initial: 7.0.4(postcss@8.5.14) - postcss-reduce-transforms: 7.0.1(postcss@8.5.14) - postcss-svgo: 7.1.0(postcss@8.5.14) - postcss-unique-selectors: 7.0.4(postcss@8.5.14) - - cssnano-utils@5.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - - cssnano@7.1.0(postcss@8.5.14): - dependencies: - cssnano-preset-default: 7.0.8(postcss@8.5.14) - lilconfig: 3.1.3 - postcss: 8.5.14 - - csso@5.0.5: - dependencies: - css-tree: 2.2.1 - d3-hierarchy@3.1.2: {} debug@4.4.3: @@ -4128,14 +3190,16 @@ snapshots: deep-is@0.1.4: {} - deepmerge@4.3.1: {} - defu@6.1.4: {} + defu@6.1.7: {} + dequal@2.0.3: {} destr@2.0.5: {} + detect-indent@7.0.2: {} + detect-libc@2.1.2: {} devlop@1.1.0: @@ -4144,29 +3208,13 @@ snapshots: diff-sequences@29.6.3: {} - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domelementtype@2.3.0: {} - - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - - domutils@3.2.2: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - - dotenv@17.4.2: {} + dts-resolver@3.0.0: {} electron-to-chromium@1.5.334: {} - empathic@2.0.0: {} + electron-to-chromium@1.5.399: {} + + empathic@2.0.1: {} enhanced-resolve@5.18.3: dependencies: @@ -4177,161 +3225,100 @@ snapshots: es-module-lexer@2.0.0: {} - esbuild@0.25.9: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.9 - '@esbuild/android-arm': 0.25.9 - '@esbuild/android-arm64': 0.25.9 - '@esbuild/android-x64': 0.25.9 - '@esbuild/darwin-arm64': 0.25.9 - '@esbuild/darwin-x64': 0.25.9 - '@esbuild/freebsd-arm64': 0.25.9 - '@esbuild/freebsd-x64': 0.25.9 - '@esbuild/linux-arm': 0.25.9 - '@esbuild/linux-arm64': 0.25.9 - '@esbuild/linux-ia32': 0.25.9 - '@esbuild/linux-loong64': 0.25.9 - '@esbuild/linux-mips64el': 0.25.9 - '@esbuild/linux-ppc64': 0.25.9 - '@esbuild/linux-riscv64': 0.25.9 - '@esbuild/linux-s390x': 0.25.9 - '@esbuild/linux-x64': 0.25.9 - '@esbuild/netbsd-arm64': 0.25.9 - '@esbuild/netbsd-x64': 0.25.9 - '@esbuild/openbsd-arm64': 0.25.9 - '@esbuild/openbsd-x64': 0.25.9 - '@esbuild/openharmony-arm64': 0.25.9 - '@esbuild/sunos-x64': 0.25.9 - '@esbuild/win32-arm64': 0.25.9 - '@esbuild/win32-ia32': 0.25.9 - '@esbuild/win32-x64': 0.25.9 - - esbuild@0.28.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.28.0 - '@esbuild/android-arm': 0.28.0 - '@esbuild/android-arm64': 0.28.0 - '@esbuild/android-x64': 0.28.0 - '@esbuild/darwin-arm64': 0.28.0 - '@esbuild/darwin-x64': 0.28.0 - '@esbuild/freebsd-arm64': 0.28.0 - '@esbuild/freebsd-x64': 0.28.0 - '@esbuild/linux-arm': 0.28.0 - '@esbuild/linux-arm64': 0.28.0 - '@esbuild/linux-ia32': 0.28.0 - '@esbuild/linux-loong64': 0.28.0 - '@esbuild/linux-mips64el': 0.28.0 - '@esbuild/linux-ppc64': 0.28.0 - '@esbuild/linux-riscv64': 0.28.0 - '@esbuild/linux-s390x': 0.28.0 - '@esbuild/linux-x64': 0.28.0 - '@esbuild/netbsd-arm64': 0.28.0 - '@esbuild/netbsd-x64': 0.28.0 - '@esbuild/openbsd-arm64': 0.28.0 - '@esbuild/openbsd-x64': 0.28.0 - '@esbuild/openharmony-arm64': 0.28.0 - '@esbuild/sunos-x64': 0.28.0 - '@esbuild/win32-arm64': 0.28.0 - '@esbuild/win32-ia32': 0.28.0 - '@esbuild/win32-x64': 0.28.0 - escalade@3.2.0: {} - escape-string-regexp@1.0.5: {} - escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@10.4.0(jiti@2.7.0)): + eslint-compat-utils@0.5.1(eslint@10.8.0(jiti@2.7.0)): dependencies: - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) semver: 7.8.5 - eslint-config-flat-gitignore@2.3.0(eslint@10.4.0(jiti@2.7.0)): + eslint-config-flat-gitignore@2.3.0(eslint@10.8.0(jiti@2.7.0)): dependencies: - '@eslint/compat': 2.0.5(eslint@10.4.0(jiti@2.7.0)) - eslint: 10.4.0(jiti@2.7.0) + '@eslint/compat': 2.0.5(eslint@10.8.0(jiti@2.7.0)) + eslint: 10.8.0(jiti@2.7.0) eslint-flat-config-utils@3.2.0: dependencies: '@eslint/config-helpers': 0.5.5 pathe: 2.0.3 - eslint-json-compat-utils@0.2.3(eslint@10.4.0(jiti@2.7.0))(jsonc-eslint-parser@3.1.0): + eslint-json-compat-utils@0.2.3(eslint@10.8.0(jiti@2.7.0))(jsonc-eslint-parser@3.1.0): dependencies: - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) esquery: 1.7.0 jsonc-eslint-parser: 3.1.0 - eslint-merge-processors@2.0.0(eslint@10.4.0(jiti@2.7.0)): + eslint-merge-processors@2.0.0(eslint@10.8.0(jiti@2.7.0)): dependencies: - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) - eslint-plugin-antfu@3.2.3(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-antfu@3.2.3(eslint@10.8.0(jiti@2.7.0)): dependencies: - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) - eslint-plugin-command@3.5.2(@typescript-eslint/rule-tester@8.58.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(@typescript-eslint/typescript-estree@8.59.4(typescript@6.0.3))(@typescript-eslint/utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-command@3.5.3(@typescript-eslint/typescript-estree@8.65.0(typescript@6.0.3))(@typescript-eslint/utils@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0)): dependencies: - '@es-joy/jsdoccomment': 0.84.0 - '@typescript-eslint/rule-tester': 8.58.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 10.4.0(jiti@2.7.0) + '@es-joy/jsdoccomment': 0.88.0 + '@typescript-eslint/typescript-estree': 8.65.0(typescript@6.0.3) + '@typescript-eslint/utils': 8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 10.8.0(jiti@2.7.0) - eslint-plugin-es-x@7.8.0(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-es-x@7.8.0(eslint@10.8.0(jiti@2.7.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 - eslint: 10.4.0(jiti@2.7.0) - eslint-compat-utils: 0.5.1(eslint@10.4.0(jiti@2.7.0)) + eslint: 10.8.0(jiti@2.7.0) + eslint-compat-utils: 0.5.1(eslint@10.8.0(jiti@2.7.0)) - eslint-plugin-import-lite@0.6.0(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-import-lite@0.6.0(eslint@10.8.0(jiti@2.7.0)): dependencies: - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) - eslint-plugin-jsdoc@62.9.0(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-jsdoc@63.3.2(eslint@10.8.0(jiti@2.7.0)): dependencies: - '@es-joy/jsdoccomment': 0.86.0 + '@es-joy/jsdoccomment': 0.91.0 '@es-joy/resolve.exports': 1.2.0 are-docs-informative: 0.0.2 - comment-parser: 1.4.6 + comment-parser: 1.4.7 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) espree: 11.2.0 esquery: 1.7.0 html-entities: 2.6.0 - object-deep-merge: 2.0.0 + object-deep-merge: 2.0.1 parse-imports-exports: 0.2.4 semver: 7.8.5 - spdx-expression-parse: 4.0.0 + spdx-expression-parse: 5.0.0 to-valid-identifier: 1.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@3.1.2(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-jsonc@3.3.0(eslint@10.8.0(jiti@2.7.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)) '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.6.1 + '@eslint/plugin-kit': 0.7.1 '@ota-meshi/ast-token-store': 0.3.0 diff-sequences: 29.6.3 - eslint: 10.4.0(jiti@2.7.0) - eslint-json-compat-utils: 0.2.3(eslint@10.4.0(jiti@2.7.0))(jsonc-eslint-parser@3.1.0) + eslint: 10.8.0(jiti@2.7.0) + eslint-json-compat-utils: 0.2.3(eslint@10.8.0(jiti@2.7.0))(jsonc-eslint-parser@3.1.0) jsonc-eslint-parser: 3.1.0 natural-compare: 1.4.0 synckit: 0.11.12 transitivePeerDependencies: - '@eslint/json' - eslint-plugin-n@18.0.1(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3): + eslint-plugin-n@18.2.2(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)) enhanced-resolve: 5.18.3 - eslint: 10.4.0(jiti@2.7.0) - eslint-plugin-es-x: 7.8.0(eslint@10.4.0(jiti@2.7.0)) + eslint: 10.8.0(jiti@2.7.0) + eslint-plugin-es-x: 7.8.0(eslint@10.8.0(jiti@2.7.0)) get-tsconfig: 4.10.1 globals: 15.15.0 globrex: 0.1.2 @@ -4342,103 +3329,107 @@ snapshots: eslint-plugin-no-only-tests@3.4.0: {} - eslint-plugin-perfectionist@5.9.0(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3): + eslint-plugin-perfectionist@5.10.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 10.4.0(jiti@2.7.0) + '@typescript-eslint/utils': 8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 10.8.0(jiti@2.7.0) natural-orderby: 5.0.0 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-pnpm@1.6.0(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-pnpm@1.7.0(eslint@10.8.0(jiti@2.7.0)): dependencies: - empathic: 2.0.0 - eslint: 10.4.0(jiti@2.7.0) + empathic: 2.0.1 + eslint: 10.8.0(jiti@2.7.0) jsonc-eslint-parser: 3.1.0 pathe: 2.0.3 - pnpm-workspace-yaml: 1.6.0 - tinyglobby: 0.2.16 + pnpm-workspace-yaml: 1.7.0 + tinyglobby: 0.2.17 yaml: 2.9.0 - yaml-eslint-parser: 2.0.0 + yaml-eslint-parser: 2.1.0 - eslint-plugin-regexp@3.1.0(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-regexp@3.1.1(eslint@10.8.0(jiti@2.7.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 comment-parser: 1.4.6 - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) jsdoc-type-pratt-parser: 7.2.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-toml@1.3.1(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-toml@1.5.0(eslint@10.8.0(jiti@2.7.0)): dependencies: '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.6.1 + '@eslint/plugin-kit': 0.7.1 '@ota-meshi/ast-token-store': 0.3.0 debug: 4.4.3 - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) toml-eslint-parser: 1.0.3 transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@64.0.0(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-unicorn@72.0.0(eslint@10.8.0(jiti@2.7.0)): dependencies: - '@babel/helper-validator-identifier': 7.28.5 - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)) + '@eslint/css-tree': 4.0.5 + browserslist: 4.28.7 change-case: 5.4.4 ci-info: 4.4.0 - clean-regexp: 1.0.0 core-js-compat: 3.49.0 - eslint: 10.4.0(jiti@2.7.0) + detect-indent: 7.0.2 + entities: 4.5.0 + eslint: 10.8.0(jiti@2.7.0) find-up-simple: 1.0.1 - globals: 17.6.0 + globals: 17.8.0 indent-string: 5.0.0 is-builtin-module: 5.0.0 - jsesc: 3.1.0 + is-identifier: 1.1.0 pluralize: 8.0.0 - regexp-tree: 0.1.27 - regjsparser: 0.13.1 + quote-js-string: 0.1.0 + regjsparser: 0.13.2 + reserved-identifiers: 1.2.0 semver: 7.8.5 strip-indent: 4.1.1 + yaml: 2.9.0 - eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0)): dependencies: - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) - eslint-plugin-vue@10.9.1(@stylistic/eslint-plugin@5.10.0(eslint@10.4.0(jiti@2.7.0)))(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0))): + eslint-plugin-vue@10.10.0(@stylistic/eslint-plugin@5.10.0(eslint@10.8.0(jiti@2.7.0)))(@typescript-eslint/parser@8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.8.0(jiti@2.7.0))(vue-eslint-parser@10.4.1(eslint@10.8.0(jiti@2.7.0))): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) - eslint: 10.4.0(jiti@2.7.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)) + eslint: 10.8.0(jiti@2.7.0) natural-compare: 1.4.0 nth-check: 2.1.1 - postcss-selector-parser: 7.1.0 + postcss-selector-parser: 7.1.4 semver: 7.8.5 - vue-eslint-parser: 10.4.0(eslint@10.4.0(jiti@2.7.0)) - xml-name-validator: 4.0.0 + vue-eslint-parser: 10.4.1(eslint@10.8.0(jiti@2.7.0)) + xml-name-validator: 5.0.0 optionalDependencies: - '@stylistic/eslint-plugin': 5.10.0(eslint@10.4.0(jiti@2.7.0)) - '@typescript-eslint/parser': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) + '@stylistic/eslint-plugin': 5.10.0(eslint@10.8.0(jiti@2.7.0)) + '@typescript-eslint/parser': 8.65.0(eslint@10.8.0(jiti@2.7.0))(typescript@6.0.3) - eslint-plugin-yml@3.3.2(eslint@10.4.0(jiti@2.7.0)): + eslint-plugin-yml@3.6.0(eslint@10.8.0(jiti@2.7.0)): dependencies: '@eslint/core': 1.2.1 '@eslint/plugin-kit': 0.7.1 '@ota-meshi/ast-token-store': 0.3.0 diff-sequences: 29.6.3 escape-string-regexp: 5.0.0 - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) natural-compare: 1.4.0 yaml-eslint-parser: 2.0.0 - eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.3.12)(eslint@10.4.0(jiti@2.7.0)): + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.3.12)(eslint@10.8.0(jiti@2.7.0)): dependencies: '@vue/compiler-sfc': 3.3.12 - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) eslint-scope@9.1.2: dependencies: @@ -4453,14 +3444,14 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.4.0(jiti@2.7.0): + eslint@10.8.0(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.8.0(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 - '@eslint/config-helpers': 0.6.0 + '@eslint/config-helpers': 0.7.0 '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.1 + '@eslint/plugin-kit': 0.7.2 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 @@ -4544,9 +3535,9 @@ snapshots: dependencies: format: 0.2.2 - fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0(picomatch@4.0.5): optionalDependencies: - picomatch: 4.0.4 + picomatch: 4.0.5 file-entry-cache@8.0.0: dependencies: @@ -4559,12 +3550,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - fix-dts-default-cjs-exports@1.0.1: - dependencies: - magic-string: 0.30.21 - mlly: 1.7.4 - rollup: 4.46.2 - flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -4574,12 +3559,10 @@ snapshots: format@0.2.2: {} - fraction.js@4.3.7: {} - fsevents@2.3.3: optional: true - function-bind@1.1.2: {} + function-timeout@1.0.2: {} fzf@0.5.2: {} @@ -4587,6 +3570,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + get-tsconfig@5.0.0-beta.5: + dependencies: + resolve-pkg-maps: 1.0.0 + github-slugger@2.0.0: {} glob-parent@6.0.2: @@ -4595,24 +3582,26 @@ snapshots: globals@15.15.0: {} - globals@17.6.0: {} + globals@17.8.0: {} globrex@0.1.2: {} graceful-fs@4.2.11: {} - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hookable@5.5.3: {} + hookable@6.1.1: {} html-entities@2.6.0: {} + identifier-regex@1.1.0: + dependencies: + reserved-identifiers: 1.2.0 + ignore@5.3.2: {} ignore@7.0.5: {} + import-without-cache@0.4.0: {} + imurmurhash@0.1.4: {} indent-string@5.0.0: {} @@ -4621,35 +3610,25 @@ snapshots: dependencies: builtin-modules: 5.0.0 - is-core-module@2.16.1: - dependencies: - hasown: 2.0.2 - is-extglob@2.1.1: {} is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-module@1.0.0: {} - - is-reference@1.2.1: + is-identifier@1.1.0: dependencies: - '@types/estree': 1.0.8 + identifier-regex: 1.1.0 + super-regex: 1.1.0 isexe@2.0.0: {} - jiti@1.21.7: {} - jiti@2.7.0: {} - js-tokens@4.0.0: - optional: true - - jsdoc-type-pratt-parser@7.1.1: {} - jsdoc-type-pratt-parser@7.2.0: {} + jsdoc-type-pratt-parser@8.0.0: {} + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -4674,65 +3653,61 @@ snapshots: dependencies: json-buffer: 3.0.1 - knitwork@1.2.0: {} - levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - lightningcss-android-arm64@1.32.0: + lightningcss-android-arm64@1.33.0: optional: true - lightningcss-darwin-arm64@1.32.0: + lightningcss-darwin-arm64@1.33.0: optional: true - lightningcss-darwin-x64@1.32.0: + lightningcss-darwin-x64@1.33.0: optional: true - lightningcss-freebsd-x64@1.32.0: + lightningcss-freebsd-x64@1.33.0: optional: true - lightningcss-linux-arm-gnueabihf@1.32.0: + lightningcss-linux-arm-gnueabihf@1.33.0: optional: true - lightningcss-linux-arm64-gnu@1.32.0: + lightningcss-linux-arm64-gnu@1.33.0: optional: true - lightningcss-linux-arm64-musl@1.32.0: + lightningcss-linux-arm64-musl@1.33.0: optional: true - lightningcss-linux-x64-gnu@1.32.0: + lightningcss-linux-x64-gnu@1.33.0: optional: true - lightningcss-linux-x64-musl@1.32.0: + lightningcss-linux-x64-musl@1.33.0: optional: true - lightningcss-win32-arm64-msvc@1.32.0: + lightningcss-win32-arm64-msvc@1.33.0: optional: true - lightningcss-win32-x64-msvc@1.32.0: + lightningcss-win32-x64-msvc@1.33.0: optional: true - lightningcss@1.32.0: + lightningcss@1.33.0: dependencies: detect-libc: 2.1.2 optionalDependencies: - lightningcss-android-arm64: 1.32.0 - lightningcss-darwin-arm64: 1.32.0 - lightningcss-darwin-x64: 1.32.0 - lightningcss-freebsd-x64: 1.32.0 - lightningcss-linux-arm-gnueabihf: 1.32.0 - lightningcss-linux-arm64-gnu: 1.32.0 - lightningcss-linux-arm64-musl: 1.32.0 - lightningcss-linux-x64-gnu: 1.32.0 - lightningcss-linux-x64-musl: 1.32.0 - lightningcss-win32-arm64-msvc: 1.32.0 - lightningcss-win32-x64-msvc: 1.32.0 - - lilconfig@3.1.3: {} - - local-pkg@1.1.2: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + + local-pkg@1.2.1: dependencies: mlly: 1.7.4 pkg-types: 2.3.0 @@ -4746,10 +3721,6 @@ snapshots: lodash.groupby@4.6.0: {} - lodash.memoize@4.1.2: {} - - lodash.merge@4.6.2: {} - lodash.uniq@4.5.0: {} longest-streak@3.1.0: {} @@ -4758,6 +3729,12 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 + make-asynchronous@1.1.0: + dependencies: + p-event: 6.0.1 + type-fest: 4.41.0 + web-worker: 1.5.0 + markdown-table@3.0.4: {} mdast-util-find-and-replace@3.0.2: @@ -4885,9 +3862,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 - mdn-data@2.0.28: {} - - mdn-data@2.12.2: {} + mdn-data@2.29.0: {} micromark-core-commonmark@2.0.3: dependencies: @@ -5101,24 +4076,6 @@ snapshots: dependencies: brace-expansion: 5.0.5 - mkdist@2.3.0(typescript@6.0.3): - dependencies: - autoprefixer: 10.4.21(postcss@8.5.14) - citty: 0.1.6 - cssnano: 7.1.0(postcss@8.5.14) - defu: 6.1.4 - esbuild: 0.25.9 - jiti: 1.21.7 - mlly: 1.7.4 - pathe: 2.0.3 - pkg-types: 2.3.0 - postcss: 8.5.14 - postcss-nested: 7.0.2(postcss@8.5.14) - semver: 7.8.5 - tinyglobby: 0.2.16 - optionalDependencies: - typescript: 6.0.3 - mlly@1.7.4: dependencies: acorn: 8.16.0 @@ -5126,11 +4083,11 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.1 - module-replacements@3.0.0-beta.7: {} + module-replacements@3.1.0: {} ms@2.1.3: {} - nanoid@3.3.11: {} + nanoid@3.3.16: {} natural-compare@1.4.0: {} @@ -5140,17 +4097,17 @@ snapshots: node-releases@2.0.37: {} - normalize-range@0.1.2: {} + node-releases@2.0.51: {} - normalize-url@9.0.0: {} + normalize-url@9.0.1: {} nth-check@2.1.1: dependencies: boolbase: 1.0.0 - object-deep-merge@2.0.0: {} + object-deep-merge@2.0.1: {} - obug@2.1.1: {} + obug@2.1.4: {} ofetch@1.5.1: dependencies: @@ -5167,11 +4124,15 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + p-event@6.0.1: + dependencies: + p-timeout: 6.1.4 + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - p-limit@7.3.0: + p-limit@7.3.1: dependencies: yocto-queue: 1.2.1 @@ -5179,8 +4140,12 @@ snapshots: dependencies: p-limit: 3.1.0 + p-timeout@6.1.4: {} + package-manager-detector@1.6.0: {} + package-manager-detector@1.8.0: {} + parse-gitignore@2.0.0: {} parse-imports-exports@0.2.4: @@ -5193,13 +4158,11 @@ snapshots: path-key@3.1.1: {} - path-parse@1.0.7: {} - pathe@2.0.3: {} picocolors@1.1.1: {} - picomatch@4.0.4: {} + picomatch@4.0.5: {} pkg-types@1.3.1: dependencies: @@ -5215,187 +4178,31 @@ snapshots: pluralize@8.0.0: {} - pnpm-workspace-yaml@1.6.0: + pnpm-workspace-yaml@1.7.0: dependencies: yaml: 2.9.0 - postcss-calc@10.1.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-selector-parser: 7.1.0 - postcss-value-parser: 4.2.0 - - postcss-colormin@7.0.4(postcss@8.5.14): - dependencies: - browserslist: 4.28.2 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-convert-values@7.0.6(postcss@8.5.14): - dependencies: - browserslist: 4.28.2 - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-discard-comments@7.0.4(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-selector-parser: 7.1.0 - - postcss-discard-duplicates@7.0.2(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - - postcss-discard-empty@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - - postcss-discard-overridden@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - - postcss-merge-longhand@7.0.5(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - stylehacks: 7.0.6(postcss@8.5.14) - - postcss-merge-rules@7.0.6(postcss@8.5.14): - dependencies: - browserslist: 4.28.2 - caniuse-api: 3.0.0 - cssnano-utils: 5.0.1(postcss@8.5.14) - postcss: 8.5.14 - postcss-selector-parser: 7.1.0 - - postcss-minify-font-values@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@7.0.1(postcss@8.5.14): - dependencies: - colord: 2.9.3 - cssnano-utils: 5.0.1(postcss@8.5.14) - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-minify-params@7.0.4(postcss@8.5.14): - dependencies: - browserslist: 4.28.2 - cssnano-utils: 5.0.1(postcss@8.5.14) - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-minify-selectors@7.0.5(postcss@8.5.14): - dependencies: - cssesc: 3.0.0 - postcss: 8.5.14 - postcss-selector-parser: 7.1.0 - - postcss-nested@7.0.2(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-selector-parser: 7.1.0 - - postcss-normalize-charset@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - - postcss-normalize-display-values@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-normalize-string@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-normalize-timing-functions@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-normalize-unicode@7.0.4(postcss@8.5.14): - dependencies: - browserslist: 4.28.2 - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-normalize-url@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-ordered-values@7.0.2(postcss@8.5.14): - dependencies: - cssnano-utils: 5.0.1(postcss@8.5.14) - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-reduce-initial@7.0.4(postcss@8.5.14): - dependencies: - browserslist: 4.28.2 - caniuse-api: 3.0.0 - postcss: 8.5.14 - - postcss-reduce-transforms@7.0.1(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - - postcss-selector-parser@7.1.0: + postcss-selector-parser@7.1.4: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.1.0(postcss@8.5.14): - dependencies: - postcss: 8.5.14 - postcss-value-parser: 4.2.0 - svgo: 4.0.0 - - postcss-unique-selectors@7.0.4(postcss@8.5.14): + postcss@8.5.25: dependencies: - postcss: 8.5.14 - postcss-selector-parser: 7.1.0 - - postcss-value-parser@4.2.0: {} - - postcss@8.5.14: - dependencies: - nanoid: 3.3.11 + nanoid: 3.3.16 picocolors: 1.1.1 source-map-js: 1.2.1 prelude-ls@1.2.1: {} - pretty-bytes@7.0.1: {} - punycode@2.3.1: {} quansync@0.2.11: {} quansync@1.0.0: {} + quote-js-string@0.1.0: {} + refa@0.12.1: dependencies: '@eslint-community/regexpp': 4.12.2 @@ -5405,9 +4212,7 @@ snapshots: '@eslint-community/regexpp': 4.12.2 refa: 0.12.1 - regexp-tree@0.1.27: {} - - regjsparser@0.13.1: + regjsparser@0.13.2: dependencies: jsesc: 3.1.0 @@ -5415,68 +4220,40 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.22.10: - dependencies: - is-core-module: 2.16.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - rolldown@1.0.1: + rolldown-plugin-dts@0.27.14(rolldown@1.2.1)(typescript@6.0.3): dependencies: - '@oxc-project/types': 0.130.0 - '@rolldown/pluginutils': 1.0.1 + dts-resolver: 3.0.0 + get-tsconfig: 5.0.0-beta.5 + obug: 2.1.4 + rolldown: 1.2.1 + yuku-ast: 0.8.1 + yuku-codegen: 0.8.1 + yuku-parser: 0.8.1 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.1 - '@rolldown/binding-darwin-arm64': 1.0.1 - '@rolldown/binding-darwin-x64': 1.0.1 - '@rolldown/binding-freebsd-x64': 1.0.1 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.1 - '@rolldown/binding-linux-arm64-gnu': 1.0.1 - '@rolldown/binding-linux-arm64-musl': 1.0.1 - '@rolldown/binding-linux-ppc64-gnu': 1.0.1 - '@rolldown/binding-linux-s390x-gnu': 1.0.1 - '@rolldown/binding-linux-x64-gnu': 1.0.1 - '@rolldown/binding-linux-x64-musl': 1.0.1 - '@rolldown/binding-openharmony-arm64': 1.0.1 - '@rolldown/binding-wasm32-wasi': 1.0.1 - '@rolldown/binding-win32-arm64-msvc': 1.0.1 - '@rolldown/binding-win32-x64-msvc': 1.0.1 - - rollup-plugin-dts@6.2.3(rollup@4.46.2)(typescript@6.0.3): - dependencies: - magic-string: 0.30.21 - rollup: 4.46.2 typescript: 6.0.3 - optionalDependencies: - '@babel/code-frame': 7.27.1 + transitivePeerDependencies: + - oxc-resolver - rollup@4.46.2: + rolldown@1.2.1: dependencies: - '@types/estree': 1.0.8 + '@oxc-project/types': 0.142.0 + '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.46.2 - '@rollup/rollup-android-arm64': 4.46.2 - '@rollup/rollup-darwin-arm64': 4.46.2 - '@rollup/rollup-darwin-x64': 4.46.2 - '@rollup/rollup-freebsd-arm64': 4.46.2 - '@rollup/rollup-freebsd-x64': 4.46.2 - '@rollup/rollup-linux-arm-gnueabihf': 4.46.2 - '@rollup/rollup-linux-arm-musleabihf': 4.46.2 - '@rollup/rollup-linux-arm64-gnu': 4.46.2 - '@rollup/rollup-linux-arm64-musl': 4.46.2 - '@rollup/rollup-linux-loongarch64-gnu': 4.46.2 - '@rollup/rollup-linux-ppc64-gnu': 4.46.2 - '@rollup/rollup-linux-riscv64-gnu': 4.46.2 - '@rollup/rollup-linux-riscv64-musl': 4.46.2 - '@rollup/rollup-linux-s390x-gnu': 4.46.2 - '@rollup/rollup-linux-x64-gnu': 4.46.2 - '@rollup/rollup-linux-x64-musl': 4.46.2 - '@rollup/rollup-win32-arm64-msvc': 4.46.2 - '@rollup/rollup-win32-ia32-msvc': 4.46.2 - '@rollup/rollup-win32-x64-msvc': 4.46.2 - fsevents: 2.3.3 - - sax@1.4.1: {} + '@rolldown/binding-android-arm64': 1.2.1 + '@rolldown/binding-darwin-arm64': 1.2.1 + '@rolldown/binding-darwin-x64': 1.2.1 + '@rolldown/binding-freebsd-x64': 1.2.1 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.1 + '@rolldown/binding-linux-arm64-gnu': 1.2.1 + '@rolldown/binding-linux-arm64-musl': 1.2.1 + '@rolldown/binding-linux-ppc64-gnu': 1.2.1 + '@rolldown/binding-linux-s390x-gnu': 1.2.1 + '@rolldown/binding-linux-x64-gnu': 1.2.1 + '@rolldown/binding-linux-x64-musl': 1.2.1 + '@rolldown/binding-openharmony-arm64': 1.2.1 + '@rolldown/binding-wasm32-wasi': 1.2.1 + '@rolldown/binding-win32-arm64-msvc': 1.2.1 + '@rolldown/binding-win32-x64-msvc': 1.2.1 scslre@0.3.0: dependencies: @@ -5484,13 +4261,9 @@ snapshots: refa: 0.12.1 regexp-ast-analysis: 0.7.1 - scule@1.3.0: {} - - semver@7.7.4: {} - semver@7.8.5: {} - sharp@0.35.3(@types/node@25.9.1): + sharp@0.35.3(@types/node@26.1.2): dependencies: '@img/colour': 1.1.0 detect-libc: 2.1.2 @@ -5521,7 +4294,7 @@ snapshots: '@img/sharp-win32-arm64': 0.35.3 '@img/sharp-win32-ia32': 0.35.3 '@img/sharp-win32-x64': 0.35.3 - '@types/node': 25.9.1 + '@types/node': 26.1.2 shebang-command@2.0.0: dependencies: @@ -5537,7 +4310,7 @@ snapshots: spdx-exceptions@2.5.0: {} - spdx-expression-parse@4.0.0: + spdx-expression-parse@5.0.0: dependencies: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.22 @@ -5550,23 +4323,11 @@ snapshots: strip-indent@4.1.1: {} - stylehacks@7.0.6(postcss@8.5.14): - dependencies: - browserslist: 4.28.2 - postcss: 8.5.14 - postcss-selector-parser: 7.1.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - svgo@4.0.0: + super-regex@1.1.0: dependencies: - commander: 11.1.0 - css-select: 5.2.2 - css-tree: 3.1.0 - css-what: 6.2.2 - csso: 5.0.5 - picocolors: 1.1.1 - sax: 1.4.1 + function-timeout: 1.0.2 + make-asynchronous: 1.1.0 + time-span: 5.1.0 synckit@0.11.12: dependencies: @@ -5574,14 +4335,18 @@ snapshots: tapable@2.2.2: {} + time-span@5.1.0: + dependencies: + convert-hrtime: 5.0.0 + tinybench@2.9.0: {} - tinyexec@1.1.2: {} + tinyexec@1.2.4: {} - tinyglobby@0.2.16: + tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 tinyrainbow@3.1.0: {} @@ -5594,61 +4359,50 @@ snapshots: dependencies: eslint-visitor-keys: 5.0.1 + tree-kill@1.2.2: {} + ts-api-utils@2.5.0(typescript@6.0.3): dependencies: typescript: 6.0.3 - tslib@2.8.1: - optional: true - - tsx@4.22.3: + tsdown@0.22.14(typescript@6.0.3): dependencies: - esbuild: 0.28.0 + ansis: 4.3.1 + cac: 7.0.0 + defu: 6.1.7 + empathic: 2.0.1 + hookable: 6.1.1 + import-without-cache: 0.4.0 + obug: 2.1.4 + picomatch: 4.0.5 + rolldown: 1.2.1 + rolldown-plugin-dts: 0.27.14(rolldown@1.2.1)(typescript@6.0.3) + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + tree-kill: 1.2.2 + unconfig-core: 7.5.0 + verkit: 0.3.1 optionalDependencies: - fsevents: 2.3.3 + typescript: 6.0.3 + transitivePeerDependencies: + - '@typescript/native-preview' + - '@volar/typescript' + - oxc-resolver + - vue-tsc + + tslib@2.8.1: + optional: true type-check@0.4.0: dependencies: prelude-ls: 1.2.1 + type-fest@4.41.0: {} + typescript@6.0.3: {} ufo@1.6.1: {} - unbuild@3.6.1(typescript@6.0.3): - dependencies: - '@rollup/plugin-alias': 5.1.1(rollup@4.46.2) - '@rollup/plugin-commonjs': 28.0.6(rollup@4.46.2) - '@rollup/plugin-json': 6.1.0(rollup@4.46.2) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.46.2) - '@rollup/plugin-replace': 6.0.2(rollup@4.46.2) - '@rollup/pluginutils': 5.2.0(rollup@4.46.2) - citty: 0.1.6 - consola: 3.4.2 - defu: 6.1.4 - esbuild: 0.25.9 - fix-dts-default-cjs-exports: 1.0.1 - hookable: 5.5.3 - jiti: 2.7.0 - magic-string: 0.30.21 - mkdist: 2.3.0(typescript@6.0.3) - mlly: 1.7.4 - pathe: 2.0.3 - pkg-types: 2.3.0 - pretty-bytes: 7.0.1 - rollup: 4.46.2 - rollup-plugin-dts: 6.2.3(rollup@4.46.2)(typescript@6.0.3) - scule: 1.3.0 - tinyglobby: 0.2.16 - untyped: 2.0.0 - optionalDependencies: - typescript: 6.0.3 - transitivePeerDependencies: - - sass - - vue - - vue-sfc-transformer - - vue-tsc - unconfig-core@7.5.0: dependencies: '@quansync/fs': 1.0.0 @@ -5662,7 +4416,7 @@ snapshots: quansync: 1.0.0 unconfig-core: 7.5.0 - undici-types@7.24.6: {} + undici-types@8.3.0: {} unist-util-is@6.0.0: dependencies: @@ -5688,72 +4442,70 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - untyped@2.0.0: - dependencies: - citty: 0.1.6 - defu: 6.1.4 - jiti: 2.7.0 - knitwork: 1.2.0 - scule: 1.3.0 - update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: browserslist: 4.28.2 escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.2.3(browserslist@4.28.7): + dependencies: + browserslist: 4.28.7 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 util-deprecate@1.0.2: {} - vite@8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0): + verkit@0.3.1: {} + + vite@8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0): dependencies: - lightningcss: 1.32.0 - picomatch: 4.0.4 - postcss: 8.5.14 - rolldown: 1.0.1 - tinyglobby: 0.2.16 + lightningcss: 1.33.0 + picomatch: 4.0.5 + postcss: 8.5.25 + rolldown: 1.2.1 + tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 25.9.1 - esbuild: 0.28.0 + '@types/node': 26.1.2 fsevents: 2.3.3 jiti: 2.7.0 - tsx: 4.22.3 yaml: 2.9.0 - vitest@4.1.6(@types/node@25.9.1)(vite@8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0)): + vitest@4.1.10(@types/node@26.1.2)(vite@8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0)): dependencies: - '@vitest/expect': 4.1.6 - '@vitest/mocker': 4.1.6(vite@8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.6 - '@vitest/runner': 4.1.6 - '@vitest/snapshot': 4.1.6 - '@vitest/spy': 4.1.6 - '@vitest/utils': 4.1.6 + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(vite@8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 es-module-lexer: 2.0.0 expect-type: 1.3.0 magic-string: 0.30.21 - obug: 2.1.1 + obug: 2.1.4 pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 4.0.5 std-env: 4.0.0 tinybench: 2.9.0 - tinyexec: 1.1.2 - tinyglobby: 0.2.16 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 tinyrainbow: 3.1.0 - vite: 8.0.13(@types/node@25.9.1)(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.3)(yaml@2.9.0) + vite: 8.2.0(@types/node@26.1.2)(jiti@2.7.0)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.9.1 + '@types/node': 26.1.2 transitivePeerDependencies: - msw - vue-eslint-parser@10.4.0(eslint@10.4.0(jiti@2.7.0)): + vue-eslint-parser@10.4.1(eslint@10.8.0(jiti@2.7.0)): dependencies: debug: 4.4.3 - eslint: 10.4.0(jiti@2.7.0) + eslint: 10.8.0(jiti@2.7.0) eslint-scope: 9.1.2 eslint-visitor-keys: 5.0.1 espree: 11.2.0 @@ -5762,6 +4514,8 @@ snapshots: transitivePeerDependencies: - supports-color + web-worker@1.5.0: {} + which@2.0.2: dependencies: isexe: 2.0.0 @@ -5773,17 +4527,59 @@ snapshots: word-wrap@1.2.5: {} - xml-name-validator@4.0.0: {} + xml-name-validator@5.0.0: {} yaml-eslint-parser@2.0.0: dependencies: eslint-visitor-keys: 5.0.1 yaml: 2.9.0 + yaml-eslint-parser@2.1.0: + dependencies: + eslint-visitor-keys: 5.0.1 + yaml: 2.9.0 + yaml@2.9.0: {} yocto-queue@0.1.0: {} yocto-queue@1.2.1: {} + yuku-ast@0.8.1: + dependencies: + '@yuku-toolchain/types': 0.8.1 + + yuku-codegen@0.8.1: + dependencies: + '@yuku-toolchain/types': 0.8.1 + optionalDependencies: + '@yuku-codegen/binding-darwin-arm64': 0.8.1 + '@yuku-codegen/binding-darwin-x64': 0.8.1 + '@yuku-codegen/binding-freebsd-x64': 0.8.1 + '@yuku-codegen/binding-linux-arm-gnu': 0.8.1 + '@yuku-codegen/binding-linux-arm-musl': 0.8.1 + '@yuku-codegen/binding-linux-arm64-gnu': 0.8.1 + '@yuku-codegen/binding-linux-arm64-musl': 0.8.1 + '@yuku-codegen/binding-linux-x64-gnu': 0.8.1 + '@yuku-codegen/binding-linux-x64-musl': 0.8.1 + '@yuku-codegen/binding-win32-arm64': 0.8.1 + '@yuku-codegen/binding-win32-x64': 0.8.1 + + yuku-parser@0.8.1: + dependencies: + '@yuku-toolchain/types': 0.8.1 + yuku-ast: 0.8.1 + optionalDependencies: + '@yuku-parser/binding-darwin-arm64': 0.8.1 + '@yuku-parser/binding-darwin-x64': 0.8.1 + '@yuku-parser/binding-freebsd-x64': 0.8.1 + '@yuku-parser/binding-linux-arm-gnu': 0.8.1 + '@yuku-parser/binding-linux-arm-musl': 0.8.1 + '@yuku-parser/binding-linux-arm64-gnu': 0.8.1 + '@yuku-parser/binding-linux-arm64-musl': 0.8.1 + '@yuku-parser/binding-linux-x64-gnu': 0.8.1 + '@yuku-parser/binding-linux-x64-musl': 0.8.1 + '@yuku-parser/binding-win32-arm64': 0.8.1 + '@yuku-parser/binding-win32-x64': 0.8.1 + zwitch@2.0.4: {} diff --git a/src/cache.ts b/src/cache.ts index b40e0ff6..16eaa27f 100644 --- a/src/cache.ts +++ b/src/cache.ts @@ -1,4 +1,4 @@ -import type { Sponsorship } from './types' +import type { Sponsorship } from './types.ts' import { Buffer } from 'node:buffer' export function stringifyCache(cache: Sponsorship[]): string { diff --git a/src/cli.ts b/src/cli.ts index 0a57b894..73874ee9 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,11 +1,12 @@ -import type { SponsorkitConfig } from './types' +#!/usr/bin/env node +import type { SponsorkitConfig } from './types.ts' import cac from 'cac' -import { version } from '../package.json' -import { run } from './run' +import pkg from '../package.json' with { type: 'json' } +import { run } from './run.ts' const RE_FILTER = /([<>=]+)(\d+)/ const cli = cac('sponsors-svg') - .version(version) + .version(pkg.version) .help() cli diff --git a/src/configs/defaults.ts b/src/configs/defaults.ts index 4024a649..003c5b0b 100644 --- a/src/configs/defaults.ts +++ b/src/configs/defaults.ts @@ -1,5 +1,5 @@ -import type { SponsorkitConfig, Tier } from '../types' -import { tierPresets } from './tier-presets' +import type { SponsorkitConfig, Tier } from '../types.ts' +import { tierPresets } from './tier-presets.ts' export const defaultTiers: Tier[] = [ { diff --git a/src/configs/env.ts b/src/configs/env.ts index 6304733a..d0afdd9d 100644 --- a/src/configs/env.ts +++ b/src/configs/env.ts @@ -1,6 +1,5 @@ -import type { GitHubAccountType, SponsorkitConfig } from '../types' +import type { GitHubAccountType, SponsorkitConfig } from '../types.ts' import process from 'node:process' -import dotenv from 'dotenv' function getDeprecatedEnv(name: string, replacement: string) { const value = process.env[name] @@ -10,7 +9,10 @@ function getDeprecatedEnv(name: string, replacement: string) { } export function loadEnv(): Partial { - dotenv.config({ quiet: true }) + try { + process.loadEnvFile('.env') + } + catch {} const config: Partial = { mode: process.env.SPONSORKIT_MODE as SponsorkitConfig['mode'] | undefined, diff --git a/src/configs/fallback.ts b/src/configs/fallback.ts index e35326f7..e7b75deb 100644 --- a/src/configs/fallback.ts +++ b/src/configs/fallback.ts @@ -1,4 +1,4 @@ -import { svgToPng } from '../processing/image' +import { svgToPng } from '../processing/image.ts' const fallback = ` diff --git a/src/configs/index.ts b/src/configs/index.ts index 1194028d..8acda3bb 100644 --- a/src/configs/index.ts +++ b/src/configs/index.ts @@ -1,12 +1,12 @@ -import type { SponsorkitConfig, Sponsorship, Tier, TierPartition } from '../types' +import type { SponsorkitConfig, Sponsorship, Tier, TierPartition } from '../types.ts' import { loadConfig as _loadConfig } from 'unconfig' -import { defaultConfig } from './defaults' -import { loadEnv } from './env' -import { FALLBACK_AVATAR } from './fallback' +import { defaultConfig } from './defaults.ts' +import { loadEnv } from './env.ts' +import { FALLBACK_AVATAR } from './fallback.ts' -export * from './defaults' -export * from './fallback' -export * from './tier-presets' +export * from './defaults.ts' +export * from './fallback.ts' +export * from './tier-presets.ts' export function defineConfig(config: SponsorkitConfig): SponsorkitConfig { return config diff --git a/src/configs/tier-presets.ts b/src/configs/tier-presets.ts index 67276c23..2b7dbb96 100644 --- a/src/configs/tier-presets.ts +++ b/src/configs/tier-presets.ts @@ -1,4 +1,4 @@ -import type { BadgePreset } from '../types' +import type { BadgePreset } from '../types.ts' const none: BadgePreset = { avatar: { diff --git a/src/index.ts b/src/index.ts index ad7ed41f..39b7cbaf 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,5 +1,5 @@ -export * from './configs' -export * from './processing/image' -export * from './processing/svg' -export * from './providers' -export * from './types' +export * from './configs/index.ts' +export * from './processing/image.ts' +export * from './processing/svg.ts' +export * from './providers/index.ts' +export * from './types.ts' diff --git a/src/processing/image.ts b/src/processing/image.ts index 315db3a6..d279c9a7 100644 --- a/src/processing/image.ts +++ b/src/processing/image.ts @@ -1,15 +1,15 @@ -import type { ImageFormat, SponsorkitConfig, Sponsorship } from '../types' +import type { ImageFormat, SponsorkitConfig, Sponsorship } from '../types.ts' import { Buffer } from 'node:buffer' import { consola } from 'consola' import { $fetch } from 'ofetch' import sharp from 'sharp' -import { version } from '../../package.json' +import pkg from '../../package.json' with { type: 'json' } async function fetchImage(url: string) { const arrayBuffer = await $fetch(url, { responseType: 'arrayBuffer', headers: { - 'User-Agent': `Mozilla/5.0 Chrome/124.0.0.0 Safari/537.36 Sponsorkit/${version}`, + 'User-Agent': `Mozilla/5.0 Chrome/124.0.0.0 Safari/537.36 Sponsorkit/${pkg.version}`, }, }) return Buffer.from(arrayBuffer) diff --git a/src/processing/svg.ts b/src/processing/svg.ts index 47cff4e2..dcd176fd 100644 --- a/src/processing/svg.ts +++ b/src/processing/svg.ts @@ -1,6 +1,6 @@ -import type { BadgePreset, ImageFormat, Sponsor, SponsorkitRenderOptions, Sponsorship } from '../types' +import type { BadgePreset, ImageFormat, Sponsor, SponsorkitRenderOptions, Sponsorship } from '../types.ts' import crypto from 'node:crypto' -import { resizeImage } from './image' +import { resizeImage } from './image.ts' export function genSvgImage( x: number, @@ -63,7 +63,11 @@ export class SvgComposer { height = 0 body = '' - constructor(public readonly config: Required) {} + readonly config: Required + + constructor(config: Required) { + this.config = config + } addSpan(height = 0) { this.height += height diff --git a/src/providers/afdian.ts b/src/providers/afdian.ts index 5ef1d3a2..334a9316 100644 --- a/src/providers/afdian.ts +++ b/src/providers/afdian.ts @@ -1,4 +1,4 @@ -import type { Provider, SponsorkitConfig, Sponsorship } from '../types' +import type { Provider, SponsorkitConfig, Sponsorship } from '../types.ts' import { createHash } from 'node:crypto' import { $fetch } from 'ofetch' diff --git a/src/providers/github.ts b/src/providers/github.ts index 3e558e43..06f6522e 100644 --- a/src/providers/github.ts +++ b/src/providers/github.ts @@ -1,6 +1,6 @@ -import type { GitHubAccountType, Provider, SponsorkitConfig, Sponsorship, Tier } from '../types' +import type { GitHubAccountType, Provider, SponsorkitConfig, Sponsorship, Tier } from '../types.ts' import { $fetch } from 'ofetch' -import { normalizeUrl } from '../utils' +import { normalizeUrl } from '../utils.ts' function getMonthDifference(startDate: Date, endDate: Date) { return (endDate.getFullYear() - startDate.getFullYear()) * 12 + (endDate.getMonth() - startDate.getMonth()) diff --git a/src/providers/index.ts b/src/providers/index.ts index 084ee1a9..3bebc5a7 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -1,12 +1,12 @@ -import type { Provider, ProviderName, SponsorkitConfig } from '../types' -import { AfdianProvider } from './afdian' -import { GitHubProvider } from './github' -import { LiberapayProvider } from './liberapay' -import { OpenCollectiveProvider } from './opencollective' -import { PatreonProvider } from './patreon' -import { PolarProvider } from './polar' +import type { Provider, ProviderName, SponsorkitConfig } from '../types.ts' +import { AfdianProvider } from './afdian.ts' +import { GitHubProvider } from './github.ts' +import { LiberapayProvider } from './liberapay.ts' +import { OpenCollectiveProvider } from './opencollective.ts' +import { PatreonProvider } from './patreon.ts' +import { PolarProvider } from './polar.ts' -export * from './github' +export * from './github.ts' export const ProvidersMap = { github: GitHubProvider, diff --git a/src/providers/liberapay.ts b/src/providers/liberapay.ts index 00df34e9..495729fc 100644 --- a/src/providers/liberapay.ts +++ b/src/providers/liberapay.ts @@ -1,4 +1,4 @@ -import type { Provider, Sponsorship } from '../types' +import type { Provider, Sponsorship } from '../types.ts' import { $fetch } from 'ofetch' export const LiberapayProvider: Provider = { diff --git a/src/providers/opencollective.ts b/src/providers/opencollective.ts index bc0fca3f..e1aad8fc 100644 --- a/src/providers/opencollective.ts +++ b/src/providers/opencollective.ts @@ -1,6 +1,6 @@ -import type { Provider, Sponsorship } from '../types' +import type { Provider, Sponsorship } from '../types.ts' import { $fetch } from 'ofetch' -import { normalizeUrl } from '../utils' +import { normalizeUrl } from '../utils.ts' interface SocialLink { type: string diff --git a/src/providers/patreon.ts b/src/providers/patreon.ts index d37c8577..c5f9447e 100644 --- a/src/providers/patreon.ts +++ b/src/providers/patreon.ts @@ -1,4 +1,4 @@ -import type { Provider, Sponsorship } from '../types' +import type { Provider, Sponsorship } from '../types.ts' import { $fetch } from 'ofetch' export const PatreonProvider: Provider = { diff --git a/src/providers/polar.ts b/src/providers/polar.ts index d5e8c70b..896fd682 100644 --- a/src/providers/polar.ts +++ b/src/providers/polar.ts @@ -1,4 +1,4 @@ -import type { Provider, Sponsorship } from '../types' +import type { Provider, Sponsorship } from '../types.ts' import { ofetch } from 'ofetch' export const PolarProvider: Provider = { diff --git a/src/renders/circles.ts b/src/renders/circles.ts index 735bb85e..80a8f267 100644 --- a/src/renders/circles.ts +++ b/src/renders/circles.ts @@ -1,5 +1,5 @@ -import type { SponsorkitRenderer, Sponsorship } from '../types' -import { generateBadge, SvgComposer } from '../processing/svg' +import type { SponsorkitRenderer, Sponsorship } from '../types.ts' +import { generateBadge, SvgComposer } from '../processing/svg.ts' export const circlesRenderer: SponsorkitRenderer = { name: 'sponsorkit:circles', diff --git a/src/renders/index.ts b/src/renders/index.ts index c1788ee2..97da67c5 100644 --- a/src/renders/index.ts +++ b/src/renders/index.ts @@ -1,5 +1,5 @@ -import { circlesRenderer } from './circles' -import { tiersRenderer } from './tiers' +import { circlesRenderer } from './circles.ts' +import { tiersRenderer } from './tiers.ts' export const builtinRenderers = { tiers: tiersRenderer, diff --git a/src/renders/tiers.ts b/src/renders/tiers.ts index 2e3294dc..1d67dee6 100644 --- a/src/renders/tiers.ts +++ b/src/renders/tiers.ts @@ -1,7 +1,7 @@ -import type { SponsorkitConfig, SponsorkitRenderer, Sponsorship } from '../types' -import { partitionTiers } from '../configs' -import { tierPresets } from '../configs/tier-presets' -import { SvgComposer } from '../processing/svg' +import type { SponsorkitConfig, SponsorkitRenderer, Sponsorship } from '../types.ts' +import { partitionTiers } from '../configs/index.ts' +import { tierPresets } from '../configs/tier-presets.ts' +import { SvgComposer } from '../processing/svg.ts' export async function tiersComposer(composer: SvgComposer, sponsors: Sponsorship[], config: SponsorkitConfig) { const tierPartitions = partitionTiers(sponsors, config.tiers!, config.includePastSponsors) diff --git a/src/run.ts b/src/run.ts index 97ccded5..25c874fb 100644 --- a/src/run.ts +++ b/src/run.ts @@ -1,5 +1,5 @@ import type { Buffer } from 'node:buffer' -import type { SponsorkitConfig, SponsorkitMainConfig, SponsorkitRenderer, SponsorkitRenderOptions, SponsorMatcher, Sponsorship } from './types' +import type { SponsorkitConfig, SponsorkitMainConfig, SponsorkitRenderer, SponsorkitRenderOptions, SponsorMatcher, Sponsorship } from './types.ts' import fs from 'node:fs' import fsp from 'node:fs/promises' import { dirname, join, relative, resolve } from 'node:path' @@ -7,13 +7,13 @@ import process from 'node:process' import { notNullish } from '@antfu/utils' import c from 'ansis' import { consola } from 'consola' -import { version } from '../package.json' -import { parseCache, stringifyCache } from './cache' -import { loadConfig } from './configs' -import { resolveAvatars, svgToPng, svgToWebp } from './processing/image' -import { guessProviders, resolveProviders } from './providers' -import { builtinRenderers } from './renders' -import { outputFormats } from './types' +import pkg from '../package.json' with { type: 'json' } +import { parseCache, stringifyCache } from './cache.ts' +import { loadConfig } from './configs/index.ts' +import { resolveAvatars, svgToPng, svgToWebp } from './processing/image.ts' +import { guessProviders, resolveProviders } from './providers/index.ts' +import { builtinRenderers } from './renders/index.ts' +import { outputFormats } from './types.ts' export { tiersComposer as defaultComposer, @@ -22,14 +22,14 @@ export { tiersComposer, tiersRenderer, -} from './renders/tiers' +} from './renders/tiers.ts' function r(path: string) { return `./${relative(process.cwd(), path)}` } export async function run(inlineConfig?: SponsorkitConfig, t = consola) { - t.log(`\n${c.magenta.bold`SponsorKit`} ${c.dim`v${version}`}\n`) + t.log(`\n${c.magenta.bold`SponsorKit`} ${c.dim`v${pkg.version}`}\n`) const fullConfig = await loadConfig(inlineConfig) const config = fullConfig as Required diff --git a/src/types.ts b/src/types.ts index cea18304..057c667d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,5 +1,5 @@ import type { Buffer } from 'node:buffer' -import type { SvgComposer } from './processing/svg' +import type { SvgComposer } from './processing/svg.ts' export type ImageFormat = 'png' | 'webp' diff --git a/tsconfig.json b/tsconfig.json index 02e3ad73..398e7508 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,19 +1,19 @@ { "compilerOptions": { "target": "esnext", - "lib": ["esnext"], - "module": "esnext", - "moduleResolution": "bundler", - "paths": { - "sponsorkit": [ - "./src/index.ts" - ] - }, + "lib": ["es2024"], + "module": "nodenext", + "moduleResolution": "nodenext", "resolveJsonModule": true, + "allowImportingTsExtensions": true, "strict": true, "strictNullChecks": true, + "declaration": true, + "noEmit": true, "esModuleInterop": true, + "erasableSyntaxOnly": true, "skipDefaultLibCheck": true, "skipLibCheck": true - } + }, + "exclude": ["example"] } diff --git a/tsdown.config.ts b/tsdown.config.ts new file mode 100644 index 00000000..2715fa79 --- /dev/null +++ b/tsdown.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from 'tsdown' + +export default defineConfig({ + entry: [ + 'src/index', + 'src/cli', + ], + deps: { + onlyBundle: [ + '@antfu/utils', + + '@fast-csv/parse', + 'lodash.escaperegexp', + 'lodash.uniq', + 'lodash.groupby', + ], + }, + exports: true, +}) From e5f4e89be852ad2ad475e69f16c5b7531c690ddc Mon Sep 17 00:00:00 2001 From: Bittu kumar Date: Mon, 3 Aug 2026 05:42:28 +0530 Subject: [PATCH 4/8] feat: add Ko-fi webhook support (#125) Co-authored-by: Anthony Fu (via agent) --- README.md | 35 ++++ src/cli.ts | 31 ++++ src/configs/env.ts | 4 + src/configs/index.ts | 5 + src/providers/index.ts | 6 + src/providers/kofi.test.ts | 221 +++++++++++++++++++++++++ src/providers/kofi.ts | 323 +++++++++++++++++++++++++++++++++++++ src/types.ts | 34 +++- 8 files changed, 658 insertions(+), 1 deletion(-) create mode 100644 src/providers/kofi.test.ts create mode 100644 src/providers/kofi.ts diff --git a/README.md b/README.md index 4bae8bd3..7eafb512 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Supports: - [**Afdian**](https://afdian.com/) - [**Polar**](https://polar.sh/) - [**Liberapay**](https://liberapay.com/) +- [**Ko-fi**](https://ko-fi.com/) ## Usage @@ -59,6 +60,12 @@ SPONSORKIT_POLAR_ORGANIZATION= ; Liberapay provider. ; The name of the profile. SPONSORKIT_LIBERAPAY_LOGIN= + +; Ko-fi provider. +; Copy the verification token from https://ko-fi.com/manage/webhooks +SPONSORKIT_KOFI_VERIFICATION_TOKEN= +; Optional event store path populated by `sponsorkit kofi-webhook`. +SPONSORKIT_KOFI_DATA_FILE=./sponsorkit/kofi-events.json ``` > Only one provider is required to be configured. @@ -104,6 +111,9 @@ export default defineConfig({ liberapay: { // ... }, + kofi: { + // ... + }, // Rendering configs width: 800, @@ -160,6 +170,31 @@ const sponsors = await fetchSponsors({ Check the type definition or source code for more utils available. +### Ko-fi Webhooks + +Ko-fi provides payment webhooks instead of an API for listing sponsors. Start the +SponsorKit receiver: + +```bash +npx sponsorkit kofi-webhook +``` + +Expose `http://127.0.0.1:3456/kofi` through an HTTPS tunnel, then set that public +URL on the [Ko-fi webhooks page](https://ko-fi.com/manage/webhooks). SponsorKit +verifies the webhook token, removes the token and email before persistence, +deduplicates retries by `message_id`, and stores events in +`./sponsorkit/kofi-events.json`. + +After Ko-fi sends a payment or test payment, generate the sponsor output normally: + +```bash +npx sponsorkit --force +``` + +Ko-fi does not send an event when a membership ends. SponsorKit therefore treats +subscription payments as active for 35 days by default. Configure +`kofi.subscriptionEffectivity` to change this window. + ### Renderers We provide two renderers built-in: diff --git a/src/cli.ts b/src/cli.ts index 73874ee9..aa8b2654 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -2,6 +2,8 @@ import type { SponsorkitConfig } from './types.ts' import cac from 'cac' import pkg from '../package.json' with { type: 'json' } +import { loadConfig } from './configs/index.ts' +import { DEFAULT_KOFI_DATA_FILE, startKofiWebhookServer } from './providers/kofi.ts' import { run } from './run.ts' const RE_FILTER = /([<>=]+)(\d+)/ @@ -9,6 +11,31 @@ const cli = cac('sponsors-svg') .version(pkg.version) .help() +cli + .command('kofi-webhook', 'Receive and store Ko-fi payment webhooks') + .option('--host ', 'Host to listen on', { default: '127.0.0.1' }) + .option('--port ', 'Port to listen on', { default: 3456 }) + .option('--path ', 'Webhook path', { default: '/kofi' }) + .option('--data-file ', 'Ko-fi event store') + .action(async (options) => { + const config = await loadConfig() + const verificationToken = config.kofi?.verificationToken + if (!verificationToken) { + throw new Error('Ko-fi verification token is required') + } + const dataFile = options.dataFile || config.kofi?.dataFile || DEFAULT_KOFI_DATA_FILE + const port = Number.parseInt(options.port) + await startKofiWebhookServer({ + verificationToken, + dataFile, + host: options.host, + port, + path: options.path, + }) + console.log(`[sponsorkit] Ko-fi webhook listening on http://${options.host}:${port}${options.path}`) + console.log(`[sponsorkit] Storing sanitized events in ${resolveDisplayPath(dataFile)}`) + }) + cli .command('[outputDir]', 'Generate sponsors SVG') .option('--width, -w ', 'SVG width', { default: 800 }) @@ -50,3 +77,7 @@ function createFilterFromString(template: string): SponsorkitConfig['filter'] { return s => s.monthlyDollars >= num throw new Error(`Unable to parse filter template ${template}`) } + +function resolveDisplayPath(path: string) { + return path.replaceAll('\\', '/') +} diff --git a/src/configs/env.ts b/src/configs/env.ts index d0afdd9d..de6259ba 100644 --- a/src/configs/env.ts +++ b/src/configs/env.ts @@ -43,6 +43,10 @@ export function loadEnv(): Partial { liberapay: { login: process.env.SPONSORKIT_LIBERAPAY_LOGIN || process.env.LIBERAPAY_LOGIN, }, + kofi: { + verificationToken: process.env.SPONSORKIT_KOFI_VERIFICATION_TOKEN || process.env.KOFI_VERIFICATION_TOKEN, + dataFile: process.env.SPONSORKIT_KOFI_DATA_FILE, + }, outputDir: process.env.SPONSORKIT_DIR, } diff --git a/src/configs/index.ts b/src/configs/index.ts index 8acda3bb..cc2dcfcf 100644 --- a/src/configs/index.ts +++ b/src/configs/index.ts @@ -56,6 +56,11 @@ export async function loadConfig(inlineConfig: SponsorkitConfig = {}): Promise if (!['sponsors', 'sponsees'].includes(resolved.mode)) diff --git a/src/providers/index.ts b/src/providers/index.ts index 3bebc5a7..da1d3275 100644 --- a/src/providers/index.ts +++ b/src/providers/index.ts @@ -1,12 +1,14 @@ import type { Provider, ProviderName, SponsorkitConfig } from '../types.ts' import { AfdianProvider } from './afdian.ts' import { GitHubProvider } from './github.ts' +import { KofiProvider } from './kofi.ts' import { LiberapayProvider } from './liberapay.ts' import { OpenCollectiveProvider } from './opencollective.ts' import { PatreonProvider } from './patreon.ts' import { PolarProvider } from './polar.ts' export * from './github.ts' +export * from './kofi.ts' export const ProvidersMap = { github: GitHubProvider, @@ -15,6 +17,7 @@ export const ProvidersMap = { afdian: AfdianProvider, polar: PolarProvider, liberapay: LiberapayProvider, + kofi: KofiProvider, } export function guessProviders(config: SponsorkitConfig) { @@ -37,6 +40,9 @@ export function guessProviders(config: SponsorkitConfig) { if (config.liberapay && config.liberapay.login) items.push('liberapay') + if (config.kofi && (config.kofi.verificationToken || config.kofi.dataFile)) + items.push('kofi') + // fallback if (!items.length) items.push('github') diff --git a/src/providers/kofi.test.ts b/src/providers/kofi.test.ts new file mode 100644 index 00000000..fde637ca --- /dev/null +++ b/src/providers/kofi.test.ts @@ -0,0 +1,221 @@ +import type { AddressInfo } from 'node:net' +import { mkdtemp, readFile } from 'node:fs/promises' +import { tmpdir } from 'node:os' +import { join } from 'node:path' +import { afterEach, describe, expect, it } from 'vitest' +import { + fetchKofiSponsors, + parseKofiWebhookBody, + startKofiWebhookServer, + storeKofiEvent, +} from './kofi.ts' + +const servers: Awaited>[] = [] + +afterEach(async () => { + await Promise.all(servers.splice(0).map(server => new Promise((resolve, reject) => { + server.close(error => error ? reject(error) : resolve()) + }))) +}) + +describe('ko-fi provider', () => { + it('verifies and sanitizes webhook payloads', () => { + const event = parseKofiWebhookBody(createBody(), 'correct-token') + + expect(event).toMatchObject({ + messageId: 'message-1', + timestamp: '2026-07-27T05:00:00.000Z', + type: 'Subscription', + isPublic: true, + fromName: 'Ada', + amount: 5, + currency: 'USD', + isSubscriptionPayment: true, + tierName: 'Gold', + }) + expect(event).not.toHaveProperty('verification_token') + expect(event).not.toHaveProperty('email') + }) + + it('rejects a webhook with the wrong verification token', () => { + expect(() => parseKofiWebhookBody(createBody(), 'wrong-token')) + .toThrow('Invalid Ko-fi verification token') + }) + + it('scrubs the identity of private payments', () => { + const event = parseKofiWebhookBody(createBody({ + is_public: false, + from_name: 'Private Name', + email: 'private@example.com', + }), 'correct-token') + + expect(event.fromName).toBe('Private Sponsor') + expect(event.isPublic).toBe(false) + }) + + it('groups private subscription renewals without exposing their identity', async () => { + const directory = await mkdtemp(join(tmpdir(), 'sponsorkit-kofi-private-')) + const dataFile = join(directory, 'events.json') + const firstPayment = parseKofiWebhookBody(createBody({ + message_id: 'private-payment-1', + timestamp: '2026-07-01T00:00:00Z', + is_public: false, + from_name: 'Private Name', + email: 'Private@Example.com', + }), 'correct-token') + const renewal = parseKofiWebhookBody(createBody({ + message_id: 'private-payment-2', + timestamp: '2026-07-20T00:00:00Z', + is_public: false, + from_name: 'Private Name', + email: 'private@example.com', + is_first_subscription_payment: false, + }), 'correct-token') + + expect(firstPayment.sponsorKey).toBe(renewal.sponsorKey) + await storeKofiEvent(firstPayment, dataFile) + await storeKofiEvent(renewal, dataFile) + + const sponsors = await fetchKofiSponsors( + { dataFile }, + Date.parse('2026-07-27T00:00:00Z'), + ) + expect(sponsors).toHaveLength(1) + expect(sponsors[0]).toMatchObject({ + monthlyDollars: 5, + privacyLevel: 'PRIVATE', + sponsor: { name: 'Private Sponsor' }, + }) + }) + + it('does not merge unrelated anonymous payments', () => { + const firstPayment = parseKofiWebhookBody(createBody({ + message_id: 'anonymous-payment-1', + type: 'Tip', + from_name: '', + email: '', + is_subscription_payment: false, + }), 'correct-token') + const secondPayment = parseKofiWebhookBody(createBody({ + message_id: 'anonymous-payment-2', + type: 'Tip', + from_name: '', + email: '', + is_subscription_payment: false, + }), 'correct-token') + + expect(firstPayment.fromName).toBe('Anonymous') + expect(firstPayment.sponsorKey).not.toBe(secondPayment.sponsorKey) + }) + + it('keeps public and private payments from the same identity separate', () => { + const publicPayment = parseKofiWebhookBody(createBody(), 'correct-token') + const privatePayment = parseKofiWebhookBody(createBody({ + message_id: 'private-payment', + is_public: false, + }), 'correct-token') + + expect(publicPayment.sponsorKey).not.toBe(privatePayment.sponsorKey) + }) + + it('deduplicates retries and aggregates recent payments', async () => { + const directory = await mkdtemp(join(tmpdir(), 'sponsorkit-kofi-')) + const dataFile = join(directory, 'events.json') + const subscription = parseKofiWebhookBody(createBody({ + timestamp: '2026-07-01T00:00:00Z', + }), 'correct-token') + const tip = parseKofiWebhookBody(createBody({ + message_id: 'message-2', + timestamp: '2026-07-05T00:00:00Z', + type: 'Tip', + amount: '2', + is_subscription_payment: false, + is_first_subscription_payment: false, + tier_name: undefined, + }), 'correct-token') + + expect(await storeKofiEvent(subscription, dataFile)).toBe(true) + expect(await storeKofiEvent(subscription, dataFile)).toBe(false) + expect(await storeKofiEvent(tip, dataFile)).toBe(true) + + const sponsors = await fetchKofiSponsors( + { dataFile }, + Date.parse('2026-07-20T00:00:00Z'), + ) + expect(sponsors).toHaveLength(1) + expect(sponsors[0]).toMatchObject({ + monthlyDollars: 7, + privacyLevel: 'PUBLIC', + isOneTime: false, + sponsor: { + name: 'Ada', + avatarUrl: '', + }, + }) + }) + + it('receives a live-shaped HTTP form post and persists it', async () => { + const directory = await mkdtemp(join(tmpdir(), 'sponsorkit-kofi-http-')) + const dataFile = join(directory, 'events.json') + const server = await startKofiWebhookServer({ + verificationToken: 'correct-token', + dataFile, + host: '127.0.0.1', + port: 0, + }) + servers.push(server) + const { port } = server.address() as AddressInfo + + const response = await fetch(`http://127.0.0.1:${port}/kofi`, { + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + body: createBody(), + }) + + expect(response.status).toBe(200) + expect(await response.json()).toEqual({ ok: true, stored: true }) + const stored = JSON.parse(await readFile(dataFile, 'utf8')) + expect(stored.events).toHaveLength(1) + expect(stored.events[0]).not.toHaveProperty('verification_token') + }) + + it('provides a browser-friendly health check', async () => { + const server = await startKofiWebhookServer({ + verificationToken: 'correct-token', + host: '127.0.0.1', + port: 0, + }) + servers.push(server) + const { port } = server.address() as AddressInfo + + const response = await fetch(`http://127.0.0.1:${port}/kofi`) + + expect(response.status).toBe(200) + await expect(response.json()).resolves.toMatchObject({ + ok: true, + message: expect.stringContaining('receiver is ready'), + }) + }) +}) + +function createBody(overrides: Record = {}) { + const payload = { + verification_token: 'correct-token', + message_id: 'message-1', + timestamp: '2026-07-27T05:00:00Z', + type: 'Subscription', + is_public: true, + from_name: 'Ada', + message: 'Thank you', + amount: '5', + url: 'https://ko-fi.com/example', + email: 'ada@example.com', + currency: 'USD', + is_subscription_payment: true, + is_first_subscription_payment: true, + tier_name: 'Gold', + kofi_transaction_id: 'transaction-1', + ...overrides, + } + return new URLSearchParams({ data: JSON.stringify(payload) }).toString() +} diff --git a/src/providers/kofi.ts b/src/providers/kofi.ts new file mode 100644 index 00000000..14ea4330 --- /dev/null +++ b/src/providers/kofi.ts @@ -0,0 +1,323 @@ +import type { IncomingMessage, Server, ServerResponse } from 'node:http' +import type { Provider, SponsorkitConfig, Sponsorship } from '../types.ts' +import { Buffer } from 'node:buffer' +import { createHash, timingSafeEqual } from 'node:crypto' +import { promises as fsp } from 'node:fs' +import { createServer } from 'node:http' +import { dirname, resolve } from 'node:path' +import process from 'node:process' +import { $fetch } from 'ofetch' + +export const DEFAULT_KOFI_DATA_FILE = './sponsorkit/kofi-events.json' + +export interface KofiWebhookPayload { + verification_token?: string + message_id?: string + timestamp?: string + type?: string + is_public?: boolean | string + from_name?: string + message?: string + amount?: string + url?: string + email?: string + currency?: string + is_subscription_payment?: boolean | string + is_first_subscription_payment?: boolean | string + tier_name?: string + kofi_transaction_id?: string + [key: string]: unknown +} + +export interface StoredKofiEvent { + messageId: string + sponsorKey: string + timestamp: string + type: string + isPublic: boolean + fromName: string + amount: number + currency: string + isSubscriptionPayment: boolean + isFirstSubscriptionPayment: boolean + tierName?: string + transactionId?: string +} + +interface KofiEventStore { + version: 1 + events: StoredKofiEvent[] +} + +interface ExchangeRate { + inverseRate: number +} + +type ExchangeRates = Record + +export interface KofiWebhookServerOptions { + verificationToken: string + dataFile?: string + host?: string + port?: number + path?: string +} + +export const KofiProvider: Provider = { + name: 'kofi', + fetchSponsors(config) { + if (config.mode === 'sponsees') { + console.warn('[sponsorkit] Ko-fi provider does not support `mode: "sponsees"` yet') + return Promise.resolve([]) + } + + return fetchKofiSponsors(config.kofi) + }, +} + +export function parseKofiWebhookBody(body: string, verificationToken: string): StoredKofiEvent { + if (!verificationToken) + throw new Error('Ko-fi verification token is required') + + const data = new URLSearchParams(body).get('data') + if (!data) + throw new Error('Ko-fi webhook body must contain a `data` form field') + + let payload: KofiWebhookPayload + try { + payload = JSON.parse(data) + } + catch { + throw new Error('Ko-fi webhook `data` field must contain valid JSON') + } + + if (!payload.verification_token || !tokensEqual(payload.verification_token, verificationToken)) + throw new Error('Invalid Ko-fi verification token') + if (!payload.message_id) + throw new Error('Ko-fi webhook payload is missing `message_id`') + if (!payload.timestamp || !Number.isFinite(Date.parse(payload.timestamp))) + throw new Error('Ko-fi webhook payload has an invalid `timestamp`') + + const isPublic = toBoolean(payload.is_public) + const fromName = isPublic ? payload.from_name?.trim() || 'Anonymous' : 'Private Sponsor' + const email = payload.email?.trim().toLowerCase() + const identity = email ? `email:${email}` : `event:${payload.message_id}` + + return { + messageId: payload.message_id, + // Keep private activity separate so it can never contribute to public output. + sponsorKey: sha256(`${isPublic ? 'public' : 'private'}:${identity}`), + timestamp: new Date(payload.timestamp).toISOString(), + type: payload.type?.trim() || 'Tip', + isPublic, + fromName, + amount: Number.parseFloat(payload.amount || '0') || 0, + currency: payload.currency?.trim().toUpperCase() || 'USD', + isSubscriptionPayment: toBoolean(payload.is_subscription_payment) || payload.type === 'Subscription', + isFirstSubscriptionPayment: toBoolean(payload.is_first_subscription_payment), + tierName: payload.tier_name?.trim() || undefined, + transactionId: payload.kofi_transaction_id?.trim() || undefined, + } +} + +export async function storeKofiEvent(event: StoredKofiEvent, dataFile = DEFAULT_KOFI_DATA_FILE): Promise { + const path = resolve(dataFile) + const store = await readKofiStore(path) + if (store.events.some(item => item.messageId === event.messageId)) + return false + + store.events.push(event) + await fsp.mkdir(dirname(path), { recursive: true }) + const tempPath = `${path}.${process.pid}.tmp` + await fsp.writeFile(tempPath, JSON.stringify(store, null, 2)) + await fsp.rename(tempPath, path) + return true +} + +export async function fetchKofiSponsors( + options: SponsorkitConfig['kofi'] = {}, + now = Date.now(), +): Promise { + const { + dataFile = DEFAULT_KOFI_DATA_FILE, + tipEffectivity = 30, + subscriptionEffectivity = 35, + } = options + const store = await readKofiStore(resolve(dataFile)) + const supportedEvents = store.events.filter(event => ['tip', 'donation', 'subscription'].includes(event.type.toLowerCase())) + const currencies = new Set(supportedEvents.map(event => event.currency)) + const exchangeRates = currencies.size > 1 || !currencies.has('USD') + ? await $fetch('https://www.floatrates.com/daily/usd.json', { timeout: 5000 }) + : {} + + const groups = new Map() + for (const event of supportedEvents) { + const events = groups.get(event.sponsorKey) + if (events) + events.push(event) + else + groups.set(event.sponsorKey, [event]) + } + + return [...groups.values()].map(events => + createKofiSponsorship(events, exchangeRates, now, tipEffectivity, subscriptionEffectivity)) +} + +export function createKofiWebhookHandler(options: KofiWebhookServerOptions) { + const webhookPath = normalizePath(options.path || '/kofi') + const dataFile = options.dataFile || DEFAULT_KOFI_DATA_FILE + let writeQueue: Promise = Promise.resolve() + + return async (request: IncomingMessage, response: ServerResponse) => { + const pathname = new URL(request.url || '/', 'http://localhost').pathname + if (pathname !== webhookPath) + return sendJson(response, 404, { error: 'Not found' }) + if (request.method === 'GET') { + return sendJson(response, 200, { + ok: true, + message: 'SponsorKit Ko-fi webhook receiver is ready. Ko-fi payment events must use POST.', + }) + } + if (request.method !== 'POST') + return sendJson(response, 405, { error: 'Method not allowed' }) + + try { + const body = await readBody(request) + const event = parseKofiWebhookBody(body, options.verificationToken) + const task = writeQueue.then(() => storeKofiEvent(event, dataFile)) + writeQueue = task.catch(() => undefined) + const stored = await task + return sendJson(response, 200, { ok: true, stored }) + } + catch (error) { + const message = error instanceof Error ? error.message : 'Invalid Ko-fi webhook' + const status = message === 'Invalid Ko-fi verification token' ? 401 : 400 + return sendJson(response, status, { error: message }) + } + } +} + +export async function startKofiWebhookServer(options: KofiWebhookServerOptions): Promise { + if (!options.verificationToken) + throw new Error('Ko-fi verification token is required') + + const server = createServer(createKofiWebhookHandler(options)) + await new Promise((resolveListen, reject) => { + server.once('error', reject) + server.listen(options.port ?? 3456, options.host || '127.0.0.1', () => { + server.off('error', reject) + resolveListen() + }) + }) + return server +} + +function createKofiSponsorship( + events: StoredKofiEvent[], + exchangeRates: ExchangeRates, + now: number, + tipEffectivity: number, + subscriptionEffectivity: number, +): Sponsorship { + const sorted = [...events].sort((a, b) => Date.parse(b.timestamp) - Date.parse(a.timestamp)) + const latest = sorted[0] + const recurring = sorted.filter(event => event.isSubscriptionPayment) + const tips = sorted.filter(event => !event.isSubscriptionPayment) + const latestRecurring = recurring[0] + const activeRecurring = latestRecurring && isEffective(latestRecurring.timestamp, subscriptionEffectivity, now) + ? toDollars(latestRecurring.amount, latestRecurring.currency, exchangeRates) + : 0 + const activeTips = tips + .filter(event => isEffective(event.timestamp, tipEffectivity, now)) + .reduce((sum, event) => sum + toDollars(event.amount, event.currency, exchangeRates), 0) + const monthlyDollars = activeRecurring + activeTips || -1 + const activeExpirations = [ + latestRecurring && activeRecurring + ? effectivityDate(latestRecurring.timestamp, subscriptionEffectivity) + : undefined, + ...tips + .filter(event => isEffective(event.timestamp, tipEffectivity, now)) + .map(event => effectivityDate(event.timestamp, tipEffectivity)), + ].filter((value): value is string => !!value) + + return { + sponsor: { + type: 'User', + login: `kofi-${latest.sponsorKey.slice(0, 16)}`, + name: latest.fromName, + avatarUrl: '', + }, + monthlyDollars, + privacyLevel: latest.isPublic ? 'PUBLIC' : 'PRIVATE', + tierName: latestRecurring?.tierName || 'Ko-fi', + createdAt: sorted.at(-1)!.timestamp, + expireAt: activeExpirations.sort().at(-1), + isOneTime: recurring.length === 0, + provider: 'kofi', + raw: sorted, + } +} + +async function readKofiStore(path: string): Promise { + try { + const parsed = JSON.parse(await fsp.readFile(path, 'utf8')) as Partial + if (parsed.version !== 1 || !Array.isArray(parsed.events)) + throw new Error(`Invalid Ko-fi event store: ${path}`) + return parsed as KofiEventStore + } + catch (error: any) { + if (error?.code === 'ENOENT') + return { version: 1, events: [] } + throw error + } +} + +async function readBody(request: IncomingMessage): Promise { + const chunks: Buffer[] = [] + let size = 0 + for await (const chunk of request) { + const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk) + size += buffer.length + if (size > 1024 * 1024) + throw new Error('Ko-fi webhook body exceeds 1 MB') + chunks.push(buffer) + } + return Buffer.concat(chunks).toString('utf8') +} + +function tokensEqual(actual: string, expected: string) { + return timingSafeEqual(Buffer.from(sha256(actual)), Buffer.from(sha256(expected))) +} + +function sha256(value: string) { + return createHash('sha256').update(value).digest('hex') +} + +function toBoolean(value: boolean | string | undefined) { + return value === true || value === 'true' +} + +function toDollars(amount: number, currency: string, exchangeRates: ExchangeRates) { + return currency === 'USD' + ? amount + : amount * (exchangeRates[currency.toLowerCase()]?.inverseRate ?? 1) +} + +function isEffective(timestamp: string, days: number, now: number) { + return days <= 0 || Date.parse(timestamp) + days * 24 * 60 * 60 * 1000 >= now +} + +function effectivityDate(timestamp: string, days: number) { + return days > 0 + ? new Date(Date.parse(timestamp) + days * 24 * 60 * 60 * 1000).toISOString() + : undefined +} + +function normalizePath(path: string) { + return path.startsWith('/') ? path : `/${path}` +} + +function sendJson(response: ServerResponse, status: number, body: unknown) { + response.writeHead(status, { 'Content-Type': 'application/json' }) + response.end(JSON.stringify(body)) +} diff --git a/src/types.ts b/src/types.ts index 057c667d..67b9d44b 100644 --- a/src/types.ts +++ b/src/types.ts @@ -75,7 +75,7 @@ export const outputFormats = ['svg', 'png', 'webp', 'json'] as const export type OutputFormat = typeof outputFormats[number] -export type ProviderName = 'github' | 'patreon' | 'opencollective' | 'afdian' | 'polar' | 'liberapay' +export type ProviderName = 'github' | 'patreon' | 'opencollective' | 'afdian' | 'polar' | 'liberapay' | 'kofi' export type GitHubAccountType = 'user' | 'organization' export type SponsorshipMode = 'sponsors' | 'sponsees' @@ -210,6 +210,38 @@ export interface ProvidersConfig { */ login?: string } + + kofi?: { + /** + * Verification token included in Ko-fi webhook requests. + * + * Will read from `SPONSORKIT_KOFI_VERIFICATION_TOKEN` environment variable if not set. + * + * @deprecated It's not recommended set this value directly, pass from env or use `.env` file. + */ + verificationToken?: string + /** + * Local event store populated by the `kofi-webhook` command. + * + * @default './sponsorkit/kofi-events.json' + */ + dataFile?: string + /** + * Number of days one-time tips affect the current sponsorship tier. + * Set to 0 to keep them active indefinitely. + * + * @default 30 + */ + tipEffectivity?: number + /** + * Number of days after a subscription payment the membership is considered active. + * Ko-fi does not send an event when a membership ends. + * Set to 0 to keep subscriptions active indefinitely. + * + * @default 35 + */ + subscriptionEffectivity?: number + } } export interface SponsorkitRenderOptions { From 2ca15df679157d556fe13f23f6062f0065a4eda7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LgCuwukii=E2=98=86?= Date: Mon, 3 Aug 2026 08:16:46 +0800 Subject: [PATCH 5/8] fix!: use render-local crop ids (#122) Co-authored-by: Codex Co-authored-by: Anthony Fu (via agent) --- src/processing/svg.ts | 14 ++++++++++---- src/renders/circles.ts | 1 + 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/processing/svg.ts b/src/processing/svg.ts index dcd176fd..bfbac630 100644 --- a/src/processing/svg.ts +++ b/src/processing/svg.ts @@ -1,5 +1,4 @@ import type { BadgePreset, ImageFormat, Sponsor, SponsorkitRenderOptions, Sponsorship } from '../types.ts' -import crypto from 'node:crypto' import { resizeImage } from './image.ts' export function genSvgImage( @@ -9,8 +8,8 @@ export function genSvgImage( radius: number, base64Image: string, imageFormat: ImageFormat, + cropId: string, ) { - const cropId = `c${crypto.createHash('md5').update(base64Image).digest('hex').slice(0, 6)}` return ` @@ -25,6 +24,7 @@ export async function generateBadge( preset: BadgePreset, radius: number, imageFormat: ImageFormat, + cropId: string, ) { const { login } = sponsor let name = (sponsor.name || sponsor.login).trim() @@ -55,13 +55,14 @@ export async function generateBadge( ${preset.name ? `${encodeHtmlEntities(name)} ` - : ''}${genSvgImage(x, y, size, radius, avatarBase64, imageFormat)} + : ''}${genSvgImage(x, y, size, radius, avatarBase64, imageFormat, cropId)} `.trim() } export class SvgComposer { height = 0 body = '' + private cropId = 0 readonly config: Required @@ -69,6 +70,10 @@ export class SvgComposer { this.config = config } + getNextCropId() { + return `c${this.cropId++}` + } + addSpan(height = 0) { this.height += height return this @@ -96,7 +101,8 @@ export class SvgComposer { const x = offsetX + preset.boxWidth * i const y = this.height const radius = s.sponsor.type === 'Organization' ? 0.1 : 0.5 - return await generateBadge(x, y, s.sponsor, preset, radius, this.config.imageFormat) + const cropId = this.getNextCropId() + return await generateBadge(x, y, s.sponsor, preset, radius, this.config.imageFormat, cropId) })) this.body += sponsorLine.join('\n') diff --git a/src/renders/circles.ts b/src/renders/circles.ts index 80a8f267..d8382dfd 100644 --- a/src/renders/circles.ts +++ b/src/renders/circles.ts @@ -48,6 +48,7 @@ export const circlesRenderer: SponsorkitRenderer = { }, 0.5, config.imageFormat, + composer.getNextCropId(), )) } From 329b55a76ec2809ebd6d3567e8d702e48f4d4b12 Mon Sep 17 00:00:00 2001 From: Anthony Bot Date: Mon, 3 Aug 2026 09:35:59 +0900 Subject: [PATCH 6/8] test: add unit tests for core helpers and wire tests into CI (#127) --- .github/workflows/ci.yml | 19 +++++ .github/workflows/lint.yml | 41 --------- package.json | 3 +- src/configs/index.test.ts | 73 ++++++++++++++++ src/processing/svg.test.ts | 82 ++++++++++++++++++ src/providers/github.test.ts | 158 +++++++++++++++++++++++++++++++++++ src/providers/index.test.ts | 68 +++++++++++++++ src/utils.test.ts | 21 +++++ vitest.config.ts | 7 ++ 9 files changed, 430 insertions(+), 42 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/lint.yml create mode 100644 src/configs/index.test.ts create mode 100644 src/processing/svg.test.ts create mode 100644 src/providers/github.test.ts create mode 100644 src/providers/index.test.ts create mode 100644 src/utils.test.ts create mode 100644 vitest.config.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..31606ae2 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,19 @@ +name: Unit Test + +on: + push: + branches: [main] + pull_request: + branches: [main] + +permissions: {} + +jobs: + unit-test: + uses: sxzz/workflows/.github/workflows/unit-test.yml@main + + # coverage: + # uses: sxzz/workflows/.github/workflows/coverage.yml@main + # needs: unit-test + # permissions: + # id-token: write diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index 1d25baa2..00000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Lint - -on: - push: - branches: - - main - - pull_request: - branches: - - main - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Install pnpm - uses: pnpm/action-setup@v3 - - - name: Set node - uses: actions/setup-node@v4 - with: - node-version: lts/* - cache: pnpm - - - name: Setup - run: npm i -g @antfu/ni - - - name: Install - run: nci - - - name: Lint - run: nr lint - - - name: Build - run: nr build - - - name: Typecheck - run: nr typecheck diff --git a/package.json b/package.json index 0ca196cb..da78c5b4 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,8 @@ "scripts": { "build": "tsdown", "dev": "tsx src/cli.ts", - "test": "vitest", + "test": "vitest run", + "test:watch": "vitest", "lint": "eslint .", "typecheck": "tsc --noEmit", "prepublishOnly": "pnpm run build", diff --git a/src/configs/index.test.ts b/src/configs/index.test.ts new file mode 100644 index 00000000..ee65006d --- /dev/null +++ b/src/configs/index.test.ts @@ -0,0 +1,73 @@ +import type { Sponsorship, Tier } from '../types.ts' +import { describe, expect, it } from 'vitest' +import { partitionTiers } from './index.ts' + +function sponsor(login: string, monthlyDollars: number, createdAt: string): Sponsorship { + return { + sponsor: { + type: 'User', + login, + name: login, + avatarUrl: '', + }, + monthlyDollars, + createdAt, + } +} + +const tiers: Tier[] = [ + { title: 'Backers' }, // the required zero-dollar tier + { title: 'Sponsors', monthlyDollars: 10 }, + { title: 'Gold', monthlyDollars: 100 }, +] + +describe('partitionTiers', () => { + it('requires exactly one tier without monthlyDollars', () => { + expect(() => partitionTiers([], [{ title: 'a', monthlyDollars: 10 }])) + .toThrow('There should be exactly one tier with no `monthlyDollars`, but got 0') + + expect(() => partitionTiers([], [{ title: 'a' }, { title: 'b' }])) + .toThrow('There should be exactly one tier with no `monthlyDollars`, but got 2') + }) + + it('buckets sponsors into the highest tier they qualify for', () => { + const sponsors = [ + sponsor('gold', 100, '2024-01-01'), + sponsor('mid', 10, '2024-01-02'), + sponsor('small', 5, '2024-01-03'), + ] + + const result = partitionTiers(sponsors, tiers) + + // sorted by monthlyDollars descending + expect(result.map(t => t.monthlyDollars)).toEqual([100, 10, 0]) + expect(result[0].sponsors.map(s => s.sponsor.login)).toEqual(['gold']) + expect(result[1].sponsors.map(s => s.sponsor.login)).toEqual(['mid']) + expect(result[2].sponsors.map(s => s.sponsor.login)).toEqual(['small']) + }) + + it('excludes past sponsors unless includePastSponsors is set', () => { + const sponsors = [ + sponsor('active', 10, '2024-01-01'), + sponsor('past', -1, '2024-01-02'), + ] + + const without = partitionTiers(structuredClone(sponsors), tiers) + expect(without.flatMap(t => t.sponsors.map(s => s.sponsor.login))).toEqual(['active']) + + const withPast = partitionTiers(structuredClone(sponsors), tiers, true) + expect(withPast.flatMap(t => t.sponsors.map(s => s.sponsor.login)).sort()) + .toEqual(['active', 'past']) + }) + + it('orders sponsors within a tier by createdAt ascending', () => { + const sponsors = [ + sponsor('later', 10, '2024-03-01'), + sponsor('earlier', 10, '2024-01-01'), + ] + + const result = partitionTiers(sponsors, tiers) + const bucket = result.find(t => t.monthlyDollars === 10)! + expect(bucket.sponsors.map(s => s.sponsor.login)).toEqual(['earlier', 'later']) + }) +}) diff --git a/src/processing/svg.test.ts b/src/processing/svg.test.ts new file mode 100644 index 00000000..719a8bc0 --- /dev/null +++ b/src/processing/svg.test.ts @@ -0,0 +1,82 @@ +import type { SponsorkitRenderOptions } from '../types.ts' +import { describe, expect, it } from 'vitest' +import { genSvgImage, SvgComposer } from './svg.ts' + +function createComposer(width = 800) { + return new SvgComposer({ + width, + svgInlineCSS: '.text { fill: red }', + imageFormat: 'webp', + } as unknown as Required) +} + +describe('svgComposer', () => { + it('starts empty', () => { + const composer = createComposer() + expect(composer.height).toBe(0) + expect(composer.body).toBe('') + }) + + it('addText appends centered text and advances the height', () => { + const composer = createComposer(800) + composer.addText('Hello') + expect(composer.height).toBe(20) + expect(composer.body).toContain('x="400"') + expect(composer.body).toContain('>Hello') + expect(composer.body).toContain('class="text"') + }) + + it('addTitle uses the tier-title class', () => { + const composer = createComposer() + composer.addTitle('Backers') + expect(composer.body).toContain('class="sponsorkit-tier-title"') + expect(composer.body).toContain('>Backers') + }) + + it('addSpan only advances the height', () => { + const composer = createComposer() + composer.addSpan(42) + expect(composer.height).toBe(42) + expect(composer.body).toBe('') + }) + + it('addRaw appends without touching the height', () => { + const composer = createComposer() + composer.addRaw('') + expect(composer.body).toBe('') + expect(composer.height).toBe(0) + }) + + it('is chainable', () => { + const composer = createComposer() + expect(composer.addSpan(10).addText('x')).toBe(composer) + }) + + it('generateSvg wraps the body with dimensions and inline css', () => { + const composer = createComposer(600) + composer.addText('Hi') + const svg = composer.generateSvg() + expect(svg).toContain('viewBox="0 0 600 20"') + expect(svg).toContain('width="600"') + expect(svg).toContain('height="20"') + expect(svg).toContain('') + expect(svg).toContain('>Hi') + }) +}) + +describe('genSvgImage', () => { + it('embeds the image as a base64 data uri', () => { + const svg = genSvgImage(1, 2, 40, 0.5, 'QUJD', 'png', 'crop-1') + expect(svg).toContain('href="data:image/png;base64,QUJD"') + expect(svg).toContain('x="1"') + expect(svg).toContain('y="2"') + expect(svg).toContain('width="40"') + expect(svg).toContain('rx="20"') // size * radius + }) + + it('uses the provided crop id for both the clip path and its reference', () => { + const svg = genSvgImage(0, 0, 40, 0.5, 'SAME', 'webp', 'render-crop-42') + expect(svg).toContain('') + expect(svg).toContain('clip-path="url(#render-crop-42)"') + }) +}) diff --git a/src/providers/github.test.ts b/src/providers/github.test.ts new file mode 100644 index 00000000..c082a73e --- /dev/null +++ b/src/providers/github.test.ts @@ -0,0 +1,158 @@ +import type { Mock } from 'vitest' +import type { SponsorkitConfig } from '../types.ts' +import { $fetch } from 'ofetch' +import { beforeEach, describe, expect, it, vi } from 'vitest' +import { + fetchGitHubSponsors, + makeQuery, + makeSponsoringQuery, + makeSponsoringTotalAmountQuery, +} from './github.ts' + +vi.mock('ofetch', () => ({ $fetch: vi.fn() })) + +const fetchMock = $fetch as unknown as Mock + +beforeEach(() => { + fetchMock.mockReset() +}) + +describe('makeQuery', () => { + it('embeds the login and account type', () => { + expect(makeQuery('antfu', 'user')).toContain('user(login: "antfu")') + expect(makeQuery('antfu', 'organization')).toContain('organization(login: "antfu")') + }) + + it('queries sponsorships as a maintainer', () => { + expect(makeQuery('antfu', 'user')).toContain('sponsorshipsAsMaintainer(') + }) + + it('interpolates the activeOnly flag', () => { + expect(makeQuery('antfu', 'user', true)).toContain('activeOnly: true') + expect(makeQuery('antfu', 'user', false)).toContain('activeOnly: false') + }) + + it('adds an after cursor only when provided', () => { + expect(makeQuery('antfu', 'user', true)).not.toContain('after:') + expect(makeQuery('antfu', 'user', true, 'CURSOR')).toContain('after: "CURSOR"') + }) +}) + +describe('makeSponsoringQuery', () => { + it('queries sponsorships as a sponsor', () => { + const query = makeSponsoringQuery('antfu', 'user', false, 'CURSOR') + expect(query).toContain('sponsorshipsAsSponsor(') + expect(query).toContain('activeOnly: false') + expect(query).toContain('after: "CURSOR"') + }) +}) + +describe('makeSponsoringTotalAmountQuery', () => { + it('omits parameters when no options are given', () => { + const query = makeSponsoringTotalAmountQuery('antfu', 'user') + expect(query).toContain('totalSponsorshipAmountAsSponsorInCents\n') + expect(query).not.toContain('totalSponsorshipAmountAsSponsorInCents(') + }) + + it('serializes since, until and sponsorableLogins', () => { + const query = makeSponsoringTotalAmountQuery('antfu', 'user', { + since: '2024-01-01', + until: '2024-12-31', + sponsorableLogins: ['vuejs', 'vitejs'], + }) + expect(query).toContain('since: "2024-01-01"') + expect(query).toContain('until: "2024-12-31"') + expect(query).toContain('sponsorableLogins: ["vuejs", "vitejs"]') + }) +}) + +describe('fetchGitHubSponsors', () => { + it('validates its required arguments', async () => { + await expect(fetchGitHubSponsors('', 'antfu', 'user', {})) + .rejects + .toThrow('GitHub token is required') + await expect(fetchGitHubSponsors('token', '', 'user', {})) + .rejects + .toThrow('GitHub login is required') + await expect(fetchGitHubSponsors('token', 'antfu', 'invalid' as any, {})) + .rejects + .toThrow('GitHub type must be either `user` or `organization`') + }) + + it('paginates and maps the response into sponsorships', async () => { + const page = (login: string, hasNextPage: boolean, endCursor: string | null) => ({ + data: { + user: { + sponsorshipsAsMaintainer: { + totalCount: 2, + pageInfo: { hasNextPage, endCursor }, + nodes: [ + { + createdAt: '2024-01-01T00:00:00Z', + privacyLevel: 'PUBLIC', + isActive: true, + tier: { name: 'Gold', isOneTime: false, monthlyPriceInCents: 1000, monthlyPriceInDollars: 10 }, + sponsorEntity: { __typename: 'User', login, name: login, avatarUrl: 'a', websiteUrl: 'example.com' }, + }, + ], + }, + }, + }, + }) + + fetchMock + .mockResolvedValueOnce(page('alice', true, 'CURSOR')) + .mockResolvedValueOnce(page('bob', false, null)) + + const sponsors = await fetchGitHubSponsors('token', 'antfu', 'user', {}) + + expect(fetchMock).toHaveBeenCalledTimes(2) + // second request carries the cursor from the first page + expect(fetchMock.mock.calls[1][1].body.query).toContain('after: "CURSOR"') + + expect(sponsors.map(s => s.sponsor.login)).toEqual(['alice', 'bob']) + expect(sponsors[0]).toMatchObject({ + monthlyDollars: 10, + tierName: 'Gold', + isOneTime: false, + sponsor: { + login: 'alice', + type: 'User', + websiteUrl: 'https://example.com', + linkUrl: 'https://github.com/alice', + }, + }) + }) + + it('marks inactive non-prorated sponsors as past sponsors', async () => { + fetchMock.mockResolvedValueOnce({ + data: { + user: { + sponsorshipsAsMaintainer: { + totalCount: 1, + pageInfo: { hasNextPage: false, endCursor: null }, + nodes: [ + { + createdAt: '2024-01-01T00:00:00Z', + privacyLevel: 'PUBLIC', + isActive: false, + tier: { name: 'Gold', isOneTime: false, monthlyPriceInCents: 1000, monthlyPriceInDollars: 10 }, + sponsorEntity: { __typename: 'User', login: 'past', name: 'past', avatarUrl: 'a' }, + }, + ], + }, + }, + }, + }) + + const sponsors = await fetchGitHubSponsors('token', 'antfu', 'user', {}) + expect(sponsors[0].monthlyDollars).toBe(-1) + }) + + it('throws when the API returns errors', async () => { + fetchMock.mockResolvedValueOnce({ errors: [{ type: 'INSUFFICIENT_SCOPES' }] }) + await expect(fetchGitHubSponsors('token', 'antfu', 'user', {} as SponsorkitConfig)) + .rejects + .toThrow('read:user') + }) +}) diff --git a/src/providers/index.test.ts b/src/providers/index.test.ts new file mode 100644 index 00000000..2715225c --- /dev/null +++ b/src/providers/index.test.ts @@ -0,0 +1,68 @@ +import type { Provider } from '../types.ts' +import { describe, expect, it } from 'vitest' +import { GitHubProvider } from './github.ts' +import { guessProviders, ProvidersMap, resolveProviders } from './index.ts' + +describe('guessProviders', () => { + it('falls back to github when nothing is configured', () => { + expect(guessProviders({})).toEqual(['github']) + }) + + it('detects each provider from its required config', () => { + expect(guessProviders({ github: { login: 'antfu' } })).toEqual(['github']) + expect(guessProviders({ patreon: { token: 't' } })).toEqual(['patreon']) + expect(guessProviders({ opencollective: { slug: 'antfu' } })).toEqual(['opencollective']) + expect(guessProviders({ afdian: { userId: 'u', token: 't' } })).toEqual(['afdian']) + expect(guessProviders({ polar: { token: 't' } })).toEqual(['polar']) + expect(guessProviders({ liberapay: { login: 'antfu' } })).toEqual(['liberapay']) + expect(guessProviders({ kofi: { verificationToken: 't' } })).toEqual(['kofi']) + expect(guessProviders({ kofi: { dataFile: './events.json' } })).toEqual(['kofi']) + }) + + it('ignores providers with incomplete config', () => { + // afdian needs both userId and token + expect(guessProviders({ afdian: { userId: 'u' } })).toEqual(['github']) + // github needs a login + expect(guessProviders({ github: {} })).toEqual(['github']) + }) + + it('collects multiple providers in declaration order', () => { + expect(guessProviders({ + github: { login: 'antfu' }, + polar: { token: 't' }, + kofi: { dataFile: './events.json' }, + })).toEqual(['github', 'polar', 'kofi']) + }) +}) + +describe('resolveProviders', () => { + it('maps provider names to their implementations', () => { + expect(resolveProviders(['github'])).toEqual([GitHubProvider]) + }) + + it('deduplicates repeated names', () => { + expect(resolveProviders(['github', 'github'])).toEqual([GitHubProvider]) + }) + + it('passes custom provider objects through untouched', () => { + const custom: Provider = { name: 'custom', fetchSponsors: async () => [] } + expect(resolveProviders([custom])).toEqual([custom]) + }) + + it('throws on an unknown provider name', () => { + // @ts-expect-error deliberately invalid provider name + expect(() => resolveProviders(['nope'])).toThrow('Unknown provider: nope') + }) + + it('exposes every known provider in ProvidersMap', () => { + expect(Object.keys(ProvidersMap)).toEqual([ + 'github', + 'patreon', + 'opencollective', + 'afdian', + 'polar', + 'liberapay', + 'kofi', + ]) + }) +}) diff --git a/src/utils.test.ts b/src/utils.test.ts new file mode 100644 index 00000000..a3e06305 --- /dev/null +++ b/src/utils.test.ts @@ -0,0 +1,21 @@ +import { describe, expect, it } from 'vitest' +import { normalizeUrl } from './utils.ts' + +describe('normalizeUrl', () => { + it('returns undefined for empty input', () => { + expect(normalizeUrl(undefined)).toBeUndefined() + expect(normalizeUrl('')).toBeUndefined() + }) + + it('adds the default https protocol when missing', () => { + expect(normalizeUrl('example.com')).toBe('https://example.com') + }) + + it('preserves an explicit protocol', () => { + expect(normalizeUrl('http://example.com')).toBe('http://example.com') + }) + + it('normalizes the url (strips trailing slash)', () => { + expect(normalizeUrl('https://example.com/')).toBe('https://example.com') + }) +}) diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 00000000..916f5549 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,7 @@ +import { configDefaults, defineConfig } from 'vitest/config' + +export default defineConfig({ + test: { + exclude: [...configDefaults.exclude, 'example/**'], + }, +}) From 14d0ea2d8043d893483d12dff13eeacaf0059456 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 3 Aug 2026 09:36:43 +0900 Subject: [PATCH 7/8] chore: release v18.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index da78c5b4..cd1b9009 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "sponsorkit", "type": "module", - "version": "17.1.1", + "version": "18.0.0", "packageManager": "pnpm@11.18.0", "description": "Toolkit for generating sponsors images", "author": "Anthony Fu ", From b6f427ee7f594d686de4c50bdb96051563c668d4 Mon Sep 17 00:00:00 2001 From: ReenigneArcher <42013603+ReenigneArcher@users.noreply.github.com> Date: Thu, 8 Oct 2026 10:22:46 -0400 Subject: [PATCH 8/8] fix: compare Ko-fi expiration dates explicitly --- src/providers/kofi.test.ts | 1 + src/providers/kofi.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/providers/kofi.test.ts b/src/providers/kofi.test.ts index 6d7aa802..45dd3aa8 100644 --- a/src/providers/kofi.test.ts +++ b/src/providers/kofi.test.ts @@ -145,6 +145,7 @@ describe('ko-fi provider', () => { expect(sponsors).toHaveLength(1) expect(sponsors[0]).toMatchObject({ monthlyDollars: 7, + expireAt: '2026-08-05T00:00:00.000Z', privacyLevel: 'PUBLIC', isOneTime: false, sponsor: { diff --git a/src/providers/kofi.ts b/src/providers/kofi.ts index 4cde2216..f35aa587 100644 --- a/src/providers/kofi.ts +++ b/src/providers/kofi.ts @@ -251,7 +251,7 @@ function createKofiSponsorship( privacyLevel: latest.isPublic ? 'PUBLIC' : 'PRIVATE', tierName: latestRecurring?.tierName || 'Ko-fi', createdAt: sorted.at(-1)!.timestamp, - expireAt: activeExpirations.sort().at(-1), + expireAt: activeExpirations.toSorted((a, b) => a.localeCompare(b)).at(-1), isOneTime: recurring.length === 0, provider: 'kofi', raw: sorted,