diff --git a/packages/backend/package.json b/packages/backend/package.json index 5e6761b79..523464d42 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -63,8 +63,8 @@ }, "dependencies": { "@authenio/samlify-node-xmllint": "2.0.0", - "@aws-sdk/client-s3": "3.777.0", - "@aws-sdk/lib-storage": "3.777.0", + "@aws-sdk/client-s3": "3.779.0", + "@aws-sdk/lib-storage": "3.779.0", "@bull-board/api": "6.7.10", "@bull-board/fastify": "6.7.10", "@bull-board/ui": "6.7.10", @@ -117,7 +117,7 @@ "file-type": "20.4.1", "fluent-ffmpeg": "2.1.3", "form-data": "4.0.2", - "got": "14.4.6", + "got": "14.4.7", "hpagent": "1.2.0", "htmlescape": "1.1.1", "http-link-header": "1.1.3", @@ -153,7 +153,7 @@ "pg": "8.14.1", "pino": "9.6.0", "pino-pretty": "13.0.0", - "pkce-challenge": "4.1.0", + "pkce-challenge": "5.0.0", "probe-image-size": "7.2.3", "promise-limit": "2.7.0", "psl": "1.15.0", diff --git a/packages/backend/src/misc/gen-x509-cert-from-jwk.ts b/packages/backend/src/misc/gen-x509-cert-from-jwk.ts index 4eb64e705..b2650a499 100644 --- a/packages/backend/src/misc/gen-x509-cert-from-jwk.ts +++ b/packages/backend/src/misc/gen-x509-cert-from-jwk.ts @@ -7,6 +7,7 @@ export async function genX509CertFromJWK( notAfter: Date, publicKey: string, privateKey: string, + alg: string, ): Promise { const cert = forge.pki.createCertificate(); cert.serialNumber = '01'; @@ -17,13 +18,13 @@ export async function genX509CertFromJWK( cert.setSubject(attrs); cert.setIssuer(attrs); cert.publicKey = await jose - .importJWK(JSON.parse(publicKey)) + .importJWK(JSON.parse(publicKey), alg, { extractable: true }) .then((k) => jose.exportSPKI(k as jose.CryptoKey)) .then((k) => forge.pki.publicKeyFromPem(k)); cert.sign( await jose - .importJWK(JSON.parse(privateKey)) + .importJWK(JSON.parse(privateKey), alg, { extractable: true }) .then((k) => jose.exportPKCS8(k as jose.CryptoKey)) .then((k) => forge.pki.privateKeyFromPem(k)), forge.md.sha256.create(), diff --git a/packages/backend/src/server/api/endpoints/admin/sso/create.ts b/packages/backend/src/server/api/endpoints/admin/sso/create.ts index 8d58880f5..79cfafe9c 100644 --- a/packages/backend/src/server/api/endpoints/admin/sso/create.ts +++ b/packages/backend/src/server/api/endpoints/admin/sso/create.ts @@ -123,7 +123,7 @@ export default class extends Endpoint { // eslint- } const { publicKey, privateKey } = ps.useCertificate - ? await jose.generateKeyPair(ps.signatureAlgorithm).then(async keypair => ({ + ? await jose.generateKeyPair(ps.signatureAlgorithm, { extractable: true }).then(async keypair => ({ publicKey: JSON.stringify(await jose.exportJWK(keypair.publicKey)), privateKey: JSON.stringify(await jose.exportJWK(keypair.privateKey)), })) @@ -139,6 +139,7 @@ export default class extends Endpoint { // eslint- tenYearsLaterTime, publicKey, privateKey ?? '', + ps.signatureAlgorithm, ) : undefined; const ssoServiceProvider = await this.singleSignOnServiceProviderRepository.insert({ diff --git a/packages/backend/src/server/api/endpoints/admin/sso/update.ts b/packages/backend/src/server/api/endpoints/admin/sso/update.ts index 552415daf..da8597cb4 100644 --- a/packages/backend/src/server/api/endpoints/admin/sso/update.ts +++ b/packages/backend/src/server/api/endpoints/admin/sso/update.ts @@ -60,7 +60,7 @@ export default class extends Endpoint { // eslint- const alg = ps.signatureAlgorithm ? ps.signatureAlgorithm : service.signatureAlgorithm; const { publicKey, privateKey } = ps.regenerateCertificate - ? await jose.generateKeyPair(alg).then(async keypair => ({ + ? await jose.generateKeyPair(alg, { extractable: true }).then(async keypair => ({ publicKey: JSON.stringify(await jose.exportJWK(keypair.publicKey)), privateKey: JSON.stringify(await jose.exportJWK(keypair.privateKey)), })) @@ -76,6 +76,7 @@ export default class extends Endpoint { // eslint- tenYearsLaterTime, publicKey ?? '', privateKey ?? '', + alg, ) : undefined; await this.singleSignOnServiceProviderRepository.update(service.id, { diff --git a/packages/backend/src/server/sso/JWTIdentifyProviderService.ts b/packages/backend/src/server/sso/JWTIdentifyProviderService.ts index 63e412ff1..4e202688f 100644 --- a/packages/backend/src/server/sso/JWTIdentifyProviderService.ts +++ b/packages/backend/src/server/sso/JWTIdentifyProviderService.ts @@ -193,7 +193,7 @@ export class JWTIdentifyProviderService { try { if (ssoServiceProvider.cipherAlgorithm) { const key = ssoServiceProvider.publicKey.startsWith('{') - ? await jose.importJWK(JSON.parse(ssoServiceProvider.publicKey)) + ? await jose.importJWK(JSON.parse(ssoServiceProvider.publicKey), ssoServiceProvider.signatureAlgorithm) : jose.base64url.decode(ssoServiceProvider.publicKey); jwt = await new jose.EncryptJWT(payload) @@ -211,7 +211,7 @@ export class JWTIdentifyProviderService { .encrypt(key); } else { const key = ssoServiceProvider.privateKey - ? await jose.importJWK(JSON.parse(ssoServiceProvider.privateKey)) + ? await jose.importJWK(JSON.parse(ssoServiceProvider.privateKey), ssoServiceProvider.signatureAlgorithm) : jose.base64url.decode(ssoServiceProvider.publicKey); jwt = await new jose.SignJWT(payload) @@ -311,7 +311,7 @@ export class JWTIdentifyProviderService { try { if (ssoServiceProvider.cipherAlgorithm) { const key = ssoServiceProvider.privateKey - ? await jose.importJWK(JSON.parse(ssoServiceProvider.privateKey)) + ? await jose.importJWK(JSON.parse(ssoServiceProvider.privateKey), ssoServiceProvider.signatureAlgorithm) : jose.base64url.decode(ssoServiceProvider.publicKey); const { payload } = await jose.jwtDecrypt(jwt, key, { @@ -323,7 +323,7 @@ export class JWTIdentifyProviderService { return; } else { const key = ssoServiceProvider.publicKey.startsWith('{') - ? await jose.importJWK(JSON.parse(ssoServiceProvider.publicKey)) + ? await jose.importJWK(JSON.parse(ssoServiceProvider.publicKey), ssoServiceProvider.signatureAlgorithm) : jose.base64url.decode(ssoServiceProvider.publicKey); const { payload } = await jose.jwtVerify(jwt, key, { diff --git a/packages/backend/src/server/sso/SAMLIdentifyProviderService.ts b/packages/backend/src/server/sso/SAMLIdentifyProviderService.ts index 63ca46ddb..b0399ad6e 100644 --- a/packages/backend/src/server/sso/SAMLIdentifyProviderService.ts +++ b/packages/backend/src/server/sso/SAMLIdentifyProviderService.ts @@ -238,7 +238,7 @@ export class SAMLIdentifyProviderService { const idp = saml.IdentityProvider({ metadata: await this.createIdPMetadataXml(ssoServiceProvider), privateKey: await jose - .importJWK(JSON.parse(ssoServiceProvider.privateKey ?? '{}')) + .importJWK(JSON.parse(ssoServiceProvider.privateKey ?? '{}'), ssoServiceProvider.signatureAlgorithm, { extractable: true }) .then(k => jose.exportPKCS8(k as jose.CryptoKey)), }); @@ -392,7 +392,7 @@ export class SAMLIdentifyProviderService { const idp = saml.IdentityProvider({ metadata: await this.createIdPMetadataXml(ssoServiceProvider), privateKey: await jose - .importJWK(JSON.parse(ssoServiceProvider.privateKey ?? '{}')) + .importJWK(JSON.parse(ssoServiceProvider.privateKey ?? '{}'), ssoServiceProvider.signatureAlgorithm, { extractable: true }) .then(k => jose.exportPKCS8(k as jose.CryptoKey)), loginResponseTemplate: { context: 'ignored' }, }); diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 4fe102fa7..3014206cf 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -72,9 +72,9 @@ "typescript": "5.8.2", "uuid": "11.1.0", "v-code-diff": "1.13.1", - "vite": "6.2.3", + "vite": "6.2.4", "vue": "3.5.13", - "vue-gtag": "3.1.1", + "vue-gtag": "3.2.0", "vuedraggable": "next", "webgl-audiovisualizer": "github:tar-bin/webgl-audiovisualizer" }, @@ -114,7 +114,7 @@ "@types/ws": "8.18.0", "@typescript-eslint/eslint-plugin": "7.10.0", "@typescript-eslint/parser": "7.10.0", - "@vitest/coverage-v8": "3.0.9", + "@vitest/coverage-v8": "3.1.1", "@vue/runtime-core": "3.5.13", "acorn": "8.14.1", "cross-env": "7.0.3", @@ -136,7 +136,7 @@ "storybook": "8.6.11", "storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme", "vite-plugin-turbosnap": "1.0.3", - "vitest": "3.0.9", + "vitest": "3.1.1", "vitest-fetch-mock": "0.3.0", "vue-component-type-helpers": "2.2.8", "vue-eslint-parser": "9.4.3", diff --git a/packages/frontend/src/components/MkTimeline.vue b/packages/frontend/src/components/MkTimeline.vue index f64046d52..228d22244 100644 --- a/packages/frontend/src/components/MkTimeline.vue +++ b/packages/frontend/src/components/MkTimeline.vue @@ -71,26 +71,33 @@ const tlComponent = shallowRef>(); let tlNotesCount = 0; const notVisibleNoteData = new Array(); +async function fulfillNoteData(data) { + // チェックするプロパティはなんでも良い + // minimizeが有効でid以外が存在しない場合は取得する + if (!data.visibility) { + const res = await window.fetch(`/notes/${data.id}.json`, { + method: 'GET', + credentials: 'omit', + headers: { + 'Authorization': 'anonymous', + 'X-Client-Transaction-Id': generateClientTransactionId('misskey'), + }, + }); + if (!res.ok) return null; + return deepMerge(data, await res.json()); + } + + return data; +} + async function prepend(data) { if (tlComponent.value == null) return; let note = data; if (!document.hidden) { - // チェックするプロパティはなんでも良い - // minimizeが有効でid以外が存在しない場合は取得する - if (!data.visibility) { - const res = await window.fetch(`/notes/${data.id}.json`, { - method: 'GET', - credentials: 'omit', - headers: { - 'Authorization': 'anonymous', - 'X-Client-Transaction-Id': generateClientTransactionId('misskey'), - }, - }); - if (!res.ok) return; - note = deepMerge(data, await res.json()); - } + note = await fulfillNoteData(data); + if (note == null) return; tlNotesCount++; @@ -119,16 +126,20 @@ async function loadUnloadedNotes() { if (tlComponent.value == null) return; if (notVisibleNoteData.length === 0) return; - if (notVisibleNoteData.length >= 10) { - tlComponent.value.pagingComponent?.deleteItem(); - tlComponent.value.pagingComponent?.stopFetch(); - } + tlComponent.value.pagingComponent?.stopFetch(); + try { + const items = [...notVisibleNoteData]; + notVisibleNoteData.length = 0; - while (notVisibleNoteData.length > 0) { - await prepend(notVisibleNoteData.shift()); - } + const notes = await Promise.allSettled(items.map(fulfillNoteData)); + if (items.length >= 10) tlComponent.value.pagingComponent?.deleteItem(); - tlComponent.value.pagingComponent?.startFetch(); + for (const note of notes.filter(i => i.status === 'fulfilled' && i.value != null)) { + await prepend((note as PromiseFulfilledResult).value); + } + } finally { + tlComponent.value.pagingComponent?.startFetch(); + } } let connection: Misskey.ChannelConnection | null = null; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bccb423e9..b7c03154f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,11 +77,11 @@ importers: specifier: 2.0.0 version: 2.0.0(samlify@2.9.1) '@aws-sdk/client-s3': - specifier: 3.777.0 - version: 3.777.0 + specifier: 3.779.0 + version: 3.779.0 '@aws-sdk/lib-storage': - specifier: 3.777.0 - version: 3.777.0(@aws-sdk/client-s3@3.777.0) + specifier: 3.779.0 + version: 3.779.0(@aws-sdk/client-s3@3.779.0) '@bull-board/api': specifier: 6.7.10 version: 6.7.10(@bull-board/ui@6.7.10) @@ -239,8 +239,8 @@ importers: specifier: 4.0.2 version: 4.0.2 got: - specifier: 14.4.6 - version: 14.4.6 + specifier: 14.4.7 + version: 14.4.7 hpagent: specifier: 1.2.0 version: 1.2.0 @@ -347,8 +347,8 @@ importers: specifier: 13.0.0 version: 13.0.0 pkce-challenge: - specifier: 4.1.0 - version: 4.1.0 + specifier: 5.0.0 + version: 5.0.0 probe-image-size: specifier: 7.2.3 version: 7.2.3 @@ -737,7 +737,7 @@ importers: version: 15.1.1 '@vitejs/plugin-vue': specifier: 5.2.3 - version: 5.2.3(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2)) + version: 5.2.3(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2)) '@vue/compiler-sfc': specifier: 3.5.13 version: 3.5.13 @@ -868,14 +868,14 @@ importers: specifier: 1.13.1 version: 1.13.1(vue@3.5.13(typescript@5.8.2)) vite: - specifier: 6.2.3 - version: 6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + specifier: 6.2.4 + version: 6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) vue: specifier: 3.5.13 version: 3.5.13(typescript@5.8.2) vue-gtag: - specifier: 3.1.1 - version: 3.1.1(vue@3.5.13(typescript@5.8.2)) + specifier: 3.2.0 + version: 3.2.0(vue@3.5.13(typescript@5.8.2)) vuedraggable: specifier: next version: 4.1.0(vue@3.5.13(typescript@5.8.2)) @@ -927,7 +927,7 @@ importers: version: 8.6.11(@storybook/test@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2) '@storybook/react-vite': specifier: 8.6.11 - version: 8.6.11(@storybook/test@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.38.0)(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) + version: 8.6.11(@storybook/test@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.38.0)(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2)(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) '@storybook/test': specifier: 8.6.11 version: 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)) @@ -942,7 +942,7 @@ importers: version: 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.8.2)) '@storybook/vue3-vite': specifier: 8.6.11 - version: 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2)) + version: 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2)) '@testing-library/vue': specifier: 8.1.0 version: 8.1.0(@vue/compiler-sfc@3.5.13)(vue@3.5.13(typescript@5.8.2)) @@ -989,8 +989,8 @@ importers: specifier: 7.10.0 version: 7.10.0(eslint@8.57.1)(typescript@5.8.2) '@vitest/coverage-v8': - specifier: 3.0.9 - version: 3.0.9(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) + specifier: 3.1.1 + version: 3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) '@vue/runtime-core': specifier: 3.5.13 version: 3.5.13 @@ -1055,11 +1055,11 @@ importers: specifier: 1.0.3 version: 1.0.3 vitest: - specifier: 3.0.9 - version: 3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + specifier: 3.1.1 + version: 3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) vitest-fetch-mock: specifier: 0.3.0 - version: 0.3.0(encoding@0.1.13)(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) + version: 0.3.0(encoding@0.1.13)(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) vue-component-type-helpers: specifier: 2.2.8 version: 2.2.8 @@ -1337,8 +1337,8 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-s3@3.777.0': - resolution: {integrity: sha512-KVX2QD6lLczZxtzIRCpmztgNnGq+spiMIDYqkum/rCBjCX1YJoDHwMYXaMf2EtAH8tFkJmBiA/CiT/J36iN7Xg==} + '@aws-sdk/client-s3@3.779.0': + resolution: {integrity: sha512-Lagz+ersQaLNYkpOU9V12PYspT//lGvhPXlKU3OXDj3whDchdqUdtRKY8rmV+jli4KXe+udx/hj2yqrFRfKGvQ==} engines: {node: '>=18.0.0'} '@aws-sdk/client-sso@3.777.0': @@ -1377,11 +1377,11 @@ packages: resolution: {integrity: sha512-uGCqr47fnthkqwq5luNl2dksgcpHHjSXz2jUra7TXtFOpqvnhOW8qXjoa1ivlkq8qhqlaZwCzPdbcN0lXpmLzQ==} engines: {node: '>=18.0.0'} - '@aws-sdk/lib-storage@3.777.0': - resolution: {integrity: sha512-mX9LcdJe9QeQwo9WPejpEglHobpTYb2kHT4q2k4JMKu9npNF0HlF0hrW3rNNEfHH/4mlj1NrA216LgXYp1+YmA==} + '@aws-sdk/lib-storage@3.779.0': + resolution: {integrity: sha512-AZfykrCgfnhlb5d5uyThHsqIwt41PYgnUTMyDuk4hbuKbiY8pfOiPdg8BYsC59iD2T4Iw9NujYhWUD+l8zNKcw==} engines: {node: '>=18.0.0'} peerDependencies: - '@aws-sdk/client-s3': ^3.777.0 + '@aws-sdk/client-s3': ^3.779.0 '@aws-sdk/middleware-bucket-endpoint@3.775.0': resolution: {integrity: sha512-qogMIpVChDYr4xiUNC19/RDSw/sKoHkAhouS6Skxiy6s27HBhow1L3Z1qVYXuBmOZGSWPU0xiyZCvOyWrv9s+Q==} @@ -3934,11 +3934,11 @@ packages: vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@vitest/coverage-v8@3.0.9': - resolution: {integrity: sha512-15OACZcBtQ34keIEn19JYTVuMFTlFrClclwWjHo/IRPg/8ELpkgNTl0o7WLP9WO9XGH6+tip9CPYtEOrIDJvBA==} + '@vitest/coverage-v8@3.1.1': + resolution: {integrity: sha512-MgV6D2dhpD6Hp/uroUoAIvFqA8AuvXEFBC2eepG3WFc1pxTfdk1LEqqkWoWhjz+rytoqrnUUCdf6Lzco3iHkLQ==} peerDependencies: - '@vitest/browser': 3.0.9 - vitest: 3.0.9 + '@vitest/browser': 3.1.1 + vitest: 3.1.1 peerDependenciesMeta: '@vitest/browser': optional: true @@ -3946,11 +3946,11 @@ packages: '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/expect@3.0.9': - resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} + '@vitest/expect@3.1.1': + resolution: {integrity: sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==} - '@vitest/mocker@3.0.9': - resolution: {integrity: sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==} + '@vitest/mocker@3.1.1': + resolution: {integrity: sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -3966,20 +3966,20 @@ packages: '@vitest/pretty-format@2.1.8': resolution: {integrity: sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==} - '@vitest/pretty-format@3.0.9': - resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} + '@vitest/pretty-format@3.1.1': + resolution: {integrity: sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==} - '@vitest/runner@3.0.9': - resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} + '@vitest/runner@3.1.1': + resolution: {integrity: sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==} - '@vitest/snapshot@3.0.9': - resolution: {integrity: sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==} + '@vitest/snapshot@3.1.1': + resolution: {integrity: sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==} '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - '@vitest/spy@3.0.9': - resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} + '@vitest/spy@3.1.1': + resolution: {integrity: sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==} '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -3987,8 +3987,8 @@ packages: '@vitest/utils@2.1.8': resolution: {integrity: sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==} - '@vitest/utils@3.0.9': - resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} + '@vitest/utils@3.1.1': + resolution: {integrity: sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==} '@volar/language-core@2.2.5': resolution: {integrity: sha512-2htyAuxRrAgETmFeUhT4XLELk3LiEcqoW/B8YUXMF6BrGWLMwIR09MFaZYvrA2UhbdAeSyeQ726HaWSWkexUcQ==} @@ -5582,8 +5582,8 @@ packages: resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} engines: {node: '>= 0.8.0'} - expect-type@1.1.0: - resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + expect-type@1.2.1: + resolution: {integrity: sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==} engines: {node: '>=12.0.0'} expect@29.7.0: @@ -5990,8 +5990,8 @@ packages: resolution: {integrity: sha512-sq+uET8TnNKRNnjEOPJzMcxeI0irT8BBNmf+GtZcJpmhYsQM1DSKmCROUjPWKsXZ5HzwD5Cf5/RV+QD9BSTxJg==} engines: {node: '>=20'} - got@14.4.6: - resolution: {integrity: sha512-rnhwfM/PhMNJ1i17k3DuDqgj0cKx3IHxBKVv/WX1uDKqrhi2Gv3l7rhPThR/Cc6uU++dD97W9c8Y0qyw9x0jag==} + got@14.4.7: + resolution: {integrity: sha512-DI8zV1231tqiGzOiOzQWDhsBmncFW7oQDH6Zgy6pDPrqJuVZMtoSgPLLsBZQj8Jg4JFfwoOsDA8NGtLQLnIx2g==} engines: {node: '>=20'} graceful-fs@4.2.11: @@ -7901,8 +7901,8 @@ packages: piscina@4.5.1: resolution: {integrity: sha512-DVhySLPfqAW+uRH9dF0bjA2xEWr5ANLAzkYXx5adSLMFnwssSIVJYhg0FlvgYsnT/khILQJ3WkjqbAlBvt+maw==} - pkce-challenge@4.1.0: - resolution: {integrity: sha512-ZBmhE1C9LcPoH9XZSdwiPtbPHZROwAnMy+kIFQVrnMCxY4Cudlz3gBOpzilgc0jOgRaiT3sIWfpMomW2ar2orQ==} + pkce-challenge@5.0.0: + resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==} engines: {node: '>=16.20.0'} pkg-dir@4.2.0: @@ -8960,8 +8960,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.8.0: - resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} @@ -9656,16 +9656,16 @@ packages: vfile@6.0.1: resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==} - vite-node@3.0.9: - resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} + vite-node@3.1.1: + resolution: {integrity: sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true vite-plugin-turbosnap@1.0.3: resolution: {integrity: sha512-p4D8CFVhZS412SyQX125qxyzOgIFouwOcvjZWk6bQbNPR1wtaEzFT6jZxAjf1dejlGqa6fqHcuCvQea6EWUkUA==} - vite@6.2.3: - resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==} + vite@6.2.4: + resolution: {integrity: sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -9710,16 +9710,16 @@ packages: peerDependencies: vitest: '>=2.0.0' - vitest@3.0.9: - resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} + vitest@3.1.1: + resolution: {integrity: sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.9 - '@vitest/ui': 3.0.9 + '@vitest/browser': 3.1.1 + '@vitest/ui': 3.1.1 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -9802,8 +9802,8 @@ packages: peerDependencies: eslint: '>=6.0.0' - vue-gtag@3.1.1: - resolution: {integrity: sha512-8n31qQ4Qiyn8IenzDWp6A9oq9dPhHUCxFtXJHK0smq+sftiW4S4jTfZeGNCRJZrHLo8ybpso7Br6Go7GB5CmPQ==} + vue-gtag@3.2.0: + resolution: {integrity: sha512-bd3tgSr9DosDXJAeVjqOa6vJfIZiNkWegOfIvsra4ldATHNdf+T9oyXyqXXmX8CERAk9FVqaOVzIKmmv4E2vbA==} peerDependencies: vue: ^3.5.13 vue-router: ^4.5.0 @@ -10175,7 +10175,7 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.777.0': + '@aws-sdk/client-s3@3.779.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 @@ -10382,9 +10382,9 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/lib-storage@3.777.0(@aws-sdk/client-s3@3.777.0)': + '@aws-sdk/lib-storage@3.779.0(@aws-sdk/client-s3@3.779.0)': dependencies: - '@aws-sdk/client-s3': 3.777.0 + '@aws-sdk/client-s3': 3.779.0 '@smithy/abort-controller': 4.0.2 '@smithy/middleware-endpoint': 4.1.0 '@smithy/smithy-client': 4.2.0 @@ -11550,12 +11550,12 @@ snapshots: '@types/yargs': 17.0.32 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.8.2)(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))': dependencies: glob: 10.4.5 magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.8.2) - vite: 6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vite: 6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) optionalDependencies: typescript: 5.8.2 @@ -12630,13 +12630,13 @@ snapshots: react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - '@storybook/builder-vite@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))': + '@storybook/builder-vite@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))': dependencies: '@storybook/csf-plugin': 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)) browser-assert: 1.2.1 storybook: 8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5) ts-dedent: 2.2.0 - vite: 6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vite: 6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) '@storybook/components@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))': dependencies: @@ -12699,11 +12699,11 @@ snapshots: react-dom: 19.1.0(react@19.1.0) storybook: 8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5) - '@storybook/react-vite@8.6.11(@storybook/test@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.38.0)(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))': + '@storybook/react-vite@8.6.11(@storybook/test@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(rollup@4.38.0)(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2)(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.2)(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.8.2)(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) '@rollup/pluginutils': 5.1.4(rollup@4.38.0) - '@storybook/builder-vite': 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) + '@storybook/builder-vite': 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) '@storybook/react': 8.6.11(@storybook/test@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(typescript@5.8.2) find-up: 5.0.0 magic-string: 0.30.17 @@ -12713,7 +12713,7 @@ snapshots: resolve: 1.22.8 storybook: 8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5) tsconfig-paths: 4.2.0 - vite: 6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vite: 6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) optionalDependencies: '@storybook/test': 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5)) transitivePeerDependencies: @@ -12762,15 +12762,15 @@ snapshots: dependencies: storybook: 8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5) - '@storybook/vue3-vite@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2))': + '@storybook/vue3-vite@8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2))': dependencies: - '@storybook/builder-vite': 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) + '@storybook/builder-vite': 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) '@storybook/vue3': 8.6.11(storybook@8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5))(vue@3.5.13(typescript@5.8.2)) find-package-json: 1.2.0 magic-string: 0.30.17 storybook: 8.6.11(bufferutil@4.0.9)(prettier@3.5.3)(utf-8-validate@6.0.5) typescript: 5.8.2 - vite: 6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vite: 6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) vue-component-meta: 2.0.19(typescript@5.8.2) vue-docgen-api: 4.78.0(vue@3.5.13(typescript@5.8.2)) transitivePeerDependencies: @@ -13446,12 +13446,12 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-vue@5.2.3(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2))': + '@vitejs/plugin-vue@5.2.3(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))(vue@3.5.13(typescript@5.8.2))': dependencies: - vite: 6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vite: 6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) vue: 3.5.13(typescript@5.8.2) - '@vitest/coverage-v8@3.0.9(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))': + '@vitest/coverage-v8@3.1.1(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -13462,10 +13462,10 @@ snapshots: istanbul-reports: 3.1.7 magic-string: 0.30.17 magicast: 0.3.5 - std-env: 3.8.0 + std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) transitivePeerDependencies: - supports-color @@ -13476,21 +13476,21 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/expect@3.0.9': + '@vitest/expect@3.1.1': dependencies: - '@vitest/spy': 3.0.9 - '@vitest/utils': 3.0.9 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.9(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))': + '@vitest/mocker@3.1.1(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3))': dependencies: - '@vitest/spy': 3.0.9 + '@vitest/spy': 3.1.1 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: msw: 2.7.3(@types/node@22.13.14)(typescript@5.8.2) - vite: 6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vite: 6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) '@vitest/pretty-format@2.0.5': dependencies: @@ -13500,18 +13500,18 @@ snapshots: dependencies: tinyrainbow: 1.2.0 - '@vitest/pretty-format@3.0.9': + '@vitest/pretty-format@3.1.1': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.9': + '@vitest/runner@3.1.1': dependencies: - '@vitest/utils': 3.0.9 + '@vitest/utils': 3.1.1 pathe: 2.0.3 - '@vitest/snapshot@3.0.9': + '@vitest/snapshot@3.1.1': dependencies: - '@vitest/pretty-format': 3.0.9 + '@vitest/pretty-format': 3.1.1 magic-string: 0.30.17 pathe: 2.0.3 @@ -13519,7 +13519,7 @@ snapshots: dependencies: tinyspy: 3.0.2 - '@vitest/spy@3.0.9': + '@vitest/spy@3.1.1': dependencies: tinyspy: 3.0.2 @@ -13536,9 +13536,9 @@ snapshots: loupe: 3.1.2 tinyrainbow: 1.2.0 - '@vitest/utils@3.0.9': + '@vitest/utils@3.1.1': dependencies: - '@vitest/pretty-format': 3.0.9 + '@vitest/pretty-format': 3.1.1 loupe: 3.1.3 tinyrainbow: 2.0.0 @@ -14386,7 +14386,7 @@ snapshots: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.2 + loupe: 3.1.3 pathval: 2.0.0 chalk-template@0.4.0: @@ -15543,7 +15543,7 @@ snapshots: exit@0.1.2: {} - expect-type@1.1.0: {} + expect-type@1.2.1: {} expect@29.7.0: dependencies: @@ -16123,7 +16123,7 @@ snapshots: responselike: 3.0.0 type-fest: 4.26.1 - got@14.4.6: + got@14.4.7: dependencies: '@sindresorhus/is': 7.0.1 '@szmarczak/http-timer': 5.0.1 @@ -17284,7 +17284,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.3 + semver: 7.7.1 make-fetch-happen@13.0.1: dependencies: @@ -18385,7 +18385,7 @@ snapshots: optionalDependencies: nice-napi: 1.0.2 - pkce-challenge@4.1.0: {} + pkce-challenge@5.0.0: {} pkg-dir@4.2.0: dependencies: @@ -19567,7 +19567,7 @@ snapshots: statuses@2.0.1: {} - std-env@3.8.0: {} + std-env@3.9.0: {} stop-iteration-iterator@1.0.0: dependencies: @@ -20218,13 +20218,13 @@ snapshots: unist-util-stringify-position: 4.0.0 vfile-message: 4.0.2 - vite-node@3.0.9(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3): + vite-node@3.1.1(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3): dependencies: cac: 6.7.14 debug: 4.4.0(supports-color@8.1.1) es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vite: 6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) transitivePeerDependencies: - '@types/node' - jiti @@ -20241,7 +20241,7 @@ snapshots: vite-plugin-turbosnap@1.0.3: {} - vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3): + vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3): dependencies: esbuild: 0.25.2 postcss: 8.5.3 @@ -20253,34 +20253,34 @@ snapshots: terser: 5.39.0 tsx: 4.19.3 - vitest-fetch-mock@0.3.0(encoding@0.1.13)(vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)): + vitest-fetch-mock@0.3.0(encoding@0.1.13)(vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)): dependencies: cross-fetch: 4.0.0(encoding@0.1.13) - vitest: 3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vitest: 3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) transitivePeerDependencies: - encoding - vitest@3.0.9(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3): + vitest@3.1.1(@types/debug@4.1.12)(@types/node@22.13.14)(happy-dom@17.4.4)(jsdom@26.0.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3): dependencies: - '@vitest/expect': 3.0.9 - '@vitest/mocker': 3.0.9(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) - '@vitest/pretty-format': 3.0.9 - '@vitest/runner': 3.0.9 - '@vitest/snapshot': 3.0.9 - '@vitest/spy': 3.0.9 - '@vitest/utils': 3.0.9 + '@vitest/expect': 3.1.1 + '@vitest/mocker': 3.1.1(msw@2.7.3(@types/node@22.13.14)(typescript@5.8.2))(vite@6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3)) + '@vitest/pretty-format': 3.1.1 + '@vitest/runner': 3.1.1 + '@vitest/snapshot': 3.1.1 + '@vitest/spy': 3.1.1 + '@vitest/utils': 3.1.1 chai: 5.2.0 debug: 4.4.0(supports-color@8.1.1) - expect-type: 1.1.0 + expect-type: 1.2.1 magic-string: 0.30.17 pathe: 2.0.3 - std-env: 3.8.0 + std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.2.3(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) - vite-node: 3.0.9(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vite: 6.2.4(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) + vite-node: 3.1.1(@types/node@22.13.14)(sass@1.86.0)(terser@5.39.0)(tsx@4.19.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -20308,7 +20308,7 @@ snapshots: vscode-languageclient@9.0.1: dependencies: minimatch: 5.1.6 - semver: 7.6.3 + semver: 7.7.1 vscode-languageserver-protocol: 3.17.5 vscode-languageserver-protocol@3.17.5: @@ -20372,7 +20372,7 @@ snapshots: transitivePeerDependencies: - supports-color - vue-gtag@3.1.1(vue@3.5.13(typescript@5.8.2)): + vue-gtag@3.2.0(vue@3.5.13(typescript@5.8.2)): dependencies: vue: 3.5.13(typescript@5.8.2)