diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0f9dc43e..e89a0ea7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,8 +65,8 @@ jobs: - name: Run test suite run: pnpm test - - name: Test types - run: pnpm test:types + # - name: Test types + # run: pnpm test:types # - name: Test playground types # run: pnpm test:types:playground diff --git a/CHANGELOG.md b/CHANGELOG.md index 764c6e7f..86a1104f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,221 @@ # Changelog +## v0.5.10 + +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.9...v0.5.10) + +### 🚀 Enhancements + +- Add apple provider ([#328](https://github.com/atinux/nuxt-auth-utils/pull/328)) + +### 📖 Documentation + +- Typo ([8b132e4](https://github.com/atinux/nuxt-auth-utils/commit/8b132e4)) +- Improve example ([9d191a1](https://github.com/atinux/nuxt-auth-utils/commit/9d191a1)) + +### ❤️ Contributors + +- David ([@GreenmeisterDavid](http://github.com/GreenmeisterDavid)) +- Sébastien Chopin ([@atinux](http://github.com/atinux)) + +## v0.5.9 + +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.8...v0.5.9) + +### 🚀 Enhancements + +- Add support for websocket handler ([#327](https://github.com/atinux/nuxt-auth-utils/pull/327)) + +### ❤️ Contributors + +- Sébastien Chopin ([@atinux](http://github.com/atinux)) + +## v0.5.8 + +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.7...v0.5.8) + +### 🚀 Enhancements + +- Self-hosted Gitlab instances ([#323](https://github.com/atinux/nuxt-auth-utils/pull/323)) +- Add Line OAuth provider ([#312](https://github.com/atinux/nuxt-auth-utils/pull/312)) +- Add atlassian oauth-provider ([#307](https://github.com/atinux/nuxt-auth-utils/pull/307), [#308](https://github.com/atinux/nuxt-auth-utils/pull/308)) + +### 🩹 Fixes + +- Add discord oauth error ([#316](https://github.com/atinux/nuxt-auth-utils/pull/316)) +- Normalise errors when user not accessible ([c98ea5d](https://github.com/atinux/nuxt-auth-utils/commit/c98ea5d)) + +### 🏡 Chore + +- Disable test:types ([ec9b727](https://github.com/atinux/nuxt-auth-utils/commit/ec9b727)) +- Rename jtw to jwt ([#326](https://github.com/atinux/nuxt-auth-utils/pull/326)) +- Update deps ([9cd39e8](https://github.com/atinux/nuxt-auth-utils/commit/9cd39e8)) + +### ❤️ Contributors + +- Sébastien Chopin +- Jonas ([@jonasfroeller](http://github.com/jonasfroeller)) +- Devskillpro ([@devskillpro](http://github.com/devskillpro)) +- Exit ([@exitss](http://github.com/exitss)) +- Benjamin Stauß +- Thijs Wijnmaalen + +## v0.5.7 + +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.6...v0.5.7) + +### 🚀 Enhancements + +- Keycloak internal server URL ([ac61ae5](https://github.com/atinux/nuxt-auth-utils/commit/ac61ae5)) +- **cognito:** Integrate OpenID Connect discovery for improved OAuth flow ([7a01cc3](https://github.com/atinux/nuxt-auth-utils/commit/7a01cc3)) +- Add hubspot provider ([1a79baf](https://github.com/atinux/nuxt-auth-utils/commit/1a79baf)) + +### 🩹 Fixes + +- Make sure the required env is checked ([#306](https://github.com/atinux/nuxt-auth-utils/pull/306)) + +### 🏡 Chore + +- Lint fix ([3532d48](https://github.com/atinux/nuxt-auth-utils/commit/3532d48)) +- Update deps ([f6f6b71](https://github.com/atinux/nuxt-auth-utils/commit/f6f6b71)) +- Update deps ([7d09be5](https://github.com/atinux/nuxt-auth-utils/commit/7d09be5)) +- Lint fix ([c9a3716](https://github.com/atinux/nuxt-auth-utils/commit/c9a3716)) + +### ❤️ Contributors + +- Sébastien Chopin ([@atinux](http://github.com/atinux)) +- Guilherme Guimarães +- Gage Keenan ([@kilakewe](http://github.com/kilakewe)) +- Carl Gödecken ([@MasterCarl](http://github.com/MasterCarl)) + +## v0.5.6 + +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.5...v0.5.6) + +### 🚀 Enhancements + +- Adding `organization_id` option for WorkOS provider ([677b226](https://github.com/atinux/nuxt-auth-utils/commit/677b226)) +- Add strava oauth provider ([96363b2](https://github.com/atinux/nuxt-auth-utils/commit/96363b2)) + +### 🩹 Fixes + +- Seznam config ([90d0d18](https://github.com/atinux/nuxt-auth-utils/commit/90d0d18)) +- **instagram:** Oauth provider ([192e0e7](https://github.com/atinux/nuxt-auth-utils/commit/192e0e7)) + +### 🏡 Chore + +- Update deps ([fb894bf](https://github.com/atinux/nuxt-auth-utils/commit/fb894bf)) +- Update deps" ([f4ef630](https://github.com/atinux/nuxt-auth-utils/commit/f4ef630)) + +### ❤️ Contributors + +- Sébastien Chopin ([@atinux](http://github.com/atinux)) +- Sandro Circi ([@sandros94](http://github.com/sandros94)) +- Justpeterpan +- David Stranava ([@stranavad](http://github.com/stranavad)) +- Brian Coleman ([@brianacdev](http://github.com/brianacdev)) + +## v0.5.5 + +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.4...v0.5.5) + +### 🚀 Enhancements + +- Add workos oauth provider ([bfa2a88](https://github.com/atinux/nuxt-auth-utils/commit/bfa2a88)) +- Add seznam oauth provider ([#285](https://github.com/atinux/nuxt-auth-utils/pull/285)) +- **webauthn:** Add event to validateUser to track authenticated users ([#287](https://github.com/atinux/nuxt-auth-utils/pull/287)) + +### 🏡 Chore + +- Update packageManager to pnpm 9.13.2 ([fc0d991](https://github.com/atinux/nuxt-auth-utils/commit/fc0d991)) + +### ❤️ Contributors + +- Sébastien Chopin ([@atinux](http://github.com/atinux)) +- David Stranava ([@stranavad](http://github.com/stranavad)) +- Brian Coleman + +## v0.5.4 + +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.3...v0.5.4) + +### 🚀 Enhancements + +- Forward set-cookie header for `useUserSession().clear()` ([#282](https://github.com/atinux/nuxt-auth-utils/pull/282)) + +### 🏡 Chore + +- Add SessionConfig type ([7633e27](https://github.com/atinux/nuxt-auth-utils/commit/7633e27)) +- Fix types ([5d58645](https://github.com/atinux/nuxt-auth-utils/commit/5d58645)) +- Update deps ([ffafb2c](https://github.com/atinux/nuxt-auth-utils/commit/ffafb2c)) +- Rename jtw to jwt ([139197b](https://github.com/atinux/nuxt-auth-utils/commit/139197b)) + +### ❤️ Contributors + +- Sébastien Chopin ([@atinux](http://github.com/atinux)) + +## v0.5.3 + +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.2...v0.5.3) + +### 🚀 Enhancements + +- Add authentik provider ([33686af](https://github.com/atinux/nuxt-auth-utils/commit/33686af)) + +### 🩹 Fixes + +- **composable:** Use same context for `clear` and `fetch` ([#278](https://github.com/atinux/nuxt-auth-utils/pull/278)) + +### 🏡 Chore + +- Update deps ([6072a74](https://github.com/atinux/nuxt-auth-utils/commit/6072a74)) + +### ❤️ Contributors + +- Sébastien Chopin ([@atinux](http://github.com/atinux)) +- Aoor9 ([@aoor9](http://github.com/aoor9)) + +## v0.5.2 + +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.1...v0.5.2) + +### 🚀 Enhancements + +- Zitadel provider implementation ([d4c0b5a](https://github.com/atinux/nuxt-auth-utils/commit/d4c0b5a)) + +### 🏡 Chore + +- **release:** V0.5.1 ([727b5b4](https://github.com/atinux/nuxt-auth-utils/commit/727b5b4)) +- Fix package format ([247ec8f](https://github.com/atinux/nuxt-auth-utils/commit/247ec8f)) +- **playground:** Max height for dropdow ([10951b0](https://github.com/atinux/nuxt-auth-utils/commit/10951b0)) +- Update deps ([3e9422f](https://github.com/atinux/nuxt-auth-utils/commit/3e9422f)) +- **playground:** Update deps ([1d0d7f7](https://github.com/atinux/nuxt-auth-utils/commit/1d0d7f7)) +- Fix types ([a13b054](https://github.com/atinux/nuxt-auth-utils/commit/a13b054)) + +### ❤️ Contributors + +- Sébastien Chopin ([@atinux](http://github.com/atinux)) +- Velka ([@Velka-DEV](http://github.com/Velka-DEV)) + +## v0.5.1 + +[compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.5.0...v0.5.1) + +### 🩹 Fixes + +- `useWebAuthn` composable registration & fix `allowCredentials` / `excludeCredentials` option ([#266](https://github.com/atinux/nuxt-auth-utils/pull/266)) + +### 🏡 Chore + +- **release:** V0.5.0 ([404acc6](https://github.com/atinux/nuxt-auth-utils/commit/404acc6)) +- Update deps ([8947e40](https://github.com/atinux/nuxt-auth-utils/commit/8947e40)) + +### ❤️ Contributors + +- Sébastien Chopin ([@atinux](http://github.com/atinux)) +- Gerben Mulder + ## v0.5.0 [compare changes](https://github.com/atinux/nuxt-auth-utils/compare/v0.4.4...v0.5.0) diff --git a/README.md b/README.md index 7f2b79ea..180834b7 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,14 @@ Add Authentication to Nuxt applications with secured & sealed cookies sessions. ## Features - [Hybrid Rendering](#hybrid-rendering) support (SSR / CSR / SWR / Prerendering) -- [20+ OAuth Providers](#supported-oauth-providers) +- [30+ OAuth Providers](#supported-oauth-providers) - [Password Hashing](#password-hashing) - [WebAuthn (passkey)](#webauthn-passkey) - [`useUserSession()` Vue composable](#vue-composable) - [Tree-shakable server utils](#server-utils) - [`` component](#authstate-component) - [Extendable with hooks](#extend-session) +- [WebSocket support](#websocket-support) It has few dependencies (only from [UnJS](https://github.com/unjs)), run on multiple JS environments (Node, Deno, Workers) and is fully typed with TypeScript. @@ -204,7 +205,10 @@ It can also be set using environment variables: #### Supported OAuth Providers +- Apple +- Atlassian - Auth0 +- Authentik - AWS Cognito - Battle.net - Discord @@ -213,21 +217,27 @@ It can also be set using environment variables: - GitHub - GitLab - Google +- Hubspot - Instagram - Keycloak +- Line - Linear - LinkedIn - Microsoft - PayPal - Polar +- Seznam - Spotify - Steam +- Strava - TikTok - Twitch - VK +- WorkOS - X (Twitter) - XSUAA - Yandex +- Zitadel You can add your favorite provider by creating a new file in [src/runtime/server/lib/oauth/](./src/runtime/server/lib/oauth/). @@ -348,10 +358,21 @@ The following code does not include the actual database queries, but shows the g import { z } from 'zod' export default defineWebAuthnRegisterEventHandler({ // optional - validateUser: z.object({ - // we want the userName to be a valid email - userName: z.string().email() - }).parse, + async validateUser(userBody, event) { + // bonus: check if the user is already authenticated to link a credential to his account + // We first check if the user is already authenticated by getting the session + // And verify that the email is the same as the one in session + const session = await getUserSession(event) + if (session.user?.email && session.user.email !== body.userName) { + throw createError({ statusCode: 400, message: 'Email not matching curent session' }) + } + + // If he registers a new account with credentials + return z.object({ + // we want the userName to be a valid email + userName: z.string().email() + }).parse(userBody) + }, async onSuccess(event, { credential, user }) { // The credential creation has been successful // We need to create a user if it does not exist @@ -593,6 +614,65 @@ You can use the `placeholder` slot to show a placeholder on server-side and whil If you are caching your routes with `routeRules`, please make sure to use [Nitro](https://github.com/unjs/nitro) >= `2.9.7` to support the client-side fetching of the user session. +## WebSocket Support + +Nuxt Auth Utils is compatible with [Nitro WebSockets](https://nitro.build/guide/websocket). + +Make sure to enable the `experimental.websocket` option in your `nuxt.config.ts`: + +```ts +export default defineNuxtConfig({ + nitro: { + experimental: { + websocket: true + } + } +}) +``` + +You can use the `requireUserSession` function in the `upgrade` function to check if the user is authenticated before upgrading the WebSocket connection. + +```ts +// server/routes/ws.ts +export default defineWebSocketHandler({ + async upgrade(request) { + // Make sure the user is authenticated before upgrading the WebSocket connection + await requireUserSession(request) + }, + async open(peer) { + const { user } = await requireUserSession(peer) + + peer.send(`Hello, ${user.name}!`) + }, + message(peer, message) { + peer.send(`Echo: ${message}`) + }, +}) +``` + +Then, in your application, you can use the [useWebSocket](https://vueuse.org/core/useWebSocket/) composable to connect to the WebSocket: + +```vue + + + +``` + ## Configuration ### Session Storage diff --git a/package.json b/package.json index 74d2699e..f1474bcf 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,14 @@ { "name": "nuxt-auth-utils", - "version": "0.5.0", + "version": "0.5.10", "description": "Add Authentication to Nuxt applications with secured & sealed cookies sessions.", - "repository": "atinux/nuxt-auth-utils", + "repository": { + "type": "git", + "url": "git+https://github.com/atinux/nuxt-auth-utils.git" + }, "license": "MIT", "type": "module", - "packageManager": "pnpm@9.12.2", + "packageManager": "pnpm@9.15.4", "exports": { ".": { "types": "./dist/types.d.ts", @@ -33,12 +36,15 @@ }, "dependencies": { "@adonisjs/hash": "^9.0.5", - "@nuxt/kit": "^3.13.2", + "@nuxt/kit": "^3.15.2", "defu": "^6.1.4", + "h3": "^1.14.0", "hookable": "^5.5.3", + "jose": "^5.9.6", "ofetch": "^1.4.1", "ohash": "^1.1.4", - "pathe": "^1.1.2", + "openid-client": "^6.1.7", + "pathe": "^2.0.2", "scule": "^1.3.0", "uncrypto": "^0.1.3" }, @@ -55,20 +61,20 @@ } }, "devDependencies": { - "@iconify-json/simple-icons": "^1.2.9", + "@iconify-json/simple-icons": "^1.2.21", "@nuxt/devtools": "latest", - "@nuxt/eslint-config": "^0.6.0", + "@nuxt/eslint-config": "^0.7.5", "@nuxt/module-builder": "^0.8.4", - "@nuxt/schema": "^3.13.2", - "@nuxt/test-utils": "^3.14.4", - "@nuxt/ui": "^2.18.7", - "@nuxt/ui-pro": "^1.4.4", - "@simplewebauthn/types": "^11.0.0", + "@nuxt/schema": "^3.15.2", + "@nuxt/test-utils": "^3.15.4", + "@nuxt/ui": "^2.21.0", + "@nuxt/ui-pro": "^1.7.0", + "@simplewebauthn/types": "^12.0.0", "changelogen": "^0.5.7", - "eslint": "^9.13.0", - "nuxt": "^3.13.2", - "typescript": "^5.6.3", - "vitest": "^2.1.3", - "vue-tsc": "^2.1.6" + "eslint": "^9.18.0", + "nuxt": "^3.15.2", + "typescript": "5.6.3", + "vitest": "^3.0.3", + "vue-tsc": "^2.2.0" } } diff --git a/playground/.env.example b/playground/.env.example index a12b96a5..0f1d0b98 100644 --- a/playground/.env.example +++ b/playground/.env.example @@ -32,6 +32,7 @@ NUXT_OAUTH_BATTLEDOTNET_CLIENT_SECRET= NUXT_OAUTH_KEYCLOAK_CLIENT_ID= NUXT_OAUTH_KEYCLOAK_CLIENT_SECRET= NUXT_OAUTH_KEYCLOAK_SERVER_URL= +NUXT_OAUTH_KEYCLOAK_SERVER_URL_INTERNAL= NUXT_OAUTH_KEYCLOAK_REALM= # LinkedIn NUXT_OAUTH_LINKEDIN_CLIENT_ID= @@ -50,6 +51,9 @@ NUXT_OAUTH_INSTAGRAM_CLIENT_SECRET= # PayPal NUXT_OAUTH_PAYPAL_CLIENT_ID= NUXT_OAUTH_PAYPAL_CLIENT_SECRET= +# Seznam +NUXT_OAUTH_SEZNAM_CLIENT_ID= +NUXT_OAUTH_SEZNAM_CLIENT_SECRET= # Steam NUXT_OAUTH_STEAM_API_KEY= # X @@ -74,6 +78,40 @@ NUXT_OAUTH_DROPBOX_CLIENT_SECRET= # Polar NUXT_OAUTH_POLAR_CLIENT_ID= NUXT_OAUTH_POLAR_CLIENT_SECRET= +# WorkOS +NUXT_OAUTH_WORKOS_CLIENT_ID= +NUXT_OAUTH_WORKOS_CLIENT_SECRET= +NUXT_OAUTH_WORKOS_CONNECTION_ID= +NUXT_OAUTH_WORKOS_REDIRECT_URL= # Linear NUXT_OAUTH_LINEAR_CLIENT_ID= NUXT_OAUTH_LINEAR_CLIENT_SECRET= +# Zitadel +NUXT_OAUTH_ZITADEL_CLIENT_ID= +NUXT_OAUTH_ZITADEL_CLIENT_SECRET= +NUXT_OAUTH_ZITADEL_DOMAIN= +# Authentik +NUXT_OAUTH_AUTHENTIK_CLIENT_ID= +NUXT_OAUTH_AUTHENTIK_CLIENT_SECRET= +NUXT_OAUTH_AUTHENTIK_DOMAIN= +# Strava +NUXT_OAUTH_STRAVA_CLIENT_ID= +NUXT_OAUTH_STRAVA_CLIENT_SECRET= +# Hubspot +NUXT_OAUTH_HUBSPOT_CLIENT_ID= +NUXT_OAUTH_HUBSPOT_CLIENT_SECRET= +NUXT_OAUTH_HUBSPOT_REDIRECT_URL= +# Atlassian +NUXT_OAUTH_ATLASSIAN_CLIENT_ID= +NUXT_OAUTH_ATLASSIAN_CLIENT_SECRET= +NUXT_OAUTH_ATLASSIAN_REDIRECT_URL= +# Line +NUXT_OAUTH_LINE_CLIENT_ID= +NUXT_OAUTH_LINE_CLIENT_SECRET= +NUXT_OAUTH_LINE_REDIRECT_URL= +# Apple +NUXT_OAUTH_APPLE_PRIVATE_KEY= +NUXT_OAUTH_APPLE_KEY_ID= +NUXT_OAUTH_APPLE_TEAM_ID= +NUXT_OAUTH_APPLE_CLIENT_ID= +NUXT_OAUTH_APPLE_REDIRECT_URL= diff --git a/playground/app.vue b/playground/app.vue index e6d79706..5fdbd2c2 100644 --- a/playground/app.vue +++ b/playground/app.vue @@ -33,6 +33,12 @@ const providers = computed(() => disabled: Boolean(user.value?.gitlab), icon: 'i-simple-icons-gitlab', }, + { + label: user.value?.line || 'Line', + to: '/auth/line', + disabled: Boolean(user.value?.line), + icon: 'i-simple-icons-line', + }, { label: user.value?.linear || 'Linear', to: '/auth/linear', @@ -147,6 +153,54 @@ const providers = computed(() => disabled: Boolean(user.value?.polar), icon: 'i-iconoir-polar-sh', }, + { + label: user.value?.workos || 'WorkOS', + to: '/auth/workos', + disabled: Boolean(user.value?.workos), + icon: 'i-logos-workos-icon', + }, + { + label: user.value?.zitadel || 'Zitadel', + to: '/auth/zitadel', + disabled: Boolean(user.value?.zitadel), + icon: 'i-gravity-ui-lock', + }, + { + label: user.value?.authentik || 'Authentik', + to: '/auth/authentik', + disabled: Boolean(user.value?.authentik), + icon: 'i-simple-icons-authentik', + }, + { + label: user.value?.seznam || 'Seznam', + to: '/auth/seznam', + disabled: Boolean(user.value?.seznam), + icon: 'i-gravity-ui-lock', + }, + { + label: user.value?.strava || 'Strava', + to: '/auth/strava', + disabled: Boolean(user.value?.strava), + icon: 'i-simple-icons-strava', + }, + { + label: user.value?.hubspot || 'HubSpot', + to: '/auth/hubspot', + disabled: Boolean(user.value?.hubspot), + icon: 'i-simple-icons-hubspot', + }, + { + label: user.value?.atlassian || 'Atlassian', + to: '/auth/atlassian', + disabled: Boolean(user.value?.atlassian), + icon: 'i-simple-icons-atlassian', + }, + { + label: user.value?.apple || 'Apple', + to: '/auth/apple', + disabled: Boolean(user.value?.apple), + icon: 'i-simple-icons-apple', + }, ].map(p => ({ ...p, prefetch: false, @@ -169,7 +223,10 @@ const providers = computed(() => - + + } + + interface SecureSessionData { } } diff --git a/playground/middleware/jwt.global.ts b/playground/middleware/jwt.global.ts new file mode 100644 index 00000000..240b7ee6 --- /dev/null +++ b/playground/middleware/jwt.global.ts @@ -0,0 +1,63 @@ +import { appendResponseHeader } from 'h3' +import { parse, parseSetCookie, serialize } from 'cookie-es' +import type { JwtData } from '@tsndr/cloudflare-worker-jwt' +import { decode } from '@tsndr/cloudflare-worker-jwt' + +export default defineNuxtRouteMiddleware(async () => { + const nuxtApp = useNuxtApp() + // Don't run on client hydration when server rendered + if (import.meta.client && nuxtApp.isHydrating && nuxtApp.payload.serverRendered) return + + const { session, clear: clearSession, fetch: fetchSession } = useUserSession() + // Ignore if no tokens + if (!session.value?.jwt) return + + const serverEvent = useRequestEvent() + const runtimeConfig = useRuntimeConfig() + const { accessToken, refreshToken } = session.value.jwt + + const accessPayload = decode(accessToken) + const refreshPayload = decode(refreshToken) + + // Both tokens expired, clearing session + if (isExpired(accessPayload) && isExpired(refreshPayload)) { + console.info('both tokens expired, clearing session') + await clearSession() + // return navigateTo('/login') + } + // Access token expired, refreshing + else if (isExpired(accessPayload)) { + console.info('access token expired, refreshing') + await useRequestFetch()('/api/jwt/refresh', { + method: 'POST', + onResponse({ response: { headers } }) { + // Forward the Set-Cookie header to the main server event + if (import.meta.server && serverEvent) { + for (const setCookie of headers.getSetCookie()) { + appendResponseHeader(serverEvent, 'Set-Cookie', setCookie) + // Update session cookie for next fetch requests + const { name, value } = parseSetCookie(setCookie) + if (name === runtimeConfig.session.name) { + // console.log('updating headers.cookie to', value) + const cookies = parse(serverEvent.headers.get('cookie') || '') + // set or overwrite existing cookie + cookies[name] = value + // update cookie event header for future requests + serverEvent.headers.set('cookie', Object.entries(cookies).map(([name, value]) => serialize(name, value)).join('; ')) + // Also apply to serverEvent.node.req.headers + if (serverEvent.node?.req?.headers) { + serverEvent.node.req.headers['cookie'] = serverEvent.headers.get('cookie') || '' + } + } + } + } + }, + }) + // refresh the session + await fetchSession() + } +}) + +function isExpired(payload: JwtData) { + return payload.payload?.exp && payload.payload.exp < (Date.now() / 1000) +} diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts index 566d2bb6..7ea3d701 100644 --- a/playground/nuxt.config.ts +++ b/playground/nuxt.config.ts @@ -1,7 +1,7 @@ export default defineNuxtConfig({ // ssr: false, extends: ['@nuxt/ui-pro'], - modules: ['nuxt-auth-utils', '@nuxt/ui'], + modules: ['nuxt-auth-utils', '@nuxt/ui', '@vueuse/nuxt'], imports: { autoImport: true, }, @@ -21,6 +21,7 @@ export default defineNuxtConfig({ experimental: { database: true, // tasks: true, + websocket: true, }, // scheduledTasks: { // '*/1 * * * *': ['clear-sessions'], // every minute clear overdue sessions diff --git a/playground/package.json b/playground/package.json index ad7d94db..5a566b00 100644 --- a/playground/package.json +++ b/playground/package.json @@ -8,13 +8,20 @@ "generate": "nuxi generate" }, "dependencies": { - "@iconify-json/gravity-ui": "^1.2.1", - "@iconify-json/iconoir": "^1.2.1", - "nuxt": "^3.13.2", + "@iconify-json/gravity-ui": "^1.2.4", + "@iconify-json/iconoir": "^1.2.7", + "@iconify-json/logos": "^1.2.4", + "@tsndr/cloudflare-worker-jwt": "^3.1.3", + "@vueuse/core": "^12.5.0", + "@vueuse/nuxt": "^12.5.0", + "nuxt": "^3.15.2", "nuxt-auth-utils": "latest", - "zod": "^3.23.8" + "zod": "^3.24.1" }, "devDependencies": { - "better-sqlite3": "^11.2.1" + "better-sqlite3": "^11.8.1" + }, + "resolutions": { + "h3": "^1.14.0" } } diff --git a/playground/pages/about.vue b/playground/pages/about.vue new file mode 100644 index 00000000..835c3792 --- /dev/null +++ b/playground/pages/about.vue @@ -0,0 +1,12 @@ + diff --git a/playground/pages/index.vue b/playground/pages/index.vue index 4717a3c1..d89d78b7 100644 --- a/playground/pages/index.vue +++ b/playground/pages/index.vue @@ -9,14 +9,32 @@ ... - - Secret page - +
+ + Secret page + + + About page + + + Sockets + +
diff --git a/playground/pages/sockets.vue b/playground/pages/sockets.vue new file mode 100644 index 00000000..850e4934 --- /dev/null +++ b/playground/pages/sockets.vue @@ -0,0 +1,26 @@ + + + diff --git a/playground/server/api/jwt/create.post.ts b/playground/server/api/jwt/create.post.ts new file mode 100644 index 00000000..4cc24467 --- /dev/null +++ b/playground/server/api/jwt/create.post.ts @@ -0,0 +1,49 @@ +import jwt from '@tsndr/cloudflare-worker-jwt' + +export default defineEventHandler(async (event) => { + // Get user from session + const user = await getUserSession(event) + if (!user) { + throw createError({ + statusCode: 401, + message: 'Unauthorized', + }) + } + + if (!process.env.NUXT_SESSION_PASSWORD) { + throw createError({ + statusCode: 500, + message: 'Session secret not configured', + }) + } + + // Generate tokens + const accessToken = await jwt.sign( + { + hello: 'world', + exp: Math.floor(Date.now() / 1000) + 5, // 30 seconds + }, + process.env.NUXT_SESSION_PASSWORD, + ) + + const refreshToken = await jwt.sign( + { + exp: Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 7, // 7 days + }, + `${process.env.NUXT_SESSION_PASSWORD}-secret`, + ) + + await setUserSession(event, { + jwt: { + accessToken, + refreshToken, + }, + loggedInAt: Date.now(), + }) + + // Return tokens + return { + accessToken, + refreshToken, + } +}) diff --git a/playground/server/api/jwt/payload.get.ts b/playground/server/api/jwt/payload.get.ts new file mode 100644 index 00000000..4fc042fc --- /dev/null +++ b/playground/server/api/jwt/payload.get.ts @@ -0,0 +1,23 @@ +import jwt from '@tsndr/cloudflare-worker-jwt' + +export default eventHandler(async (event) => { + const session = await getUserSession(event) + if (!session.jwt?.accessToken) { + throw createError({ + statusCode: 401, + message: 'Unauthorized', + }) + } + + try { + return await jwt.verify(session.jwt.accessToken, process.env.NUXT_SESSION_PASSWORD!, { + throwError: true, + }) + } + catch (err) { + throw createError({ + statusCode: 401, + message: (err as Error).message, + }) + } +}) diff --git a/playground/server/api/jwt/refresh.post.ts b/playground/server/api/jwt/refresh.post.ts new file mode 100644 index 00000000..efd2f5a5 --- /dev/null +++ b/playground/server/api/jwt/refresh.post.ts @@ -0,0 +1,39 @@ +import jwt from '@tsndr/cloudflare-worker-jwt' + +export default eventHandler(async (event) => { + const session = await getUserSession(event) + if (!session.jwt?.accessToken && !session.jwt?.refreshToken) { + throw createError({ + statusCode: 401, + message: 'Unauthorized', + }) + } + + if (!await jwt.verify(session.jwt.refreshToken, `${process.env.NUXT_SESSION_PASSWORD!}-secret`)) { + throw createError({ + statusCode: 401, + message: 'refresh token is invalid', + }) + } + + const accessToken = await jwt.sign( + { + hello: 'world', + exp: Math.floor(Date.now() / 1000) + 30, // 30 seconds + }, + process.env.NUXT_SESSION_PASSWORD!, + ) + + await setUserSession(event, { + jwt: { + accessToken, + refreshToken: session.jwt.refreshToken, + }, + loggedInAt: Date.now(), + }) + + return { + accessToken, + refreshToken: session.jwt.refreshToken, + } +}) diff --git a/playground/server/api/webauthn/register.post.ts b/playground/server/api/webauthn/register.post.ts index 4f305dfd..563d7f58 100644 --- a/playground/server/api/webauthn/register.post.ts +++ b/playground/server/api/webauthn/register.post.ts @@ -1,17 +1,27 @@ import { z } from 'zod' export default defineWebAuthnRegisterEventHandler({ - validateUser: z.object({ - userName: z.string().email().trim(), - displayName: z.string().trim().optional(), - company: z.string().trim().optional(), - }).parse, + async validateUser(userBody, event) { + const session = await getUserSession(event) + if (session.user?.email && session.user.email !== userBody.userName) { + throw createError({ statusCode: 400, message: 'Email not matching curent session' }) + } + + return z.object({ + userName: z.string().email().trim(), + displayName: z.string().trim().optional(), + company: z.string().trim().optional(), + }).parse(userBody) + }, async onSuccess(event, { credential, user }) { const db = useDatabase() try { await db.sql`BEGIN TRANSACTION` - await db.sql`INSERT INTO users (email) VALUES (${user.userName})` - const { rows: [dbUser] } = await db.sql`SELECT * FROM users WHERE email = ${user.userName}` + let { rows: [dbUser] } = await db.sql`SELECT * FROM users WHERE email = ${user.userName}` + if (!dbUser) { + await db.sql`INSERT INTO users (email) VALUES (${user.userName})` + dbUser = (await db.sql`SELECT * FROM users WHERE email = ${user.userName}`).rows?.[0] + } await db.sql` INSERT INTO credentials ( userId, diff --git a/playground/server/routes/auth/apple.ts b/playground/server/routes/auth/apple.ts new file mode 100644 index 00000000..b5032a96 --- /dev/null +++ b/playground/server/routes/auth/apple.ts @@ -0,0 +1,16 @@ +export default defineOAuthAppleEventHandler({ + async onSuccess(event, { user, tokens }) { + const userToSet = user?.name?.firstName && user?.name?.lastName + ? `${user.name.firstName} ${user.name.lastName}` + : user?.name?.firstName || user?.name?.lastName || tokens.email || tokens.sub + + await setUserSession(event, { + user: { + apple: userToSet, + }, + loggedInAt: Date.now(), + }) + + return sendRedirect(event, '/') + }, +}) diff --git a/playground/server/routes/auth/atlassian.get.ts b/playground/server/routes/auth/atlassian.get.ts new file mode 100644 index 00000000..4acc7542 --- /dev/null +++ b/playground/server/routes/auth/atlassian.get.ts @@ -0,0 +1,12 @@ +export default defineOAuthAtlassianEventHandler({ + async onSuccess(event, { user }) { + await setUserSession(event, { + user: { + email: user.email, + }, + loggedInAt: Date.now(), + }) + + return sendRedirect(event, '/') + }, +}) diff --git a/playground/server/routes/auth/authentik.get.ts b/playground/server/routes/auth/authentik.get.ts new file mode 100644 index 00000000..1c6177b2 --- /dev/null +++ b/playground/server/routes/auth/authentik.get.ts @@ -0,0 +1,12 @@ +export default defineOAuthAuthentikEventHandler({ + async onSuccess(event, { user }) { + await setUserSession(event, { + user: { + authentik: user.preferred_username, + }, + loggedInAt: Date.now(), + }) + + return sendRedirect(event, '/') + }, +}) diff --git a/playground/server/routes/auth/hubspot.get.ts b/playground/server/routes/auth/hubspot.get.ts new file mode 100644 index 00000000..ddad1f94 --- /dev/null +++ b/playground/server/routes/auth/hubspot.get.ts @@ -0,0 +1,15 @@ +export default defineOAuthHubspotEventHandler({ + config: { + scope: ['oauth'], + }, + async onSuccess(event, { user }) { + await setUserSession(event, { + user: { + hubspot: user.email, + }, + loggedInAt: Date.now(), + }) + + return sendRedirect(event, '/') + }, +}) diff --git a/playground/server/routes/auth/line.get.ts b/playground/server/routes/auth/line.get.ts new file mode 100644 index 00000000..53ba2df0 --- /dev/null +++ b/playground/server/routes/auth/line.get.ts @@ -0,0 +1,12 @@ +export default defineOAuthLineEventHandler({ + async onSuccess(event, { user }) { + await setUserSession(event, { + user: { + line: user.userId, + }, + loggedInAt: Date.now(), + }) + + return sendRedirect(event, '/') + }, +}) diff --git a/playground/server/routes/auth/seznam.get.ts b/playground/server/routes/auth/seznam.get.ts new file mode 100644 index 00000000..73cff796 --- /dev/null +++ b/playground/server/routes/auth/seznam.get.ts @@ -0,0 +1,15 @@ +export default defineOAuthSeznamEventHandler({ + config: { + scope: ['identity'], + }, + async onSuccess(event, { user }) { + await setUserSession(event, { + user: { + seznam: `${user.firstname} ${user.lastname}`, + }, + loggedInAt: Date.now(), + }) + + return sendRedirect(event, '/') + }, +}) diff --git a/playground/server/routes/auth/strava.get.ts b/playground/server/routes/auth/strava.get.ts new file mode 100644 index 00000000..7a7705e8 --- /dev/null +++ b/playground/server/routes/auth/strava.get.ts @@ -0,0 +1,16 @@ +export default defineOAuthStravaEventHandler({ + config: { + approvalPrompt: 'force', + scope: ['profile:read_all'], + }, + async onSuccess(event, { user }) { + await setUserSession(event, { + user: { + strava: `${user.firstname} ${user.lastname}`, + }, + loggedInAt: Date.now(), + }) + + return sendRedirect(event, '/') + }, +}) diff --git a/playground/server/routes/auth/workos.get.ts b/playground/server/routes/auth/workos.get.ts new file mode 100644 index 00000000..3519a18a --- /dev/null +++ b/playground/server/routes/auth/workos.get.ts @@ -0,0 +1,15 @@ +export default defineOAuthWorkOSEventHandler({ + config: { + screenHint: 'sign-up', + }, + async onSuccess(event, { user }) { + await setUserSession(event, { + user: { + workos: user.email, + }, + loggedInAt: Date.now(), + }) + + return sendRedirect(event, '/') + }, +}) diff --git a/playground/server/routes/auth/zitadel.get.ts b/playground/server/routes/auth/zitadel.get.ts new file mode 100644 index 00000000..31dc071c --- /dev/null +++ b/playground/server/routes/auth/zitadel.get.ts @@ -0,0 +1,15 @@ +export default defineOAuthZitadelEventHandler({ + config: { + scope: ['openid', 'email', 'profile'], + }, + async onSuccess(event, { user }) { + await setUserSession(event, { + user: { + zitadel: user.name, + }, + loggedInAt: Date.now(), + }) + + return sendRedirect(event, '/') + }, +}) diff --git a/playground/server/routes/ws.ts b/playground/server/routes/ws.ts new file mode 100644 index 00000000..d6f8eba1 --- /dev/null +++ b/playground/server/routes/ws.ts @@ -0,0 +1,13 @@ +export default defineWebSocketHandler({ + async upgrade(request) { + await requireUserSession(request) + }, + async open(peer) { + const { user } = await requireUserSession(peer) + const username = Object.values(user).filter(Boolean).join(' ') + peer.send(`Hello, ${username}!`) + }, + message(peer, message) { + peer.send(`Echo: ${message}`) + }, +}) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fa6ab573..e6e4a141 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^9.0.5 version: 9.0.5 '@nuxt/kit': - specifier: ^3.13.2 - version: 3.13.2(magicast@0.3.5)(rollup@3.29.4) + specifier: ^3.15.2 + version: 3.15.2(magicast@0.3.5)(rollup@4.31.0) '@simplewebauthn/browser': specifier: ^11.0.0 version: 11.0.0 @@ -23,18 +23,27 @@ importers: defu: specifier: ^6.1.4 version: 6.1.4 + h3: + specifier: ^1.14.0 + version: 1.14.0 hookable: specifier: ^5.5.3 version: 5.5.3 + jose: + specifier: ^5.9.6 + version: 5.9.6 ofetch: specifier: ^1.4.1 version: 1.4.1 ohash: specifier: ^1.1.4 version: 1.1.4 + openid-client: + specifier: ^6.1.7 + version: 6.1.7 pathe: - specifier: ^1.1.2 - version: 1.1.2 + specifier: ^2.0.2 + version: 2.0.2 scule: specifier: ^1.3.0 version: 1.3.0 @@ -43,72 +52,84 @@ importers: version: 0.1.3 devDependencies: '@iconify-json/simple-icons': - specifier: ^1.2.9 - version: 1.2.9 + specifier: ^1.2.21 + version: 1.2.21 '@nuxt/devtools': specifier: latest - version: 1.4.2(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) + version: 2.0.0-beta.3(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)) '@nuxt/eslint-config': - specifier: ^0.6.0 - version: 0.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) + specifier: ^0.7.5 + version: 0.7.5(@vue/compiler-sfc@3.5.13)(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) '@nuxt/module-builder': specifier: ^0.8.4 - version: 0.8.4(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(nuxi@3.13.2)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3)) + version: 0.8.4(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.31.0))(nuxi@3.20.0)(typescript@5.6.3)(vue-tsc@2.2.0(typescript@5.6.3)) '@nuxt/schema': - specifier: ^3.13.2 - version: 3.13.2(rollup@3.29.4) + specifier: ^3.15.2 + version: 3.15.2 '@nuxt/test-utils': - specifier: ^3.14.4 - version: 3.14.4(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) + specifier: ^3.15.4 + version: 3.15.4(@types/node@22.10.7)(jiti@2.4.2)(magicast@0.3.5)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vitest@3.0.3(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(yaml@2.7.0) '@nuxt/ui': - specifier: ^2.18.7 - version: 2.18.7(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) + specifier: ^2.21.0 + version: 2.21.0(change-case@5.4.4)(magicast@0.3.5)(rollup@4.31.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) '@nuxt/ui-pro': - specifier: ^1.4.4 - version: 1.4.4(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) + specifier: ^1.7.0 + version: 1.7.0(change-case@5.4.4)(magicast@0.3.5)(rollup@4.31.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) '@simplewebauthn/types': - specifier: ^11.0.0 - version: 11.0.0 + specifier: ^12.0.0 + version: 12.0.0 changelogen: specifier: ^0.5.7 version: 0.5.7(magicast@0.3.5) eslint: - specifier: ^9.13.0 - version: 9.13.0(jiti@2.3.3) + specifier: ^9.18.0 + version: 9.18.0(jiti@2.4.2) nuxt: - specifier: ^3.13.2 - version: 3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)) + specifier: ^3.15.2 + version: 3.15.2(@parcel/watcher@2.5.0)(@types/node@22.10.7)(better-sqlite3@11.8.1)(db0@0.2.1(better-sqlite3@11.8.1))(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.6.3))(yaml@2.7.0) typescript: - specifier: ^5.6.3 + specifier: 5.6.3 version: 5.6.3 vitest: - specifier: ^2.1.3 - version: 2.1.3(@types/node@22.5.5)(terser@5.33.0) + specifier: ^3.0.3 + version: 3.0.3(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) vue-tsc: - specifier: ^2.1.6 - version: 2.1.6(typescript@5.6.3) + specifier: ^2.2.0 + version: 2.2.0(typescript@5.6.3) playground: dependencies: '@iconify-json/gravity-ui': - specifier: ^1.2.1 - version: 1.2.1 + specifier: ^1.2.4 + version: 1.2.4 '@iconify-json/iconoir': - specifier: ^1.2.1 - version: 1.2.1 + specifier: ^1.2.7 + version: 1.2.7 + '@iconify-json/logos': + specifier: ^1.2.4 + version: 1.2.4 + '@tsndr/cloudflare-worker-jwt': + specifier: ^3.1.3 + version: 3.1.3 + '@vueuse/core': + specifier: ^12.5.0 + version: 12.5.0(typescript@5.6.3) + '@vueuse/nuxt': + specifier: ^12.5.0 + version: 12.5.0(magicast@0.3.5)(nuxt@3.15.2(@parcel/watcher@2.5.0)(@types/node@22.10.7)(better-sqlite3@11.8.1)(db0@0.2.1(better-sqlite3@11.8.1))(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.6.3))(yaml@2.7.0))(rollup@4.31.0)(typescript@5.6.3) nuxt: - specifier: ^3.13.2 - version: 3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(better-sqlite3@11.3.0)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)) + specifier: ^3.15.2 + version: 3.15.2(@parcel/watcher@2.5.0)(@types/node@22.10.7)(better-sqlite3@11.8.1)(db0@0.2.1(better-sqlite3@11.8.1))(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.6.3))(yaml@2.7.0) nuxt-auth-utils: specifier: latest - version: 0.3.8(magicast@0.3.5)(rollup@4.22.0) + version: 0.5.9(@simplewebauthn/browser@11.0.0)(@simplewebauthn/server@11.0.0)(magicast@0.3.5)(rollup@4.31.0) zod: - specifier: ^3.23.8 - version: 3.23.8 + specifier: ^3.24.1 + version: 3.24.1 devDependencies: better-sqlite3: - specifier: ^11.2.1 - version: 11.3.0 + specifier: ^11.8.1 + version: 11.8.1 packages: @@ -135,114 +156,109 @@ packages: '@antfu/install-pkg@0.4.1': resolution: {integrity: sha512-T7yB5QNG29afhWVkVq7XeIMBa5U/vs9mX69YqayXypPRmYzUmzwnYltplHmPtZ4HPCn+sQKeXW8I47wCbuBOjw==} + '@antfu/install-pkg@1.0.0': + resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==} + '@antfu/utils@0.7.10': resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} - '@babel/code-frame@7.24.7': - resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.25.4': - resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + '@babel/compat-data@7.26.5': + resolution: {integrity: sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==} engines: {node: '>=6.9.0'} - '@babel/core@7.25.2': - resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==} + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.25.6': - resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + '@babel/generator@7.26.5': + resolution: {integrity: sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.24.7': - resolution: {integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==} + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.25.2': - resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + '@babel/helper-compilation-targets@7.26.5': + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.25.4': - resolution: {integrity: sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==} + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-member-expression-to-functions@7.24.8': - resolution: {integrity: sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==} + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.24.7': - resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.25.2': - resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.24.7': - resolution: {integrity: sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==} + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.24.8': - resolution: {integrity: sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==} + '@babel/helper-plugin-utils@7.26.5': + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} engines: {node: '>=6.9.0'} - '@babel/helper-replace-supers@7.25.0': - resolution: {integrity: sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==} + '@babel/helper-replace-supers@7.26.5': + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.24.7': - resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': - resolution: {integrity: sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.24.8': - resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': - resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.24.8': - resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.25.6': - resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': - resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.25.6': - resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + '@babel/parser@7.26.5': + resolution: {integrity: sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-proposal-decorators@7.24.7': - resolution: {integrity: sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==} + '@babel/plugin-proposal-decorators@7.25.9': + resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-decorators@7.24.7': - resolution: {integrity: sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==} + '@babel/plugin-syntax-decorators@7.25.9': + resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.25.6': - resolution: {integrity: sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==} + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -252,55 +268,61 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.24.7': - resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.25.4': - resolution: {integrity: sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==} + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.25.2': - resolution: {integrity: sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==} + '@babel/plugin-transform-typescript@7.26.5': + resolution: {integrity: sha512-GJhPO0y8SD5EYVCy2Zr+9dSZcEgaSmq5BLR0Oc25TOEhC+ba49vUAGZFjy8v79z9E1mdldq4x9d1xgh4L1d5dQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/standalone@7.25.6': - resolution: {integrity: sha512-Kf2ZcZVqsKbtYhlA7sP0z5A3q5hmCVYMKMWRWNK/5OVwHIve3JY1djVRmIVAx8FMueLIfZGKQDIILK2w8zO4mg==} + '@babel/standalone@7.26.6': + resolution: {integrity: sha512-h1mkoNFYCqDkS+vTLGzsQYvp1v1qbuugk4lOtb/oyjArZ+EtreAaxcSYg3rSIzWZRQOjx4iqGe7A8NRYIMSTTw==} engines: {node: '>=6.9.0'} - '@babel/template@7.25.0': - resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.25.6': - resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + '@babel/traverse@7.26.5': + resolution: {integrity: sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==} engines: {node: '>=6.9.0'} - '@babel/types@7.25.6': - resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + '@babel/types@7.26.5': + resolution: {integrity: sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==} engines: {node: '>=6.9.0'} + '@clack/core@0.4.1': + resolution: {integrity: sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==} + + '@clack/prompts@0.9.1': + resolution: {integrity: sha512-JIpyaboYZeWYlyP0H+OoPPxd6nqueG/CmN6ixBiNFsIDHREevjIf0n0Ohh5gr5C8pEDknzgvz+pIJ8dMhzWIeg==} + '@cloudflare/kv-asset-handler@0.3.4': resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} engines: {node: '>=16.13'} - '@csstools/selector-resolve-nested@1.1.0': - resolution: {integrity: sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/selector-resolve-nested@3.0.0': + resolution: {integrity: sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==} + engines: {node: '>=18'} peerDependencies: - postcss-selector-parser: ^6.0.13 + postcss-selector-parser: ^7.0.0 - '@csstools/selector-specificity@3.1.1': - resolution: {integrity: sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==} - engines: {node: ^14 || ^16 || >=18} + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} peerDependencies: - postcss-selector-parser: ^6.0.13 + postcss-selector-parser: ^7.0.0 '@es-joy/jsdoccomment@0.49.0': resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} @@ -312,20 +334,14 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.20.2': - resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + '@esbuild/aix-ppc64@0.24.2': + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -336,20 +352,14 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.20.2': - resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - '@esbuild/android-arm64@0.21.5': resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + '@esbuild/android-arm64@0.24.2': + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -360,20 +370,14 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.20.2': - resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - '@esbuild/android-arm@0.21.5': resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + '@esbuild/android-arm@0.24.2': + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -384,20 +388,14 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.20.2': - resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - '@esbuild/android-x64@0.21.5': resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + '@esbuild/android-x64@0.24.2': + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -408,20 +406,14 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.20.2': - resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - '@esbuild/darwin-arm64@0.21.5': resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + '@esbuild/darwin-arm64@0.24.2': + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -432,20 +424,14 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.20.2': - resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - '@esbuild/darwin-x64@0.21.5': resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + '@esbuild/darwin-x64@0.24.2': + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -456,20 +442,14 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.20.2': - resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - '@esbuild/freebsd-arm64@0.21.5': resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + '@esbuild/freebsd-arm64@0.24.2': + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -480,20 +460,14 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.20.2': - resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + '@esbuild/freebsd-x64@0.24.2': + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -504,20 +478,14 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.20.2': - resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - '@esbuild/linux-arm64@0.21.5': resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + '@esbuild/linux-arm64@0.24.2': + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -528,20 +496,14 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.20.2': - resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - '@esbuild/linux-arm@0.21.5': resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + '@esbuild/linux-arm@0.24.2': + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -552,20 +514,14 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.20.2': - resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - '@esbuild/linux-ia32@0.21.5': resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + '@esbuild/linux-ia32@0.24.2': + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -576,20 +532,14 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.20.2': - resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - '@esbuild/linux-loong64@0.21.5': resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + '@esbuild/linux-loong64@0.24.2': + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -600,20 +550,14 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.20.2': - resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - '@esbuild/linux-mips64el@0.21.5': resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + '@esbuild/linux-mips64el@0.24.2': + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -624,20 +568,14 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.20.2': - resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - '@esbuild/linux-ppc64@0.21.5': resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + '@esbuild/linux-ppc64@0.24.2': + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -648,20 +586,14 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.20.2': - resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - '@esbuild/linux-riscv64@0.21.5': resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + '@esbuild/linux-riscv64@0.24.2': + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -672,20 +604,14 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.20.2': - resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - '@esbuild/linux-s390x@0.21.5': resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + '@esbuild/linux-s390x@0.24.2': + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -696,32 +622,26 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.20.2': - resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - '@esbuild/linux-x64@0.21.5': resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + '@esbuild/linux-x64@0.24.2': + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.19.12': - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} - cpu: [x64] + '@esbuild/netbsd-arm64@0.24.2': + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} + engines: {node: '>=18'} + cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.20.2': - resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + '@esbuild/netbsd-x64@0.19.12': + resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -732,14 +652,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + '@esbuild/netbsd-x64@0.24.2': + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + '@esbuild/openbsd-arm64@0.24.2': + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -750,20 +670,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.20.2': - resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - '@esbuild/openbsd-x64@0.21.5': resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + '@esbuild/openbsd-x64@0.24.2': + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -774,20 +688,14 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.20.2': - resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - '@esbuild/sunos-x64@0.21.5': resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + '@esbuild/sunos-x64@0.24.2': + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -798,20 +706,14 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.20.2': - resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - '@esbuild/win32-arm64@0.21.5': resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + '@esbuild/win32-arm64@0.24.2': + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -822,20 +724,14 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.20.2': - resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - '@esbuild/win32-ia32@0.21.5': resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + '@esbuild/win32-ia32@0.24.2': + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -846,70 +742,61 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.20.2': - resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - '@esbuild/win32-x64@0.21.5': resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + '@esbuild/win32-x64@0.24.2': + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.1': - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.1.1': - resolution: {integrity: sha512-lpHyRyplhGPL5mGEh6M9O5nnKk0Gz4bFI+Zu6tKlPpDUN7XshWvH9C/px4UVm87IAANE0W81CEsNGbS1KlzXpA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-array@0.18.0': - resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + '@eslint/compat@1.2.5': + resolution: {integrity: sha512-5iuG/StT+7OfvhoBHPlmxkPA9om6aDUFgmD4+mWKAGsYt4vCe8rypneG03AuseyRHBmcCLXQtIH5S26tIoggLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true - '@eslint/core@0.7.0': - resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} + '@eslint/config-array@0.19.1': + resolution: {integrity: sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.1.0': - resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.12.0': - resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==} + '@eslint/eslintrc@3.2.0': + resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.13.0': - resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} + '@eslint/js@9.18.0': + resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.4': - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} + '@eslint/object-schema@2.1.5': + resolution: {integrity: sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.0': - resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} + '@eslint/plugin-kit@0.2.5': + resolution: {integrity: sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@fastify/busboy@2.1.1': - resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} - engines: {node: '>=14'} - '@headlessui/tailwindcss@0.2.1': resolution: {integrity: sha512-2+5+NZ+RzMyrVeCZOxdbvkUSssSxGvcUxphkIfSVLpRiKsj+/63T2TOL9dBYMXVfj/CGr6hMxSRInzXv6YY7sA==} engines: {node: '>=10'} @@ -925,12 +812,12 @@ packages: '@hexagon/base64@1.1.28': resolution: {integrity: sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==} - '@humanfs/core@0.19.0': - resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.5': - resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': @@ -941,32 +828,39 @@ packages: resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} engines: {node: '>=18.18'} - '@iconify-json/gravity-ui@1.2.1': - resolution: {integrity: sha512-KAxbXmql5Zif3ZWQ53h1/B40XHePfCunUc5JKY/BzU4m52nwYUiIkFd54OaihfRL2NHxHOalRTrL0O15MzVmyw==} + '@humanwhocodes/retry@0.4.1': + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + + '@iconify-json/gravity-ui@1.2.4': + resolution: {integrity: sha512-8o8L0exFRA7a6U585bkYzxjAsMhx7WeUE2DsF/tkomqJLbcBZOlryLH6Sizk5xKRKLc8RMTj1LTfKQRKc7Jmew==} + + '@iconify-json/heroicons@1.2.2': + resolution: {integrity: sha512-qoW4pXr5kTTL6juEjgTs83OJIwpePu7q1tdtKVEdj+i0zyyVHgg/dd9grsXJQnpTpBt6/VwNjrXBvFjRsKPENg==} - '@iconify-json/heroicons@1.2.1': - resolution: {integrity: sha512-TkKfS5U27kE5MXmSGLzPoz95BP5VA9xEJXwJFwmPMVLX+xyWq0OkoiWTUXB0uAoQODpb8BaRpzSydItrq9fIRA==} + '@iconify-json/iconoir@1.2.7': + resolution: {integrity: sha512-UDlx2WeWHqopfKRsjOta6fn/KkOhF0MmI2AxoYfakqtMLlznkTnrtY9QVuXZzsbvk+Gyavq2L39VjhcxGbt+LA==} - '@iconify-json/iconoir@1.2.1': - resolution: {integrity: sha512-x55gpORwMGkmmT9UO11rzfMOp40k0ggQnPiOoh9axbyuHrkFMN7pdoCbaXkzqAdShcoI1dLzARbdqXi2sAPJXQ==} + '@iconify-json/logos@1.2.4': + resolution: {integrity: sha512-XC4If5D/hbaZvUkTV8iaZuGlQCyG6CNOlaAaJaGa13V5QMYwYjgtKk3vPP8wz3wtTVNVEVk3LRx1fOJz+YnSMw==} - '@iconify-json/simple-icons@1.2.9': - resolution: {integrity: sha512-0hxlf0uCKAUT+rLjh4iH16XMfRqptOpZURBVk2PKAFDGbe1+8hPPstKFkBAPvtfkCK0bO+E9QE/Q5ozuCYz28A==} + '@iconify-json/simple-icons@1.2.21': + resolution: {integrity: sha512-aqbIuVshMZ2fNEhm25//9DoKudboXF3CpoEQJJlHl9gVSVNOTr4cgaCIZvgSEYmys2HHEfmhcpoZIhoEFZS8SQ==} - '@iconify-json/vscode-icons@1.2.2': - resolution: {integrity: sha512-bTpT0HJDRqGkxQv8oiETNHLEnBZpnA1QaRD35CQyO7M7qgWVLx2xwn/lK6e4waojmlPC3ckMBx3WFIUUn0/Jdg==} + '@iconify-json/vscode-icons@1.2.10': + resolution: {integrity: sha512-qjp/j2RcHEZkesuAT6RP8BfcuHa+oERr7K1twfsulrIHrKZlpxxBeEyFm+3evZSAOgD+sjgU5CuTYS3RfCL+Pg==} - '@iconify/collections@1.0.473': - resolution: {integrity: sha512-cz6i7fnTue2AFOF+/EFhIixklOIqYtQIV9QbI7gVC8WcpyDaURfReGFlgkvEI5GStnFTM5lIDIztuT6Fl6eP8g==} + '@iconify/collections@1.0.509': + resolution: {integrity: sha512-gokFSXhdQg/z60xb2dfEGG7kpbDk+vt7ewdMOTMFnCDFo08Z3uUFCF6M1/m7QQUP9EjSMF6bK9MRQUfW3j+fQA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@2.1.33': - resolution: {integrity: sha512-jP9h6v/g0BIZx0p7XGJJVtkVnydtbgTgt9mVNcGDYwaa7UhdHdI9dvoq+gKj9sijMSJKxUPEG2JyjsgXjxL7Kw==} + '@iconify/utils@2.2.1': + resolution: {integrity: sha512-0/7J7hk4PqXmxo5PDBDxmnecw5PxklZJfNjIVG9FM0mEfVrvfudS22rYWsqVk6gR3UJ/mSYS90X4R3znXnqfNA==} - '@iconify/vue@4.1.3-beta.1': - resolution: {integrity: sha512-N7iEOnWfhjbMqiyGMhotJKip23nrK5l3+T1hQwpEjKeMD2o4zOjm8zmeEfOOH81EXllhhOm7upR8jcH499YRWA==} + '@iconify/vue@4.3.0': + resolution: {integrity: sha512-Xq0h6zMrHBbrW8jXJ9fISi+x8oDQllg5hTDkDuxnWiskJ63rpJu9CvJshj8VniHVTbsxCg9fVoPAaNp3RQI5OQ==} peerDependencies: vue: '>=3' @@ -977,8 +871,12 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@jridgewell/gen-mapping@0.3.5': - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/gen-mapping@0.3.8': + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} '@jridgewell/resolve-uri@3.1.2': @@ -1015,20 +913,21 @@ packages: resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} engines: {node: '>=8'} - '@mapbox/node-pre-gyp@1.0.11': - resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} + '@mapbox/node-pre-gyp@2.0.0-rc.0': + resolution: {integrity: sha512-nhSMNprz3WmeRvd8iUs5JqkKr0Ncx46JtPxM3AhXes84XpSJfmIwKeWXRpsr53S7kqPkQfPhzrMFUxSNb23qSA==} + engines: {node: '>=18'} hasBin: true - '@netlify/functions@2.8.1': - resolution: {integrity: sha512-+6wtYdoz0yE06dSa9XkP47tw5zm6g13QMeCwM3MmHx1vn8hzwFa51JtmfraprdkL7amvb7gaNM+OOhQU1h6T8A==} + '@netlify/functions@2.8.2': + resolution: {integrity: sha512-DeoAQh8LuNPvBE4qsKlezjKj0PyXDryOFJfJKo3Z1qZLKzQ21sT314KQKPVjfvw6knqijj+IO+0kHXy/TJiqNA==} engines: {node: '>=14.0.0'} '@netlify/node-cookies@0.1.0': resolution: {integrity: sha512-OAs1xG+FfLX0LoRASpqzVntVV/RpYkgpI0VrUnw2u0Q1qiZUzcPffxRK8HF3gc4GjuhG5ahOEMJ9bswBiZPq0g==} engines: {node: ^14.16.0 || >=16.0.0} - '@netlify/serverless-functions-api@1.19.1': - resolution: {integrity: sha512-2KYkyluThg1AKfd0JWI7FzpS4A/fzVVGYIf6AM4ydWyNj8eI/86GQVLeRgDoH7CNOxt243R5tutWlmHpVq0/Ew==} + '@netlify/serverless-functions-api@1.26.1': + resolution: {integrity: sha512-q3L9i3HoNfz0SGpTIS4zTcKBbRkxzCRpd169eyiTuk3IwcPC3/85mzLHranlKo2b+HYT0gu37YxGB45aD8A3Tw==} engines: {node: '>=18.0.0'} '@nodelib/fs.scandir@2.1.5': @@ -1043,60 +942,64 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@nuxt/cli@3.20.0': + resolution: {integrity: sha512-TmQPjIHXJFPTssPMMFuLF48nr9cm6ctaNwrnhDFl4xLunfLR4rrMJNJAQhepWyukg970ZgokZVbUYMqf6eCnTQ==} + engines: {node: ^16.10.0 || >=18.0.0} + hasBin: true + '@nuxt/devalue@2.0.2': resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==} - '@nuxt/devtools-kit@1.4.2': - resolution: {integrity: sha512-8a5PhVnC7E94318/sHbNSe9mI2MlsQ8+pJLGs2Hh1OJyidB9SWe6hoFc8q4K9VOtXak9uCFVb5V2JGXS1q+1aA==} - peerDependencies: - vite: '*' - - '@nuxt/devtools-kit@1.5.1': - resolution: {integrity: sha512-s2dpN1vCOgua2pSYG7/xUMjf7CyLTBeEK2IRqeOeiNpiElft4ygDddlg6P3ot0Hpp+GvWTz0uPGot/vI73uk4w==} + '@nuxt/devtools-kit@1.7.0': + resolution: {integrity: sha512-+NgZ2uP5BuneqvQbe7EdOEaFEDy8762c99pLABtn7/Ur0ExEsQJMP7pYjjoTfKubhBqecr5Vo9yHkPBj1eHulQ==} peerDependencies: vite: '*' - '@nuxt/devtools-kit@1.6.0': - resolution: {integrity: sha512-kJ8mVKwTSN3tdEVNy7mxKCiQk9wsG5t3oOrRMWk6IEbTSov+5sOULqQSM/+OWxWsEDmDfA7QlS5sM3Ti9uMRqQ==} + '@nuxt/devtools-kit@2.0.0-beta.3': + resolution: {integrity: sha512-VeMfxhwUk1InAca9C8HouIn0+4ON11B0MxL/Mv7m/FcgdyADH5nTp6P3+GoCe8TsHgyKSJ688ZVFFxXKDDDGcg==} peerDependencies: - vite: '*' + vite: '>=6.0' - '@nuxt/devtools-wizard@1.4.2': - resolution: {integrity: sha512-TyhmPBg/xJKPOdnwR3DAh8KMUt6/0dUNABCxGVeY7PYbIiXt4msIGVJkBc4y+WwIJHOYPrSRClmZVsXQfRlB4A==} + '@nuxt/devtools-wizard@1.7.0': + resolution: {integrity: sha512-86Gd92uEw0Dh2ErIYT9TMIrMOISE96fCRN4rxeryTvyiowQOsyrbkCeMNYrEehoRL+lohoyK6iDmFajadPNwWQ==} hasBin: true - '@nuxt/devtools-wizard@1.5.1': - resolution: {integrity: sha512-09VqUYnL8dh31GK85g9+L1xZCXCmieOBWsV9H5a3ZA7wNepDjbrmaRFr/KSA6fsI7AZoqzkNuRsGUzEksEDxpg==} + '@nuxt/devtools-wizard@2.0.0-beta.3': + resolution: {integrity: sha512-91N/EqimqtqHGUYxADiWofF3qGNBWbVs7wEOIzVYYwTSl7GNGrmf5IeGt48YRBNp+Be0y1cmUx5AOT2VIjBJVw==} hasBin: true - '@nuxt/devtools@1.4.2': - resolution: {integrity: sha512-Ok3g2P7iwKyK8LiwozbYVAZTo8t91iXSmlJj2ozeo1okKQ2Qi1AtwB6nYgIlkUHZmo155ZjG/LCHYI5uhQ/sGw==} + '@nuxt/devtools@1.7.0': + resolution: {integrity: sha512-uvnjt5Zowkz7tZmnks2cGreg1XZIiSyVzQ2MYiRXACodlXcwJ0dpUS3WTxu8BR562K+772oRdvKie9AQlyZUgg==} hasBin: true peerDependencies: vite: '*' - '@nuxt/devtools@1.5.1': - resolution: {integrity: sha512-A5+TEKJURuwes/PD30hl6gksA+935UY7i8DIkDr+9a4AWnPgrVt/WsGRmz84Q/9eRBxlLjwD9/kwDpNYcMST6Q==} + '@nuxt/devtools@2.0.0-beta.3': + resolution: {integrity: sha512-oB0fdfV05BHObqB0LvkC3fa5v8ql2qV9AjrIKQtczyvO/HtivN9iCmLiyx3RcWAs6Sk48k/p40tX249Gigo7sQ==} hasBin: true peerDependencies: - vite: '*' + vite: '>=6.0' - '@nuxt/eslint-config@0.6.0': - resolution: {integrity: sha512-/WZ9tzukVj6+epdJki27IzAOqj1Kf5NBCwJfI7BUoEwhyyL//M9+TtS2jfBxVcbcEshxIV3GD3BCaq6l4tHGtQ==} + '@nuxt/eslint-config@0.7.5': + resolution: {integrity: sha512-nUMMiVNZ7qk7FP5Uev/zuTZoTwBnlfr0qSt355aw21SoUkXw0YFRFsImdzkjnEN7kQjgZj0PcCJs/ejv8mRROg==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + eslint-plugin-format: '*' + peerDependenciesMeta: + eslint-plugin-format: + optional: true - '@nuxt/eslint-plugin@0.6.0': - resolution: {integrity: sha512-DLSX6RCxUg5UDVmOjopd7pUb/eDnmPmqKFlvy4ETytcr4sXS3JXs+Fwn2sUbcASo9sn1ndPMz/c2pTA7YnYqJA==} + '@nuxt/eslint-plugin@0.7.5': + resolution: {integrity: sha512-EBb9KiUbnGK6yJnOmGAaURS8NTfNaMXHiAyRtEmLTtj/IwNqFUtgoDLFqBDBCGIjd8my2WA1m9HjQK/+la9Z0Q==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - '@nuxt/icon@1.5.6': - resolution: {integrity: sha512-7l99CWc/laHphSsoLikh99Hkwjv+59cwAMJ0f9eZddBV+vO7zLGWwocH/TDNjlX0IACgVoG+AfbP/p1fqlLKpg==} + '@nuxt/icon@1.10.3': + resolution: {integrity: sha512-ESIiSIpETLLcn5p4U8S0F3AQ5Mox0MoHAVKczamY4STh3Dwrc8labLhtN6lunwpQEv6UGuiutdvfkJ88zu44Ew==} - '@nuxt/kit@3.13.2': - resolution: {integrity: sha512-KvRw21zU//wdz25IeE1E5m/aFSzhJloBRAQtv+evcFeZvuroIxpIQuUqhbzuwznaUwpiWbmwlcsp5uOWmi4vwA==} - engines: {node: ^14.18.0 || >=16.10.0} + '@nuxt/kit@3.15.2': + resolution: {integrity: sha512-nxiPJVz2fICcyBKlN5pL1IgZVejyArulREsS5HvAk07hijlYuZ5toRM8soLt51VQNpFd/PedL+Z1AlYu/bQCYQ==} + engines: {node: '>=18.0.0'} '@nuxt/module-builder@0.8.4': resolution: {integrity: sha512-RSPRfCpBLuJtbDRaAKmc3Qzt3O98kSeRItXcgx0ZLptvROWT+GywoLhnYznRp8kbkz+6Qb5Hfiwa/RYEMRuJ4Q==} @@ -1105,33 +1008,29 @@ packages: '@nuxt/kit': ^3.13.1 nuxi: ^3.13.1 - '@nuxt/schema@3.13.2': - resolution: {integrity: sha512-CCZgpm+MkqtOMDEgF9SWgGPBXlQ01hV/6+2reDEpJuqFPGzV8HYKPBcIFvn7/z5ahtgutHLzjP71Na+hYcqSpw==} + '@nuxt/schema@3.15.2': + resolution: {integrity: sha512-cTHGbLTbrQ83B+7Mh0ggc5MzIp74o8KciA0boCiBJyK5uImH9QQNK6VgfwRWcTD5sj3WNKiIB1luOMom3LHgVw==} engines: {node: ^14.18.0 || >=16.10.0} - '@nuxt/telemetry@2.6.0': - resolution: {integrity: sha512-h4YJ1d32cU7tDKjjhjtIIEck4WF/w3DTQBT348E9Pz85YLttnLqktLM0Ez9Xc2LzCeUgBDQv1el7Ob/zT3KUqg==} + '@nuxt/telemetry@2.6.4': + resolution: {integrity: sha512-2Lgdn07Suraly5dSfVQ4ttBQBMtmjvCTGKGUHpc1UyH87HT9xCm3KLFO0UcVQ8+LNYCgoOaK7lq9qDJOfBfZ5A==} + engines: {node: '>=18.20.5'} hasBin: true - '@nuxt/test-utils@3.14.4': - resolution: {integrity: sha512-1rSYMXjN651t+c8zSaPAoP78YE1WVcI3baPC2cic9my+J5FIsT1IuTU6M9XwDFBUnwGL6/sV5pPsyEumkIl3eA==} - engines: {node: '>=18.20.4'} + '@nuxt/test-utils@3.15.4': + resolution: {integrity: sha512-R5eNXILsB5GCTMgoKdW3rN9rNBQCVBqxw4+tcujNplcivbJp7lQrRMHlbR9ijAJ1jEMkDNXdOQGbM1RnWvDuuQ==} + engines: {node: ^18.20.5 || ^20.9.0 || ^22.0.0 || >=23.0.0} peerDependencies: '@cucumber/cucumber': ^10.3.1 || ^11.0.0 '@jest/globals': ^29.5.0 '@playwright/test': ^1.43.1 '@testing-library/vue': ^7.0.0 || ^8.0.1 - '@vitest/ui': ^0.34.6 || ^1.0.0 || ^2.0.0 + '@vitest/ui': '*' '@vue/test-utils': ^2.4.2 - h3: '*' - happy-dom: ^9.10.9 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 - jsdom: ^22.0.0 || ^23.0.0 || ^24.0.0 || ^25.0.0 - nitropack: '*' + happy-dom: ^9.10.9 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + jsdom: ^22.0.0 || ^23.0.0 || ^24.0.0 || ^25.0.0 || ^26.0.0 playwright-core: ^1.43.1 - vite: '*' - vitest: ^0.34.6 || ^1.0.0 || ^2.0.0 - vue: ^3.3.4 - vue-router: ^4.0.0 + vitest: ^0.34.6 || ^1.0.0 || ^2.0.0 || ^3.0.0-beta.3 peerDependenciesMeta: '@cucumber/cucumber': optional: true @@ -1154,120 +1053,126 @@ packages: vitest: optional: true - '@nuxt/ui-pro@1.4.4': - resolution: {integrity: sha512-sQbaXcUaMWxTYf0UewkncvRc5U3CeamTuDP3bDYi0uni//9BqVSby7avKgKGRZZwq4z2U+cmlMkWgxk1DFM0hQ==} + '@nuxt/ui-pro@1.7.0': + resolution: {integrity: sha512-a7Vqi75wzxgyx5CI5vKyUEv3pewZUBWuO8Pw1J6U9teyeJ+apKHYfZvRWi0qvoUPSf19y1bin+puCD4vseeTlg==} - '@nuxt/ui@2.18.7': - resolution: {integrity: sha512-8k0Ha43WC9iaL6n98ieLcOVg+2wkSKWww4MEXKOkoOv2YzvsALrdSLh2anv3P7OfI8VCWYXDehhYuOTJd9um2g==} + '@nuxt/ui@2.21.0': + resolution: {integrity: sha512-kvQkB1/TyyUMvfQJTwQ2gubCyHCwyvwIQWWygEASXc8FfnzMtJZ+1ZYqNeWd9i7sr4+Lq2ye0+5t8M+raweYUw==} - '@nuxt/vite-builder@3.13.2': - resolution: {integrity: sha512-3dzc3YH3UeTmzGtCevW1jTq0Q8/cm+yXqo/VS/EFM3aIO/tuNPS88is8ZF2YeBButFnLFllq/QenziPbq0YD6Q==} - engines: {node: ^14.18.0 || >=16.10.0} + '@nuxt/vite-builder@3.15.2': + resolution: {integrity: sha512-YtP6hIOKhqa1JhX0QzuULpA84lseO76bv5OqJzUl7yoaykhOkZjkEk9c20hamtMdoxhVeUAXGZJCsp9Ivjfb3g==} + engines: {node: ^18.12.0 || ^20.9.0 || >=22.0.0} peerDependencies: vue: ^3.3.4 - '@nuxtjs/color-mode@3.5.1': - resolution: {integrity: sha512-GRHF3WUwX6fXIiRVlngNq1nVDwrVuP6dWX1DRmox3QolzX0eH1oJEcFr/lAm1nkT71JVGb8mszho9w+yHJbePw==} + '@nuxtjs/color-mode@3.5.2': + resolution: {integrity: sha512-cC6RfgZh3guHBMLLjrBB2Uti5eUoGM9KyauOaYS9ETmxNWBMTvpgjvSiSJp1OFljIXPIqVTJ3xtJpSNZiO3ZaA==} - '@nuxtjs/tailwindcss@6.12.1': - resolution: {integrity: sha512-UKmaPRVpxlFqLorhL6neEba2tySlsj6w6yDb7jzS6A0AAjyBQ6k3BQqWO+AaTy2iQLX7eR+1yj3/w43HzY8RtA==} + '@nuxtjs/tailwindcss@6.13.1': + resolution: {integrity: sha512-atL2SaPsxLfMTlXUQvr1UpDYdz6ocNOhH35H+t7M++g4r79QiQScJ7XuyyMR9AyBN19lkPA3nw7NXxazXmYxlA==} - '@parcel/watcher-android-arm64@2.4.1': - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + '@parcel/watcher-android-arm64@2.5.0': + resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.4.1': - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + '@parcel/watcher-darwin-arm64@2.5.0': + resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.4.1': - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + '@parcel/watcher-darwin-x64@2.5.0': + resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.4.1': - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + '@parcel/watcher-freebsd-x64@2.5.0': + resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.4.1': - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + '@parcel/watcher-linux-arm-glibc@2.5.0': + resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.0': + resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.4.1': - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + '@parcel/watcher-linux-arm64-glibc@2.5.0': + resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.4.1': - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + '@parcel/watcher-linux-arm64-musl@2.5.0': + resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.4.1': - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + '@parcel/watcher-linux-x64-glibc@2.5.0': + resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.4.1': - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + '@parcel/watcher-linux-x64-musl@2.5.0': + resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-wasm@2.4.1': - resolution: {integrity: sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==} + '@parcel/watcher-wasm@2.5.0': + resolution: {integrity: sha512-Z4ouuR8Pfggk1EYYbTaIoxc+Yv4o7cGQnH0Xy8+pQ+HbiW+ZnwhcD2LPf/prfq1nIWpAxjOkQ8uSMFWMtBLiVQ==} engines: {node: '>= 10.0.0'} bundledDependencies: - napi-wasm - '@parcel/watcher-win32-arm64@2.4.1': - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + '@parcel/watcher-win32-arm64@2.5.0': + resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.4.1': - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + '@parcel/watcher-win32-ia32@2.5.0': + resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.4.1': - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + '@parcel/watcher-win32-x64@2.5.0': + resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.4.1': - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + '@parcel/watcher@2.5.0': + resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} engines: {node: '>= 10.0.0'} - '@peculiar/asn1-android@2.3.13': - resolution: {integrity: sha512-0VTNazDGKrLS6a3BwTDZanqq6DR/I3SbvmDMuS8Be+OYpvM6x1SRDh9AGDsHVnaCOIztOspCPc6N1m+iUv1Xxw==} + '@peculiar/asn1-android@2.3.15': + resolution: {integrity: sha512-8U2TIj59cRlSXTX2d0mzUKP7whfWGFMzTeC3qPgAbccXFrPNZLaDhpNEdG5U2QZ/tBv/IHlCJ8s+KYXpJeop6w==} - '@peculiar/asn1-ecc@2.3.13': - resolution: {integrity: sha512-3dF2pQcrN/WJEMq+9qWLQ0gqtn1G81J4rYqFl6El6QV367b4IuhcRv+yMA84tNNyHOJn9anLXV5radnpPiG3iA==} + '@peculiar/asn1-ecc@2.3.15': + resolution: {integrity: sha512-/HtR91dvgog7z/WhCVdxZJ/jitJuIu8iTqiyWVgRE9Ac5imt2sT/E4obqIVGKQw7PIy+X6i8lVBoT6wC73XUgA==} - '@peculiar/asn1-rsa@2.3.13': - resolution: {integrity: sha512-wBNQqCyRtmqvXkGkL4DR3WxZhHy8fDiYtOjTeCd7SFE5F6GBeafw3EJ94PX/V0OJJrjQ40SkRY2IZu3ZSyBqcg==} + '@peculiar/asn1-rsa@2.3.15': + resolution: {integrity: sha512-p6hsanvPhexRtYSOHihLvUUgrJ8y0FtOM97N5UEpC+VifFYyZa0iZ5cXjTkZoDwxJ/TTJ1IJo3HVTB2JJTpXvg==} - '@peculiar/asn1-schema@2.3.13': - resolution: {integrity: sha512-3Xq3a01WkHRZL8X04Zsfg//mGaA21xlL4tlVn4v2xGT0JStiztATRkMwa5b+f/HXmY2smsiLXYK46Gwgzvfg3g==} + '@peculiar/asn1-schema@2.3.15': + resolution: {integrity: sha512-QPeD8UA8axQREpgR5UTAfu2mqQmm97oUqahDtNdBcfj3qAnoXzFdQW+aNf/tD2WVXF8Fhmftxoj0eMIT++gX2w==} - '@peculiar/asn1-x509@2.3.13': - resolution: {integrity: sha512-PfeLQl2skXmxX2/AFFCVaWU8U6FKW1Db43mgBhShCOFS1bVxqtvusq1hVjfuEcuSQGedrLdCSvTgabluwN/M9A==} + '@peculiar/asn1-x509@2.3.15': + resolution: {integrity: sha512-0dK5xqTqSLaxv1FHXIcd4Q/BZNuopg+u1l23hT9rOmQ1g4dNtw0g/RnEi+TboB0gOwGtrWn269v27cMgchFIIg==} '@phc/format@1.0.0': resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==} @@ -1287,12 +1192,34 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@poppinss/utils@6.8.3': - resolution: {integrity: sha512-YGeH7pIUm9ExONURNH3xN61dBZ0SXgVuPA9E76t7EHeZHXPNrmR8TlbXQaka6kd5n+cpBNcHG4VsVfYf59bZ7g==} + '@poppinss/exception@1.2.0': + resolution: {integrity: sha512-WLneXKQYNClhaMXccO111VQmZahSrcSRDaHRbV6KL5R4pTvK87fMn/MXLUcvOjk0X5dTHDPKF61tM7j826wrjQ==} + engines: {node: '>=20.6.0'} + + '@poppinss/object-builder@1.1.0': + resolution: {integrity: sha512-FOrOq52l7u8goR5yncX14+k+Ewi5djnrt1JwXeS/FvnwAPOiveFhiczCDuvXdssAwamtrV2hp5Rw9v+n2T7hQg==} + engines: {node: '>=20.6.0'} + + '@poppinss/string@1.2.0': + resolution: {integrity: sha512-1z78zjqhfjqsvWr+pQzCpRNcZpIM+5vNY5SFOvz28GrL/LRanwtmOku5tBX7jE8/ng3oXaOVrB59lnnXFtvkug==} + engines: {node: '>=20.6.0'} + + '@poppinss/utils@6.9.2': + resolution: {integrity: sha512-ypVszZxhwiehhklM5so2BI+nClQJwp7mBUSJh/R1GepeUH1vvD5GtxMz8Lp9dO9oAbKyDmq1jc4g/4E0dv8r2g==} engines: {node: '>=18.16.0'} - '@rollup/plugin-alias@5.1.0': - resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==} + '@redocly/ajv@8.11.2': + resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==} + + '@redocly/config@0.20.1': + resolution: {integrity: sha512-TYiTDtuItiv95YMsrRxyCs1HKLrDPtTvpaD3+kDKXBnFDeJuYKZ+eHXpCr6YeN4inxfVBs7DLhHsQcs9srddyQ==} + + '@redocly/openapi-core@1.27.2': + resolution: {integrity: sha512-qVrDc27DHpeO2NRCMeRdb4299nijKQE3BY0wrA+WUHlOLScorIi/y7JzammLk22IaTvjR9Mv9aTAdjE1aUwJnA==} + engines: {node: '>=14.19.0', npm: '>=7.0.0'} + + '@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 @@ -1309,6 +1236,15 @@ packages: rollup: optional: true + '@rollup/plugin-commonjs@28.0.2': + resolution: {integrity: sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==} + engines: {node: '>=16.0.0 || 14 >= 14.17'} + peerDependencies: + rollup: ^2.68.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/plugin-inject@5.0.5': resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} engines: {node: '>=14.0.0'} @@ -1327,8 +1263,8 @@ packages: rollup: optional: true - '@rollup/plugin-node-resolve@15.2.3': - resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} + '@rollup/plugin-node-resolve@15.3.1': + resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 @@ -1345,6 +1281,15 @@ packages: rollup: optional: true + '@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 + '@rollup/plugin-terser@0.4.4': resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} engines: {node: '>=14.0.0'} @@ -1354,12 +1299,8 @@ packages: rollup: optional: true - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} - - '@rollup/pluginutils@5.1.0': - resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + '@rollup/pluginutils@5.1.4': + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -1367,83 +1308,98 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.22.0': - resolution: {integrity: sha512-/IZQvg6ZR0tAkEi4tdXOraQoWeJy9gbQ/cx4I7k9dJaCk9qrXEcdouxRVz5kZXt5C2bQ9pILoAA+KB4C/d3pfw==} + '@rollup/rollup-android-arm-eabi@4.31.0': + resolution: {integrity: sha512-9NrR4033uCbUBRgvLcBrJofa2KY9DzxL2UKZ1/4xA/mnTNyhZCWBuD8X3tPm1n4KxcgaraOYgrFKSgwjASfmlA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.22.0': - resolution: {integrity: sha512-ETHi4bxrYnvOtXeM7d4V4kZWixib2jddFacJjsOjwbgYSRsyXYtZHC4ht134OsslPIcnkqT+TKV4eU8rNBKyyQ==} + '@rollup/rollup-android-arm64@4.31.0': + resolution: {integrity: sha512-iBbODqT86YBFHajxxF8ebj2hwKm1k8PTBQSojSt3d1FFt1gN+xf4CowE47iN0vOSdnd+5ierMHBbu/rHc7nq5g==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.22.0': - resolution: {integrity: sha512-ZWgARzhSKE+gVUX7QWaECoRQsPwaD8ZR0Oxb3aUpzdErTvlEadfQpORPXkKSdKbFci9v8MJfkTtoEHnnW9Ulng==} + '@rollup/rollup-darwin-arm64@4.31.0': + resolution: {integrity: sha512-WHIZfXgVBX30SWuTMhlHPXTyN20AXrLH4TEeH/D0Bolvx9PjgZnn4H677PlSGvU6MKNsjCQJYczkpvBbrBnG6g==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.22.0': - resolution: {integrity: sha512-h0ZAtOfHyio8Az6cwIGS+nHUfRMWBDO5jXB8PQCARVF6Na/G6XS2SFxDl8Oem+S5ZsHQgtsI7RT4JQnI1qrlaw==} + '@rollup/rollup-darwin-x64@4.31.0': + resolution: {integrity: sha512-hrWL7uQacTEF8gdrQAqcDy9xllQ0w0zuL1wk1HV8wKGSGbKPVjVUv/DEwT2+Asabf8Dh/As+IvfdU+H8hhzrQQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.22.0': - resolution: {integrity: sha512-9pxQJSPwFsVi0ttOmqLY4JJ9pg9t1gKhK0JDbV1yUEETSx55fdyCjt39eBQ54OQCzAF0nVGO6LfEH1KnCPvelA==} + '@rollup/rollup-freebsd-arm64@4.31.0': + resolution: {integrity: sha512-S2oCsZ4hJviG1QjPY1h6sVJLBI6ekBeAEssYKad1soRFv3SocsQCzX6cwnk6fID6UQQACTjeIMB+hyYrFacRew==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.31.0': + resolution: {integrity: sha512-pCANqpynRS4Jirn4IKZH4tnm2+2CqCNLKD7gAdEjzdLGbH1iO0zouHz4mxqg0uEMpO030ejJ0aA6e1PJo2xrPA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.31.0': + resolution: {integrity: sha512-0O8ViX+QcBd3ZmGlcFTnYXZKGbFu09EhgD27tgTdGnkcYXLat4KIsBBQeKLR2xZDCXdIBAlWLkiXE1+rJpCxFw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.22.0': - resolution: {integrity: sha512-YJ5Ku5BmNJZb58A4qSEo3JlIG4d3G2lWyBi13ABlXzO41SsdnUKi3HQHe83VpwBVG4jHFTW65jOQb8qyoR+qzg==} + '@rollup/rollup-linux-arm-musleabihf@4.31.0': + resolution: {integrity: sha512-w5IzG0wTVv7B0/SwDnMYmbr2uERQp999q8FMkKG1I+j8hpPX2BYFjWe69xbhbP6J9h2gId/7ogesl9hwblFwwg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.22.0': - resolution: {integrity: sha512-U4G4u7f+QCqHlVg1Nlx+qapZy+QoG+NV6ux+upo/T7arNGwKvKP2kmGM4W5QTbdewWFgudQxi3kDNST9GT1/mg==} + '@rollup/rollup-linux-arm64-gnu@4.31.0': + resolution: {integrity: sha512-JyFFshbN5xwy6fulZ8B/8qOqENRmDdEkcIMF0Zz+RsfamEW+Zabl5jAb0IozP/8UKnJ7g2FtZZPEUIAlUSX8cA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.22.0': - resolution: {integrity: sha512-aQpNlKmx3amwkA3a5J6nlXSahE1ijl0L9KuIjVOUhfOh7uw2S4piR3mtpxpRtbnK809SBtyPsM9q15CPTsY7HQ==} + '@rollup/rollup-linux-arm64-musl@4.31.0': + resolution: {integrity: sha512-kpQXQ0UPFeMPmPYksiBL9WS/BDiQEjRGMfklVIsA0Sng347H8W2iexch+IEwaR7OVSKtr2ZFxggt11zVIlZ25g==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.22.0': - resolution: {integrity: sha512-9fx6Zj/7vve/Fp4iexUFRKb5+RjLCff6YTRQl4CoDhdMfDoobWmhAxQWV3NfShMzQk1Q/iCnageFyGfqnsmeqQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.31.0': + resolution: {integrity: sha512-pMlxLjt60iQTzt9iBb3jZphFIl55a70wexvo8p+vVFK+7ifTRookdoXX3bOsRdmfD+OKnMozKO6XM4zR0sHRrQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': + resolution: {integrity: sha512-D7TXT7I/uKEuWiRkEFbed1UUYZwcJDU4vZQdPTcepK7ecPhzKOYk4Er2YR4uHKme4qDeIh6N3XrLfpuM7vzRWQ==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.22.0': - resolution: {integrity: sha512-VWQiCcN7zBgZYLjndIEh5tamtnKg5TGxyZPWcN9zBtXBwfcGSZ5cHSdQZfQH/GB4uRxk0D3VYbOEe/chJhPGLQ==} + '@rollup/rollup-linux-riscv64-gnu@4.31.0': + resolution: {integrity: sha512-wal2Tc8O5lMBtoePLBYRKj2CImUCJ4UNGJlLwspx7QApYny7K1cUYlzQ/4IGQBLmm+y0RS7dwc3TDO/pmcneTw==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.22.0': - resolution: {integrity: sha512-EHmPnPWvyYqncObwqrosb/CpH3GOjE76vWVs0g4hWsDRUVhg61hBmlVg5TPXqF+g+PvIbqkC7i3h8wbn4Gp2Fg==} + '@rollup/rollup-linux-s390x-gnu@4.31.0': + resolution: {integrity: sha512-O1o5EUI0+RRMkK9wiTVpk2tyzXdXefHtRTIjBbmFREmNMy7pFeYXCFGbhKFwISA3UOExlo5GGUuuj3oMKdK6JQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.22.0': - resolution: {integrity: sha512-tsSWy3YQzmpjDKnQ1Vcpy3p9Z+kMFbSIesCdMNgLizDWFhrLZIoN21JSq01g+MZMDFF+Y1+4zxgrlqPjid5ohg==} + '@rollup/rollup-linux-x64-gnu@4.31.0': + resolution: {integrity: sha512-zSoHl356vKnNxwOWnLd60ixHNPRBglxpv2g7q0Cd3Pmr561gf0HiAcUBRL3S1vPqRC17Zo2CX/9cPkqTIiai1g==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.22.0': - resolution: {integrity: sha512-anr1Y11uPOQrpuU8XOikY5lH4Qu94oS6j0xrulHk3NkLDq19MlX8Ng/pVipjxBJ9a2l3+F39REZYyWQFkZ4/fw==} + '@rollup/rollup-linux-x64-musl@4.31.0': + resolution: {integrity: sha512-ypB/HMtcSGhKUQNiFwqgdclWNRrAYDH8iMYH4etw/ZlGwiTVxBz2tDrGRrPlfZu6QjXwtd+C3Zib5pFqID97ZA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.22.0': - resolution: {integrity: sha512-7LB+Bh+Ut7cfmO0m244/asvtIGQr5pG5Rvjz/l1Rnz1kDzM02pSX9jPaS0p+90H5I1x4d1FkCew+B7MOnoatNw==} + '@rollup/rollup-win32-arm64-msvc@4.31.0': + resolution: {integrity: sha512-JuhN2xdI/m8Hr+aVO3vspO7OQfUFO6bKLIRTAy0U15vmWjnZDLrEgCZ2s6+scAYaQVpYSh9tZtRijApw9IXyMw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.22.0': - resolution: {integrity: sha512-+3qZ4rer7t/QsC5JwMpcvCVPRcJt1cJrYS/TMJZzXIJbxWFQEVhrIc26IhB+5Z9fT9umfVc+Es2mOZgl+7jdJQ==} + '@rollup/rollup-win32-ia32-msvc@4.31.0': + resolution: {integrity: sha512-U1xZZXYkvdf5MIWmftU8wrM5PPXzyaY1nGCI4KI4BFfoZxHamsIe+BtnPLIvvPykvQWlVbqUXdLa4aJUuilwLQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.22.0': - resolution: {integrity: sha512-YdicNOSJONVx/vuPkgPTyRoAPx3GbknBZRCOUkK84FJ/YTfs/F0vl/YsMscrB6Y177d+yDRcj+JWMPMCgshwrA==} + '@rollup/rollup-win32-x64-msvc@4.31.0': + resolution: {integrity: sha512-ul8rnCsUumNln5YWwz0ted2ZHFhzhRRnkpBZ+YRuHoRAlUji9KChpOUOndY7uykrPEPXVbHLlsdo6v5yXo/TXw==} cpu: [x64] os: [win32] @@ -1457,12 +1413,15 @@ packages: '@simplewebauthn/types@11.0.0': resolution: {integrity: sha512-b2o0wC5u2rWts31dTgBkAtSNKGX0cvL6h8QedNsKmj8O4QoLFQFR3DBVBUlpyVEhYKA+mXGUaXbcOc4JdQ3HzA==} + '@simplewebauthn/types@12.0.0': + resolution: {integrity: sha512-q6y8MkoV8V8jB4zzp18Uyj2I7oFp2/ONL8c3j8uT06AOWu3cIChc1au71QYHrP2b+xDapkGTiv+9lX7xkTlAsA==} + '@sindresorhus/merge-streams@2.3.0': resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} - '@stylistic/eslint-plugin@2.9.0': - resolution: {integrity: sha512-OrDyFAYjBT61122MIY1a3SfEgy3YCMgt2vL4eoPmvTwDBwyQhAXurxNQznlRD/jESNfYWfID8Ej+31LljvF7Xg==} + '@stylistic/eslint-plugin@2.13.0': + resolution: {integrity: sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.40.0' @@ -1477,21 +1436,21 @@ packages: peerDependencies: tailwindcss: '>=3.2.0' - '@tailwindcss/forms@0.5.9': - resolution: {integrity: sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==} + '@tailwindcss/forms@0.5.10': + resolution: {integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==} peerDependencies: - tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20' + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1' - '@tailwindcss/typography@0.5.15': - resolution: {integrity: sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==} + '@tailwindcss/typography@0.5.16': + resolution: {integrity: sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==} peerDependencies: - tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20' + tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1' - '@tanstack/virtual-core@3.10.8': - resolution: {integrity: sha512-PBu00mtt95jbKFi6Llk9aik8bnR3tR/oQP1o3TSi+iG//+Q2RTIzCEgKkHG8BB86kxMNW6O8wku+Lmi+QFR6jA==} + '@tanstack/virtual-core@3.11.2': + resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==} - '@tanstack/vue-virtual@3.10.8': - resolution: {integrity: sha512-DB5QA8c/LfqOqIUCpSs3RdOTVroRRdqeHMqBkYrcashSZtOzIv8xbiqHgg7RYxDfkH5F3Y+e0MkuuyGNDVB0BQ==} + '@tanstack/vue-virtual@3.11.2': + resolution: {integrity: sha512-y0b1p1FTlzxcSt/ZdGWY1AZ52ddwSU69pvFRYAELUSdLLxV8QOPe9dyT/KATO43UCb3DAwiyzi96h2IoYstBOQ==} peerDependencies: vue: ^2.7.0 || ^3.0.0 @@ -1499,11 +1458,14 @@ packages: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} - '@types/bytes@3.1.4': - resolution: {integrity: sha512-A0uYgOj3zNc4hNjHc5lYUfJQ/HVyBXiUMKdXd7ysclaE6k9oJdavQzODHuwjpUu2/boCP8afjQYi8z/GtvNCWA==} + '@tsndr/cloudflare-worker-jwt@3.1.3': + resolution: {integrity: sha512-ohuQzCICeki6wBOtmyqk0JJyJvl4vE1/RgXModJzm2U3xfiFNbkXtpa2HHGiH9BG7Wd/G7mtu2xtJ1R8W6iP5w==} + + '@types/bytes@3.1.5': + resolution: {integrity: sha512-VgZkrJckypj85YxEsEavcMmmSOIzkUHqWmM4CCyia5dc54YwsXzJ5uT4fYxBQNEXx+oF1krlhgCbvfubXqZYsQ==} - '@types/estree@1.0.5': - resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} @@ -1514,12 +1476,15 @@ packages: '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - '@types/node@22.5.5': - resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} + '@types/node@22.10.7': + resolution: {integrity: sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/parse-path@7.0.3': + resolution: {integrity: sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==} + '@types/pluralize@0.0.33': resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==} @@ -1529,167 +1494,129 @@ packages: '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} - '@typescript-eslint/eslint-plugin@8.10.0': - resolution: {integrity: sha512-phuB3hoP7FFKbRXxjl+DRlQDuJqhpOnm5MmtROXyWi3uS/Xg2ZXqiQfcG2BJHiN4QKyzdOJi3NEn/qTnjUlkmQ==} + '@typescript-eslint/eslint-plugin@8.21.0': + resolution: {integrity: sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/parser@8.10.0': - resolution: {integrity: sha512-E24l90SxuJhytWJ0pTQydFT46Nk0Z+bsLKo/L8rtQSL93rQ6byd1V/QbDpHUTdLPOMsBCcYXZweADNCfOCmOAg==} + '@typescript-eslint/parser@8.21.0': + resolution: {integrity: sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@8.10.0': - resolution: {integrity: sha512-AgCaEjhfql9MDKjMUxWvH7HjLeBqMCBfIaBbzzIcBbQPZE7CPh1m6FF+L75NUMJFMLYhCywJXIDEMa3//1A0dw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.6.0': - resolution: {integrity: sha512-ZuoutoS5y9UOxKvpc/GkvF4cuEmpokda4wRg64JEia27wX+PysIE9q+lzDtlHHgblwUWwo5/Qn+/WyTUvDwBHw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/type-utils@8.10.0': - resolution: {integrity: sha512-PCpUOpyQSpxBn230yIcK+LeCQaXuxrgCm2Zk1S+PTIRJsEfU6nJ0TtwyH8pIwPK/vJoA+7TZtzyAJSGBz+s/dg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/types@8.10.0': - resolution: {integrity: sha512-k/E48uzsfJCRRbGLapdZgrX52csmWJ2rcowwPvOZ8lwPUv3xW6CcFeJAXgx4uJm+Ge4+a4tFOkdYvSpxhRhg1w==} + '@typescript-eslint/scope-manager@8.21.0': + resolution: {integrity: sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.6.0': - resolution: {integrity: sha512-rojqFZGd4MQxw33SrOy09qIDS8WEldM8JWtKQLAjf/X5mGSeEFh5ixQlxssMNyPslVIk9yzWqXCsV2eFhYrYUw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.10.0': - resolution: {integrity: sha512-3OE0nlcOHaMvQ8Xu5gAfME3/tWVDpb/HxtpUZ1WeOAksZ/h/gwrBzCklaGzwZT97/lBbbxJ16dMA98JMEngW4w==} + '@typescript-eslint/type-utils@8.21.0': + resolution: {integrity: sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/typescript-estree@8.6.0': - resolution: {integrity: sha512-MOVAzsKJIPIlLK239l5s06YXjNqpKTVhBVDnqUumQJja5+Y94V3+4VUFRA0G60y2jNnTVwRCkhyGQpavfsbq/g==} + '@typescript-eslint/types@8.21.0': + resolution: {integrity: sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - '@typescript-eslint/utils@8.10.0': - resolution: {integrity: sha512-Oq4uZ7JFr9d1ZunE/QKy5egcDRXT/FrS2z/nlxzPua2VHFtmMvFNDvpq1m/hq0ra+T52aUezfcjGRIB7vNJF9w==} + '@typescript-eslint/typescript-estree@8.21.0': + resolution: {integrity: sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/utils@8.6.0': - resolution: {integrity: sha512-eNp9cWnYf36NaOVjkEUznf6fEgVy1TWpE0o52e4wtojjBx7D1UV2WAWGzR+8Y5lVFtpMLPwNbC67T83DWSph4A==} + '@typescript-eslint/utils@8.21.0': + resolution: {integrity: sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.8.0' - '@typescript-eslint/visitor-keys@8.10.0': - resolution: {integrity: sha512-k8nekgqwr7FadWk548Lfph6V3r9OVqjzAIVskE7orMZR23cGJjAOVazsZSJW+ElyjfTM4wx/1g88Mi70DDtG9A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.6.0': - resolution: {integrity: sha512-wapVFfZg9H0qOYh4grNVQiMklJGluQrOUiOhYRrQWhx7BY/+I1IYb8BczWNbbUpO+pqy0rDciv3lQH5E1bCLrg==} + '@typescript-eslint/visitor-keys@8.21.0': + resolution: {integrity: sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@unhead/dom@1.11.6': - resolution: {integrity: sha512-FYU8Cu+XWcpbO4OvXdB6x7m6GTPcl6CW7igI8rNu6Kc0Ilxb+atxIvyFXdTGAyB7h/F0w3ex06ZVWJ65f3EW8A==} + '@unhead/dom@1.11.18': + resolution: {integrity: sha512-zQuJUw/et9zYEV0SZWTDX23IgurwMaXycAuxt4L6OgNL0T4TWP3a0J/Vm3Q02hmdNo/cPKeVBrwBdnFUXjGU4w==} - '@unhead/schema@1.11.6': - resolution: {integrity: sha512-Ava5+kQERaZ2fi66phgR9KZQr9SsheN1YhhKM8fCP2A4Jb5lHUssVQ19P0+89V6RX9iUg/Q27WdEbznm75LzhQ==} + '@unhead/schema@1.11.18': + resolution: {integrity: sha512-a3TA/OJCRdfbFhcA3Hq24k1ZU1o9szicESrw8DZcGyQFacHnh84mVgnyqSkMnwgCmfN4kvjSiTBlLEHS6+wATw==} - '@unhead/shared@1.11.6': - resolution: {integrity: sha512-aGrtzRCcFlVh9iru73fBS8FA1vpQskS190t5cCRRMpisOEunVv3ueqXN1F8CseQd0W4wyEr/ycDvdfKt+RPv5g==} + '@unhead/shared@1.11.18': + resolution: {integrity: sha512-OsupRQRxJqqnuKiL1Guqipjbl7MndD5DofvmGa3PFGu2qNPmOmH2mxGFjRBBgq2XxY1KalIHl/2I9HV6gbK8cw==} - '@unhead/ssr@1.11.6': - resolution: {integrity: sha512-jmRkJB3UWlaAV6aoTBcsi2cLOje8hJxWqbmcLmekmCBZcCgR8yHEjxVCzLtYnAQg68Trgg9+uqMt+8UFY40tDA==} + '@unhead/ssr@1.11.18': + resolution: {integrity: sha512-uaHPz0RRAb18yKeCmHyHk5QKWRk/uHpOrqSbhRXTOhbrd3Ur3gGTVaAoyUoRYKGPU5B5/pyHh3TfLw0LkfrH1A==} - '@unhead/vue@1.11.6': - resolution: {integrity: sha512-CMuDJGTi4n4wKdOp6/JmB9roGshjTdoFKF34PEkXu4+g97BiVFiZ9LvgY44+UlWCUzQHcqEPRQIzm9iKEqcfKw==} + '@unhead/vue@1.11.18': + resolution: {integrity: sha512-Jfi7t/XNBnlcauP9UTH3VHBcS69G70ikFd2e5zdgULLDRWpOlLs1sSTH1V2juNptc93DOk9RQfC5jLWbLcivFw==} peerDependencies: vue: '>=2.7 || >=3' - '@vercel/nft@0.26.5': - resolution: {integrity: sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==} + '@vercel/nft@0.27.10': + resolution: {integrity: sha512-zbaF9Wp/NsZtKLE4uVmL3FyfFwlpDyuymQM1kPbeT0mVOHKDQQNjnnfslB3REg3oZprmNFJuh3pkHBk2qAaizg==} engines: {node: '>=16'} hasBin: true - '@vitejs/plugin-vue-jsx@4.0.1': - resolution: {integrity: sha512-7mg9HFGnFHMEwCdB6AY83cVK4A6sCqnrjFYF4WIlebYAQVVJ/sC/CiTruVdrRlhrFoeZ8rlMxY9wYpPTIRhhAg==} + '@vitejs/plugin-vue-jsx@4.1.1': + resolution: {integrity: sha512-uMJqv/7u1zz/9NbWAD3XdjaY20tKTf17XVfQ9zq4wY1BjsB/PjpJPMe2xiG39QpP4ZdhYNhm4Hvo66uJrykNLA==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^5.0.0 + vite: ^5.0.0 || ^6.0.0 vue: ^3.0.0 - '@vitejs/plugin-vue@5.1.4': - resolution: {integrity: sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A==} + '@vitejs/plugin-vue@5.2.1': + resolution: {integrity: sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==} engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^5.0.0 + vite: ^5.0.0 || ^6.0.0 vue: ^3.2.25 - '@vitest/expect@2.1.3': - resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} + '@vitest/expect@3.0.3': + resolution: {integrity: sha512-SbRCHU4qr91xguu+dH3RUdI5dC86zm8aZWydbp961aIR7G8OYNN6ZiayFuf9WAngRbFOfdrLHCGgXTj3GtoMRQ==} - '@vitest/mocker@2.1.3': - resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} + '@vitest/mocker@3.0.3': + resolution: {integrity: sha512-XT2XBc4AN9UdaxJAeIlcSZ0ILi/GzmG5G8XSly4gaiqIvPV3HMTSIDZWJVX6QRJ0PX1m+W8Cy0K9ByXNb/bPIA==} peerDependencies: - '@vitest/spy': 2.1.3 - msw: ^2.3.5 - vite: ^5.0.0 + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 peerDependenciesMeta: msw: optional: true vite: optional: true - '@vitest/pretty-format@2.1.3': - resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} + '@vitest/pretty-format@3.0.3': + resolution: {integrity: sha512-gCrM9F7STYdsDoNjGgYXKPq4SkSxwwIU5nkaQvdUxiQ0EcNlez+PdKOVIsUJvh9P9IeIFmjn4IIREWblOBpP2Q==} - '@vitest/runner@2.1.3': - resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} + '@vitest/runner@3.0.3': + resolution: {integrity: sha512-Rgi2kOAk5ZxWZlwPguRJFOBmWs6uvvyAAR9k3MvjRvYrG7xYvKChZcmnnpJCS98311CBDMqsW9MzzRFsj2gX3g==} - '@vitest/snapshot@2.1.3': - resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} + '@vitest/snapshot@3.0.3': + resolution: {integrity: sha512-kNRcHlI4txBGztuJfPEJ68VezlPAXLRT1u5UCx219TU3kOG2DplNxhWLwDf2h6emwmTPogzLnGVwP6epDaJN6Q==} - '@vitest/spy@2.1.3': - resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} + '@vitest/spy@3.0.3': + resolution: {integrity: sha512-7/dgux8ZBbF7lEIKNnEqQlyRaER9nkAL9eTmdKJkDO3hS8p59ATGwKOCUDHcBLKr7h/oi/6hP+7djQk8049T2A==} - '@vitest/utils@2.1.3': - resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} + '@vitest/utils@3.0.3': + resolution: {integrity: sha512-f+s8CvyzPtMFY1eZKkIHGhPsQgYo5qCm6O8KZoim9qm1/jT64qBgGpO5tHscNH6BzRHM+edLNOP+3vO8+8pE/A==} - '@volar/language-core@2.4.5': - resolution: {integrity: sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==} + '@volar/language-core@2.4.11': + resolution: {integrity: sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==} - '@volar/source-map@2.4.5': - resolution: {integrity: sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==} + '@volar/source-map@2.4.11': + resolution: {integrity: sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==} - '@volar/typescript@2.4.5': - resolution: {integrity: sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==} + '@volar/typescript@2.4.11': + resolution: {integrity: sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==} - '@vue-macros/common@1.14.0': - resolution: {integrity: sha512-xwQhDoEXRNXobNQmdqOD20yUGdVLVLZe4zhDlT9q/E+z+mvT3wukaAoJG80XRnv/BcgOOCVpxqpkQZ3sNTgjWA==} + '@vue-macros/common@1.16.1': + resolution: {integrity: sha512-Pn/AWMTjoMYuquepLZP813BIcq8DTZiNCoaceuNlvaYuOTd8DqBZWc5u0uOMQZMInwME1mdSmmBAcTluiV9Jtg==} engines: {node: '>=16.14.0'} peerDependencies: vue: ^2.7.0 || ^3.2.25 @@ -1713,17 +1640,17 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@vue/compiler-core@3.5.6': - resolution: {integrity: sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==} + '@vue/compiler-core@3.5.13': + resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} - '@vue/compiler-dom@3.5.6': - resolution: {integrity: sha512-xRXqxDrIqK8v8sSScpistyYH0qYqxakpsIvqMD2e5sV/PXQ1mTwtXp4k42yHK06KXxKSmitop9e45Ui/3BrTEw==} + '@vue/compiler-dom@3.5.13': + resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==} - '@vue/compiler-sfc@3.5.6': - resolution: {integrity: sha512-pjWJ8Kj9TDHlbF5LywjVso+BIxCY5wVOLhkEXRhuCHDxPFIeX1zaFefKs8RYoHvkSMqRWt93a0f2gNJVJixHwg==} + '@vue/compiler-sfc@3.5.13': + resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==} - '@vue/compiler-ssr@3.5.6': - resolution: {integrity: sha512-VpWbaZrEOCqnmqjE83xdwegtr5qO/2OPUC6veWgvNqTJ3bYysz6vY3VqMuOijubuUYPRpG3OOKIh9TD0Stxb9A==} + '@vue/compiler-ssr@3.5.13': + resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} '@vue/compiler-vue2@2.7.16': resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} @@ -1731,47 +1658,47 @@ packages: '@vue/devtools-api@6.6.4': resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} - '@vue/devtools-core@7.4.4': - resolution: {integrity: sha512-DLxgA3DfeADkRzhAfm3G2Rw/cWxub64SdP5b+s5dwL30+whOGj+QNhmyFpwZ8ZTrHDFRIPj0RqNzJ8IRR1pz7w==} + '@vue/devtools-core@7.6.8': + resolution: {integrity: sha512-8X4roysTwzQ94o7IobjVcOd1aZF5iunikrMrHPI2uUdigZCi2kFTQc7ffYiFiTNaLElCpjOhCnM7bo7aK1yU7A==} peerDependencies: vue: ^3.0.0 - '@vue/devtools-kit@7.4.4': - resolution: {integrity: sha512-awK/4NfsUG0nQ7qnTM37m7ZkEUMREyPh8taFCX+uQYps/MTFEum0AD05VeGDRMXwWvMmGIcWX9xp8ZiBddY0jw==} + '@vue/devtools-kit@7.6.8': + resolution: {integrity: sha512-JhJ8M3sPU+v0P2iZBF2DkdmR9L0dnT5RXJabJqX6o8KtFs3tebdvfoXV2Dm3BFuqeECuMJIfF1aCzSt+WQ4wrw==} - '@vue/devtools-shared@7.4.5': - resolution: {integrity: sha512-2XgUOkL/7QDmyYI9J7cm+rz/qBhcGv+W5+i1fhwdQ0HQ1RowhdK66F0QBuJSz/5k12opJY8eN6m03/XZMs7imQ==} + '@vue/devtools-shared@7.7.0': + resolution: {integrity: sha512-jtlQY26R5thQxW9YQTpXbI0HoK0Wf9Rd4ekidOkRvSy7ChfK0kIU6vvcBtjj87/EcpeOSK49fZAicaFNJcoTcQ==} - '@vue/language-core@2.1.6': - resolution: {integrity: sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==} + '@vue/language-core@2.2.0': + resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@vue/reactivity@3.5.6': - resolution: {integrity: sha512-shZ+KtBoHna5GyUxWfoFVBCVd7k56m6lGhk5e+J9AKjheHF6yob5eukssHRI+rzvHBiU1sWs/1ZhNbLExc5oYQ==} + '@vue/reactivity@3.5.13': + resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} - '@vue/runtime-core@3.5.6': - resolution: {integrity: sha512-FpFULR6+c2lI+m1fIGONLDqPQO34jxV8g6A4wBOgne8eSRHP6PQL27+kWFIx5wNhhjkO7B4rgtsHAmWv7qKvbg==} + '@vue/runtime-core@3.5.13': + resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==} - '@vue/runtime-dom@3.5.6': - resolution: {integrity: sha512-SDPseWre45G38ENH2zXRAHL1dw/rr5qp91lS4lt/nHvMr0MhsbCbihGAWLXNB/6VfFOJe2O+RBRkXU+CJF7/sw==} + '@vue/runtime-dom@3.5.13': + resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==} - '@vue/server-renderer@3.5.6': - resolution: {integrity: sha512-zivnxQnOnwEXVaT9CstJ64rZFXMS5ZkKxCjDQKiMSvUhXRzFLWZVbaBiNF4HGDqGNNsTgmjcCSmU6TB/0OOxLA==} + '@vue/server-renderer@3.5.13': + resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==} peerDependencies: - vue: 3.5.6 + vue: 3.5.13 - '@vue/shared@3.5.6': - resolution: {integrity: sha512-eidH0HInnL39z6wAt6SFIwBrvGOpDWsDxlw3rCgo1B+CQ1781WzQUSU3YjxgdkcJo9Q8S6LmXTkvI+cLHGkQfA==} + '@vue/shared@3.5.13': + resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} - '@vueuse/core@11.1.0': - resolution: {integrity: sha512-P6dk79QYA6sKQnghrUz/1tHi0n9mrb/iO1WTMk/ElLmTyNqgDeSZ3wcDf6fRBGzRJbeG1dxzEOvLENMjr+E3fg==} + '@vueuse/core@12.5.0': + resolution: {integrity: sha512-GVyH1iYqNANwcahAx8JBm6awaNgvR/SwZ1fjr10b8l1HIgDp82ngNbfzJUgOgWEoxjL+URAggnlilAEXwCOZtg==} - '@vueuse/integrations@11.1.0': - resolution: {integrity: sha512-O2ZgrAGPy0qAjpoI2YR3egNgyEqwG85fxfwmA9BshRIGjV4G6yu6CfOPpMHAOoCD+UfsIl7Vb1bXJ6ifrHYDDA==} + '@vueuse/integrations@12.5.0': + resolution: {integrity: sha512-HYLt8M6mjUfcoUOzyBcX2RjpfapIwHPBmQJtTmXOQW845Y/Osu9VuTJ5kPvnmWJ6IUa05WpblfOwZ+P0G4iZsQ==} peerDependencies: async-validator: ^4 axios: ^1 @@ -1811,17 +1738,23 @@ packages: universal-cookie: optional: true - '@vueuse/math@11.1.0': - resolution: {integrity: sha512-pnjB9WBatF5RHHRbMo2P1w/e5m+r0QQJtGcA1cZGrg5yp1itzixLpMZHEmXVWelRTc0Dfn5uyn/sYmBimU1BoA==} + '@vueuse/math@12.5.0': + resolution: {integrity: sha512-7Mtq4ascSwNk8GVdHywAhMkjxR77+BJUxsjygTI5CwnwnRsTVC5w04QTL9AKfC7ivVua2+Vf2BgP8TR2Xmy4wg==} + + '@vueuse/metadata@12.5.0': + resolution: {integrity: sha512-Ui7Lo2a7AxrMAXRF+fAp9QsXuwTeeZ8fIB9wsLHqzq9MQk+2gMYE2IGJW48VMJ8ecvCB3z3GsGLKLbSasQ5Qlg==} - '@vueuse/metadata@11.1.0': - resolution: {integrity: sha512-l9Q502TBTaPYGanl1G+hPgd3QX5s4CGnpXriVBR5fEZ/goI6fvDaVmIl3Td8oKFurOxTmbXvBPSsgrd6eu6HYg==} + '@vueuse/nuxt@12.5.0': + resolution: {integrity: sha512-daqSOlXv5ilAiT5GlRBtfqdkYjeMO9P6n50OpbEVm9hXmfXmZoXK3YMND8l5n5KcscD4pnD66IrYPqqOW5eH1Q==} + peerDependencies: + nuxt: ^3.0.0 - '@vueuse/shared@11.1.0': - resolution: {integrity: sha512-YUtIpY122q7osj+zsNMFAfMTubGz0sn5QzE5gPzAIiCmtt2ha3uQUY1+JPyL4gRCTsLPX82Y9brNbo/aqlA91w==} + '@vueuse/shared@12.5.0': + resolution: {integrity: sha512-vMpcL1lStUU6O+kdj6YdHDixh0odjPAUM15uJ9f7MY781jcYkIwFA4iv2EfoIPO6vBmvutI1HxxAwmf0cx5ISQ==} - abbrev@1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + abbrev@3.0.0: + resolution: {integrity: sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==} + engines: {node: ^18.17.0 || >=20.5.0} abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -1841,18 +1774,21 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@7.1.3: + resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} + engines: {node: '>= 14'} ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + alien-signals@0.4.14: + resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -1869,10 +1805,6 @@ packages: resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} engines: {node: '>=12'} - ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1888,9 +1820,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - aproba@2.0.0: - resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} - archiver-utils@5.0.2: resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} engines: {node: '>= 14'} @@ -1903,11 +1832,6 @@ packages: resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} engines: {node: '>=14'} - are-we-there-yet@2.0.0: - resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -1922,8 +1846,8 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-kit@1.2.0: - resolution: {integrity: sha512-7TnogTQQZEagrHcOcddY0PqXPxVqFoNPPsKoa42Peyc83iinzT+QPKoRLDmzpaUVWZbgqSoHtezsTIoJyyBE+Q==} + ast-kit@1.4.0: + resolution: {integrity: sha512-BlGeOw73FDsX7z0eZE/wuuafxYoek2yzNJ6l6A1nsb4+z/p87TOPbHaWuN53kFKNuUXiCQa2M+xLF71IqQmRSw==} engines: {node: '>=16.14.0'} ast-walker-scope@0.6.2: @@ -1950,20 +1874,20 @@ packages: peerDependencies: postcss: ^8.1.0 - b4a@1.6.6: - resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} + b4a@1.6.7: + resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.4.2: - resolution: {integrity: sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==} + bare-events@2.5.4: + resolution: {integrity: sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - better-sqlite3@11.3.0: - resolution: {integrity: sha512-iHt9j8NPYF3oKCNOO5ZI4JwThjt3Z6J6XrcwG85VNMVzv1ByqrHWv5VILEbCMFWDsoHhXvQ7oC8vgRXFAKgl9w==} + better-sqlite3@11.8.1: + resolution: {integrity: sha512-9BxNaBkblMjhJW8sMRZxnxVTRgbRmssZW0Oxc1MPBTfiR+WW21e2Mk4qu8CzrcZb1LwPCnFsfDEzq+SNcBU8eg==} binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} @@ -1972,8 +1896,11 @@ packages: bindings@1.5.0: resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - birpc@0.2.17: - resolution: {integrity: sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==} + birpc@0.2.19: + resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==} + + birpc@2.0.19: + resolution: {integrity: sha512-VGAESO2xIs4BUT+o2PryjoZTszWPXFu1S7BllTvtKPIiVTTK5c39JAjwe+eW+us6y3g9n3ZB8svr/VEpVShHpQ==} bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -1991,8 +1918,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.23.3: - resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2045,6 +1972,14 @@ packages: resolution: {integrity: sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==} engines: {node: '>= 6.0.0'} + call-bind-apply-helpers@1.0.1: + resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} + engines: {node: '>= 0.4'} + + call-bound@1.0.3: + resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2056,29 +1991,28 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001662: - resolution: {integrity: sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==} + caniuse-lite@1.0.30001695: + resolution: {integrity: sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==} case-anything@3.1.0: resolution: {integrity: sha512-rRYnn5Elur8RuNHKoJ2b0tgn+pjYxL7BzWom+JZ7NKKn1lt/yGV/tUNwOovxYa9l9VL5hnXQdMc+mENbhJzosQ==} engines: {node: '>=18'} - chai@5.1.1: - resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} - chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - chalk@5.3.0: - resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + change-case@5.4.4: + resolution: {integrity: sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==} + changelogen@0.5.7: resolution: {integrity: sha512-cTZXBcJMl3pudE40WENOakXkcVtrbBpbkmSkM20NdRiUqa4+VYRdXdEsgQ0BNQ6JBE2YymTNWtPKVF7UCTN5+g==} hasBin: true @@ -2091,8 +2025,8 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chokidar@4.0.1: - resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} chownr@1.1.4: @@ -2102,8 +2036,12 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - ci-info@4.0.0: - resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + ci-info@4.1.0: + resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} engines: {node: '>=8'} citty@0.1.6: @@ -2113,9 +2051,6 @@ packages: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} - clear@0.1.0: - resolution: {integrity: sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==} - clipboardy@4.0.0: resolution: {integrity: sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==} engines: {node: '>=18'} @@ -2132,26 +2067,19 @@ packages: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} - color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-support@1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - colord@2.9.3: resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -2188,25 +2116,16 @@ packages: resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} engines: {node: '>= 14'} - computeds@0.0.1: - resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} - confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - consola@3.2.3: - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + consola@3.4.0: + resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} engines: {node: ^14.18.0 || >=16.10.0} - console-control-strings@1.1.0: - resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} - content-disposition@0.5.4: resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} engines: {node: '>= 0.6'} @@ -2232,8 +2151,8 @@ packages: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} - core-js-compat@3.38.1: - resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} + core-js-compat@3.40.0: + resolution: {integrity: sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -2247,31 +2166,23 @@ packages: resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} engines: {node: '>= 14'} - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - croner@8.1.1: - resolution: {integrity: sha512-1VdUuRnQP4drdFkS8NKvDR1NBgevm8TOuflcaZEKsxw42CxonjW/2vkj1AKlinJb4ZLwBcuWF9GiPr7FQc6AQA==} + croner@9.0.0: + resolution: {integrity: sha512-onMB0OkDjkXunhdW9htFjEhqrD54+M94i6ackoUkjHKbRnXdyEyKRelp4nJ1kAz32+s27jP1FsebpJCVl0BsvA==} engines: {node: '>=18.0'} - cronstrue@2.50.0: - resolution: {integrity: sha512-ULYhWIonJzlScCCQrPUG5uMXzXxSixty4djud9SS37DoNxDdkeRocxzHuAo4ImRBUK+mAuU5X9TSwEDccnnuPg==} + cronstrue@2.53.0: + resolution: {integrity: sha512-CkAcaI94xL8h6N7cGxgXfR5D7oV2yVtDzB9vMZP8tIgPyEv/oc/7nq9rlk7LMxvc3N+q6LKZmNLCVxJRpyEg8A==} hasBin: true - cross-fetch@4.0.0: - resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==} + cross-fetch@4.1.0: + resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==} - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - crossws@0.2.4: - resolution: {integrity: sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==} - peerDependencies: - uWebSockets.js: '*' - peerDependenciesMeta: - uWebSockets.js: - optional: true + crossws@0.3.2: + resolution: {integrity: sha512-S2PpQHRcgYABOS2465b34wqTOn5dbLL+iSvyweJYGGFLDsKq88xrjDXUiEhfYkhWZq1HuS6of3okRHILbkrqxw==} css-declaration-sorter@7.2.0: resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} @@ -2324,19 +2235,25 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - db0@0.1.4: - resolution: {integrity: sha512-Ft6eCwONYxlwLjBXSJxw0t0RYtA5gW9mq8JfBXn9TtC0nDPlqePAhpv9v4g9aONBi6JI1OXHTKKkUYGd+BOrCA==} + db0@0.2.1: + resolution: {integrity: sha512-BWSFmLaCkfyqbSEZBQINMVNjCVfrogi7GQ2RSy1tmtfK9OXlsup6lUMwLsqSD7FbAjD04eWFdXowSHHUp6SE/Q==} peerDependencies: - '@libsql/client': ^0.5.2 - better-sqlite3: ^9.4.3 - drizzle-orm: ^0.29.4 + '@electric-sql/pglite': '*' + '@libsql/client': '*' + better-sqlite3: '*' + drizzle-orm: '*' + mysql2: '*' peerDependenciesMeta: + '@electric-sql/pglite': + optional: true '@libsql/client': optional: true better-sqlite3: optional: true drizzle-orm: optional: true + mysql2: + optional: true de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -2357,8 +2274,8 @@ packages: supports-color: optional: true - debug@4.3.7: - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -2438,8 +2355,8 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - devalue@5.0.0: - resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} + devalue@5.1.1: + resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -2469,17 +2386,21 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} - dot-prop@8.0.2: - resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==} - engines: {node: '>=16'} + dot-prop@9.0.0: + resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} + engines: {node: '>=18'} - dotenv@16.4.5: - resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} @@ -2489,8 +2410,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.25: - resolution: {integrity: sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==} + electron-to-chromium@1.5.84: + resolution: {integrity: sha512-I+DQ8xgafao9Ha6y0qjHHvpZ9OfyA1qKlkHkjywxzniORU2awxyz7f/iVJcULmrF2yrM3nHQf+iDjJtbbexd/g==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2509,8 +2430,8 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enhanced-resolve@5.17.1: - resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + enhanced-resolve@5.18.0: + resolution: {integrity: sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -2523,19 +2444,29 @@ packages: error-stack-parser-es@0.1.5: resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==} + error-stack-parser-es@1.0.5: + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} + errx@0.1.0: resolution: {integrity: sha512-fZmsRiDNv07K6s2KkKFTiD2aIvECa7++PKyD5NC32tpRw46qZA3sOz+aM+/V9V0GDHxVTKLziveV4JhzBHDp9Q==} - es-module-lexer@1.5.4: - resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} - esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} - esbuild@0.20.2: - resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + esbuild@0.19.12: + resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} engines: {node: '>=12'} hasBin: true @@ -2544,8 +2475,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.23.1: - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + esbuild@0.24.2: + resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} engines: {node: '>=18'} hasBin: true @@ -2568,65 +2499,74 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-flat-gitignore@0.3.0: - resolution: {integrity: sha512-0Ndxo4qGhcewjTzw52TK06Mc00aDtHNTdeeW2JfONgDcLkRO/n/BteMRzNVpLQYxdCC/dFEilfM9fjjpGIJ9Og==} - peerDependencies: - eslint: ^9.5.0 + eslint-config-flat-gitignore@0.2.0: + resolution: {integrity: sha512-s4lsQLYX+76FCt3PZPwdLwWlqssa5SLufl2gopFmCo3PETOLY3OW5IrD3/l2R0FfYEJvd9BRJ19yJ+yfc5oW3g==} - eslint-flat-config-utils@0.4.0: - resolution: {integrity: sha512-kfd5kQZC+BMO0YwTol6zxjKX1zAsk8JfSAopbKjKqmENTJcew+yBejuvccAg37cvOrN0Mh+DVbeyznuNWEjt4A==} + eslint-flat-config-utils@1.1.0: + resolution: {integrity: sha512-W49wz7yQJGRfg4QSV3nwdO/fYcWetiSKhLV5YykfQMcqnIATNpoS7EPdINhLB9P3fmdjNmFtOgZjiKnCndWAnw==} eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-plugin-import-x@4.3.1: - resolution: {integrity: sha512-5TriWkXulDl486XnYYRgsL+VQoS/7mhN/2ci02iLCuL7gdhbiWxnsuL/NTcaKY9fpMgsMFjWZBtIGW7pb+RX0g==} + eslint-merge-processors@1.0.0: + resolution: {integrity: sha512-4GybyHmhXtT7/W8RAouQzNM0791sYasJCTYHIAYjuiJvbNFY0jMKkoESREhX+mjX37dxiN6v4EqhZ1nc0tJF7A==} + peerDependencies: + eslint: '*' + + eslint-plugin-import-x@4.6.1: + resolution: {integrity: sha512-wluSUifMIb7UfwWXqx7Yx0lE/SGCcGXECLx/9bCmbY2nneLwvAZ4vkd1IXDjPKFvdcdUgr1BaRnaRpx3k2+Pfw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - eslint-plugin-jsdoc@50.4.3: - resolution: {integrity: sha512-uWtwFxGRv6B8sU63HZM5dAGDhgsatb+LONwmILZJhdRALLOkCX2HFZhdL/Kw2ls8SQMAVEfK+LmnEfxInRN8HA==} + eslint-plugin-jsdoc@50.6.2: + resolution: {integrity: sha512-n7GNZ4czMAAbDg7DsDA7PvHo1IPIUwAXYmxTx6j/hTlXbt5V0x5q/kGkiJ7s4wA9SpB/yaiK8jF7CO237lOLew==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - eslint-plugin-regexp@2.6.0: - resolution: {integrity: sha512-FCL851+kislsTEQEMioAlpDuK5+E5vs0hi1bF8cFlPlHcEjeRhuAzEsGikXRreE+0j4WhW2uO54MqTjXtYOi3A==} + eslint-plugin-regexp@2.7.0: + resolution: {integrity: sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==} engines: {node: ^18 || >=20} peerDependencies: eslint: '>=8.44.0' - eslint-plugin-unicorn@56.0.0: - resolution: {integrity: sha512-aXpddVz/PQMmd69uxO98PA4iidiVNvA0xOtbpUoz1WhBd4RxOQQYqN618v68drY0hmy5uU2jy1bheKEVWBjlPw==} + eslint-plugin-unicorn@56.0.1: + resolution: {integrity: sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==} engines: {node: '>=18.18'} peerDependencies: eslint: '>=8.56.0' - eslint-plugin-vue@9.29.1: - resolution: {integrity: sha512-MH/MbVae4HV/tM8gKAVWMPJbYgW04CK7SuzYRrlNERpxbO0P3+Zdsa2oAcFBW6xNu7W6lIkGOsFAMCRTYmrlWQ==} + eslint-plugin-vue@9.32.0: + resolution: {integrity: sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + eslint-processor-vue-blocks@0.1.2: + resolution: {integrity: sha512-PfpJ4uKHnqeL/fXUnzYkOax3aIenlwewXRX8jFinA1a2yCFnLgMuiH3xvCgvHHUlV2xJWQHbCTdiJWGwb3NqpQ==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: ^8.50.0 || ^9.0.0 + eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-scope@8.1.0: - resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} + eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.1.0: - resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.13.0: - resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} + eslint@9.18.0: + resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2635,8 +2575,8 @@ packages: jiti: optional: true - espree@10.2.0: - resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} espree@9.6.1: @@ -2689,6 +2629,10 @@ packages: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + externality@1.0.2: resolution: {integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==} @@ -2702,8 +2646,8 @@ packages: fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} - fast-glob@3.3.2: - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} fast-json-stable-stringify@2.1.0: @@ -2715,19 +2659,11 @@ packages: fast-npm-meta@0.2.2: resolution: {integrity: sha512-E+fdxeaOQGo/CMWc9f4uHFfgUPJRAu7N3uB8GBvB3SDPAIWJK4GKyYhkAGFq+GYrcbKNfQIz5VVQyJnDuPPCrg==} - fastq@1.17.1: - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - - fdir@6.3.0: - resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true + fastq@1.18.0: + resolution: {integrity: sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==} - fdir@6.4.2: - resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -2761,8 +2697,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} @@ -2782,8 +2718,8 @@ packages: fs-constants@1.0.0: resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} - fs-extra@11.2.0: - resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + fs-extra@11.3.0: + resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} fs-extra@9.1.0: @@ -2809,11 +2745,6 @@ packages: resolution: {integrity: sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==} engines: {node: '>=10'} - gauge@3.0.2: - resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} - engines: {node: '>=10'} - deprecated: This package is no longer supported. - gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} @@ -2822,12 +2753,17 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + get-intrinsic@1.2.7: + resolution: {integrity: sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==} + engines: {node: '>= 0.4'} get-port-please@3.1.2: resolution: {integrity: sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==} + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -2836,8 +2772,8 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.8.1: - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} giget@1.2.3: resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} @@ -2847,11 +2783,11 @@ packages: resolution: {integrity: sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA==} engines: {node: '>=4'} - git-up@7.0.0: - resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} + git-up@8.0.0: + resolution: {integrity: sha512-uBI8Zdt1OZlrYfGcSVroLJKgyNNXlgusYFzHk614lTasz35yg2PVpL1RMy0LOO2dcvF9msYW3pRfUSmafZNrjg==} - git-url-parse@15.0.0: - resolution: {integrity: sha512-5reeBufLi+i4QD3ZFftcJs9jC26aULFLBU23FeKM/b1rI0K6ofIeAblmDVO7Ht22zTDE9+CkJ3ZVb0CgJmz3UQ==} + git-url-parse@16.0.0: + resolution: {integrity: sha512-Y8iAF0AmCaqXc6a5GYgPQW9ESbncNLOL+CeQAJRhmWUOmnPkKpBYeWYp4mFd3LA5j53CdGDdslzX12yEBVHQQg==} github-from-package@0.0.0: resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} @@ -2893,8 +2829,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.11.0: - resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} + globals@15.14.0: + resolution: {integrity: sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==} engines: {node: '>=18'} globby@13.2.2: @@ -2905,6 +2841,10 @@ packages: resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} engines: {node: '>=18'} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -2915,31 +2855,21 @@ packages: resolution: {integrity: sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - h3@1.12.0: - resolution: {integrity: sha512-Zi/CcNeWBXDrFNlV0hUBJQR9F7a96RjMeAZweW/ZWkR9fuXrMcvKnSA63f/zZ9l0GgQOZDVHGvXivNN9PWOwhA==} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} + h3@1.14.0: + resolution: {integrity: sha512-ao22eiONdgelqcnknw0iD645qW0s9NnrJHr5OBz4WOMdBdycfSas1EQf1wXRsm+PcB2Yoj43pjBPwqIpJQTeWg==} has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} engines: {node: '>= 0.4'} has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} - has-unicode@2.0.1: - resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} - - hash-sum@2.0.0: - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -2978,12 +2908,12 @@ packages: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} - httpxy@0.1.5: - resolution: {integrity: sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==} + httpxy@0.1.6: + resolution: {integrity: sha512-GxJLI6oJZ3NbJl/vDlPmTCtP4WHwboNhGLHOcgf/3ia1QC5sdLglWbRHZwQjzjPuiCyw7MWwpwbsUfRDQlOdeg==} human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} @@ -3000,6 +2930,10 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} + ignore@7.0.3: + resolution: {integrity: sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==} + engines: {node: '>= 4'} + image-meta@0.2.1: resolution: {integrity: sha512-K6acvFaelNxx8wc2VjbIzXKDVB0Khs0QT35U6NkGfTdCmjLNcO2945m7RFNR9/RPVFm48hq7QPzK8uGH18HCGw==} @@ -3007,8 +2941,8 @@ packages: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} - impound@0.1.0: - resolution: {integrity: sha512-F9nJgOsDc3tysjN74edE0vGPEQrU7DAje6g5nNAL5Jc9Tv4JW3mH7XMGne+EaadTniDXLeUrVR21opkNfWO1zQ==} + impound@0.2.0: + resolution: {integrity: sha512-gXgeSyp9Hf7qG2/PLKmywHXyQf2xFrw+mJGpoj9DsAB9L7/MIKn+DeEx98UryWXdmbv8wUUPdcQof6qXnZoCGg==} imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} @@ -3018,6 +2952,10 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + index-to-position@0.1.2: + resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} + engines: {node: '>=18'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -3035,14 +2973,10 @@ packages: resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ioredis@5.4.1: - resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} + ioredis@5.4.2: + resolution: {integrity: sha512-0SZXGNGZ+WzISQ67QDyZ2x0+wVxjjUndtD8oSeik/4ajifeiRufed8fCb8QW8VMyi4MXcS+UO1k/0NGhvq1PAg==} engines: {node: '>=12.22.0'} - ipaddr.js@2.2.0: - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} - engines: {node: '>= 10'} - iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} @@ -3057,8 +2991,8 @@ packages: resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} engines: {node: '>=6'} - is-core-module@2.15.1: - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + is-core-module@2.16.1: + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} is-docker@2.2.1: @@ -3079,8 +3013,8 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + is-generator-function@1.1.0: + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} is-glob@4.0.3: @@ -3110,6 +3044,10 @@ packages: is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + is-ssh@1.4.0: resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} @@ -3146,19 +3084,26 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jiti@1.21.6: - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} hasBin: true - jiti@2.3.3: - resolution: {integrity: sha512-EX4oNDwcXSivPrw2qKH2LB5PoFxEvgtv2JgwW0bU858HoLQ+kutSvjLMUqBd0PeJYEinLWhoI9Ol0eYMqj/wNQ==} + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true + jose@5.9.6: + resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} + + js-levenshtein@1.1.6: + resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} + engines: {node: '>=0.10.0'} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-tokens@9.0.0: - resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -3172,13 +3117,8 @@ packages: resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} hasBin: true - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - - jsesc@3.0.2: - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} hasBin: true @@ -3191,6 +3131,9 @@ packages: json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -3217,8 +3160,8 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} - knitwork@1.1.0: - resolution: {integrity: sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw==} + knitwork@1.2.0: + resolution: {integrity: sha512-xYSH7AvuQ6nXkq42x0v5S8/Iry+cfulBz/DJQzhIyESdLD7425jXsPy4vn5cCXU+HhRN2kVw51Vd1K6/By4BQg==} koa-compose@4.1.0: resolution: {integrity: sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==} @@ -3253,23 +3196,23 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - - lilconfig@3.1.2: - resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - listhen@1.7.2: - resolution: {integrity: sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==} + listhen@1.9.0: + resolution: {integrity: sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg==} hasBin: true - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + local-pkg@0.5.1: + resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==} + engines: {node: '>=14'} + + local-pkg@1.0.0: + resolution: {integrity: sha512-bbgPw/wmroJsil/GgL4qjDzs5YLTBMQ99weRsok1XCDccQeehbHA/I1oRvk2NPtr7KGZgT/Y5tPRnAtMqeG2Kg==} engines: {node: '>=14'} locate-path@5.0.0: @@ -3304,8 +3247,8 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - loupe@3.1.1: - resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -3316,22 +3259,19 @@ packages: magic-regexp@0.8.0: resolution: {integrity: sha512-lOSLWdE156csDYwCTIGiAymOLN7Epu/TU5e/oAnISZfU6qP+pgjkE+xbVjVn3yLPKN8n1G2yIAYTAM5KRk6/ow==} - magic-string-ast@0.6.2: - resolution: {integrity: sha512-oN3Bcd7ZVt+0VGEs7402qR/tjgjbM7kPlH/z7ufJnzTLVBzXJITRHOJiwMmmYMgZfdoWQsfQcY+iKlxiBppnMA==} + magic-string-ast@0.7.0: + resolution: {integrity: sha512-686fgAHaJY7wLTFEq7nnKqeQrhqmXB19d1HnqT35Ci7BN6hbAYLZUezTQ062uUHM7ggZEQlqJ94Ftls+KDXU8Q==} engines: {node: '>=16.14.0'} - magic-string@0.30.11: - resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} - - magic-string@0.30.12: - resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - make-dir@3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} mdn-data@2.0.28: resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} @@ -3376,8 +3316,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - mime@4.0.4: - resolution: {integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==} + mime@4.0.6: + resolution: {integrity: sha512-4rGt7rvQHBbaSOF9POGkk1ocRP16Md1x36Xma8sz8h8/vfCUI2OtEIeCqe4Ofes853x4xDoPiFLIT47J5fI/7A==} engines: {node: '>=16'} hasBin: true @@ -3427,6 +3367,10 @@ packages: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} + minizlib@3.0.1: + resolution: {integrity: sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==} + engines: {node: '>= 18'} + mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} @@ -3442,8 +3386,13 @@ packages: engines: {node: '>=10'} hasBin: true - mkdist@1.5.9: - resolution: {integrity: sha512-PdJimzhcgDxaHpk1SUabw56gT3BU15vBHUTHkeeus8Kl7jUkpgG7+z0PiS/y23XXgO8TiU/dKP3L1oG55qrP1g==} + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + + mkdist@1.6.0: + resolution: {integrity: sha512-nD7J/mx33Lwm4Q4qoPgRBVA9JQNKgyE7fLo5vdPWVDdjz96pXglGERp/fRnGPCTB37Kykfxs5bDdXa9BWOT9nw==} hasBin: true peerDependencies: sass: ^1.78.0 @@ -3457,11 +3406,8 @@ packages: vue-tsc: optional: true - mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} - - mlly@1.7.2: - resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} + mlly@1.7.4: + resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -3483,21 +3429,21 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nanoid@3.3.7: - resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + nanoid@3.3.8: + resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.0.7: - resolution: {integrity: sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==} + nanoid@5.0.9: + resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} engines: {node: ^18 || >=20} hasBin: true nanotar@0.1.1: resolution: {integrity: sha512-AiJsGsSF3O0havL1BydvI4+wR76sKT+okKRwWIaK96cZUnXqH0uNBOsHlbwZq3+m2BR1VKqHDVudl3gO4mYjpQ==} - napi-build-utils@1.0.2: - resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -3506,8 +3452,8 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - nitropack@2.9.7: - resolution: {integrity: sha512-aKXvtNrWkOCMsQbsk4A0qQdBjrJ1ZcvwlTQevI/LAgLWLYc5L7Q/YiYxGLal4ITyNSlzir1Cm1D2ZxnYhmpMEw==} + nitropack@2.10.4: + resolution: {integrity: sha512-sJiG/MIQlZCVSw2cQrFG1H6mLeSqHlYfFerRjLKz69vUfdu0EL2l0WdOxlQbzJr3mMv/l4cOlCCLzVRzjzzF/g==} engines: {node: ^16.11.0 || >=17.0.0} hasBin: true peerDependencies: @@ -3516,15 +3462,15 @@ packages: xml2js: optional: true - node-abi@3.68.0: - resolution: {integrity: sha512-7vbj10trelExNjFSBm5kTvZXXa7pZyKWx9RCKIyqe6I9Ev3IzGpQoqBP3a+cOdxY+pWj6VkP28n/2wWysBHD/A==} + node-abi@3.73.0: + resolution: {integrity: sha512-z8iYzQGBu35ZkTQ9mtR8RqugJZ9RCLn8fv3d7LsgDBzOijGQP3RdKTX4LA7LXw03ZhU5z0l4xfhIMgSES31+cg==} engines: {node: '>=10'} node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-fetch-native@1.6.4: - resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} + node-fetch-native@1.6.6: + resolution: {integrity: sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==} node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} @@ -3539,16 +3485,16 @@ packages: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} - node-gyp-build@4.8.2: - resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-releases@2.0.18: - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} - nopt@5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} + nopt@8.1.0: + resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} + engines: {node: ^18.17.0 || >=20.5.0} hasBin: true normalize-package-data@2.5.0: @@ -3570,39 +3516,51 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npmlog@5.0.1: - resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} - deprecated: This package is no longer supported. - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nuxi@3.13.2: - resolution: {integrity: sha512-yAgpxBcIB2/DWL7dWRZOQa5ULLZQ4AWgYdqtUDbeOZ3KxmY/+fqm8/UJuU7QK81JrccNaZeSI+GLe5BY7RR3cQ==} + nuxi@3.20.0: + resolution: {integrity: sha512-E1R6QvUoinlAkP1EMesU0Dn1xLDLFli9LzaVAYdsmC2frHGIc15jMDRzwkAgK/8ae0H+tjHlfi/Qps/jZwF+7g==} engines: {node: ^16.10.0 || >=18.0.0} hasBin: true - nuxt-auth-utils@0.3.8: - resolution: {integrity: sha512-wIED0FXCiBH1FV9LtJbQ3aP/JCK+FEqpAO4ap/h2GRsfGpa5TMPnXb2QcGDdvSGLlDsILQwzL3uw3BteWH+/EA==} + nuxt-auth-utils@0.5.9: + resolution: {integrity: sha512-h1GFT3MDIExe55oIxeakSzjE2JNtZa7OBqgd9vHz2c/aY81KR9TM1kab5laE1+Y0RRHjextNEqxk1K85tn6WnA==} + peerDependencies: + '@simplewebauthn/browser': ^11.0.0 + '@simplewebauthn/server': ^11.0.0 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true - nuxt@3.13.2: - resolution: {integrity: sha512-Bjc2qRsipfBhjXsBEJCN+EUAukhdgFv/KoIR5HFB2hZOYRSqXBod3oWQs78k3ja1nlIhAEdBG533898KJxUtJw==} - engines: {node: ^14.18.0 || >=16.10.0} + nuxt@3.15.2: + resolution: {integrity: sha512-1EiQ5wYYVhgkRyaMCyuc4R5lhJtOPJTdOe3LwYNbIol3pmcO1urhNDNKfhiy9zdcA3G14zzN0W/+TqXXidchRw==} + engines: {node: ^18.20.5 || ^20.9.0 || >=22.0.0} hasBin: true peerDependencies: '@parcel/watcher': ^2.1.0 - '@types/node': ^14.18.0 || >=16.10.0 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 peerDependenciesMeta: '@parcel/watcher': optional: true '@types/node': optional: true - nypm@0.3.11: - resolution: {integrity: sha512-E5GqaAYSnbb6n1qZyik2wjPDZON43FqOJO59+3OkWrnmQtjggrMOVnsyzfjxp/tS6nlYJBA4zRA5jSM2YaadMg==} + nypm@0.3.12: + resolution: {integrity: sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + + nypm@0.4.1: + resolution: {integrity: sha512-1b9mihliBh8UCcKtcGRu//G50iHpjxIQVUqkdhPT/SDVE7KdJKoHXLS0heuYTQCx95dFqiyUbXZB9r8ikn+93g==} engines: {node: ^14.16.0 || >=16.10.0} hasBin: true + oauth4webapi@3.1.4: + resolution: {integrity: sha512-eVfN3nZNbok2s/ROifO0UAc5G8nRoLSbrcKJ09OqmucgnhXEfdIQOR4gq1eJH1rN3gV7rNw62bDEgftsgFtBEg==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -3611,9 +3569,6 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - ofetch@1.3.4: - resolution: {integrity: sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==} - ofetch@1.4.1: resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==} @@ -3646,9 +3601,14 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} - openapi-typescript@6.7.6: - resolution: {integrity: sha512-c/hfooPx+RBIOPM09GSxABOZhYPblDoyaGhqBkD/59vtpN21jEuWKDlM0KYTvqJVlSYjKs0tBcIdeXKChlSPtw==} + openapi-typescript@7.5.2: + resolution: {integrity: sha512-W/QXuQz0Fa3bGY6LKoqTCgrSX+xI/ST+E5RXo2WBmp3WwgXCWKDJPHv5GZmElF4yLCccnqYsakBDOJikHZYGRw==} hasBin: true + peerDependencies: + typescript: ^5.x + + openid-client@6.1.7: + resolution: {integrity: sha512-JfY/KvQgOutmG2P+oVNKInE7zIh+im1MQOaO7g5CtNnTWMociA563WweiEMKfR9ry9XG3K2HGvj9wEqhCQkPMg==} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} @@ -3674,11 +3634,14 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-json-from-dist@1.0.0: - resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@0.2.0: - resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + package-manager-detector@0.2.8: + resolution: {integrity: sha512-ts9KSdroZisdvKMWVAVCXiKqnqNfXz4+IbrBG8/BWx/TR5le+jfenvoBuIZ6UWM9nz47W7AbD9qYfAwfWMIwzA==} + + packrup@0.1.2: + resolution: {integrity: sha512-ZcKU7zrr5GlonoS9cxxrb5HVswGnyj6jQvwFBa6p5VFw7G71VAHcUKL5wyZSU/ECtPM/9gacWxy2KFQKt1gMNA==} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -3688,19 +3651,24 @@ packages: resolution: {integrity: sha512-wXoQGL1D+2COYWCD35/xbiKma1Z15xvZL8cI25wvxzled58V51SJM04Urt/uznS900iQor7QO04SgdfT/XlbuA==} engines: {node: '>=8'} - parse-imports@2.1.1: - resolution: {integrity: sha512-TDT4HqzUiTMO1wJRwg/t/hYk8Wdp3iF/ToMIlAoVQfL1Xs/sTxq1dKWSMjMbQmIarfWKymOyly40+zmPHXMqCA==} + parse-imports@2.2.1: + resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} engines: {node: '>= 18'} parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-json@8.1.0: + resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==} + engines: {node: '>=18'} + parse-path@7.0.0: resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} - parse-url@8.1.0: - resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} + parse-url@9.2.0: + resolution: {integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==} + engines: {node: '>=14.13.0'} parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -3746,6 +3714,9 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathe@2.0.2: + resolution: {integrity: sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -3753,8 +3724,8 @@ packages: perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} - picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -3772,11 +3743,8 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pkg-types@1.2.0: - resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} - - pkg-types@1.2.1: - resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} pluralize@8.0.0: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} @@ -3786,8 +3754,8 @@ packages: resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==} engines: {node: '>= 0.12.0'} - postcss-calc@10.0.2: - resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} + postcss-calc@10.1.0: + resolution: {integrity: sha512-uQ/LDGsf3mgsSUEXmAt3VsCSHR3aKqtEIkmB+4PhzYwRYOW5MZs/GhCCFpsOtJJkP6EC6uGipbrnaTjqaJZcJw==} engines: {node: ^18.12 || ^20.9 || >=22.0} peerDependencies: postcss: ^8.4.38 @@ -3894,9 +3862,9 @@ packages: peerDependencies: postcss: ^8.2.14 - postcss-nesting@12.1.5: - resolution: {integrity: sha512-N1NgI1PDCiAGWPTYrwqm8wpjv0bgDmkYHH72pNsqTCv9CObxjxftdYu6AKtGN+pnJa7FQjMm3v4sp8QJbFsYdQ==} - engines: {node: ^14 || ^16 || >=18} + postcss-nesting@13.0.1: + resolution: {integrity: sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==} + engines: {node: '>=18'} peerDependencies: postcss: ^8.4 @@ -3980,6 +3948,10 @@ packages: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} + postcss-selector-parser@7.0.0: + resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==} + engines: {node: '>=4'} + postcss-svgo@7.0.1: resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} engines: {node: ^18.12.0 || ^20.9.0 || >= 18} @@ -3995,12 +3967,12 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + postcss@8.5.1: + resolution: {integrity: sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==} engines: {node: ^10 || ^12 || >=14} - prebuild-install@7.1.2: - resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} engines: {node: '>=10'} hasBin: true @@ -4033,8 +4005,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pvtsutils@1.3.5: - resolution: {integrity: sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==} + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} pvutils@1.1.3: resolution: {integrity: sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==} @@ -4081,8 +4053,8 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readable-stream@4.5.2: - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} readdir-glob@1.1.3: @@ -4092,9 +4064,9 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - readdirp@4.0.2: - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} - engines: {node: '>= 14.16.0'} + readdirp@4.1.1: + resolution: {integrity: sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==} + engines: {node: '>= 14.18.0'} redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} @@ -4129,6 +4101,10 @@ packages: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -4144,8 +4120,9 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - resolve@1.22.8: - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + resolve@1.22.10: + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + engines: {node: '>= 0.4'} hasBin: true reusify@1.0.4: @@ -4155,9 +4132,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - deprecated: Rimraf versions prior to v4 are no longer supported + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true rollup-plugin-dts@6.1.1: @@ -4167,23 +4143,26 @@ packages: rollup: ^3.29.4 || ^4 typescript: ^4.5 || ^5.0 - rollup-plugin-visualizer@5.12.0: - resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} - engines: {node: '>=14'} + rollup-plugin-visualizer@5.14.0: + resolution: {integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==} + engines: {node: '>=18'} hasBin: true peerDependencies: + rolldown: 1.x rollup: 2.x || 3.x || 4.x peerDependenciesMeta: + rolldown: + optional: true rollup: optional: true - rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + rollup@3.29.5: + resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true - rollup@4.22.0: - resolution: {integrity: sha512-W21MUIFPZ4+O2Je/EU+GP3iz7PH4pVPUXSbEZdatQnxo29+3rsUjgrJmzuAZU24z7yRAnFN6ukxeAhZh/c7hzg==} + rollup@4.31.0: + resolution: {integrity: sha512-9cCE8P4rZLx9+PjoyqHLs31V9a9Vpvfo4qNcs6JCiGWYhw2gijSetFbH6SSy1whnkgcefnUwr8sad7tgqsGvnw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -4200,6 +4179,10 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + safe-stable-stringify@2.5.0: resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} engines: {node: '>=10'} @@ -4211,8 +4194,8 @@ packages: scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + secure-json-parse@3.0.2: + resolution: {integrity: sha512-H6nS2o8bWfpFEV6U38sOSjS7bTbdgbCGU9wEM6W14P5H0QOsz94KCusifV44GpHDTu2nqZbuDNhTzu+mjDSw1w==} semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} @@ -4241,9 +4224,6 @@ packages: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - setprototypeof@1.1.0: resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} @@ -4258,8 +4238,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.1: - resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + shell-quote@1.8.2: + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} + engines: {node: '>= 0.4'} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -4280,9 +4261,9 @@ packages: simple-git@3.27.0: resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} - sirv@2.0.4: - resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} - engines: {node: '>= 10'} + sirv@3.0.0: + resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==} + engines: {node: '>=18'} sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -4335,8 +4316,8 @@ packages: spdx-expression-parse@4.0.0: resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - spdx-license-ids@3.0.20: - resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + spdx-license-ids@3.0.21: + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} speakingurl@14.0.1: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} @@ -4359,11 +4340,11 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - std-env@3.7.0: - resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + std-env@3.8.0: + resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} - streamx@2.20.1: - resolution: {integrity: sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==} + streamx@2.21.1: + resolution: {integrity: sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -4403,8 +4384,11 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strip-literal@2.1.0: - resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + strip-literal@2.1.1: + resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==} + + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} stylehacks@7.0.4: resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} @@ -4417,14 +4401,10 @@ packages: engines: {node: '>=16 || 14 >=14.17'} hasBin: true - superjson@2.2.1: - resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} + superjson@2.2.2: + resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==} engines: {node: '>=16'} - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -4445,8 +4425,8 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - synckit@0.9.1: - resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==} + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} system-architecture@0.1.0: @@ -4460,11 +4440,11 @@ packages: peerDependencies: tailwindcss: 1 || 2 || 2.0.1-compat || 3 - tailwind-merge@2.5.4: - resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} + tailwind-merge@2.6.0: + resolution: {integrity: sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==} - tailwindcss@3.4.14: - resolution: {integrity: sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==} + tailwindcss@3.4.17: + resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} engines: {node: '>=14.0.0'} hasBin: true @@ -4472,8 +4452,8 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - tar-fs@2.1.1: - resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} + tar-fs@2.1.2: + resolution: {integrity: sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==} tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} @@ -4486,16 +4466,17 @@ packages: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} - terser@5.33.0: - resolution: {integrity: sha512-JuPVaB7s1gdFKPKTelwUyRq5Sid2A3Gko2S0PncwdBq7kN9Ti9HPWDQ06MPsEDGsZeVESjKEnyGy68quBk1w6g==} + tar@7.4.3: + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + engines: {node: '>=18'} + + terser@5.37.0: + resolution: {integrity: sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==} engines: {node: '>=10'} hasBin: true - text-decoder@1.2.0: - resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} - - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + text-decoder@1.2.3: + resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} @@ -4510,36 +4491,25 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.0: - resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@0.3.1: - resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} - - tinyglobby@0.2.6: - resolution: {integrity: sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==} - engines: {node: '>=12.0.0'} - - tinyglobby@0.2.9: - resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} - tinypool@1.0.1: - resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + tinypool@1.0.2: + resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} engines: {node: ^18.0.0 || >=20.0.0} - tinyrainbow@1.2.0: - resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} tinyspy@3.0.2: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} - to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -4558,17 +4528,17 @@ packages: truncatise@0.0.8: resolution: {integrity: sha512-cXzueh9pzBCsLzhToB4X4gZCb3KYkrsAcBAX97JnazE74HOl3cpBJYEV7nabHeG/6/WXCU5Yujlde/WPBUwnsg==} - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} - engines: {node: '>=16'} + ts-api-utils@2.0.0: + resolution: {integrity: sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==} + engines: {node: '>=18.12'} peerDependencies: - typescript: '>=4.2.0' + typescript: '>=4.8.4' ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - tsconfck@3.1.3: - resolution: {integrity: sha512-ulNZP1SVpRDesxeMLON/LtWM8HIgAJEIVpVVhBM6gsmvQ8+Rh+ZG7FWGvHh7Ah3pRABwVJWklWCr/BTZSv0xnQ==} + tsconfck@3.1.4: + resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==} engines: {node: ^18 || >=20} hasBin: true peerDependencies: @@ -4577,8 +4547,8 @@ packages: typescript: optional: true - tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} tsscmp@1.0.6: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} @@ -4607,9 +4577,9 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - type-fest@3.13.1: - resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==} - engines: {node: '>=14.16'} + type-fest@4.33.0: + resolution: {integrity: sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==} + engines: {node: '>=16'} type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} @@ -4641,66 +4611,70 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - unctx@2.3.1: - resolution: {integrity: sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==} + unctx@2.4.1: + resolution: {integrity: sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg==} - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} - - undici@5.28.4: - resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} - engines: {node: '>=14.0'} + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} unenv@1.10.0: resolution: {integrity: sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==} - unhead@1.11.6: - resolution: {integrity: sha512-TKTQGUzHKF925VZ4KZVbLfKFzTVTEWfPLaXKmkd/ptEY2FHEoJUF7xOpAWc3K7Jzy/ExS66TL7GnLLjtd4sISg==} + unhead@1.11.18: + resolution: {integrity: sha512-TWgGUoZMpYe2yJwY6jZ0/9kpQT18ygr2h5lI6cUXdfD9UzDc0ytM9jGaleSYkj9guJWXkk7izYBnzJvxl8mRvQ==} unicorn-magic@0.1.0: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} - unimport@3.12.0: - resolution: {integrity: sha512-5y8dSvNvyevsnw4TBQkIQR1Rjdbb+XjVSwQwxltpnVZrStBvvPkMPcZrh1kg5kY77kpx6+D4Ztd3W6FOBH/y2Q==} + unimport@3.14.6: + resolution: {integrity: sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==} universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unplugin-vue-router@0.10.8: - resolution: {integrity: sha512-xi+eLweYAqolIoTRSmumbi6Yx0z5M0PLvl+NFNVWHJgmE2ByJG1SZbrn+TqyuDtIyln20KKgq8tqmL7aLoiFjw==} + unplugin-vue-router@0.10.9: + resolution: {integrity: sha512-DXmC0GMcROOnCmN56GRvi1bkkG1BnVs4xJqNvucBUeZkmB245URvtxOfbo3H6q4SOUQQbLPYWd6InzvjRh363A==} peerDependencies: vue-router: ^4.4.0 peerDependenciesMeta: vue-router: optional: true - unplugin@1.14.1: - resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} + unplugin@1.16.1: + resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} engines: {node: '>=14.0.0'} - peerDependencies: - webpack-sources: ^3 - peerDependenciesMeta: - webpack-sources: - optional: true - unstorage@1.12.0: - resolution: {integrity: sha512-ARZYTXiC+e8z3lRM7/qY9oyaOkaozCeNd2xoz7sYK9fv7OLGhVsf+BZbmASqiK/HTZ7T6eAlnVq9JynZppyk3w==} - peerDependencies: - '@azure/app-configuration': ^1.7.0 - '@azure/cosmos': ^4.1.1 - '@azure/data-tables': ^13.2.2 - '@azure/identity': ^4.4.1 - '@azure/keyvault-secrets': ^4.8.0 - '@azure/storage-blob': ^12.24.0 - '@capacitor/preferences': ^6.0.2 - '@netlify/blobs': ^6.5.0 || ^7.0.0 + unplugin@2.0.0-beta.1: + resolution: {integrity: sha512-2qzQo5LN2DmUZXkWDHvGKLF5BP0WN+KthD6aPnPJ8plRBIjv4lh5O07eYcSxgO2znNw9s4MNhEO1sB+JDllDbQ==} + engines: {node: '>=18.12.0'} + + unplugin@2.1.2: + resolution: {integrity: sha512-Q3LU0e4zxKfRko1wMV2HmP8lB9KWislY7hxXpxd+lGx0PRInE4vhMBVEZwpdVYHvtqzhSrzuIfErsob6bQfCzw==} + engines: {node: '>=18.12.0'} + + unstorage@1.14.4: + resolution: {integrity: sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.5.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6.0.3 + '@deno/kv': '>=0.8.4' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 '@planetscale/database': ^1.19.0 - '@upstash/redis': ^1.34.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.0' '@vercel/kv': ^1.0.1 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' idb-keyval: ^6.2.1 - ioredis: ^5.4.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.1 peerDependenciesMeta: '@azure/app-configuration': optional: true @@ -4716,32 +4690,42 @@ packages: optional: true '@capacitor/preferences': optional: true + '@deno/kv': + optional: true '@netlify/blobs': optional: true '@planetscale/database': optional: true '@upstash/redis': optional: true + '@vercel/blob': + optional: true '@vercel/kv': optional: true + aws4fetch: + optional: true + db0: + optional: true idb-keyval: optional: true ioredis: optional: true + uploadthing: + optional: true untun@0.1.3: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true - untyped@1.4.2: - resolution: {integrity: sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==} + untyped@1.5.2: + resolution: {integrity: sha512-eL/8PlhLcMmlMDtNPKhyyz9kEBDS3Uk4yMu/ewlkT2WFbtzScjHWPJLdQLmaGPUKjXzwe9MumOtOgc4Fro96Kg==} hasBin: true unwasm@0.3.9: resolution: {integrity: sha512-LDxTx/2DkFURUd+BU1vUsF/moj0JsoTvl+2tcg2AUOiEzVturhGGx17/IMgGvKUYdZwr33EJHtChCJuhu9Ouvg==} - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + update-browserslist-db@1.1.2: + resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -4749,6 +4733,9 @@ packages: uqr@0.1.2: resolution: {integrity: sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA==} + uri-js-replace@1.0.1: + resolution: {integrity: sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g==} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -4765,19 +4752,19 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite-hot-client@0.2.3: - resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==} + vite-hot-client@0.2.4: + resolution: {integrity: sha512-a1nzURqO7DDmnXqabFOliz908FRmIppkBKsJthS8rbe8hBEXwEwe4C3Pp33Z1JoFCYfVL4kTOMLKk0ZZxREIeA==} peerDependencies: - vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 - vite-node@2.1.1: - resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} + vite-node@2.1.8: + resolution: {integrity: sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-node@2.1.3: - resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} - engines: {node: ^18.0.0 || >=20.0.0} + vite-node@3.0.3: + resolution: {integrity: sha512-0sQcwhwAEw/UJGojbhOrnq3HtiZ3tC7BzpAa0lx3QaTX0S3YX70iGcik25UBdB96pmdwjyY2uyKNYruxCDmiEg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true vite-plugin-checker@0.8.0: @@ -4814,23 +4801,33 @@ packages: vue-tsc: optional: true - vite-plugin-inspect@0.8.7: - resolution: {integrity: sha512-/XXou3MVc13A5O9/2Nd6xczjrUwt7ZyI9h8pTnUMkr5SshLcb0PJUOVq2V+XVkdeU4njsqAtmK87THZuO2coGA==} + vite-plugin-inspect@0.8.9: + resolution: {integrity: sha512-22/8qn+LYonzibb1VeFZmISdVao5kC22jmEKm24vfFE8siEn47EpVcCLYMv6iKOYMJfjSvSJfueOwcFCkUnV3A==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.1 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + vite-plugin-inspect@10.1.0: + resolution: {integrity: sha512-solJQhkZULyR7Qq2CRGbO/8ijNPTwmxxLDMx3FkMzGQAuVqKrgqmV2cw/u8SXBsKDHgSMykipW+78MBMZz3O0g==} engines: {node: '>=14'} peerDependencies: '@nuxt/kit': '*' - vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 + vite: ^6.0.0 peerDependenciesMeta: '@nuxt/kit': optional: true - vite-plugin-vue-inspector@5.2.0: - resolution: {integrity: sha512-wWxyb9XAtaIvV/Lr7cqB1HIzmHZFVUJsTNm3yAxkS87dgh/Ky4qr2wDEWNxF23fdhVa3jQ8MZREpr4XyiuaRqA==} + vite-plugin-vue-inspector@5.3.1: + resolution: {integrity: sha512-cBk172kZKTdvGpJuzCCLg8lJ909wopwsu3Ve9FsL1XsnLBiRT9U3MePcqrgGHgCX2ZgkqZmAGR8taxw+TV6s7A==} peerDependencies: - vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 + vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0-0 - vite@5.4.6: - resolution: {integrity: sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==} + vite@5.4.14: + resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -4860,18 +4857,58 @@ packages: terser: optional: true + vite@6.0.11: + resolution: {integrity: sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + vitest-environment-nuxt@1.0.1: resolution: {integrity: sha512-eBCwtIQriXW5/M49FjqNKfnlJYlG2LWMSNFsRVKomc8CaMqmhQPBS5LZ9DlgYL9T8xIVsiA6RZn2lk7vxov3Ow==} - vitest@2.1.3: - resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} - engines: {node: ^18.0.0 || >=20.0.0} + vitest@3.0.3: + resolution: {integrity: sha512-dWdwTFUW9rcnL0LyF2F+IfvNQWB0w9DERySCk8VMG75F8k25C7LsZoh6XfCjPvcR8Nb+Lqi9JKr6vnzH7HSrpQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.3 - '@vitest/ui': 2.1.3 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.0.3 + '@vitest/ui': 3.0.3 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -4912,19 +4949,8 @@ packages: vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} - vue-bundle-renderer@2.1.0: - resolution: {integrity: sha512-uZ+5ZJdZ/b43gMblWtcpikY6spJd0nERaM/1RtgioXNfWFbjKlUwrS8HlrddN6T2xtptmOouWclxLUkpgcVX3Q==} - - vue-demi@0.14.10: - resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} - engines: {node: '>=12'} - hasBin: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true + vue-bundle-renderer@2.1.1: + resolution: {integrity: sha512-+qALLI5cQncuetYOXp4yScwYvqh8c6SMXee3B+M7oTZxOgtESP0l4j/fXdEJoZ+EdMxkGWIj+aSEyjXkOdmd7g==} vue-devtools-stub@0.1.0: resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} @@ -4935,13 +4961,13 @@ packages: peerDependencies: eslint: '>=6.0.0' - vue-router@4.4.5: - resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==} + vue-router@4.5.0: + resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==} peerDependencies: vue: ^3.2.0 - vue-tsc@2.1.6: - resolution: {integrity: sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==} + vue-tsc@2.2.0: + resolution: {integrity: sha512-gtmM1sUuJ8aSb0KoAFmK9yMxb8TxjewmxqTJ1aKphD5Cbu0rULFY6+UQT51zW7SpUcenfPUuflKyVwyx9Qdnxg==} hasBin: true peerDependencies: typescript: '>=5.0.0' @@ -4951,8 +4977,8 @@ packages: peerDependencies: vue: ^3.0.11 - vue@3.5.6: - resolution: {integrity: sha512-zv+20E2VIYbcJOzJPUWp03NOGFhMmpCKOfSxVTmCYyYFFko48H9tmuQFzYj7tu4qX1AeXlp9DmhIP89/sSxxhw==} + vue@3.5.13: + resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -4983,9 +5009,6 @@ packages: engines: {node: '>=8'} hasBin: true - wide-align@1.1.5: - resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} - word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -5027,8 +5050,15 @@ packages: yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yaml@2.5.1: - resolution: {integrity: sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml-ast-parser@0.0.43: + resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} + + yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} engines: {node: '>= 14'} hasBin: true @@ -5055,246 +5085,248 @@ packages: resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} engines: {node: '>= 14'} - zod@3.23.8: - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + zod@3.24.1: + resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} snapshots: '@adonisjs/hash@9.0.5': dependencies: '@phc/format': 1.0.0 - '@poppinss/utils': 6.8.3 + '@poppinss/utils': 6.9.2 '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 '@antfu/install-pkg@0.4.1': dependencies: - package-manager-detector: 0.2.0 - tinyexec: 0.3.0 + package-manager-detector: 0.2.8 + tinyexec: 0.3.2 + + '@antfu/install-pkg@1.0.0': + dependencies: + package-manager-detector: 0.2.8 + tinyexec: 0.3.2 '@antfu/utils@0.7.10': {} - '@babel/code-frame@7.24.7': + '@babel/code-frame@7.26.2': dependencies: - '@babel/highlight': 7.24.7 - picocolors: 1.1.0 + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 - '@babel/compat-data@7.25.4': {} + '@babel/compat-data@7.26.5': {} - '@babel/core@7.25.2': + '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/helper-compilation-targets': 7.25.2 - '@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2) - '@babel/helpers': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.5 + '@babel/helper-compilation-targets': 7.26.5 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.5 + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 convert-source-map: 2.0.0 - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.25.6': + '@babel/generator@7.26.5': dependencies: - '@babel/types': 7.25.6 - '@jridgewell/gen-mapping': 0.3.5 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 + jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.24.7': + '@babel/helper-annotate-as-pure@7.25.9': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.26.5 - '@babel/helper-compilation-targets@7.25.2': + '@babel/helper-compilation-targets@7.26.5': dependencies: - '@babel/compat-data': 7.25.4 - '@babel/helper-validator-option': 7.24.8 - browserslist: 4.23.3 + '@babel/compat-data': 7.26.5 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.4 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.25.4(@babel/core@7.25.2)': + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/helper-replace-supers': 7.25.0(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/traverse': 7.25.6 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.26.5 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-member-expression-to-functions@7.24.8': + '@babel/helper-member-expression-to-functions@7.25.9': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.24.7': + '@babel/helper-module-imports@7.25.9': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.25.2(@babel/core@7.25.2)': + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-simple-access': 7.24.7 - '@babel/helper-validator-identifier': 7.24.7 - '@babel/traverse': 7.25.6 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.24.7': + '@babel/helper-optimise-call-expression@7.25.9': dependencies: - '@babel/types': 7.25.6 - - '@babel/helper-plugin-utils@7.24.8': {} + '@babel/types': 7.26.5 - '@babel/helper-replace-supers@7.25.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-member-expression-to-functions': 7.24.8 - '@babel/helper-optimise-call-expression': 7.24.7 - '@babel/traverse': 7.25.6 - transitivePeerDependencies: - - supports-color + '@babel/helper-plugin-utils@7.26.5': {} - '@babel/helper-simple-access@7.24.7': + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.0)': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.24.7': + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': dependencies: - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 transitivePeerDependencies: - supports-color - '@babel/helper-string-parser@7.24.8': {} - - '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-string-parser@7.25.9': {} - '@babel/helper-validator-option@7.24.8': {} + '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helpers@7.25.6': - dependencies: - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 + '@babel/helper-validator-option@7.25.9': {} - '@babel/highlight@7.24.7': + '@babel/helpers@7.26.0': dependencies: - '@babel/helper-validator-identifier': 7.24.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.0 + '@babel/template': 7.25.9 + '@babel/types': 7.26.5 - '@babel/parser@7.25.6': + '@babel/parser@7.26.5': dependencies: - '@babel/types': 7.25.6 + '@babel/types': 7.26.5 - '@babel/plugin-proposal-decorators@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-decorators': 7.24.7(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/plugin-syntax-decorators@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-attributes@7.25.6(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-syntax-typescript@7.25.4(@babel/core@7.25.2)': + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.8 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.26.5 - '@babel/plugin-transform-typescript@7.25.2(@babel/core@7.25.2)': + '@babel/plugin-transform-typescript@7.26.5(@babel/core@7.26.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-create-class-features-plugin': 7.25.4(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.8 - '@babel/helper-skip-transparent-expression-wrappers': 7.24.7 - '@babel/plugin-syntax-typescript': 7.25.4(@babel/core@7.25.2) + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.26.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color - '@babel/standalone@7.25.6': {} + '@babel/standalone@7.26.6': {} - '@babel/template@7.25.0': + '@babel/template@7.25.9': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 - '@babel/traverse@7.25.6': + '@babel/traverse@7.26.5': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/generator': 7.25.6 - '@babel/parser': 7.25.6 - '@babel/template': 7.25.0 - '@babel/types': 7.25.6 - debug: 4.3.7 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.5 + '@babel/parser': 7.26.5 + '@babel/template': 7.25.9 + '@babel/types': 7.26.5 + debug: 4.4.0(supports-color@9.4.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.25.6': + '@babel/types@7.26.5': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@clack/core@0.4.1': dependencies: - '@babel/helper-string-parser': 7.24.8 - '@babel/helper-validator-identifier': 7.24.7 - to-fast-properties: 2.0.0 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.9.1': + dependencies: + '@clack/core': 0.4.1 + picocolors: 1.1.1 + sisteransi: 1.0.5 '@cloudflare/kv-asset-handler@0.3.4': dependencies: mime: 3.0.0 - '@csstools/selector-resolve-nested@1.1.0(postcss-selector-parser@6.1.2)': + '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.0.0)': dependencies: - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 7.0.0 - '@csstools/selector-specificity@3.1.1(postcss-selector-parser@6.1.2)': + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.0.0)': dependencies: - postcss-selector-parser: 6.1.2 + postcss-selector-parser: 7.0.0 '@es-joy/jsdoccomment@0.49.0': dependencies: @@ -5305,306 +5337,244 @@ snapshots: '@esbuild/aix-ppc64@0.19.12': optional: true - '@esbuild/aix-ppc64@0.20.2': - optional: true - '@esbuild/aix-ppc64@0.21.5': optional: true - '@esbuild/aix-ppc64@0.23.1': + '@esbuild/aix-ppc64@0.24.2': optional: true '@esbuild/android-arm64@0.19.12': optional: true - '@esbuild/android-arm64@0.20.2': - optional: true - '@esbuild/android-arm64@0.21.5': optional: true - '@esbuild/android-arm64@0.23.1': + '@esbuild/android-arm64@0.24.2': optional: true '@esbuild/android-arm@0.19.12': optional: true - '@esbuild/android-arm@0.20.2': - optional: true - '@esbuild/android-arm@0.21.5': optional: true - '@esbuild/android-arm@0.23.1': + '@esbuild/android-arm@0.24.2': optional: true '@esbuild/android-x64@0.19.12': optional: true - '@esbuild/android-x64@0.20.2': - optional: true - '@esbuild/android-x64@0.21.5': optional: true - '@esbuild/android-x64@0.23.1': + '@esbuild/android-x64@0.24.2': optional: true '@esbuild/darwin-arm64@0.19.12': optional: true - '@esbuild/darwin-arm64@0.20.2': - optional: true - '@esbuild/darwin-arm64@0.21.5': optional: true - '@esbuild/darwin-arm64@0.23.1': + '@esbuild/darwin-arm64@0.24.2': optional: true '@esbuild/darwin-x64@0.19.12': optional: true - '@esbuild/darwin-x64@0.20.2': - optional: true - '@esbuild/darwin-x64@0.21.5': optional: true - '@esbuild/darwin-x64@0.23.1': + '@esbuild/darwin-x64@0.24.2': optional: true '@esbuild/freebsd-arm64@0.19.12': optional: true - '@esbuild/freebsd-arm64@0.20.2': - optional: true - '@esbuild/freebsd-arm64@0.21.5': optional: true - '@esbuild/freebsd-arm64@0.23.1': + '@esbuild/freebsd-arm64@0.24.2': optional: true '@esbuild/freebsd-x64@0.19.12': optional: true - '@esbuild/freebsd-x64@0.20.2': - optional: true - '@esbuild/freebsd-x64@0.21.5': optional: true - '@esbuild/freebsd-x64@0.23.1': + '@esbuild/freebsd-x64@0.24.2': optional: true '@esbuild/linux-arm64@0.19.12': optional: true - '@esbuild/linux-arm64@0.20.2': - optional: true - '@esbuild/linux-arm64@0.21.5': optional: true - '@esbuild/linux-arm64@0.23.1': + '@esbuild/linux-arm64@0.24.2': optional: true '@esbuild/linux-arm@0.19.12': optional: true - '@esbuild/linux-arm@0.20.2': - optional: true - '@esbuild/linux-arm@0.21.5': optional: true - '@esbuild/linux-arm@0.23.1': + '@esbuild/linux-arm@0.24.2': optional: true '@esbuild/linux-ia32@0.19.12': optional: true - '@esbuild/linux-ia32@0.20.2': - optional: true - '@esbuild/linux-ia32@0.21.5': optional: true - '@esbuild/linux-ia32@0.23.1': + '@esbuild/linux-ia32@0.24.2': optional: true '@esbuild/linux-loong64@0.19.12': optional: true - '@esbuild/linux-loong64@0.20.2': - optional: true - '@esbuild/linux-loong64@0.21.5': optional: true - '@esbuild/linux-loong64@0.23.1': + '@esbuild/linux-loong64@0.24.2': optional: true '@esbuild/linux-mips64el@0.19.12': optional: true - '@esbuild/linux-mips64el@0.20.2': - optional: true - '@esbuild/linux-mips64el@0.21.5': optional: true - '@esbuild/linux-mips64el@0.23.1': + '@esbuild/linux-mips64el@0.24.2': optional: true '@esbuild/linux-ppc64@0.19.12': optional: true - '@esbuild/linux-ppc64@0.20.2': - optional: true - '@esbuild/linux-ppc64@0.21.5': optional: true - '@esbuild/linux-ppc64@0.23.1': + '@esbuild/linux-ppc64@0.24.2': optional: true '@esbuild/linux-riscv64@0.19.12': optional: true - '@esbuild/linux-riscv64@0.20.2': - optional: true - '@esbuild/linux-riscv64@0.21.5': optional: true - '@esbuild/linux-riscv64@0.23.1': + '@esbuild/linux-riscv64@0.24.2': optional: true '@esbuild/linux-s390x@0.19.12': optional: true - '@esbuild/linux-s390x@0.20.2': - optional: true - '@esbuild/linux-s390x@0.21.5': optional: true - '@esbuild/linux-s390x@0.23.1': + '@esbuild/linux-s390x@0.24.2': optional: true '@esbuild/linux-x64@0.19.12': optional: true - '@esbuild/linux-x64@0.20.2': - optional: true - '@esbuild/linux-x64@0.21.5': optional: true - '@esbuild/linux-x64@0.23.1': + '@esbuild/linux-x64@0.24.2': optional: true - '@esbuild/netbsd-x64@0.19.12': + '@esbuild/netbsd-arm64@0.24.2': optional: true - '@esbuild/netbsd-x64@0.20.2': + '@esbuild/netbsd-x64@0.19.12': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true - '@esbuild/netbsd-x64@0.23.1': + '@esbuild/netbsd-x64@0.24.2': optional: true - '@esbuild/openbsd-arm64@0.23.1': + '@esbuild/openbsd-arm64@0.24.2': optional: true '@esbuild/openbsd-x64@0.19.12': optional: true - '@esbuild/openbsd-x64@0.20.2': - optional: true - '@esbuild/openbsd-x64@0.21.5': optional: true - '@esbuild/openbsd-x64@0.23.1': + '@esbuild/openbsd-x64@0.24.2': optional: true '@esbuild/sunos-x64@0.19.12': optional: true - '@esbuild/sunos-x64@0.20.2': - optional: true - '@esbuild/sunos-x64@0.21.5': optional: true - '@esbuild/sunos-x64@0.23.1': + '@esbuild/sunos-x64@0.24.2': optional: true '@esbuild/win32-arm64@0.19.12': optional: true - '@esbuild/win32-arm64@0.20.2': - optional: true - '@esbuild/win32-arm64@0.21.5': optional: true - '@esbuild/win32-arm64@0.23.1': + '@esbuild/win32-arm64@0.24.2': optional: true '@esbuild/win32-ia32@0.19.12': optional: true - '@esbuild/win32-ia32@0.20.2': - optional: true - '@esbuild/win32-ia32@0.21.5': optional: true - '@esbuild/win32-ia32@0.23.1': + '@esbuild/win32-ia32@0.24.2': optional: true '@esbuild/win32-x64@0.19.12': optional: true - '@esbuild/win32-x64@0.20.2': - optional: true - '@esbuild/win32-x64@0.21.5': optional: true - '@esbuild/win32-x64@0.23.1': + '@esbuild/win32-x64@0.24.2': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0(jiti@2.3.3))': + '@eslint-community/eslint-utils@4.4.1(eslint@9.18.0(jiti@2.4.2))': dependencies: - eslint: 9.13.0(jiti@2.3.3) + eslint: 9.18.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.1': {} + '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.1.1': {} + '@eslint/compat@1.2.5(eslint@9.18.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.18.0(jiti@2.4.2) - '@eslint/config-array@0.18.0': + '@eslint/config-array@0.19.1': dependencies: - '@eslint/object-schema': 2.1.4 - debug: 4.3.7 + '@eslint/object-schema': 2.1.5 + debug: 4.4.0(supports-color@9.4.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color - '@eslint/core@0.7.0': {} + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.1.0': + '@eslint/eslintrc@3.2.0': dependencies: ajv: 6.12.6 - debug: 4.3.7 - espree: 10.2.0 + debug: 4.4.0(supports-color@9.4.0) + espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 @@ -5614,82 +5584,86 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.12.0': {} - - '@eslint/js@9.13.0': {} + '@eslint/js@9.18.0': {} - '@eslint/object-schema@2.1.4': {} + '@eslint/object-schema@2.1.5': {} - '@eslint/plugin-kit@0.2.0': + '@eslint/plugin-kit@0.2.5': dependencies: + '@eslint/core': 0.10.0 levn: 0.4.1 - '@fastify/busboy@2.1.1': {} - - '@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.14)': + '@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.17)': dependencies: - tailwindcss: 3.4.14 + tailwindcss: 3.4.17 - '@headlessui/vue@1.7.23(vue@3.5.6(typescript@5.6.3))': + '@headlessui/vue@1.7.23(vue@3.5.13(typescript@5.6.3))': dependencies: - '@tanstack/vue-virtual': 3.10.8(vue@3.5.6(typescript@5.6.3)) - vue: 3.5.6(typescript@5.6.3) + '@tanstack/vue-virtual': 3.11.2(vue@3.5.13(typescript@5.6.3)) + vue: 3.5.13(typescript@5.6.3) '@hexagon/base64@1.1.28': {} - '@humanfs/core@0.19.0': {} + '@humanfs/core@0.19.1': {} - '@humanfs/node@0.16.5': + '@humanfs/node@0.16.6': dependencies: - '@humanfs/core': 0.19.0 + '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 '@humanwhocodes/module-importer@1.0.1': {} '@humanwhocodes/retry@0.3.1': {} - '@iconify-json/gravity-ui@1.2.1': + '@humanwhocodes/retry@0.4.1': {} + + '@iconify-json/gravity-ui@1.2.4': + dependencies: + '@iconify/types': 2.0.0 + + '@iconify-json/heroicons@1.2.2': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/heroicons@1.2.1': + '@iconify-json/iconoir@1.2.7': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/iconoir@1.2.1': + '@iconify-json/logos@1.2.4': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/simple-icons@1.2.9': + '@iconify-json/simple-icons@1.2.21': dependencies: '@iconify/types': 2.0.0 - '@iconify-json/vscode-icons@1.2.2': + '@iconify-json/vscode-icons@1.2.10': dependencies: '@iconify/types': 2.0.0 - '@iconify/collections@1.0.473': + '@iconify/collections@1.0.509': dependencies: '@iconify/types': 2.0.0 '@iconify/types@2.0.0': {} - '@iconify/utils@2.1.33': + '@iconify/utils@2.2.1': dependencies: '@antfu/install-pkg': 0.4.1 '@antfu/utils': 0.7.10 '@iconify/types': 2.0.0 - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) + globals: 15.14.0 kolorist: 1.8.0 - local-pkg: 0.5.0 - mlly: 1.7.2 + local-pkg: 0.5.1 + mlly: 1.7.4 transitivePeerDependencies: - supports-color - '@iconify/vue@4.1.3-beta.1(vue@3.5.6(typescript@5.6.3))': + '@iconify/vue@4.3.0(vue@3.5.13(typescript@5.6.3))': dependencies: '@iconify/types': 2.0.0 - vue: 3.5.6(typescript@5.6.3) + vue: 3.5.13(typescript@5.6.3) '@ioredis/commands@1.2.0': {} @@ -5702,7 +5676,11 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@jridgewell/gen-mapping@0.3.5': + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + + '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 '@jridgewell/sourcemap-codec': 1.5.0 @@ -5714,7 +5692,7 @@ snapshots: '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 '@jridgewell/sourcemap-codec@1.5.0': {} @@ -5726,7 +5704,7 @@ snapshots: '@koa/router@12.0.2': dependencies: - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) http-errors: 2.0.0 koa-compose: 4.1.0 methods: 1.1.2 @@ -5736,7 +5714,7 @@ snapshots: '@kwsites/file-exists@1.1.1': dependencies: - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color @@ -5746,28 +5724,26 @@ snapshots: '@lukeed/ms@2.0.2': {} - '@mapbox/node-pre-gyp@1.0.11': + '@mapbox/node-pre-gyp@2.0.0-rc.0': dependencies: + consola: 3.4.0 detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 + https-proxy-agent: 7.0.6(supports-color@9.4.0) node-fetch: 2.7.0 - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 + nopt: 8.1.0 semver: 7.6.3 - tar: 6.2.1 + tar: 7.4.3 transitivePeerDependencies: - encoding - supports-color - '@netlify/functions@2.8.1': + '@netlify/functions@2.8.2': dependencies: - '@netlify/serverless-functions-api': 1.19.1 + '@netlify/serverless-functions-api': 1.26.1 '@netlify/node-cookies@0.1.0': {} - '@netlify/serverless-functions-api@1.19.1': + '@netlify/serverless-functions-api@1.26.1': dependencies: '@netlify/node-cookies': 0.1.0 urlpattern-polyfill: 8.0.2 @@ -5782,122 +5758,122 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@nuxt/devalue@2.0.2': {} + fastq: 1.18.0 - '@nuxt/devtools-kit@1.4.2(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))': + '@nuxt/cli@3.20.0(magicast@0.3.5)': dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - '@nuxt/schema': 3.13.2(rollup@3.29.4) - execa: 7.2.0 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - webpack-sources - - '@nuxt/devtools-kit@1.5.1(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))': - dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - '@nuxt/schema': 3.13.2(rollup@3.29.4) - execa: 7.2.0 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + c12: 2.0.1(magicast@0.3.5) + chokidar: 4.0.3 + citty: 0.1.6 + clipboardy: 4.0.0 + consola: 3.4.0 + defu: 6.1.4 + fuse.js: 7.0.0 + giget: 1.2.3 + h3: 1.14.0 + httpxy: 0.1.6 + jiti: 2.4.2 + listhen: 1.9.0 + nypm: 0.4.1 + ofetch: 1.4.1 + ohash: 1.1.4 + pathe: 2.0.2 + perfect-debounce: 1.0.0 + pkg-types: 1.3.1 + scule: 1.3.0 + semver: 7.6.3 + std-env: 3.8.0 + tinyexec: 0.3.2 + ufo: 1.5.4 transitivePeerDependencies: - magicast - - rollup - - supports-color - - webpack-sources - '@nuxt/devtools-kit@1.5.1(magicast@0.3.5)(rollup@4.22.0)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))': + '@nuxt/devalue@2.0.2': {} + + '@nuxt/devtools-kit@1.7.0(magicast@0.3.5)(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))': dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.22.0) - '@nuxt/schema': 3.13.2(rollup@4.22.0) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + '@nuxt/schema': 3.15.2 execa: 7.2.0 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) transitivePeerDependencies: - magicast - rollup - supports-color - - webpack-sources - '@nuxt/devtools-kit@1.6.0(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))': + '@nuxt/devtools-kit@2.0.0-beta.3(magicast@0.3.5)(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))': dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - '@nuxt/schema': 3.13.2(rollup@3.29.4) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + '@nuxt/schema': 3.15.2 execa: 7.2.0 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) transitivePeerDependencies: - magicast - rollup - supports-color - - webpack-sources - '@nuxt/devtools-wizard@1.4.2': + '@nuxt/devtools-wizard@1.7.0': dependencies: - consola: 3.2.3 + consola: 3.4.0 diff: 7.0.0 execa: 7.2.0 global-directory: 4.0.1 magicast: 0.3.5 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.3.1 prompts: 2.4.2 rc9: 2.1.2 semver: 7.6.3 - '@nuxt/devtools-wizard@1.5.1': + '@nuxt/devtools-wizard@2.0.0-beta.3': dependencies: - consola: 3.2.3 + consola: 3.4.0 diff: 7.0.0 execa: 7.2.0 - global-directory: 4.0.1 magicast: 0.3.5 - pathe: 1.1.2 - pkg-types: 1.2.0 + pathe: 2.0.2 + pkg-types: 1.3.1 prompts: 2.4.2 - rc9: 2.1.2 semver: 7.6.3 - '@nuxt/devtools@1.4.2(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3))': + '@nuxt/devtools@1.7.0(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': dependencies: '@antfu/utils': 0.7.10 - '@nuxt/devtools-kit': 1.4.2(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - '@nuxt/devtools-wizard': 1.4.2 - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - '@vue/devtools-core': 7.4.4(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - '@vue/devtools-kit': 7.4.4 - birpc: 0.2.17 - consola: 3.2.3 - cronstrue: 2.50.0 + '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)) + '@nuxt/devtools-wizard': 1.7.0 + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + '@vue/devtools-core': 7.6.8(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + '@vue/devtools-kit': 7.6.8 + birpc: 0.2.19 + consola: 3.4.0 + cronstrue: 2.53.0 destr: 2.0.3 error-stack-parser-es: 0.1.5 execa: 7.2.0 fast-npm-meta: 0.2.2 - flatted: 3.3.1 + flatted: 3.3.2 get-port-please: 3.1.2 hookable: 5.5.3 image-meta: 0.2.1 is-installed-globally: 1.0.0 launch-editor: 2.9.1 - local-pkg: 0.5.0 + local-pkg: 0.5.1 magicast: 0.3.5 - nypm: 0.3.11 + nypm: 0.4.1 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.3.1 rc9: 2.1.2 scule: 1.3.0 semver: 7.6.3 simple-git: 3.27.0 - sirv: 2.0.4 - tinyglobby: 0.2.6 - unimport: 3.12.0(rollup@3.29.4) - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vite-plugin-inspect: 0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - vite-plugin-vue-inspector: 5.2.0(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) + sirv: 3.0.0 + tinyglobby: 0.2.10 + unimport: 3.14.6(rollup@4.31.0) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) + vite-plugin-inspect: 0.8.9(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.31.0))(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)) + vite-plugin-vue-inspector: 5.3.1(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)) which: 3.0.1 ws: 8.18.0 transitivePeerDependencies: @@ -5906,46 +5882,38 @@ snapshots: - supports-color - utf-8-validate - vue - - webpack-sources - '@nuxt/devtools@1.5.1(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3))': + '@nuxt/devtools@2.0.0-beta.3(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))': dependencies: - '@antfu/utils': 0.7.10 - '@nuxt/devtools-kit': 1.5.1(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - '@nuxt/devtools-wizard': 1.5.1 - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - '@vue/devtools-core': 7.4.4(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - '@vue/devtools-kit': 7.4.4 - birpc: 0.2.17 - consola: 3.2.3 - cronstrue: 2.50.0 + '@nuxt/devtools-kit': 2.0.0-beta.3(magicast@0.3.5)(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)) + '@nuxt/devtools-wizard': 2.0.0-beta.3 + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + birpc: 2.0.19 + consola: 3.4.0 destr: 2.0.3 - error-stack-parser-es: 0.1.5 + error-stack-parser-es: 1.0.5 execa: 7.2.0 fast-npm-meta: 0.2.2 - flatted: 3.3.1 + flatted: 3.3.2 get-port-please: 3.1.2 hookable: 5.5.3 image-meta: 0.2.1 is-installed-globally: 1.0.0 launch-editor: 2.9.1 - local-pkg: 0.5.0 + local-pkg: 1.0.0 magicast: 0.3.5 - nypm: 0.3.11 + nypm: 0.4.1 ohash: 1.1.4 - pathe: 1.1.2 + pathe: 2.0.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 - rc9: 2.1.2 - scule: 1.3.0 + pkg-types: 1.3.1 semver: 7.6.3 simple-git: 3.27.0 - sirv: 2.0.4 - tinyglobby: 0.2.6 - unimport: 3.12.0(rollup@3.29.4) - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vite-plugin-inspect: 0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - vite-plugin-vue-inspector: 5.2.0(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) + sirv: 3.0.0 + tinyglobby: 0.2.10 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) + vite-plugin-inspect: 10.1.0(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.31.0))(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)) + vite-plugin-vue-inspector: 5.3.1(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)) which: 3.0.1 ws: 8.18.0 transitivePeerDependencies: @@ -5953,331 +5921,202 @@ snapshots: - rollup - supports-color - utf-8-validate - - vue - - webpack-sources - '@nuxt/devtools@1.5.1(rollup@4.22.0)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3))': - dependencies: - '@antfu/utils': 0.7.10 - '@nuxt/devtools-kit': 1.5.1(magicast@0.3.5)(rollup@4.22.0)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - '@nuxt/devtools-wizard': 1.5.1 - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.22.0) - '@vue/devtools-core': 7.4.4(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - '@vue/devtools-kit': 7.4.4 - birpc: 0.2.17 - consola: 3.2.3 - cronstrue: 2.50.0 - destr: 2.0.3 - error-stack-parser-es: 0.1.5 - execa: 7.2.0 - fast-npm-meta: 0.2.2 - flatted: 3.3.1 - get-port-please: 3.1.2 - hookable: 5.5.3 - image-meta: 0.2.1 - is-installed-globally: 1.0.0 - launch-editor: 2.9.1 - local-pkg: 0.5.0 - magicast: 0.3.5 - nypm: 0.3.11 - ohash: 1.1.4 - pathe: 1.1.2 - perfect-debounce: 1.0.0 - pkg-types: 1.2.0 - rc9: 2.1.2 - scule: 1.3.0 - semver: 7.6.3 - simple-git: 3.27.0 - sirv: 2.0.4 - tinyglobby: 0.2.6 - unimport: 3.12.0(rollup@4.22.0) - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vite-plugin-inspect: 0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(rollup@4.22.0)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - vite-plugin-vue-inspector: 5.2.0(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - which: 3.0.1 - ws: 8.18.0 - transitivePeerDependencies: - - bufferutil - - rollup - - supports-color - - utf-8-validate - - vue - - webpack-sources - - '@nuxt/eslint-config@0.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': - dependencies: - '@eslint/js': 9.12.0 - '@nuxt/eslint-plugin': 0.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@stylistic/eslint-plugin': 2.9.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@typescript-eslint/eslint-plugin': 8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - eslint: 9.13.0(jiti@2.3.3) - eslint-config-flat-gitignore: 0.3.0(eslint@9.13.0(jiti@2.3.3)) - eslint-flat-config-utils: 0.4.0 - eslint-plugin-import-x: 4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - eslint-plugin-jsdoc: 50.4.3(eslint@9.13.0(jiti@2.3.3)) - eslint-plugin-regexp: 2.6.0(eslint@9.13.0(jiti@2.3.3)) - eslint-plugin-unicorn: 56.0.0(eslint@9.13.0(jiti@2.3.3)) - eslint-plugin-vue: 9.29.1(eslint@9.13.0(jiti@2.3.3)) - globals: 15.11.0 - local-pkg: 0.5.0 - pathe: 1.1.2 - vue-eslint-parser: 9.4.3(eslint@9.13.0(jiti@2.3.3)) + '@nuxt/eslint-config@0.7.5(@vue/compiler-sfc@3.5.13)(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': + dependencies: + '@antfu/install-pkg': 1.0.0 + '@clack/prompts': 0.9.1 + '@eslint/js': 9.18.0 + '@nuxt/eslint-plugin': 0.7.5(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + '@stylistic/eslint-plugin': 2.13.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/parser': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + eslint: 9.18.0(jiti@2.4.2) + eslint-config-flat-gitignore: 0.2.0(eslint@9.18.0(jiti@2.4.2)) + eslint-flat-config-utils: 1.1.0 + eslint-merge-processors: 1.0.0(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.6.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + eslint-plugin-jsdoc: 50.6.2(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-regexp: 2.7.0(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-unicorn: 56.0.1(eslint@9.18.0(jiti@2.4.2)) + eslint-plugin-vue: 9.32.0(eslint@9.18.0(jiti@2.4.2)) + eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.5.13)(eslint@9.18.0(jiti@2.4.2)) + globals: 15.14.0 + local-pkg: 0.5.1 + pathe: 2.0.2 + vue-eslint-parser: 9.4.3(eslint@9.18.0(jiti@2.4.2)) transitivePeerDependencies: + - '@vue/compiler-sfc' - supports-color - typescript - '@nuxt/eslint-plugin@0.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@nuxt/eslint-plugin@0.7.5(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - eslint: 9.13.0(jiti@2.3.3) + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + eslint: 9.18.0(jiti@2.4.2) transitivePeerDependencies: - supports-color - typescript - '@nuxt/icon@1.5.6(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3))': + '@nuxt/icon@1.10.3(magicast@0.3.5)(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': dependencies: - '@iconify/collections': 1.0.473 + '@iconify/collections': 1.0.509 '@iconify/types': 2.0.0 - '@iconify/utils': 2.1.33 - '@iconify/vue': 4.1.3-beta.1(vue@3.5.6(typescript@5.6.3)) - '@nuxt/devtools-kit': 1.6.0(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - consola: 3.2.3 - local-pkg: 0.5.0 - mlly: 1.7.2 + '@iconify/utils': 2.2.1 + '@iconify/vue': 4.3.0(vue@3.5.13(typescript@5.6.3)) + '@nuxt/devtools-kit': 1.7.0(magicast@0.3.5)(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + consola: 3.4.0 + local-pkg: 0.5.1 + mlly: 1.7.4 ohash: 1.1.4 pathe: 1.1.2 - std-env: 3.7.0 - tinyglobby: 0.2.9 + picomatch: 4.0.2 + std-env: 3.8.0 + tinyglobby: 0.2.10 transitivePeerDependencies: - magicast - rollup - supports-color - vite - vue - - webpack-sources - '@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4)': + '@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.31.0)': dependencies: - '@nuxt/schema': 3.13.2(rollup@3.29.4) - c12: 1.11.2(magicast@0.3.5) - consola: 3.2.3 - defu: 6.1.4 - destr: 2.0.3 - globby: 14.0.2 - hash-sum: 2.0.0 - ignore: 5.3.2 - jiti: 1.21.6 - klona: 2.0.6 - knitwork: 1.1.0 - mlly: 1.7.1 - pathe: 1.1.2 - pkg-types: 1.2.0 - scule: 1.3.0 - semver: 7.6.3 - ufo: 1.5.4 - unctx: 2.3.1 - unimport: 3.12.0(rollup@3.29.4) - untyped: 1.4.2 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - webpack-sources - - '@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@4.22.0)': - dependencies: - '@nuxt/schema': 3.13.2(rollup@4.22.0) - c12: 1.11.2(magicast@0.3.5) - consola: 3.2.3 + '@nuxt/schema': 3.15.2 + c12: 2.0.1(magicast@0.3.5) + consola: 3.4.0 defu: 6.1.4 destr: 2.0.3 globby: 14.0.2 - hash-sum: 2.0.0 - ignore: 5.3.2 - jiti: 1.21.6 + ignore: 7.0.3 + jiti: 2.4.2 klona: 2.0.6 - knitwork: 1.1.0 - mlly: 1.7.1 - pathe: 1.1.2 - pkg-types: 1.2.0 + knitwork: 1.2.0 + mlly: 1.7.4 + ohash: 1.1.4 + pathe: 2.0.2 + pkg-types: 1.3.1 scule: 1.3.0 semver: 7.6.3 + std-env: 3.8.0 ufo: 1.5.4 - unctx: 2.3.1 - unimport: 3.12.0(rollup@4.22.0) - untyped: 1.4.2 + unctx: 2.4.1 + unimport: 3.14.6(rollup@4.31.0) + untyped: 1.5.2 transitivePeerDependencies: - magicast - rollup - supports-color - - webpack-sources - '@nuxt/module-builder@0.8.4(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(nuxi@3.13.2)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3))': + '@nuxt/module-builder@0.8.4(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.31.0))(nuxi@3.20.0)(typescript@5.6.3)(vue-tsc@2.2.0(typescript@5.6.3))': dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) citty: 0.1.6 - consola: 3.2.3 + consola: 3.4.0 defu: 6.1.4 magic-regexp: 0.8.0 - mlly: 1.7.1 - nuxi: 3.13.2 + mlly: 1.7.4 + nuxi: 3.20.0 pathe: 1.1.2 - pkg-types: 1.2.0 - tsconfck: 3.1.3(typescript@5.6.3) - unbuild: 2.0.0(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3)) + pkg-types: 1.3.1 + tsconfck: 3.1.4(typescript@5.6.3) + unbuild: 2.0.0(typescript@5.6.3)(vue-tsc@2.2.0(typescript@5.6.3)) transitivePeerDependencies: - sass - supports-color - typescript - vue-tsc - - webpack-sources - '@nuxt/schema@3.13.2(rollup@3.29.4)': + '@nuxt/schema@3.15.2': dependencies: - compatx: 0.1.8 - consola: 3.2.3 + consola: 3.4.0 defu: 6.1.4 - hookable: 5.5.3 - pathe: 1.1.2 - pkg-types: 1.2.0 - scule: 1.3.0 - std-env: 3.7.0 - ufo: 1.5.4 - uncrypto: 0.1.3 - unimport: 3.12.0(rollup@3.29.4) - untyped: 1.4.2 - transitivePeerDependencies: - - rollup - - supports-color - - webpack-sources - - '@nuxt/schema@3.13.2(rollup@4.22.0)': - dependencies: - compatx: 0.1.8 - consola: 3.2.3 - defu: 6.1.4 - hookable: 5.5.3 - pathe: 1.1.2 - pkg-types: 1.2.0 - scule: 1.3.0 - std-env: 3.7.0 - ufo: 1.5.4 - uncrypto: 0.1.3 - unimport: 3.12.0(rollup@4.22.0) - untyped: 1.4.2 - transitivePeerDependencies: - - rollup - - supports-color - - webpack-sources + pathe: 2.0.2 + std-env: 3.8.0 - '@nuxt/telemetry@2.6.0(magicast@0.3.5)(rollup@3.29.4)': + '@nuxt/telemetry@2.6.4(magicast@0.3.5)(rollup@4.31.0)': dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - ci-info: 4.0.0 - consola: 3.2.3 - create-require: 1.1.1 - defu: 6.1.4 - destr: 2.0.3 - dotenv: 16.4.5 - git-url-parse: 15.0.0 - is-docker: 3.0.0 - jiti: 1.21.6 - mri: 1.2.0 - nanoid: 5.0.7 - ofetch: 1.4.1 - package-manager-detector: 0.2.0 - parse-git-config: 3.0.0 - pathe: 1.1.2 - rc9: 2.1.2 - std-env: 3.7.0 - transitivePeerDependencies: - - magicast - - rollup - - supports-color - - webpack-sources - - '@nuxt/telemetry@2.6.0(magicast@0.3.5)(rollup@4.22.0)': - dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.22.0) - ci-info: 4.0.0 - consola: 3.2.3 - create-require: 1.1.1 - defu: 6.1.4 + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + citty: 0.1.6 + consola: 3.4.0 destr: 2.0.3 - dotenv: 16.4.5 - git-url-parse: 15.0.0 + dotenv: 16.4.7 + git-url-parse: 16.0.0 is-docker: 3.0.0 - jiti: 1.21.6 - mri: 1.2.0 - nanoid: 5.0.7 ofetch: 1.4.1 - package-manager-detector: 0.2.0 + package-manager-detector: 0.2.8 parse-git-config: 3.0.0 - pathe: 1.1.2 + pathe: 2.0.2 rc9: 2.1.2 - std-env: 3.7.0 + std-env: 3.8.0 transitivePeerDependencies: - magicast - rollup - supports-color - - webpack-sources - '@nuxt/test-utils@3.14.4(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3))': + '@nuxt/test-utils@3.15.4(@types/node@22.10.7)(jiti@2.4.2)(magicast@0.3.5)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vitest@3.0.3(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(yaml@2.7.0)': dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - '@nuxt/schema': 3.13.2(rollup@3.29.4) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + '@nuxt/schema': 3.15.2 c12: 2.0.1(magicast@0.3.5) - consola: 3.2.3 + consola: 3.4.0 defu: 6.1.4 destr: 2.0.3 estree-walker: 3.0.3 fake-indexeddb: 6.0.0 get-port-please: 3.1.2 - h3: 1.12.0 - local-pkg: 0.5.0 - magic-string: 0.30.12 - nitropack: 2.9.7(better-sqlite3@11.3.0)(magicast@0.3.5) - node-fetch-native: 1.6.4 + h3: 1.14.0 + local-pkg: 1.0.0 + magic-string: 0.30.17 + node-fetch-native: 1.6.6 ofetch: 1.4.1 - pathe: 1.1.2 + pathe: 2.0.2 perfect-debounce: 1.0.0 radix3: 1.1.2 scule: 1.3.0 - std-env: 3.7.0 - tinyexec: 0.3.1 + std-env: 3.8.0 + tinyexec: 0.3.2 ufo: 1.5.4 unenv: 1.10.0 - unplugin: 1.14.1 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vitest-environment-nuxt: 1.0.1(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) - vue: 3.5.6(typescript@5.6.3) - vue-router: 4.4.5(vue@3.5.6(typescript@5.6.3)) + unplugin: 2.1.2 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) + vitest-environment-nuxt: 1.0.1(@types/node@22.10.7)(jiti@2.4.2)(magicast@0.3.5)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vitest@3.0.3(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(yaml@2.7.0) + vue: 3.5.13(typescript@5.6.3) optionalDependencies: - vitest: 2.1.3(@types/node@22.5.5)(terser@5.33.0) + vitest: 3.0.3(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss - magicast - rollup + - sass + - sass-embedded + - stylus + - sugarss - supports-color - - webpack-sources + - terser + - tsx + - typescript + - yaml - '@nuxt/ui-pro@1.4.4(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3))': + '@nuxt/ui-pro@1.7.0(change-case@5.4.4)(magicast@0.3.5)(rollup@4.31.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': dependencies: - '@iconify-json/vscode-icons': 1.2.2 - '@nuxt/ui': 2.18.7(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - '@vueuse/core': 11.1.0(vue@3.5.6(typescript@5.6.3)) + '@iconify-json/vscode-icons': 1.2.10 + '@nuxt/ui': 2.21.0(change-case@5.4.4)(magicast@0.3.5)(rollup@4.31.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + '@vueuse/core': 12.5.0(typescript@5.6.3) defu: 6.1.4 - git-url-parse: 15.0.0 + git-url-parse: 16.0.0 ofetch: 1.4.1 parse-git-config: 3.0.0 - pathe: 1.1.2 - pkg-types: 1.2.1 - tailwind-merge: 2.5.4 - vue3-smooth-dnd: 0.0.6(vue@3.5.6(typescript@5.6.3)) + pathe: 2.0.2 + pkg-types: 1.3.1 + tailwind-merge: 2.6.0 + vue3-smooth-dnd: 0.0.6(vue@3.5.13(typescript@5.6.3)) transitivePeerDependencies: - - '@vue/composition-api' - async-validator - axios - change-case @@ -6292,38 +6131,36 @@ snapshots: - sortablejs - supports-color - ts-node - - uWebSockets.js + - typescript - universal-cookie - vite - vue - - webpack-sources - '@nuxt/ui@2.18.7(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3))': + '@nuxt/ui@2.21.0(change-case@5.4.4)(magicast@0.3.5)(rollup@4.31.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': dependencies: - '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.14) - '@headlessui/vue': 1.7.23(vue@3.5.6(typescript@5.6.3)) - '@iconify-json/heroicons': 1.2.1 - '@nuxt/icon': 1.5.6(magicast@0.3.5)(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - '@nuxtjs/color-mode': 3.5.1(magicast@0.3.5)(rollup@3.29.4) - '@nuxtjs/tailwindcss': 6.12.1(magicast@0.3.5)(rollup@3.29.4) + '@headlessui/tailwindcss': 0.2.1(tailwindcss@3.4.17) + '@headlessui/vue': 1.7.23(vue@3.5.13(typescript@5.6.3)) + '@iconify-json/heroicons': 1.2.2 + '@nuxt/icon': 1.10.3(magicast@0.3.5)(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + '@nuxtjs/color-mode': 3.5.2(magicast@0.3.5)(rollup@4.31.0) + '@nuxtjs/tailwindcss': 6.13.1(magicast@0.3.5)(rollup@4.31.0) '@popperjs/core': 2.11.8 - '@tailwindcss/aspect-ratio': 0.4.2(tailwindcss@3.4.14) - '@tailwindcss/container-queries': 0.1.1(tailwindcss@3.4.14) - '@tailwindcss/forms': 0.5.9(tailwindcss@3.4.14) - '@tailwindcss/typography': 0.5.15(tailwindcss@3.4.14) - '@vueuse/core': 11.1.0(vue@3.5.6(typescript@5.6.3)) - '@vueuse/integrations': 11.1.0(fuse.js@7.0.0)(vue@3.5.6(typescript@5.6.3)) - '@vueuse/math': 11.1.0(vue@3.5.6(typescript@5.6.3)) + '@tailwindcss/aspect-ratio': 0.4.2(tailwindcss@3.4.17) + '@tailwindcss/container-queries': 0.1.1(tailwindcss@3.4.17) + '@tailwindcss/forms': 0.5.10(tailwindcss@3.4.17) + '@tailwindcss/typography': 0.5.16(tailwindcss@3.4.17) + '@vueuse/core': 12.5.0(typescript@5.6.3) + '@vueuse/integrations': 12.5.0(change-case@5.4.4)(fuse.js@7.0.0)(typescript@5.6.3) + '@vueuse/math': 12.5.0(typescript@5.6.3) defu: 6.1.4 fuse.js: 7.0.0 ohash: 1.1.4 - pathe: 1.1.2 + pathe: 2.0.2 scule: 1.3.0 - tailwind-merge: 2.5.4 - tailwindcss: 3.4.14 + tailwind-merge: 2.6.0 + tailwindcss: 3.4.17 transitivePeerDependencies: - - '@vue/composition-api' - async-validator - axios - change-case @@ -6338,108 +6175,45 @@ snapshots: - sortablejs - supports-color - ts-node - - uWebSockets.js + - typescript - universal-cookie - vite - vue - - webpack-sources - - '@nuxt/vite-builder@3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3))': - dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - '@rollup/plugin-replace': 5.0.7(rollup@3.29.4) - '@vitejs/plugin-vue': 5.1.4(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - '@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - autoprefixer: 10.4.20(postcss@8.4.47) - clear: 0.1.0 - consola: 3.2.3 - cssnano: 7.0.6(postcss@8.4.47) - defu: 6.1.4 - esbuild: 0.23.1 - escape-string-regexp: 5.0.0 - estree-walker: 3.0.3 - externality: 1.0.2 - get-port-please: 3.1.2 - h3: 1.12.0 - knitwork: 1.1.0 - magic-string: 0.30.11 - mlly: 1.7.1 - ohash: 1.1.4 - pathe: 1.1.2 - perfect-debounce: 1.0.0 - pkg-types: 1.2.0 - postcss: 8.4.47 - rollup-plugin-visualizer: 5.12.0(rollup@3.29.4) - std-env: 3.7.0 - strip-literal: 2.1.0 - ufo: 1.5.4 - unenv: 1.10.0 - unplugin: 1.14.1 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vite-node: 2.1.1(@types/node@22.5.5)(terser@5.33.0) - vite-plugin-checker: 0.8.0(eslint@9.13.0(jiti@2.3.3))(optionator@0.9.4)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)) - vue: 3.5.6(typescript@5.6.3) - vue-bundle-renderer: 2.1.0 - transitivePeerDependencies: - - '@biomejs/biome' - - '@types/node' - - eslint - - less - - lightningcss - - magicast - - meow - - optionator - - rollup - - sass - - sass-embedded - - stylelint - - stylus - - sugarss - - supports-color - - terser - - typescript - - uWebSockets.js - - vls - - vti - - vue-tsc - - webpack-sources - - '@nuxt/vite-builder@3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3))': - dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.22.0) - '@rollup/plugin-replace': 5.0.7(rollup@4.22.0) - '@vitejs/plugin-vue': 5.1.4(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - '@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - autoprefixer: 10.4.20(postcss@8.4.47) - clear: 0.1.0 - consola: 3.2.3 - cssnano: 7.0.6(postcss@8.4.47) + + '@nuxt/vite-builder@3.15.2(@types/node@22.10.7)(eslint@9.18.0(jiti@2.4.2))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vue-tsc@2.2.0(typescript@5.6.3))(vue@3.5.13(typescript@5.6.3))(yaml@2.7.0)': + dependencies: + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + '@rollup/plugin-replace': 6.0.2(rollup@4.31.0) + '@vitejs/plugin-vue': 5.2.1(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + '@vitejs/plugin-vue-jsx': 4.1.1(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + autoprefixer: 10.4.20(postcss@8.5.1) + consola: 3.4.0 + cssnano: 7.0.6(postcss@8.5.1) defu: 6.1.4 - esbuild: 0.23.1 + esbuild: 0.24.2 escape-string-regexp: 5.0.0 - estree-walker: 3.0.3 externality: 1.0.2 get-port-please: 3.1.2 - h3: 1.12.0 - knitwork: 1.1.0 - magic-string: 0.30.11 - mlly: 1.7.1 + h3: 1.14.0 + jiti: 2.4.2 + knitwork: 1.2.0 + magic-string: 0.30.17 + mlly: 1.7.4 ohash: 1.1.4 - pathe: 1.1.2 + pathe: 2.0.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 - postcss: 8.4.47 - rollup-plugin-visualizer: 5.12.0(rollup@4.22.0) - std-env: 3.7.0 - strip-literal: 2.1.0 + pkg-types: 1.3.1 + postcss: 8.5.1 + rollup-plugin-visualizer: 5.14.0(rollup@4.31.0) + std-env: 3.8.0 ufo: 1.5.4 unenv: 1.10.0 - unplugin: 1.14.1 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vite-node: 2.1.1(@types/node@22.5.5)(terser@5.33.0) - vite-plugin-checker: 0.8.0(eslint@9.13.0(jiti@2.3.3))(optionator@0.9.4)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)) - vue: 3.5.6(typescript@5.6.3) - vue-bundle-renderer: 2.1.0 + unplugin: 2.1.2 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) + vite-node: 2.1.8(@types/node@22.10.7)(terser@5.37.0) + vite-plugin-checker: 0.8.0(eslint@9.18.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.6.3)) + vue: 3.5.13(typescript@5.6.3) + vue-bundle-renderer: 2.1.1 transitivePeerDependencies: - '@biomejs/biome' - '@types/node' @@ -6449,6 +6223,7 @@ snapshots: - magicast - meow - optionator + - rolldown - rollup - sass - sass-embedded @@ -6457,142 +6232,143 @@ snapshots: - sugarss - supports-color - terser + - tsx - typescript - - uWebSockets.js - vls - vti - vue-tsc - - webpack-sources + - yaml - '@nuxtjs/color-mode@3.5.1(magicast@0.3.5)(rollup@3.29.4)': + '@nuxtjs/color-mode@3.5.2(magicast@0.3.5)(rollup@4.31.0)': dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - changelogen: 0.5.7(magicast@0.3.5) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.3.1 semver: 7.6.3 transitivePeerDependencies: - magicast - rollup - supports-color - - webpack-sources - '@nuxtjs/tailwindcss@6.12.1(magicast@0.3.5)(rollup@3.29.4)': + '@nuxtjs/tailwindcss@6.13.1(magicast@0.3.5)(rollup@4.31.0)': dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - autoprefixer: 10.4.20(postcss@8.4.47) - consola: 3.2.3 + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + autoprefixer: 10.4.20(postcss@8.5.1) + c12: 2.0.1(magicast@0.3.5) + consola: 3.4.0 defu: 6.1.4 - h3: 1.12.0 - pathe: 1.1.2 - postcss: 8.4.47 - postcss-nesting: 12.1.5(postcss@8.4.47) - tailwind-config-viewer: 2.0.4(tailwindcss@3.4.14) - tailwindcss: 3.4.14 + h3: 1.14.0 + klona: 2.0.6 + pathe: 2.0.2 + postcss: 8.5.1 + postcss-nesting: 13.0.1(postcss@8.5.1) + tailwind-config-viewer: 2.0.4(tailwindcss@3.4.17) + tailwindcss: 3.4.17 ufo: 1.5.4 - unctx: 2.3.1 + unctx: 2.4.1 transitivePeerDependencies: - magicast - rollup - supports-color - ts-node - - uWebSockets.js - - webpack-sources - '@parcel/watcher-android-arm64@2.4.1': + '@parcel/watcher-android-arm64@2.5.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.0': optional: true - '@parcel/watcher-darwin-arm64@2.4.1': + '@parcel/watcher-darwin-x64@2.5.0': optional: true - '@parcel/watcher-darwin-x64@2.4.1': + '@parcel/watcher-freebsd-x64@2.5.0': optional: true - '@parcel/watcher-freebsd-x64@2.4.1': + '@parcel/watcher-linux-arm-glibc@2.5.0': optional: true - '@parcel/watcher-linux-arm-glibc@2.4.1': + '@parcel/watcher-linux-arm-musl@2.5.0': optional: true - '@parcel/watcher-linux-arm64-glibc@2.4.1': + '@parcel/watcher-linux-arm64-glibc@2.5.0': optional: true - '@parcel/watcher-linux-arm64-musl@2.4.1': + '@parcel/watcher-linux-arm64-musl@2.5.0': optional: true - '@parcel/watcher-linux-x64-glibc@2.4.1': + '@parcel/watcher-linux-x64-glibc@2.5.0': optional: true - '@parcel/watcher-linux-x64-musl@2.4.1': + '@parcel/watcher-linux-x64-musl@2.5.0': optional: true - '@parcel/watcher-wasm@2.4.1': + '@parcel/watcher-wasm@2.5.0': dependencies: is-glob: 4.0.3 micromatch: 4.0.8 - '@parcel/watcher-win32-arm64@2.4.1': + '@parcel/watcher-win32-arm64@2.5.0': optional: true - '@parcel/watcher-win32-ia32@2.4.1': + '@parcel/watcher-win32-ia32@2.5.0': optional: true - '@parcel/watcher-win32-x64@2.4.1': + '@parcel/watcher-win32-x64@2.5.0': optional: true - '@parcel/watcher@2.4.1': + '@parcel/watcher@2.5.0': dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 micromatch: 4.0.8 node-addon-api: 7.1.1 optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.1 - '@parcel/watcher-darwin-arm64': 2.4.1 - '@parcel/watcher-darwin-x64': 2.4.1 - '@parcel/watcher-freebsd-x64': 2.4.1 - '@parcel/watcher-linux-arm-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-musl': 2.4.1 - '@parcel/watcher-linux-x64-glibc': 2.4.1 - '@parcel/watcher-linux-x64-musl': 2.4.1 - '@parcel/watcher-win32-arm64': 2.4.1 - '@parcel/watcher-win32-ia32': 2.4.1 - '@parcel/watcher-win32-x64': 2.4.1 - - '@peculiar/asn1-android@2.3.13': - dependencies: - '@peculiar/asn1-schema': 2.3.13 + '@parcel/watcher-android-arm64': 2.5.0 + '@parcel/watcher-darwin-arm64': 2.5.0 + '@parcel/watcher-darwin-x64': 2.5.0 + '@parcel/watcher-freebsd-x64': 2.5.0 + '@parcel/watcher-linux-arm-glibc': 2.5.0 + '@parcel/watcher-linux-arm-musl': 2.5.0 + '@parcel/watcher-linux-arm64-glibc': 2.5.0 + '@parcel/watcher-linux-arm64-musl': 2.5.0 + '@parcel/watcher-linux-x64-glibc': 2.5.0 + '@parcel/watcher-linux-x64-musl': 2.5.0 + '@parcel/watcher-win32-arm64': 2.5.0 + '@parcel/watcher-win32-ia32': 2.5.0 + '@parcel/watcher-win32-x64': 2.5.0 + + '@peculiar/asn1-android@2.3.15': + dependencies: + '@peculiar/asn1-schema': 2.3.15 asn1js: 3.0.5 - tslib: 2.7.0 + tslib: 2.8.1 - '@peculiar/asn1-ecc@2.3.13': + '@peculiar/asn1-ecc@2.3.15': dependencies: - '@peculiar/asn1-schema': 2.3.13 - '@peculiar/asn1-x509': 2.3.13 + '@peculiar/asn1-schema': 2.3.15 + '@peculiar/asn1-x509': 2.3.15 asn1js: 3.0.5 - tslib: 2.7.0 + tslib: 2.8.1 - '@peculiar/asn1-rsa@2.3.13': + '@peculiar/asn1-rsa@2.3.15': dependencies: - '@peculiar/asn1-schema': 2.3.13 - '@peculiar/asn1-x509': 2.3.13 + '@peculiar/asn1-schema': 2.3.15 + '@peculiar/asn1-x509': 2.3.15 asn1js: 3.0.5 - tslib: 2.7.0 + tslib: 2.8.1 - '@peculiar/asn1-schema@2.3.13': + '@peculiar/asn1-schema@2.3.15': dependencies: asn1js: 3.0.5 - pvtsutils: 1.3.5 - tslib: 2.7.0 + pvtsutils: 1.3.6 + tslib: 2.8.1 - '@peculiar/asn1-x509@2.3.13': + '@peculiar/asn1-x509@2.3.15': dependencies: - '@peculiar/asn1-schema': 2.3.13 + '@peculiar/asn1-schema': 2.3.15 asn1js: 3.0.5 - ipaddr.js: 2.2.0 - pvtsutils: 1.3.5 - tslib: 2.7.0 + pvtsutils: 1.3.6 + tslib: 2.8.1 '@phc/format@1.0.0': {} @@ -6605,186 +6381,219 @@ snapshots: '@popperjs/core@2.11.8': {} - '@poppinss/utils@6.8.3': + '@poppinss/exception@1.2.0': {} + + '@poppinss/object-builder@1.1.0': {} + + '@poppinss/string@1.2.0': dependencies: '@lukeed/ms': 2.0.2 - '@types/bytes': 3.1.4 + '@types/bytes': 3.1.5 '@types/pluralize': 0.0.33 bytes: 3.1.2 case-anything: 3.1.0 - flattie: 1.1.1 pluralize: 8.0.0 - safe-stable-stringify: 2.5.0 - secure-json-parse: 2.7.0 - slash: 5.1.0 slugify: 1.6.6 truncatise: 0.0.8 - '@rollup/plugin-alias@5.1.0(rollup@3.29.4)': + '@poppinss/utils@6.9.2': dependencies: - slash: 4.0.0 - optionalDependencies: - rollup: 3.29.4 + '@poppinss/exception': 1.2.0 + '@poppinss/object-builder': 1.1.0 + '@poppinss/string': 1.2.0 + flattie: 1.1.1 + safe-stable-stringify: 2.5.0 + secure-json-parse: 3.0.2 - '@rollup/plugin-alias@5.1.0(rollup@4.22.0)': + '@redocly/ajv@8.11.2': dependencies: - slash: 4.0.0 + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js-replace: 1.0.1 + + '@redocly/config@0.20.1': {} + + '@redocly/openapi-core@1.27.2(supports-color@9.4.0)': + dependencies: + '@redocly/ajv': 8.11.2 + '@redocly/config': 0.20.1 + colorette: 1.4.0 + https-proxy-agent: 7.0.6(supports-color@9.4.0) + js-levenshtein: 1.1.6 + js-yaml: 4.1.0 + minimatch: 5.1.6 + node-fetch: 2.7.0 + pluralize: 8.0.0 + yaml-ast-parser: 0.0.43 + transitivePeerDependencies: + - encoding + - supports-color + + '@rollup/plugin-alias@5.1.1(rollup@3.29.5)': optionalDependencies: - rollup: 4.22.0 + rollup: 3.29.5 - '@rollup/plugin-commonjs@25.0.8(rollup@3.29.4)': + '@rollup/plugin-alias@5.1.1(rollup@4.31.0)': + optionalDependencies: + rollup: 4.31.0 + + '@rollup/plugin-commonjs@25.0.8(rollup@3.29.5)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 - magic-string: 0.30.11 + magic-string: 0.30.17 optionalDependencies: - rollup: 3.29.4 + rollup: 3.29.5 - '@rollup/plugin-commonjs@25.0.8(rollup@4.22.0)': + '@rollup/plugin-commonjs@28.0.2(rollup@4.31.0)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) commondir: 1.0.1 estree-walker: 2.0.2 - glob: 8.1.0 + fdir: 6.4.3(picomatch@4.0.2) is-reference: 1.2.1 - magic-string: 0.30.11 + magic-string: 0.30.17 + picomatch: 4.0.2 optionalDependencies: - rollup: 4.22.0 + rollup: 4.31.0 - '@rollup/plugin-inject@5.0.5(rollup@4.22.0)': + '@rollup/plugin-inject@5.0.5(rollup@4.31.0)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) estree-walker: 2.0.2 - magic-string: 0.30.11 + magic-string: 0.30.17 optionalDependencies: - rollup: 4.22.0 + rollup: 4.31.0 - '@rollup/plugin-json@6.1.0(rollup@3.29.4)': + '@rollup/plugin-json@6.1.0(rollup@3.29.5)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) optionalDependencies: - rollup: 3.29.4 + rollup: 3.29.5 - '@rollup/plugin-json@6.1.0(rollup@4.22.0)': + '@rollup/plugin-json@6.1.0(rollup@4.31.0)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) optionalDependencies: - rollup: 4.22.0 + rollup: 4.31.0 - '@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4)': + '@rollup/plugin-node-resolve@15.3.1(rollup@3.29.5)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) '@types/resolve': 1.20.2 deepmerge: 4.3.1 - is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.8 + resolve: 1.22.10 optionalDependencies: - rollup: 3.29.4 + rollup: 3.29.5 - '@rollup/plugin-node-resolve@15.2.3(rollup@4.22.0)': + '@rollup/plugin-node-resolve@15.3.1(rollup@4.31.0)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 - is-builtin-module: 3.2.1 is-module: 1.0.0 - resolve: 1.22.8 + resolve: 1.22.10 optionalDependencies: - rollup: 4.22.0 + rollup: 4.31.0 - '@rollup/plugin-replace@5.0.7(rollup@3.29.4)': + '@rollup/plugin-replace@5.0.7(rollup@3.29.5)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - magic-string: 0.30.11 + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) + magic-string: 0.30.17 optionalDependencies: - rollup: 3.29.4 + rollup: 3.29.5 - '@rollup/plugin-replace@5.0.7(rollup@4.22.0)': + '@rollup/plugin-replace@6.0.2(rollup@4.31.0)': dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) - magic-string: 0.30.11 + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) + magic-string: 0.30.17 optionalDependencies: - rollup: 4.22.0 + rollup: 4.31.0 - '@rollup/plugin-terser@0.4.4(rollup@4.22.0)': + '@rollup/plugin-terser@0.4.4(rollup@4.31.0)': dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 - terser: 5.33.0 + terser: 5.37.0 optionalDependencies: - rollup: 4.22.0 + rollup: 4.31.0 - '@rollup/pluginutils@4.2.1': - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - - '@rollup/pluginutils@5.1.0(rollup@3.29.4)': + '@rollup/pluginutils@5.1.4(rollup@3.29.5)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 - picomatch: 2.3.1 + picomatch: 4.0.2 optionalDependencies: - rollup: 3.29.4 + rollup: 3.29.5 - '@rollup/pluginutils@5.1.0(rollup@4.22.0)': + '@rollup/pluginutils@5.1.4(rollup@4.31.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 - picomatch: 2.3.1 + picomatch: 4.0.2 optionalDependencies: - rollup: 4.22.0 + rollup: 4.31.0 + + '@rollup/rollup-android-arm-eabi@4.31.0': + optional: true - '@rollup/rollup-android-arm-eabi@4.22.0': + '@rollup/rollup-android-arm64@4.31.0': optional: true - '@rollup/rollup-android-arm64@4.22.0': + '@rollup/rollup-darwin-arm64@4.31.0': optional: true - '@rollup/rollup-darwin-arm64@4.22.0': + '@rollup/rollup-darwin-x64@4.31.0': optional: true - '@rollup/rollup-darwin-x64@4.22.0': + '@rollup/rollup-freebsd-arm64@4.31.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.22.0': + '@rollup/rollup-freebsd-x64@4.31.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.22.0': + '@rollup/rollup-linux-arm-gnueabihf@4.31.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.22.0': + '@rollup/rollup-linux-arm-musleabihf@4.31.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.22.0': + '@rollup/rollup-linux-arm64-gnu@4.31.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.22.0': + '@rollup/rollup-linux-arm64-musl@4.31.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.22.0': + '@rollup/rollup-linux-loongarch64-gnu@4.31.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.22.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.31.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.22.0': + '@rollup/rollup-linux-riscv64-gnu@4.31.0': optional: true - '@rollup/rollup-linux-x64-musl@4.22.0': + '@rollup/rollup-linux-s390x-gnu@4.31.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.22.0': + '@rollup/rollup-linux-x64-gnu@4.31.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.22.0': + '@rollup/rollup-linux-x64-musl@4.31.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.22.0': + '@rollup/rollup-win32-arm64-msvc@4.31.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.31.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.31.0': optional: true '@simplewebauthn/browser@11.0.0': @@ -6795,403 +6604,353 @@ snapshots: dependencies: '@hexagon/base64': 1.1.28 '@levischuck/tiny-cbor': 0.2.2 - '@peculiar/asn1-android': 2.3.13 - '@peculiar/asn1-ecc': 2.3.13 - '@peculiar/asn1-rsa': 2.3.13 - '@peculiar/asn1-schema': 2.3.13 - '@peculiar/asn1-x509': 2.3.13 + '@peculiar/asn1-android': 2.3.15 + '@peculiar/asn1-ecc': 2.3.15 + '@peculiar/asn1-rsa': 2.3.15 + '@peculiar/asn1-schema': 2.3.15 + '@peculiar/asn1-x509': 2.3.15 '@simplewebauthn/types': 11.0.0 - cross-fetch: 4.0.0 + cross-fetch: 4.1.0 transitivePeerDependencies: - encoding '@simplewebauthn/types@11.0.0': {} + '@simplewebauthn/types@12.0.0': {} + '@sindresorhus/merge-streams@2.3.0': {} - '@stylistic/eslint-plugin@2.9.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@stylistic/eslint-plugin@2.13.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - eslint: 9.13.0(jiti@2.3.3) - eslint-visitor-keys: 4.1.0 - espree: 10.2.0 + '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + eslint: 9.18.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 estraverse: 5.3.0 picomatch: 4.0.2 transitivePeerDependencies: - supports-color - typescript - '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.14)': + '@tailwindcss/aspect-ratio@0.4.2(tailwindcss@3.4.17)': dependencies: - tailwindcss: 3.4.14 + tailwindcss: 3.4.17 - '@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.14)': + '@tailwindcss/container-queries@0.1.1(tailwindcss@3.4.17)': dependencies: - tailwindcss: 3.4.14 + tailwindcss: 3.4.17 - '@tailwindcss/forms@0.5.9(tailwindcss@3.4.14)': + '@tailwindcss/forms@0.5.10(tailwindcss@3.4.17)': dependencies: mini-svg-data-uri: 1.4.4 - tailwindcss: 3.4.14 + tailwindcss: 3.4.17 - '@tailwindcss/typography@0.5.15(tailwindcss@3.4.14)': + '@tailwindcss/typography@0.5.16(tailwindcss@3.4.17)': dependencies: lodash.castarray: 4.4.0 lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 postcss-selector-parser: 6.0.10 - tailwindcss: 3.4.14 + tailwindcss: 3.4.17 - '@tanstack/virtual-core@3.10.8': {} + '@tanstack/virtual-core@3.11.2': {} - '@tanstack/vue-virtual@3.10.8(vue@3.5.6(typescript@5.6.3))': + '@tanstack/vue-virtual@3.11.2(vue@3.5.13(typescript@5.6.3))': dependencies: - '@tanstack/virtual-core': 3.10.8 - vue: 3.5.6(typescript@5.6.3) + '@tanstack/virtual-core': 3.11.2 + vue: 3.5.13(typescript@5.6.3) '@trysound/sax@0.2.0': {} - '@types/bytes@3.1.4': {} + '@tsndr/cloudflare-worker-jwt@3.1.3': {} - '@types/estree@1.0.5': {} + '@types/bytes@3.1.5': {} + + '@types/doctrine@0.0.9': {} '@types/estree@1.0.6': {} '@types/http-proxy@1.17.15': dependencies: - '@types/node': 22.5.5 + '@types/node': 22.10.7 '@types/json-schema@7.0.15': {} - '@types/node@22.5.5': + '@types/node@22.10.7': dependencies: - undici-types: 6.19.8 + undici-types: 6.20.0 '@types/normalize-package-data@2.4.4': {} + '@types/parse-path@7.0.3': {} + '@types/pluralize@0.0.33': {} '@types/resolve@1.20.2': {} '@types/web-bluetooth@0.0.20': {} - '@typescript-eslint/eslint-plugin@8.10.0(@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3))(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.10.0 - '@typescript-eslint/type-utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.10.0 - eslint: 9.13.0(jiti@2.3.3) + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.21.0 + eslint: 9.18.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.6.3) - optionalDependencies: + ts-api-utils: 2.0.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@typescript-eslint/parser@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 8.10.0 - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.10.0 - debug: 4.3.7 - eslint: 9.13.0(jiti@2.3.3) - optionalDependencies: + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.21.0 + debug: 4.4.0(supports-color@9.4.0) + eslint: 9.18.0(jiti@2.4.2) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.10.0': - dependencies: - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/visitor-keys': 8.10.0 - - '@typescript-eslint/scope-manager@8.6.0': + '@typescript-eslint/scope-manager@8.21.0': dependencies: - '@typescript-eslint/types': 8.6.0 - '@typescript-eslint/visitor-keys': 8.6.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 - '@typescript-eslint/type-utils@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - debug: 4.3.7 - ts-api-utils: 1.3.0(typescript@5.6.3) - optionalDependencies: + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + debug: 4.4.0(supports-color@9.4.0) + eslint: 9.18.0(jiti@2.4.2) + ts-api-utils: 2.0.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - - eslint - supports-color - '@typescript-eslint/types@8.10.0': {} - - '@typescript-eslint/types@8.6.0': {} + '@typescript-eslint/types@8.21.0': {} - '@typescript-eslint/typescript-estree@8.10.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.21.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/visitor-keys': 8.10.0 - debug: 4.3.7 - fast-glob: 3.3.2 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/visitor-keys': 8.21.0 + debug: 4.4.0(supports-color@9.4.0) + fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.3) - optionalDependencies: + ts-api-utils: 2.0.0(typescript@5.6.3) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.6.0(typescript@5.6.3)': + '@typescript-eslint/utils@8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.6.0 - '@typescript-eslint/visitor-keys': 8.6.0 - debug: 4.3.7 - fast-glob: 3.3.2 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.3) - optionalDependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/types': 8.21.0 + '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.6.3) + eslint: 9.18.0(jiti@2.4.2) typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.10.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) - '@typescript-eslint/scope-manager': 8.10.0 - '@typescript-eslint/types': 8.10.0 - '@typescript-eslint/typescript-estree': 8.10.0(typescript@5.6.3) - eslint: 9.13.0(jiti@2.3.3) - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@8.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) - '@typescript-eslint/scope-manager': 8.6.0 - '@typescript-eslint/types': 8.6.0 - '@typescript-eslint/typescript-estree': 8.6.0(typescript@5.6.3) - eslint: 9.13.0(jiti@2.3.3) - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/visitor-keys@8.10.0': + '@typescript-eslint/visitor-keys@8.21.0': dependencies: - '@typescript-eslint/types': 8.10.0 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.21.0 + eslint-visitor-keys: 4.2.0 - '@typescript-eslint/visitor-keys@8.6.0': + '@unhead/dom@1.11.18': dependencies: - '@typescript-eslint/types': 8.6.0 - eslint-visitor-keys: 3.4.3 + '@unhead/schema': 1.11.18 + '@unhead/shared': 1.11.18 - '@unhead/dom@1.11.6': - dependencies: - '@unhead/schema': 1.11.6 - '@unhead/shared': 1.11.6 - - '@unhead/schema@1.11.6': + '@unhead/schema@1.11.18': dependencies: hookable: 5.5.3 zhead: 2.2.4 - '@unhead/shared@1.11.6': + '@unhead/shared@1.11.18': dependencies: - '@unhead/schema': 1.11.6 + '@unhead/schema': 1.11.18 + packrup: 0.1.2 - '@unhead/ssr@1.11.6': + '@unhead/ssr@1.11.18': dependencies: - '@unhead/schema': 1.11.6 - '@unhead/shared': 1.11.6 + '@unhead/schema': 1.11.18 + '@unhead/shared': 1.11.18 - '@unhead/vue@1.11.6(vue@3.5.6(typescript@5.6.3))': + '@unhead/vue@1.11.18(vue@3.5.13(typescript@5.6.3))': dependencies: - '@unhead/schema': 1.11.6 - '@unhead/shared': 1.11.6 - defu: 6.1.4 + '@unhead/schema': 1.11.18 + '@unhead/shared': 1.11.18 hookable: 5.5.3 - unhead: 1.11.6 - vue: 3.5.6(typescript@5.6.3) + unhead: 1.11.18 + vue: 3.5.13(typescript@5.6.3) - '@vercel/nft@0.26.5': + '@vercel/nft@0.27.10(rollup@4.31.0)': dependencies: - '@mapbox/node-pre-gyp': 1.0.11 - '@rollup/pluginutils': 4.2.1 - acorn: 8.12.1 - acorn-import-attributes: 1.9.5(acorn@8.12.1) + '@mapbox/node-pre-gyp': 2.0.0-rc.0 + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) + acorn: 8.14.0 + acorn-import-attributes: 1.9.5(acorn@8.14.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 glob: 7.2.3 graceful-fs: 4.2.11 - micromatch: 4.0.8 - node-gyp-build: 4.8.2 + node-gyp-build: 4.8.4 + picomatch: 4.0.2 resolve-from: 5.0.0 transitivePeerDependencies: - encoding + - rollup - supports-color - '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3))': + '@vitejs/plugin-vue-jsx@4.1.1(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) - '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.2) - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vue: 3.5.6(typescript@5.6.3) + '@babel/core': 7.26.0 + '@babel/plugin-transform-typescript': 7.26.5(@babel/core@7.26.0) + '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) + vue: 3.5.13(typescript@5.6.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.4(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3))': + '@vitejs/plugin-vue@5.2.1(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': dependencies: - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vue: 3.5.6(typescript@5.6.3) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) + vue: 3.5.13(typescript@5.6.3) - '@vitest/expect@2.1.3': + '@vitest/expect@3.0.3': dependencies: - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 - chai: 5.1.1 - tinyrainbow: 1.2.0 + '@vitest/spy': 3.0.3 + '@vitest/utils': 3.0.3 + chai: 5.1.2 + tinyrainbow: 2.0.0 - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))': + '@vitest/mocker@3.0.3(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))': dependencies: - '@vitest/spy': 2.1.3 + '@vitest/spy': 3.0.3 estree-walker: 3.0.3 - magic-string: 0.30.11 + magic-string: 0.30.17 optionalDependencies: - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) - '@vitest/pretty-format@2.1.3': + '@vitest/pretty-format@3.0.3': dependencies: - tinyrainbow: 1.2.0 + tinyrainbow: 2.0.0 - '@vitest/runner@2.1.3': + '@vitest/runner@3.0.3': dependencies: - '@vitest/utils': 2.1.3 - pathe: 1.1.2 + '@vitest/utils': 3.0.3 + pathe: 2.0.2 - '@vitest/snapshot@2.1.3': + '@vitest/snapshot@3.0.3': dependencies: - '@vitest/pretty-format': 2.1.3 - magic-string: 0.30.11 - pathe: 1.1.2 + '@vitest/pretty-format': 3.0.3 + magic-string: 0.30.17 + pathe: 2.0.2 - '@vitest/spy@2.1.3': + '@vitest/spy@3.0.3': dependencies: tinyspy: 3.0.2 - '@vitest/utils@2.1.3': + '@vitest/utils@3.0.3': dependencies: - '@vitest/pretty-format': 2.1.3 - loupe: 3.1.1 - tinyrainbow: 1.2.0 + '@vitest/pretty-format': 3.0.3 + loupe: 3.1.2 + tinyrainbow: 2.0.0 - '@volar/language-core@2.4.5': + '@volar/language-core@2.4.11': dependencies: - '@volar/source-map': 2.4.5 + '@volar/source-map': 2.4.11 - '@volar/source-map@2.4.5': {} + '@volar/source-map@2.4.11': {} - '@volar/typescript@2.4.5': + '@volar/typescript@2.4.11': dependencies: - '@volar/language-core': 2.4.5 + '@volar/language-core': 2.4.11 path-browserify: 1.0.1 vscode-uri: 3.0.8 - '@vue-macros/common@1.14.0(rollup@3.29.4)(vue@3.5.6(typescript@5.6.3))': - dependencies: - '@babel/types': 7.25.6 - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - '@vue/compiler-sfc': 3.5.6 - ast-kit: 1.2.0 - local-pkg: 0.5.0 - magic-string-ast: 0.6.2 - optionalDependencies: - vue: 3.5.6(typescript@5.6.3) - transitivePeerDependencies: - - rollup - - '@vue-macros/common@1.14.0(rollup@4.22.0)(vue@3.5.6(typescript@5.6.3))': + '@vue-macros/common@1.16.1(vue@3.5.13(typescript@5.6.3))': dependencies: - '@babel/types': 7.25.6 - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) - '@vue/compiler-sfc': 3.5.6 - ast-kit: 1.2.0 - local-pkg: 0.5.0 - magic-string-ast: 0.6.2 + '@vue/compiler-sfc': 3.5.13 + ast-kit: 1.4.0 + local-pkg: 1.0.0 + magic-string-ast: 0.7.0 + pathe: 2.0.2 + picomatch: 4.0.2 optionalDependencies: - vue: 3.5.6(typescript@5.6.3) - transitivePeerDependencies: - - rollup + vue: 3.5.13(typescript@5.6.3) '@vue/babel-helper-vue-transform-on@1.2.5': {} - '@vue/babel-plugin-jsx@1.2.5(@babel/core@7.25.2)': + '@vue/babel-plugin-jsx@1.2.5(@babel/core@7.26.0)': dependencies: - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/plugin-syntax-jsx': 7.24.7(@babel/core@7.25.2) - '@babel/template': 7.25.0 - '@babel/traverse': 7.25.6 - '@babel/types': 7.25.6 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/template': 7.25.9 + '@babel/traverse': 7.26.5 + '@babel/types': 7.26.5 '@vue/babel-helper-vue-transform-on': 1.2.5 - '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.25.2) + '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.26.0) html-tags: 3.3.1 svg-tags: 1.0.0 optionalDependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.26.0 transitivePeerDependencies: - supports-color - '@vue/babel-plugin-resolve-type@1.2.5(@babel/core@7.25.2)': + '@vue/babel-plugin-resolve-type@1.2.5(@babel/core@7.26.0)': dependencies: - '@babel/code-frame': 7.24.7 - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.24.7 - '@babel/helper-plugin-utils': 7.24.8 - '@babel/parser': 7.25.6 - '@vue/compiler-sfc': 3.5.6 + '@babel/code-frame': 7.26.2 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.26.5 + '@babel/parser': 7.26.5 + '@vue/compiler-sfc': 3.5.13 transitivePeerDependencies: - supports-color - '@vue/compiler-core@3.5.6': + '@vue/compiler-core@3.5.13': dependencies: - '@babel/parser': 7.25.6 - '@vue/shared': 3.5.6 + '@babel/parser': 7.26.5 + '@vue/shared': 3.5.13 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.6': + '@vue/compiler-dom@3.5.13': dependencies: - '@vue/compiler-core': 3.5.6 - '@vue/shared': 3.5.6 + '@vue/compiler-core': 3.5.13 + '@vue/shared': 3.5.13 - '@vue/compiler-sfc@3.5.6': + '@vue/compiler-sfc@3.5.13': dependencies: - '@babel/parser': 7.25.6 - '@vue/compiler-core': 3.5.6 - '@vue/compiler-dom': 3.5.6 - '@vue/compiler-ssr': 3.5.6 - '@vue/shared': 3.5.6 + '@babel/parser': 7.26.5 + '@vue/compiler-core': 3.5.13 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 estree-walker: 2.0.2 - magic-string: 0.30.11 - postcss: 8.4.47 + magic-string: 0.30.17 + postcss: 8.5.1 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.6': + '@vue/compiler-ssr@3.5.13': dependencies: - '@vue/compiler-dom': 3.5.6 - '@vue/shared': 3.5.6 + '@vue/compiler-dom': 3.5.13 + '@vue/shared': 3.5.13 '@vue/compiler-vue2@2.7.16': dependencies: @@ -7200,108 +6959,119 @@ snapshots: '@vue/devtools-api@6.6.4': {} - '@vue/devtools-core@7.4.4(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3))': + '@vue/devtools-core@7.6.8(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': dependencies: - '@vue/devtools-kit': 7.4.4 - '@vue/devtools-shared': 7.4.5 + '@vue/devtools-kit': 7.6.8 + '@vue/devtools-shared': 7.7.0 mitt: 3.0.1 - nanoid: 3.3.7 + nanoid: 5.0.9 pathe: 1.1.2 - vite-hot-client: 0.2.3(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - vue: 3.5.6(typescript@5.6.3) + vite-hot-client: 0.2.4(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)) + vue: 3.5.13(typescript@5.6.3) transitivePeerDependencies: - vite - '@vue/devtools-kit@7.4.4': + '@vue/devtools-kit@7.6.8': dependencies: - '@vue/devtools-shared': 7.4.5 - birpc: 0.2.17 + '@vue/devtools-shared': 7.7.0 + birpc: 0.2.19 hookable: 5.5.3 mitt: 3.0.1 perfect-debounce: 1.0.0 speakingurl: 14.0.1 - superjson: 2.2.1 + superjson: 2.2.2 - '@vue/devtools-shared@7.4.5': + '@vue/devtools-shared@7.7.0': dependencies: rfdc: 1.4.1 - '@vue/language-core@2.1.6(typescript@5.6.3)': + '@vue/language-core@2.2.0(typescript@5.6.3)': dependencies: - '@volar/language-core': 2.4.5 - '@vue/compiler-dom': 3.5.6 + '@volar/language-core': 2.4.11 + '@vue/compiler-dom': 3.5.13 '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.5.6 - computeds: 0.0.1 + '@vue/shared': 3.5.13 + alien-signals: 0.4.14 minimatch: 9.0.5 muggle-string: 0.4.1 path-browserify: 1.0.1 optionalDependencies: typescript: 5.6.3 - '@vue/reactivity@3.5.6': + '@vue/reactivity@3.5.13': dependencies: - '@vue/shared': 3.5.6 + '@vue/shared': 3.5.13 - '@vue/runtime-core@3.5.6': + '@vue/runtime-core@3.5.13': dependencies: - '@vue/reactivity': 3.5.6 - '@vue/shared': 3.5.6 + '@vue/reactivity': 3.5.13 + '@vue/shared': 3.5.13 - '@vue/runtime-dom@3.5.6': + '@vue/runtime-dom@3.5.13': dependencies: - '@vue/reactivity': 3.5.6 - '@vue/runtime-core': 3.5.6 - '@vue/shared': 3.5.6 + '@vue/reactivity': 3.5.13 + '@vue/runtime-core': 3.5.13 + '@vue/shared': 3.5.13 csstype: 3.1.3 - '@vue/server-renderer@3.5.6(vue@3.5.6(typescript@5.6.3))': + '@vue/server-renderer@3.5.13(vue@3.5.13(typescript@5.6.3))': dependencies: - '@vue/compiler-ssr': 3.5.6 - '@vue/shared': 3.5.6 - vue: 3.5.6(typescript@5.6.3) + '@vue/compiler-ssr': 3.5.13 + '@vue/shared': 3.5.13 + vue: 3.5.13(typescript@5.6.3) - '@vue/shared@3.5.6': {} + '@vue/shared@3.5.13': {} - '@vueuse/core@11.1.0(vue@3.5.6(typescript@5.6.3))': + '@vueuse/core@12.5.0(typescript@5.6.3)': dependencies: '@types/web-bluetooth': 0.0.20 - '@vueuse/metadata': 11.1.0 - '@vueuse/shared': 11.1.0(vue@3.5.6(typescript@5.6.3)) - vue-demi: 0.14.10(vue@3.5.6(typescript@5.6.3)) + '@vueuse/metadata': 12.5.0 + '@vueuse/shared': 12.5.0(typescript@5.6.3) + vue: 3.5.13(typescript@5.6.3) transitivePeerDependencies: - - '@vue/composition-api' - - vue + - typescript - '@vueuse/integrations@11.1.0(fuse.js@7.0.0)(vue@3.5.6(typescript@5.6.3))': + '@vueuse/integrations@12.5.0(change-case@5.4.4)(fuse.js@7.0.0)(typescript@5.6.3)': dependencies: - '@vueuse/core': 11.1.0(vue@3.5.6(typescript@5.6.3)) - '@vueuse/shared': 11.1.0(vue@3.5.6(typescript@5.6.3)) - vue-demi: 0.14.10(vue@3.5.6(typescript@5.6.3)) + '@vueuse/core': 12.5.0(typescript@5.6.3) + '@vueuse/shared': 12.5.0(typescript@5.6.3) + vue: 3.5.13(typescript@5.6.3) optionalDependencies: + change-case: 5.4.4 fuse.js: 7.0.0 transitivePeerDependencies: - - '@vue/composition-api' - - vue + - typescript - '@vueuse/math@11.1.0(vue@3.5.6(typescript@5.6.3))': + '@vueuse/math@12.5.0(typescript@5.6.3)': dependencies: - '@vueuse/shared': 11.1.0(vue@3.5.6(typescript@5.6.3)) - vue-demi: 0.14.10(vue@3.5.6(typescript@5.6.3)) + '@vueuse/shared': 12.5.0(typescript@5.6.3) + vue: 3.5.13(typescript@5.6.3) transitivePeerDependencies: - - '@vue/composition-api' - - vue + - typescript - '@vueuse/metadata@11.1.0': {} + '@vueuse/metadata@12.5.0': {} - '@vueuse/shared@11.1.0(vue@3.5.6(typescript@5.6.3))': + '@vueuse/nuxt@12.5.0(magicast@0.3.5)(nuxt@3.15.2(@parcel/watcher@2.5.0)(@types/node@22.10.7)(better-sqlite3@11.8.1)(db0@0.2.1(better-sqlite3@11.8.1))(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.6.3))(yaml@2.7.0))(rollup@4.31.0)(typescript@5.6.3)': dependencies: - vue-demi: 0.14.10(vue@3.5.6(typescript@5.6.3)) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + '@vueuse/core': 12.5.0(typescript@5.6.3) + '@vueuse/metadata': 12.5.0 + local-pkg: 1.0.0 + nuxt: 3.15.2(@parcel/watcher@2.5.0)(@types/node@22.10.7)(better-sqlite3@11.8.1)(db0@0.2.1(better-sqlite3@11.8.1))(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.6.3))(yaml@2.7.0) + vue: 3.5.13(typescript@5.6.3) transitivePeerDependencies: - - '@vue/composition-api' - - vue + - magicast + - rollup + - supports-color + - typescript - abbrev@1.1.1: {} + '@vueuse/shared@12.5.0(typescript@5.6.3)': + dependencies: + vue: 3.5.13(typescript@5.6.3) + transitivePeerDependencies: + - typescript + + abbrev@3.0.0: {} abort-controller@3.0.0: dependencies: @@ -7312,21 +7082,17 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-import-attributes@1.9.5(acorn@8.12.1): + acorn-import-attributes@1.9.5(acorn@8.14.0): dependencies: - acorn: 8.12.1 + acorn: 8.14.0 - acorn-jsx@5.3.2(acorn@8.12.1): + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: - acorn: 8.12.1 + acorn: 8.14.0 - acorn@8.12.1: {} + acorn@8.14.0: {} - agent-base@6.0.2: - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color + agent-base@7.1.3: {} ajv@6.12.6: dependencies: @@ -7335,6 +7101,8 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + alien-signals@0.4.14: {} + ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -7345,10 +7113,6 @@ snapshots: ansi-regex@6.1.0: {} - ansi-styles@3.2.1: - dependencies: - color-convert: 1.9.3 - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -7362,8 +7126,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - aproba@2.0.0: {} - archiver-utils@5.0.2: dependencies: glob: 10.4.5 @@ -7372,46 +7134,41 @@ snapshots: lazystream: 1.0.1 lodash: 4.17.21 normalize-path: 3.0.0 - readable-stream: 4.5.2 + readable-stream: 4.7.0 archiver@7.0.1: dependencies: archiver-utils: 5.0.2 async: 3.2.6 buffer-crc32: 1.0.0 - readable-stream: 4.5.2 + readable-stream: 4.7.0 readdir-glob: 1.1.3 tar-stream: 3.1.7 zip-stream: 6.0.1 are-docs-informative@0.0.2: {} - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - arg@5.0.2: {} argparse@2.0.1: {} asn1js@3.0.5: dependencies: - pvtsutils: 1.3.5 + pvtsutils: 1.3.6 pvutils: 1.1.3 - tslib: 2.7.0 + tslib: 2.8.1 assertion-error@2.0.1: {} - ast-kit@1.2.0: + ast-kit@1.4.0: dependencies: - '@babel/parser': 7.25.6 - pathe: 1.1.2 + '@babel/parser': 7.26.5 + pathe: 2.0.2 ast-walker-scope@0.6.2: dependencies: - '@babel/parser': 7.25.6 - ast-kit: 1.2.0 + '@babel/parser': 7.26.5 + ast-kit: 1.4.0 async-sema@3.1.1: {} @@ -7423,29 +7180,29 @@ snapshots: at-least-node@1.0.0: {} - autoprefixer@10.4.20(postcss@8.4.47): + autoprefixer@10.4.20(postcss@8.5.1): dependencies: - browserslist: 4.23.3 - caniuse-lite: 1.0.30001662 + browserslist: 4.24.4 + caniuse-lite: 1.0.30001695 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.1.0 - postcss: 8.4.47 + picocolors: 1.1.1 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - b4a@1.6.6: {} + b4a@1.6.7: {} balanced-match@1.0.2: {} - bare-events@2.4.2: + bare-events@2.5.4: optional: true base64-js@1.5.1: {} - better-sqlite3@11.3.0: + better-sqlite3@11.8.1: dependencies: bindings: 1.5.0 - prebuild-install: 7.1.2 + prebuild-install: 7.1.3 binary-extensions@2.3.0: {} @@ -7453,7 +7210,9 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 - birpc@0.2.17: {} + birpc@0.2.19: {} + + birpc@2.0.19: {} bl@4.1.0: dependencies: @@ -7476,12 +7235,12 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.23.3: + browserslist@4.24.4: dependencies: - caniuse-lite: 1.0.30001662 - electron-to-chromium: 1.5.25 - node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.23.3) + caniuse-lite: 1.0.30001695 + electron-to-chromium: 1.5.84 + node-releases: 2.0.19 + update-browserslist-db: 1.1.2(browserslist@4.24.4) buffer-crc32@1.0.0: {} @@ -7508,33 +7267,33 @@ snapshots: c12@1.11.2(magicast@0.3.5): dependencies: chokidar: 3.6.0 - confbox: 0.1.7 + confbox: 0.1.8 defu: 6.1.4 - dotenv: 16.4.5 + dotenv: 16.4.7 giget: 1.2.3 - jiti: 1.21.6 - mlly: 1.7.1 + jiti: 1.21.7 + mlly: 1.7.4 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.3.1 rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 c12@2.0.1(magicast@0.3.5): dependencies: - chokidar: 4.0.1 - confbox: 0.1.7 + chokidar: 4.0.3 + confbox: 0.1.8 defu: 6.1.4 - dotenv: 16.4.5 + dotenv: 16.4.7 giget: 1.2.3 - jiti: 2.3.3 - mlly: 1.7.1 + jiti: 2.4.2 + mlly: 1.7.4 ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.3.1 rc9: 2.1.2 optionalDependencies: magicast: 0.3.5 @@ -7546,58 +7305,64 @@ snapshots: mime-types: 2.1.35 ylru: 1.4.0 + call-bind-apply-helpers@1.0.1: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.3: + dependencies: + call-bind-apply-helpers: 1.0.1 + get-intrinsic: 1.2.7 + callsites@3.1.0: {} camelcase-css@2.0.1: {} caniuse-api@3.0.0: dependencies: - browserslist: 4.23.3 - caniuse-lite: 1.0.30001662 + browserslist: 4.24.4 + caniuse-lite: 1.0.30001695 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001662: {} + caniuse-lite@1.0.30001695: {} case-anything@3.1.0: {} - chai@5.1.1: + chai@5.1.2: dependencies: assertion-error: 2.0.1 check-error: 2.1.1 deep-eql: 5.0.2 - loupe: 3.1.1 + loupe: 3.1.2 pathval: 2.0.0 - chalk@2.4.2: - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} + chalk@5.4.1: {} + + change-case@5.4.4: {} changelogen@0.5.7(magicast@0.3.5): dependencies: c12: 1.11.2(magicast@0.3.5) colorette: 2.0.20 - consola: 3.2.3 + consola: 3.4.0 convert-gitmoji: 0.1.5 mri: 1.2.0 - node-fetch-native: 1.6.4 + node-fetch-native: 1.6.6 ofetch: 1.4.1 open: 10.1.0 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.3.1 scule: 1.3.0 semver: 7.6.3 - std-env: 3.7.0 - yaml: 2.5.1 + std-env: 3.8.0 + yaml: 2.7.0 transitivePeerDependencies: - magicast @@ -7615,26 +7380,26 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chokidar@4.0.1: + chokidar@4.0.3: dependencies: - readdirp: 4.0.2 + readdirp: 4.1.1 chownr@1.1.4: {} chownr@2.0.0: {} - ci-info@4.0.0: {} + chownr@3.0.0: {} + + ci-info@4.1.0: {} citty@0.1.6: dependencies: - consola: 3.2.3 + consola: 3.4.0 clean-regexp@1.0.0: dependencies: escape-string-regexp: 1.0.5 - clear@0.1.0: {} - clipboardy@4.0.0: dependencies: execa: 8.0.1 @@ -7651,22 +7416,16 @@ snapshots: co@4.6.0: {} - color-convert@1.9.3: - dependencies: - color-name: 1.1.3 - color-convert@2.0.1: dependencies: color-name: 1.1.4 - color-name@1.1.3: {} - color-name@1.1.4: {} - color-support@1.1.3: {} - colord@2.9.3: {} + colorette@1.4.0: {} + colorette@2.0.20: {} commander@2.20.3: {} @@ -7691,19 +7450,13 @@ snapshots: crc32-stream: 6.0.0 is-stream: 2.0.1 normalize-path: 3.0.0 - readable-stream: 4.5.2 - - computeds@0.0.1: {} + readable-stream: 4.7.0 concat-map@0.0.1: {} - confbox@0.1.7: {} - confbox@0.1.8: {} - consola@3.2.3: {} - - console-control-strings@1.1.0: {} + consola@3.4.0: {} content-disposition@0.5.4: dependencies: @@ -7726,9 +7479,9 @@ snapshots: dependencies: is-what: 4.1.16 - core-js-compat@3.38.1: + core-js-compat@3.40.0: dependencies: - browserslist: 4.23.3 + browserslist: 4.24.4 core-util-is@1.0.3: {} @@ -7737,38 +7490,38 @@ snapshots: crc32-stream@6.0.0: dependencies: crc-32: 1.2.2 - readable-stream: 4.5.2 + readable-stream: 4.7.0 - create-require@1.1.1: {} + croner@9.0.0: {} - croner@8.1.1: {} + cronstrue@2.53.0: {} - cronstrue@2.50.0: {} - - cross-fetch@4.0.0: + cross-fetch@4.1.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - cross-spawn@7.0.3: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crossws@0.2.4: {} + crossws@0.3.2: + dependencies: + uncrypto: 0.1.3 - css-declaration-sorter@7.2.0(postcss@8.4.47): + css-declaration-sorter@7.2.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 css-select@5.1.0: dependencies: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 - domutils: 3.1.0 + domutils: 3.2.2 nth-check: 2.1.1 css-tree@2.2.1: @@ -7785,49 +7538,49 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.6(postcss@8.4.47): - dependencies: - browserslist: 4.23.3 - css-declaration-sorter: 7.2.0(postcss@8.4.47) - cssnano-utils: 5.0.0(postcss@8.4.47) - postcss: 8.4.47 - postcss-calc: 10.0.2(postcss@8.4.47) - postcss-colormin: 7.0.2(postcss@8.4.47) - postcss-convert-values: 7.0.4(postcss@8.4.47) - postcss-discard-comments: 7.0.3(postcss@8.4.47) - postcss-discard-duplicates: 7.0.1(postcss@8.4.47) - postcss-discard-empty: 7.0.0(postcss@8.4.47) - postcss-discard-overridden: 7.0.0(postcss@8.4.47) - postcss-merge-longhand: 7.0.4(postcss@8.4.47) - postcss-merge-rules: 7.0.4(postcss@8.4.47) - postcss-minify-font-values: 7.0.0(postcss@8.4.47) - postcss-minify-gradients: 7.0.0(postcss@8.4.47) - postcss-minify-params: 7.0.2(postcss@8.4.47) - postcss-minify-selectors: 7.0.4(postcss@8.4.47) - postcss-normalize-charset: 7.0.0(postcss@8.4.47) - postcss-normalize-display-values: 7.0.0(postcss@8.4.47) - postcss-normalize-positions: 7.0.0(postcss@8.4.47) - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.47) - postcss-normalize-string: 7.0.0(postcss@8.4.47) - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.47) - postcss-normalize-unicode: 7.0.2(postcss@8.4.47) - postcss-normalize-url: 7.0.0(postcss@8.4.47) - postcss-normalize-whitespace: 7.0.0(postcss@8.4.47) - postcss-ordered-values: 7.0.1(postcss@8.4.47) - postcss-reduce-initial: 7.0.2(postcss@8.4.47) - postcss-reduce-transforms: 7.0.0(postcss@8.4.47) - postcss-svgo: 7.0.1(postcss@8.4.47) - postcss-unique-selectors: 7.0.3(postcss@8.4.47) - - cssnano-utils@5.0.0(postcss@8.4.47): - dependencies: - postcss: 8.4.47 - - cssnano@7.0.6(postcss@8.4.47): - dependencies: - cssnano-preset-default: 7.0.6(postcss@8.4.47) - lilconfig: 3.1.2 - postcss: 8.4.47 + cssnano-preset-default@7.0.6(postcss@8.5.1): + dependencies: + browserslist: 4.24.4 + css-declaration-sorter: 7.2.0(postcss@8.5.1) + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 + postcss-calc: 10.1.0(postcss@8.5.1) + postcss-colormin: 7.0.2(postcss@8.5.1) + postcss-convert-values: 7.0.4(postcss@8.5.1) + postcss-discard-comments: 7.0.3(postcss@8.5.1) + postcss-discard-duplicates: 7.0.1(postcss@8.5.1) + postcss-discard-empty: 7.0.0(postcss@8.5.1) + postcss-discard-overridden: 7.0.0(postcss@8.5.1) + postcss-merge-longhand: 7.0.4(postcss@8.5.1) + postcss-merge-rules: 7.0.4(postcss@8.5.1) + postcss-minify-font-values: 7.0.0(postcss@8.5.1) + postcss-minify-gradients: 7.0.0(postcss@8.5.1) + postcss-minify-params: 7.0.2(postcss@8.5.1) + postcss-minify-selectors: 7.0.4(postcss@8.5.1) + postcss-normalize-charset: 7.0.0(postcss@8.5.1) + postcss-normalize-display-values: 7.0.0(postcss@8.5.1) + postcss-normalize-positions: 7.0.0(postcss@8.5.1) + postcss-normalize-repeat-style: 7.0.0(postcss@8.5.1) + postcss-normalize-string: 7.0.0(postcss@8.5.1) + postcss-normalize-timing-functions: 7.0.0(postcss@8.5.1) + postcss-normalize-unicode: 7.0.2(postcss@8.5.1) + postcss-normalize-url: 7.0.0(postcss@8.5.1) + postcss-normalize-whitespace: 7.0.0(postcss@8.5.1) + postcss-ordered-values: 7.0.1(postcss@8.5.1) + postcss-reduce-initial: 7.0.2(postcss@8.5.1) + postcss-reduce-transforms: 7.0.0(postcss@8.5.1) + postcss-svgo: 7.0.1(postcss@8.5.1) + postcss-unique-selectors: 7.0.3(postcss@8.5.1) + + cssnano-utils@5.0.0(postcss@8.5.1): + dependencies: + postcss: 8.5.1 + + cssnano@7.0.6(postcss@8.5.1): + dependencies: + cssnano-preset-default: 7.0.6(postcss@8.5.1) + lilconfig: 3.1.3 + postcss: 8.5.1 csso@5.0.5: dependencies: @@ -7835,9 +7588,9 @@ snapshots: csstype@3.1.3: {} - db0@0.1.4(better-sqlite3@11.3.0): + db0@0.2.1(better-sqlite3@11.8.1): optionalDependencies: - better-sqlite3: 11.3.0 + better-sqlite3: 11.8.1 de-indent@1.0.2: {} @@ -7849,9 +7602,11 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.7: + debug@4.4.0(supports-color@9.4.0): dependencies: ms: 2.1.3 + optionalDependencies: + supports-color: 9.4.0 decompress-response@6.0.0: dependencies: @@ -7896,7 +7651,7 @@ snapshots: detect-libc@2.0.3: {} - devalue@5.0.0: {} + devalue@5.1.1: {} didyoumean@1.2.2: {} @@ -7924,17 +7679,23 @@ snapshots: dependencies: domelementtype: 2.3.0 - domutils@3.1.0: + domutils@3.2.2: dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 domhandler: 5.0.3 - dot-prop@8.0.2: + dot-prop@9.0.0: dependencies: - type-fest: 3.13.1 + type-fest: 4.33.0 - dotenv@16.4.5: {} + dotenv@16.4.7: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 duplexer@0.1.2: {} @@ -7942,7 +7703,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.25: {} + electron-to-chromium@1.5.84: {} emoji-regex@8.0.0: {} @@ -7956,7 +7717,7 @@ snapshots: dependencies: once: 1.4.0 - enhanced-resolve@5.17.1: + enhanced-resolve@5.18.0: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 @@ -7969,9 +7730,19 @@ snapshots: error-stack-parser-es@0.1.5: {} + error-stack-parser-es@1.0.5: {} + errx@0.1.0: {} - es-module-lexer@1.5.4: {} + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.6.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 esbuild@0.19.12: optionalDependencies: @@ -7999,32 +7770,6 @@ snapshots: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 - esbuild@0.20.2: - optionalDependencies: - '@esbuild/aix-ppc64': 0.20.2 - '@esbuild/android-arm': 0.20.2 - '@esbuild/android-arm64': 0.20.2 - '@esbuild/android-x64': 0.20.2 - '@esbuild/darwin-arm64': 0.20.2 - '@esbuild/darwin-x64': 0.20.2 - '@esbuild/freebsd-arm64': 0.20.2 - '@esbuild/freebsd-x64': 0.20.2 - '@esbuild/linux-arm': 0.20.2 - '@esbuild/linux-arm64': 0.20.2 - '@esbuild/linux-ia32': 0.20.2 - '@esbuild/linux-loong64': 0.20.2 - '@esbuild/linux-mips64el': 0.20.2 - '@esbuild/linux-ppc64': 0.20.2 - '@esbuild/linux-riscv64': 0.20.2 - '@esbuild/linux-s390x': 0.20.2 - '@esbuild/linux-x64': 0.20.2 - '@esbuild/netbsd-x64': 0.20.2 - '@esbuild/openbsd-x64': 0.20.2 - '@esbuild/sunos-x64': 0.20.2 - '@esbuild/win32-arm64': 0.20.2 - '@esbuild/win32-ia32': 0.20.2 - '@esbuild/win32-x64': 0.20.2 - esbuild@0.21.5: optionalDependencies: '@esbuild/aix-ppc64': 0.21.5 @@ -8051,32 +7796,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 - esbuild@0.23.1: + esbuild@0.24.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 + '@esbuild/aix-ppc64': 0.24.2 + '@esbuild/android-arm': 0.24.2 + '@esbuild/android-arm64': 0.24.2 + '@esbuild/android-x64': 0.24.2 + '@esbuild/darwin-arm64': 0.24.2 + '@esbuild/darwin-x64': 0.24.2 + '@esbuild/freebsd-arm64': 0.24.2 + '@esbuild/freebsd-x64': 0.24.2 + '@esbuild/linux-arm': 0.24.2 + '@esbuild/linux-arm64': 0.24.2 + '@esbuild/linux-ia32': 0.24.2 + '@esbuild/linux-loong64': 0.24.2 + '@esbuild/linux-mips64el': 0.24.2 + '@esbuild/linux-ppc64': 0.24.2 + '@esbuild/linux-riscv64': 0.24.2 + '@esbuild/linux-s390x': 0.24.2 + '@esbuild/linux-x64': 0.24.2 + '@esbuild/netbsd-arm64': 0.24.2 + '@esbuild/netbsd-x64': 0.24.2 + '@esbuild/openbsd-arm64': 0.24.2 + '@esbuild/openbsd-x64': 0.24.2 + '@esbuild/sunos-x64': 0.24.2 + '@esbuild/win32-arm64': 0.24.2 + '@esbuild/win32-ia32': 0.24.2 + '@esbuild/win32-x64': 0.24.2 escalade@3.2.0: {} @@ -8088,82 +7834,90 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-flat-gitignore@0.3.0(eslint@9.13.0(jiti@2.3.3)): + eslint-config-flat-gitignore@0.2.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint/compat': 1.1.1 - eslint: 9.13.0(jiti@2.3.3) + '@eslint/compat': 1.2.5(eslint@9.18.0(jiti@2.4.2)) find-up-simple: 1.0.0 + transitivePeerDependencies: + - eslint - eslint-flat-config-utils@0.4.0: + eslint-flat-config-utils@1.1.0: dependencies: - pathe: 1.1.2 + pathe: 2.0.2 eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.15.1 - resolve: 1.22.8 + is-core-module: 2.16.1 + resolve: 1.22.10 transitivePeerDependencies: - supports-color - eslint-plugin-import-x@4.3.1(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3): + eslint-merge-processors@1.0.0(eslint@9.18.0(jiti@2.4.2)): + dependencies: + eslint: 9.18.0(jiti@2.4.2) + + eslint-plugin-import-x@4.6.1(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3): dependencies: - '@typescript-eslint/utils': 8.6.0(eslint@9.13.0(jiti@2.3.3))(typescript@5.6.3) - debug: 4.3.7 + '@types/doctrine': 0.0.9 + '@typescript-eslint/scope-manager': 8.21.0 + '@typescript-eslint/utils': 8.21.0(eslint@9.18.0(jiti@2.4.2))(typescript@5.6.3) + debug: 4.4.0(supports-color@9.4.0) doctrine: 3.0.0 - eslint: 9.13.0(jiti@2.3.3) + enhanced-resolve: 5.18.0 + eslint: 9.18.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - get-tsconfig: 4.8.1 + get-tsconfig: 4.10.0 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 stable-hash: 0.0.4 - tslib: 2.7.0 + tslib: 2.8.1 transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsdoc@50.4.3(eslint@9.13.0(jiti@2.3.3)): + eslint-plugin-jsdoc@50.6.2(eslint@9.18.0(jiti@2.4.2)): dependencies: '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) escape-string-regexp: 4.0.0 - eslint: 9.13.0(jiti@2.3.3) - espree: 10.2.0 + eslint: 9.18.0(jiti@2.4.2) + espree: 10.3.0 esquery: 1.6.0 - parse-imports: 2.1.1 + parse-imports: 2.2.1 semver: 7.6.3 spdx-expression-parse: 4.0.0 - synckit: 0.9.1 + synckit: 0.9.2 transitivePeerDependencies: - supports-color - eslint-plugin-regexp@2.6.0(eslint@9.13.0(jiti@2.3.3)): + eslint-plugin-regexp@2.7.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 comment-parser: 1.4.1 - eslint: 9.13.0(jiti@2.3.3) + eslint: 9.18.0(jiti@2.4.2) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-unicorn@56.0.0(eslint@9.13.0(jiti@2.3.3)): + eslint-plugin-unicorn@56.0.1(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) - ci-info: 4.0.0 + '@babel/helper-validator-identifier': 7.25.9 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + ci-info: 4.1.0 clean-regexp: 1.0.0 - core-js-compat: 3.38.1 - eslint: 9.13.0(jiti@2.3.3) + core-js-compat: 3.40.0 + eslint: 9.18.0(jiti@2.4.2) esquery: 1.6.0 - globals: 15.11.0 + globals: 15.14.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 - jsesc: 3.0.2 + jsesc: 3.1.0 pluralize: 8.0.0 read-pkg-up: 7.0.1 regexp-tree: 0.1.27 @@ -8171,56 +7925,61 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-vue@9.29.1(eslint@9.13.0(jiti@2.3.3)): + eslint-plugin-vue@9.32.0(eslint@9.18.0(jiti@2.4.2)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) - eslint: 9.13.0(jiti@2.3.3) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + eslint: 9.18.0(jiti@2.4.2) globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@9.13.0(jiti@2.3.3)) + vue-eslint-parser: 9.4.3(eslint@9.18.0(jiti@2.4.2)) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color + eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.5.13)(eslint@9.18.0(jiti@2.4.2)): + dependencies: + '@vue/compiler-sfc': 3.5.13 + eslint: 9.18.0(jiti@2.4.2) + eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-scope@8.1.0: + eslint-scope@8.2.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.1.0: {} + eslint-visitor-keys@4.2.0: {} - eslint@9.13.0(jiti@2.3.3): + eslint@9.18.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0(jiti@2.3.3)) - '@eslint-community/regexpp': 4.11.1 - '@eslint/config-array': 0.18.0 - '@eslint/core': 0.7.0 - '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.13.0 - '@eslint/plugin-kit': 0.2.0 - '@humanfs/node': 0.16.5 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.18.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.1 + '@eslint/core': 0.10.0 + '@eslint/eslintrc': 3.2.0 + '@eslint/js': 9.18.0 + '@eslint/plugin-kit': 0.2.5 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.1 '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.7 + cross-spawn: 7.0.6 + debug: 4.4.0(supports-color@9.4.0) escape-string-regexp: 4.0.0 - eslint-scope: 8.1.0 - eslint-visitor-keys: 4.1.0 - espree: 10.2.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -8235,22 +7994,21 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 - text-table: 0.2.0 optionalDependencies: - jiti: 2.3.3 + jiti: 2.4.2 transitivePeerDependencies: - supports-color - espree@10.2.0: + espree@10.3.0: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) - eslint-visitor-keys: 4.1.0 + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 espree@9.6.1: dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 esquery@1.6.0: @@ -8279,7 +8037,7 @@ snapshots: execa@7.2.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 4.3.1 is-stream: 3.0.0 @@ -8291,7 +8049,7 @@ snapshots: execa@8.0.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 8.0.1 human-signals: 5.0.0 is-stream: 3.0.0 @@ -8303,10 +8061,12 @@ snapshots: expand-template@2.0.3: {} + expect-type@1.1.0: {} + externality@1.0.2: dependencies: - enhanced-resolve: 5.17.1 - mlly: 1.7.1 + enhanced-resolve: 5.18.0 + mlly: 1.7.4 pathe: 1.1.2 ufo: 1.5.4 @@ -8316,7 +8076,7 @@ snapshots: fast-fifo@1.3.2: {} - fast-glob@3.3.2: + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 @@ -8330,15 +8090,11 @@ snapshots: fast-npm-meta@0.2.2: {} - fastq@1.17.1: + fastq@1.18.0: dependencies: reusify: 1.0.4 - fdir@6.3.0(picomatch@4.0.2): - optionalDependencies: - picomatch: 4.0.2 - - fdir@6.4.2(picomatch@4.0.2): + fdir@6.4.3(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -8366,16 +8122,16 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.1 + flatted: 3.3.2 keyv: 4.5.4 - flatted@3.3.1: {} + flatted@3.3.2: {} flattie@1.1.1: {} foreground-child@3.3.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 fraction.js@4.3.7: {} @@ -8384,7 +8140,7 @@ snapshots: fs-constants@1.0.0: {} - fs-extra@11.2.0: + fs-extra@11.3.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 @@ -8406,59 +8162,63 @@ snapshots: fsevents@2.3.3: optional: true - function-bind@1.1.2: {} - - fuse.js@7.0.0: {} - - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - + function-bind@1.1.2: {} + + fuse.js@7.0.0: {} + gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} - get-func-name@2.0.2: {} + get-intrinsic@1.2.7: + dependencies: + call-bind-apply-helpers: 1.0.1 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 get-port-please@3.1.2: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@6.0.1: {} get-stream@8.0.1: {} - get-tsconfig@4.8.1: + get-tsconfig@4.10.0: dependencies: resolve-pkg-maps: 1.0.0 giget@1.2.3: dependencies: citty: 0.1.6 - consola: 3.2.3 + consola: 3.4.0 defu: 6.1.4 - node-fetch-native: 1.6.4 - nypm: 0.3.11 + node-fetch-native: 1.6.6 + nypm: 0.3.12 ohash: 1.1.4 pathe: 1.1.2 tar: 6.2.1 git-config-path@2.0.0: {} - git-up@7.0.0: + git-up@8.0.0: dependencies: is-ssh: 1.4.0 - parse-url: 8.1.0 + parse-url: 9.2.0 - git-url-parse@15.0.0: + git-url-parse@16.0.0: dependencies: - git-up: 7.0.0 + git-up: 8.0.0 github-from-package@0.0.0: {} @@ -8476,7 +8236,7 @@ snapshots: jackspeak: 3.4.3 minimatch: 9.0.5 minipass: 7.1.2 - package-json-from-dist: 1.0.0 + package-json-from-dist: 1.0.1 path-scurry: 1.11.1 glob@7.2.3: @@ -8508,12 +8268,12 @@ snapshots: globals@14.0.0: {} - globals@15.11.0: {} + globals@15.14.0: {} globby@13.2.2: dependencies: dir-glob: 3.0.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 merge2: 1.4.1 slash: 4.0.0 @@ -8521,12 +8281,14 @@ snapshots: globby@14.0.2: dependencies: '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 + fast-glob: 3.3.3 ignore: 5.3.2 path-type: 5.0.0 slash: 5.1.0 unicorn-magic: 0.1.0 + gopd@1.2.0: {} + graceful-fs@4.2.11: {} graphemer@1.4.0: {} @@ -8535,10 +8297,10 @@ snapshots: dependencies: duplexer: 0.1.2 - h3@1.12.0: + h3@1.14.0: dependencies: cookie-es: 1.2.2 - crossws: 0.2.4 + crossws: 0.3.2 defu: 6.1.4 destr: 2.0.3 iron-webcrypto: 1.2.1 @@ -8547,22 +8309,14 @@ snapshots: ufo: 1.5.4 uncrypto: 0.1.3 unenv: 1.10.0 - transitivePeerDependencies: - - uWebSockets.js - - has-flag@3.0.0: {} has-flag@4.0.0: {} - has-symbols@1.0.3: {} + has-symbols@1.1.0: {} has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 - - has-unicode@2.0.1: {} - - hash-sum@2.0.0: {} + has-symbols: 1.1.0 hasown@2.0.2: dependencies: @@ -8606,14 +8360,14 @@ snapshots: http-shutdown@1.2.2: {} - https-proxy-agent@5.0.1: + https-proxy-agent@7.0.6(supports-color@9.4.0): dependencies: - agent-base: 6.0.2 - debug: 4.3.7 + agent-base: 7.1.3 + debug: 4.4.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color - httpxy@0.1.5: {} + httpxy@0.1.6: {} human-signals@4.3.1: {} @@ -8623,6 +8377,8 @@ snapshots: ignore@5.3.2: {} + ignore@7.0.3: {} + image-meta@0.2.1: {} import-fresh@3.3.0: @@ -8630,32 +8386,22 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - impound@0.1.0(rollup@3.29.4): - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - mlly: 1.7.1 - pathe: 1.1.2 - unenv: 1.10.0 - unplugin: 1.14.1 - transitivePeerDependencies: - - rollup - - webpack-sources - - impound@0.1.0(rollup@4.22.0): + impound@0.2.0(rollup@4.31.0): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) - mlly: 1.7.1 + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) + mlly: 1.7.4 pathe: 1.1.2 unenv: 1.10.0 - unplugin: 1.14.1 + unplugin: 1.16.1 transitivePeerDependencies: - rollup - - webpack-sources imurmurhash@0.1.4: {} indent-string@4.0.0: {} + index-to-position@0.1.2: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -8669,11 +8415,11 @@ snapshots: ini@4.1.1: {} - ioredis@5.4.1: + ioredis@5.4.2: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -8683,8 +8429,6 @@ snapshots: transitivePeerDependencies: - supports-color - ipaddr.js@2.2.0: {} - iron-webcrypto@1.2.1: {} is-arrayish@0.2.1: {} @@ -8697,7 +8441,7 @@ snapshots: dependencies: builtin-modules: 3.3.0 - is-core-module@2.15.1: + is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -8709,9 +8453,12 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-generator-function@1.0.10: + is-generator-function@1.1.0: dependencies: + call-bound: 1.0.3 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 is-glob@4.0.3: dependencies: @@ -8736,6 +8483,13 @@ snapshots: dependencies: '@types/estree': 1.0.6 + is-regex@1.2.1: + dependencies: + call-bound: 1.0.3 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + is-ssh@1.4.0: dependencies: protocols: 2.0.1 @@ -8768,13 +8522,17 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@1.21.6: {} + jiti@1.21.7: {} + + jiti@2.4.2: {} - jiti@2.3.3: {} + jose@5.9.6: {} + + js-levenshtein@1.1.6: {} js-tokens@4.0.0: {} - js-tokens@9.0.0: {} + js-tokens@9.0.1: {} js-yaml@4.1.0: dependencies: @@ -8784,9 +8542,7 @@ snapshots: jsesc@0.5.0: {} - jsesc@2.5.2: {} - - jsesc@3.0.2: {} + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -8794,6 +8550,8 @@ snapshots: json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} json5@2.2.3: {} @@ -8816,7 +8574,7 @@ snapshots: klona@2.0.6: {} - knitwork@1.1.0: {} + knitwork@1.2.0: {} koa-compose@4.1.0: {} @@ -8827,7 +8585,7 @@ snapshots: koa-send@5.0.1: dependencies: - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) http-errors: 1.8.1 resolve-path: 1.4.0 transitivePeerDependencies: @@ -8847,7 +8605,7 @@ snapshots: content-disposition: 0.5.4 content-type: 1.0.5 cookies: 0.9.1 - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) delegates: 1.0.0 depd: 2.0.0 destroy: 1.2.0 @@ -8856,7 +8614,7 @@ snapshots: fresh: 0.5.2 http-assert: 1.5.0 http-errors: 1.8.1 - is-generator-function: 1.0.10 + is-generator-function: 1.1.0 koa-compose: 4.1.0 koa-convert: 2.0.0 on-finished: 2.4.1 @@ -8872,8 +8630,8 @@ snapshots: launch-editor@2.9.1: dependencies: - picocolors: 1.1.0 - shell-quote: 1.8.1 + picocolors: 1.1.1 + shell-quote: 1.8.2 lazystream@1.0.1: dependencies: @@ -8884,39 +8642,40 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - lilconfig@2.1.0: {} - - lilconfig@3.1.2: {} + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} - listhen@1.7.2: + listhen@1.9.0: dependencies: - '@parcel/watcher': 2.4.1 - '@parcel/watcher-wasm': 2.4.1 + '@parcel/watcher': 2.5.0 + '@parcel/watcher-wasm': 2.5.0 citty: 0.1.6 clipboardy: 4.0.0 - consola: 3.2.3 - crossws: 0.2.4 + consola: 3.4.0 + crossws: 0.3.2 defu: 6.1.4 get-port-please: 3.1.2 - h3: 1.12.0 + h3: 1.14.0 http-shutdown: 1.2.2 - jiti: 1.21.6 - mlly: 1.7.1 + jiti: 2.4.2 + mlly: 1.7.4 node-forge: 1.3.1 pathe: 1.1.2 - std-env: 3.7.0 + std-env: 3.8.0 ufo: 1.5.4 untun: 0.1.3 uqr: 0.1.2 - transitivePeerDependencies: - - uWebSockets.js - local-pkg@0.5.0: + local-pkg@0.5.1: + dependencies: + mlly: 1.7.4 + pkg-types: 1.3.1 + + local-pkg@1.0.0: dependencies: - mlly: 1.7.1 - pkg-types: 1.2.0 + mlly: 1.7.4 + pkg-types: 1.3.1 locate-path@5.0.0: dependencies: @@ -8942,9 +8701,7 @@ snapshots: lodash@4.17.21: {} - loupe@3.1.1: - dependencies: - get-func-name: 2.0.2 + loupe@3.1.2: {} lru-cache@10.4.3: {} @@ -8955,36 +8712,28 @@ snapshots: magic-regexp@0.8.0: dependencies: estree-walker: 3.0.3 - magic-string: 0.30.11 - mlly: 1.7.1 + magic-string: 0.30.17 + mlly: 1.7.4 regexp-tree: 0.1.27 type-level-regexp: 0.1.17 ufo: 1.5.4 - unplugin: 1.14.1 - transitivePeerDependencies: - - webpack-sources - - magic-string-ast@0.6.2: - dependencies: - magic-string: 0.30.11 + unplugin: 1.16.1 - magic-string@0.30.11: + magic-string-ast@0.7.0: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + magic-string: 0.30.17 - magic-string@0.30.12: + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 magicast@0.3.5: dependencies: - '@babel/parser': 7.25.6 - '@babel/types': 7.25.6 + '@babel/parser': 7.26.5 + '@babel/types': 7.26.5 source-map-js: 1.2.1 - make-dir@3.1.0: - dependencies: - semver: 6.3.1 + math-intrinsics@1.1.0: {} mdn-data@2.0.28: {} @@ -9013,7 +8762,7 @@ snapshots: mime@3.0.0: {} - mime@4.0.4: {} + mime@4.0.6: {} mimic-fn@4.0.0: {} @@ -9050,6 +8799,11 @@ snapshots: minipass: 3.3.6 yallist: 4.0.0 + minizlib@3.0.1: + dependencies: + minipass: 7.1.2 + rimraf: 5.0.10 + mitt@3.0.1: {} mkdirp-classic@0.5.3: {} @@ -9060,37 +8814,32 @@ snapshots: mkdirp@1.0.4: {} - mkdist@1.5.9(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3)): + mkdirp@3.0.1: {} + + mkdist@1.6.0(typescript@5.6.3)(vue-tsc@2.2.0(typescript@5.6.3)): dependencies: - autoprefixer: 10.4.20(postcss@8.4.47) + autoprefixer: 10.4.20(postcss@8.5.1) citty: 0.1.6 - cssnano: 7.0.6(postcss@8.4.47) + cssnano: 7.0.6(postcss@8.5.1) defu: 6.1.4 - esbuild: 0.23.1 - fast-glob: 3.3.2 - jiti: 1.21.6 - mlly: 1.7.1 + esbuild: 0.24.2 + jiti: 1.21.7 + mlly: 1.7.4 pathe: 1.1.2 - pkg-types: 1.2.0 - postcss: 8.4.47 - postcss-nested: 6.2.0(postcss@8.4.47) + pkg-types: 1.3.1 + postcss: 8.5.1 + postcss-nested: 6.2.0(postcss@8.5.1) semver: 7.6.3 + tinyglobby: 0.2.10 optionalDependencies: typescript: 5.6.3 - vue-tsc: 2.1.6(typescript@5.6.3) - - mlly@1.7.1: - dependencies: - acorn: 8.12.1 - pathe: 1.1.2 - pkg-types: 1.2.0 - ufo: 1.5.4 + vue-tsc: 2.2.0(typescript@5.6.3) - mlly@1.7.2: + mlly@1.7.4: dependencies: - acorn: 8.12.1 - pathe: 1.1.2 - pkg-types: 1.2.1 + acorn: 8.14.0 + pathe: 2.0.2 + pkg-types: 1.3.1 ufo: 1.5.4 mri@1.2.0: {} @@ -9109,85 +8858,87 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nanoid@3.3.7: {} + nanoid@3.3.8: {} - nanoid@5.0.7: {} + nanoid@5.0.9: {} nanotar@0.1.1: {} - napi-build-utils@1.0.2: {} + napi-build-utils@2.0.0: {} natural-compare@1.4.0: {} negotiator@0.6.3: {} - nitropack@2.9.7(better-sqlite3@11.3.0)(magicast@0.3.5): + nitropack@2.10.4(better-sqlite3@11.8.1)(typescript@5.6.3): dependencies: '@cloudflare/kv-asset-handler': 0.3.4 - '@netlify/functions': 2.8.1 - '@rollup/plugin-alias': 5.1.0(rollup@4.22.0) - '@rollup/plugin-commonjs': 25.0.8(rollup@4.22.0) - '@rollup/plugin-inject': 5.0.5(rollup@4.22.0) - '@rollup/plugin-json': 6.1.0(rollup@4.22.0) - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.22.0) - '@rollup/plugin-replace': 5.0.7(rollup@4.22.0) - '@rollup/plugin-terser': 0.4.4(rollup@4.22.0) - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) + '@netlify/functions': 2.8.2 + '@rollup/plugin-alias': 5.1.1(rollup@4.31.0) + '@rollup/plugin-commonjs': 28.0.2(rollup@4.31.0) + '@rollup/plugin-inject': 5.0.5(rollup@4.31.0) + '@rollup/plugin-json': 6.1.0(rollup@4.31.0) + '@rollup/plugin-node-resolve': 15.3.1(rollup@4.31.0) + '@rollup/plugin-replace': 6.0.2(rollup@4.31.0) + '@rollup/plugin-terser': 0.4.4(rollup@4.31.0) + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) '@types/http-proxy': 1.17.15 - '@vercel/nft': 0.26.5 + '@vercel/nft': 0.27.10(rollup@4.31.0) archiver: 7.0.1 - c12: 1.11.2(magicast@0.3.5) - chalk: 5.3.0 + c12: 2.0.1(magicast@0.3.5) chokidar: 3.6.0 citty: 0.1.6 - consola: 3.2.3 + compatx: 0.1.8 + confbox: 0.1.8 + consola: 3.4.0 cookie-es: 1.2.2 - croner: 8.1.1 - crossws: 0.2.4 - db0: 0.1.4(better-sqlite3@11.3.0) + croner: 9.0.0 + crossws: 0.3.2 + db0: 0.2.1(better-sqlite3@11.8.1) defu: 6.1.4 destr: 2.0.3 - dot-prop: 8.0.2 - esbuild: 0.20.2 + dot-prop: 9.0.0 + esbuild: 0.24.2 escape-string-regexp: 5.0.0 etag: 1.8.1 - fs-extra: 11.2.0 + fs-extra: 11.3.0 globby: 14.0.2 gzip-size: 7.0.0 - h3: 1.12.0 + h3: 1.14.0 hookable: 5.5.3 - httpxy: 0.1.5 - ioredis: 5.4.1 - jiti: 1.21.6 + httpxy: 0.1.6 + ioredis: 5.4.2 + jiti: 2.4.2 klona: 2.0.6 - knitwork: 1.1.0 - listhen: 1.7.2 - magic-string: 0.30.11 - mime: 4.0.4 - mlly: 1.7.1 - mri: 1.2.0 - node-fetch-native: 1.6.4 + knitwork: 1.2.0 + listhen: 1.9.0 + magic-string: 0.30.17 + magicast: 0.3.5 + mime: 4.0.6 + mlly: 1.7.4 + node-fetch-native: 1.6.6 ofetch: 1.4.1 ohash: 1.1.4 - openapi-typescript: 6.7.6 + openapi-typescript: 7.5.2(typescript@5.6.3) pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.3.1 pretty-bytes: 6.1.1 radix3: 1.1.2 - rollup: 4.22.0 - rollup-plugin-visualizer: 5.12.0(rollup@4.22.0) + rollup: 4.31.0 + rollup-plugin-visualizer: 5.14.0(rollup@4.31.0) scule: 1.3.0 semver: 7.6.3 serve-placeholder: 2.0.2 serve-static: 1.16.2 - std-env: 3.7.0 + std-env: 3.8.0 ufo: 1.5.4 uncrypto: 0.1.3 - unctx: 2.3.1 + unctx: 2.4.1 unenv: 1.10.0 - unimport: 3.12.0(rollup@4.22.0) - unstorage: 1.12.0(ioredis@5.4.1) + unimport: 3.14.6(rollup@4.31.0) + unstorage: 1.14.4(db0@0.2.1(better-sqlite3@11.8.1))(ioredis@5.4.2) + untyped: 1.5.2 unwasm: 0.3.9 transitivePeerDependencies: - '@azure/app-configuration' @@ -9197,27 +8948,32 @@ snapshots: - '@azure/keyvault-secrets' - '@azure/storage-blob' - '@capacitor/preferences' + - '@deno/kv' + - '@electric-sql/pglite' - '@libsql/client' - '@netlify/blobs' - '@planetscale/database' - '@upstash/redis' + - '@vercel/blob' - '@vercel/kv' + - aws4fetch - better-sqlite3 - drizzle-orm - encoding - idb-keyval - - magicast + - mysql2 + - rolldown - supports-color - - uWebSockets.js - - webpack-sources + - typescript + - uploadthing - node-abi@3.68.0: + node-abi@3.73.0: dependencies: semver: 7.6.3 node-addon-api@7.1.1: {} - node-fetch-native@1.6.4: {} + node-fetch-native@1.6.6: {} node-fetch@2.7.0: dependencies: @@ -9225,18 +8981,18 @@ snapshots: node-forge@1.3.1: {} - node-gyp-build@4.8.2: {} + node-gyp-build@4.8.4: {} - node-releases@2.0.18: {} + node-releases@2.0.19: {} - nopt@5.0.0: + nopt@8.1.0: dependencies: - abbrev: 1.1.1 + abbrev: 3.0.0 normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.8 + resolve: 1.22.10 semver: 5.7.2 validate-npm-package-license: 3.0.4 @@ -9252,106 +9008,104 @@ snapshots: dependencies: path-key: 4.0.0 - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 - nuxi@3.13.2: - optionalDependencies: - fsevents: 2.3.3 + nuxi@3.20.0: {} - nuxt-auth-utils@0.3.8(magicast@0.3.5)(rollup@4.22.0): + nuxt-auth-utils@0.5.9(@simplewebauthn/browser@11.0.0)(@simplewebauthn/server@11.0.0)(magicast@0.3.5)(rollup@4.31.0): dependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.22.0) + '@adonisjs/hash': 9.0.5 + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) defu: 6.1.4 + h3: 1.14.0 hookable: 5.5.3 - ofetch: 1.3.4 + ofetch: 1.4.1 ohash: 1.1.4 - pathe: 1.1.2 + openid-client: 6.1.7 + pathe: 2.0.2 scule: 1.3.0 uncrypto: 0.1.3 + optionalDependencies: + '@simplewebauthn/browser': 11.0.0 + '@simplewebauthn/server': 11.0.0 transitivePeerDependencies: + - argon2 + - bcrypt - magicast - rollup - supports-color - - webpack-sources - nuxt@3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(better-sqlite3@11.3.0)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)): + nuxt@3.15.2(@parcel/watcher@2.5.0)(@types/node@22.10.7)(better-sqlite3@11.8.1)(db0@0.2.1(better-sqlite3@11.8.1))(eslint@9.18.0(jiti@2.4.2))(ioredis@5.4.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.6.3))(yaml@2.7.0): dependencies: + '@nuxt/cli': 3.20.0(magicast@0.3.5) '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.5.1(rollup@4.22.0)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@4.22.0) - '@nuxt/schema': 3.13.2(rollup@4.22.0) - '@nuxt/telemetry': 2.6.0(magicast@0.3.5)(rollup@4.22.0) - '@nuxt/vite-builder': 3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.22.0)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3)) - '@unhead/dom': 1.11.6 - '@unhead/shared': 1.11.6 - '@unhead/ssr': 1.11.6 - '@unhead/vue': 1.11.6(vue@3.5.6(typescript@5.6.3)) - '@vue/shared': 3.5.6 - acorn: 8.12.1 - c12: 1.11.2(magicast@0.3.5) - chokidar: 3.6.0 + '@nuxt/devtools': 1.7.0(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) + '@nuxt/schema': 3.15.2 + '@nuxt/telemetry': 2.6.4(magicast@0.3.5)(rollup@4.31.0) + '@nuxt/vite-builder': 3.15.2(@types/node@22.10.7)(eslint@9.18.0(jiti@2.4.2))(magicast@0.3.5)(optionator@0.9.4)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vue-tsc@2.2.0(typescript@5.6.3))(vue@3.5.13(typescript@5.6.3))(yaml@2.7.0) + '@unhead/dom': 1.11.18 + '@unhead/shared': 1.11.18 + '@unhead/ssr': 1.11.18 + '@unhead/vue': 1.11.18(vue@3.5.13(typescript@5.6.3)) + '@vue/shared': 3.5.13 + acorn: 8.14.0 + c12: 2.0.1(magicast@0.3.5) + chokidar: 4.0.3 compatx: 0.1.8 - consola: 3.2.3 + consola: 3.4.0 cookie-es: 1.2.2 defu: 6.1.4 destr: 2.0.3 - devalue: 5.0.0 + devalue: 5.1.1 errx: 0.1.0 - esbuild: 0.23.1 + esbuild: 0.24.2 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 globby: 14.0.2 - h3: 1.12.0 + h3: 1.14.0 hookable: 5.5.3 - ignore: 5.3.2 - impound: 0.1.0(rollup@4.22.0) - jiti: 1.21.6 + ignore: 7.0.3 + impound: 0.2.0(rollup@4.31.0) + jiti: 2.4.2 klona: 2.0.6 - knitwork: 1.1.0 - magic-string: 0.30.11 - mlly: 1.7.1 + knitwork: 1.2.0 + magic-string: 0.30.17 + mlly: 1.7.4 nanotar: 0.1.1 - nitropack: 2.9.7(better-sqlite3@11.3.0)(magicast@0.3.5) - nuxi: 3.13.2 - nypm: 0.3.11 - ofetch: 1.3.4 + nitropack: 2.10.4(better-sqlite3@11.8.1)(typescript@5.6.3) + nypm: 0.4.1 + ofetch: 1.4.1 ohash: 1.1.4 - pathe: 1.1.2 + pathe: 2.0.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.3.1 radix3: 1.1.2 scule: 1.3.0 semver: 7.6.3 - std-env: 3.7.0 - strip-literal: 2.1.0 - tinyglobby: 0.2.6 + std-env: 3.8.0 + strip-literal: 3.0.0 + tinyglobby: 0.2.10 ufo: 1.5.4 ultrahtml: 1.5.3 uncrypto: 0.1.3 - unctx: 2.3.1 + unctx: 2.4.1 unenv: 1.10.0 - unhead: 1.11.6 - unimport: 3.12.0(rollup@4.22.0) - unplugin: 1.14.1 - unplugin-vue-router: 0.10.8(rollup@4.22.0)(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) - unstorage: 1.12.0(ioredis@5.4.1) - untyped: 1.4.2 - vue: 3.5.6(typescript@5.6.3) - vue-bundle-renderer: 2.1.0 + unhead: 1.11.18 + unimport: 3.14.6(rollup@4.31.0) + unplugin: 2.1.2 + unplugin-vue-router: 0.10.9(rollup@4.31.0)(vue-router@4.5.0(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3)) + unstorage: 1.14.4(db0@0.2.1(better-sqlite3@11.8.1))(ioredis@5.4.2) + untyped: 1.5.2 + vue: 3.5.13(typescript@5.6.3) + vue-bundle-renderer: 2.1.1 vue-devtools-stub: 0.1.0 - vue-router: 4.4.5(vue@3.5.6(typescript@5.6.3)) + vue-router: 4.5.0(vue@3.5.13(typescript@5.6.3)) optionalDependencies: - '@parcel/watcher': 2.4.1 - '@types/node': 22.5.5 + '@parcel/watcher': 2.5.0 + '@types/node': 22.10.7 transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -9361,13 +9115,18 @@ snapshots: - '@azure/storage-blob' - '@biomejs/biome' - '@capacitor/preferences' + - '@deno/kv' + - '@electric-sql/pglite' - '@libsql/client' - '@netlify/blobs' - '@planetscale/database' - '@upstash/redis' + - '@vercel/blob' - '@vercel/kv' + - aws4fetch - better-sqlite3 - bufferutil + - db0 - drizzle-orm - encoding - eslint @@ -9377,7 +9136,9 @@ snapshots: - lightningcss - magicast - meow + - mysql2 - optionator + - rolldown - rollup - sass - sass-embedded @@ -9386,152 +9147,45 @@ snapshots: - sugarss - supports-color - terser + - tsx - typescript - - uWebSockets.js + - uploadthing - utf-8-validate - vite - vls - vti - vue-tsc - - webpack-sources - xml2js + - yaml - nuxt@3.13.2(@parcel/watcher@2.4.1)(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(ioredis@5.4.1)(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)): + nypm@0.3.12: dependencies: - '@nuxt/devalue': 2.0.2 - '@nuxt/devtools': 1.5.1(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue@3.5.6(typescript@5.6.3)) - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) - '@nuxt/schema': 3.13.2(rollup@3.29.4) - '@nuxt/telemetry': 2.6.0(magicast@0.3.5)(rollup@3.29.4) - '@nuxt/vite-builder': 3.13.2(@types/node@22.5.5)(eslint@9.13.0(jiti@2.3.3))(magicast@0.3.5)(optionator@0.9.4)(rollup@3.29.4)(terser@5.33.0)(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3))(vue@3.5.6(typescript@5.6.3)) - '@unhead/dom': 1.11.6 - '@unhead/shared': 1.11.6 - '@unhead/ssr': 1.11.6 - '@unhead/vue': 1.11.6(vue@3.5.6(typescript@5.6.3)) - '@vue/shared': 3.5.6 - acorn: 8.12.1 - c12: 1.11.2(magicast@0.3.5) - chokidar: 3.6.0 - compatx: 0.1.8 - consola: 3.2.3 - cookie-es: 1.2.2 - defu: 6.1.4 - destr: 2.0.3 - devalue: 5.0.0 - errx: 0.1.0 - esbuild: 0.23.1 - escape-string-regexp: 5.0.0 - estree-walker: 3.0.3 - globby: 14.0.2 - h3: 1.12.0 - hookable: 5.5.3 - ignore: 5.3.2 - impound: 0.1.0(rollup@3.29.4) - jiti: 1.21.6 - klona: 2.0.6 - knitwork: 1.1.0 - magic-string: 0.30.11 - mlly: 1.7.1 - nanotar: 0.1.1 - nitropack: 2.9.7(better-sqlite3@11.3.0)(magicast@0.3.5) - nuxi: 3.13.2 - nypm: 0.3.11 - ofetch: 1.3.4 - ohash: 1.1.4 + citty: 0.1.6 + consola: 3.4.0 + execa: 8.0.1 pathe: 1.1.2 - perfect-debounce: 1.0.0 - pkg-types: 1.2.0 - radix3: 1.1.2 - scule: 1.3.0 - semver: 7.6.3 - std-env: 3.7.0 - strip-literal: 2.1.0 - tinyglobby: 0.2.6 + pkg-types: 1.3.1 ufo: 1.5.4 - ultrahtml: 1.5.3 - uncrypto: 0.1.3 - unctx: 2.3.1 - unenv: 1.10.0 - unhead: 1.11.6 - unimport: 3.12.0(rollup@3.29.4) - unplugin: 1.14.1 - unplugin-vue-router: 0.10.8(rollup@3.29.4)(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) - unstorage: 1.12.0(ioredis@5.4.1) - untyped: 1.4.2 - vue: 3.5.6(typescript@5.6.3) - vue-bundle-renderer: 2.1.0 - vue-devtools-stub: 0.1.0 - vue-router: 4.4.5(vue@3.5.6(typescript@5.6.3)) - optionalDependencies: - '@parcel/watcher': 2.4.1 - '@types/node': 22.5.5 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@biomejs/biome' - - '@capacitor/preferences' - - '@libsql/client' - - '@netlify/blobs' - - '@planetscale/database' - - '@upstash/redis' - - '@vercel/kv' - - better-sqlite3 - - bufferutil - - drizzle-orm - - encoding - - eslint - - idb-keyval - - ioredis - - less - - lightningcss - - magicast - - meow - - optionator - - rollup - - sass - - sass-embedded - - stylelint - - stylus - - sugarss - - supports-color - - terser - - typescript - - uWebSockets.js - - utf-8-validate - - vite - - vls - - vti - - vue-tsc - - webpack-sources - - xml2js - nypm@0.3.11: + nypm@0.4.1: dependencies: citty: 0.1.6 - consola: 3.2.3 - execa: 8.0.1 + consola: 3.4.0 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.3.1 + tinyexec: 0.3.2 ufo: 1.5.4 + oauth4webapi@3.1.4: {} + object-assign@4.1.1: {} object-hash@3.0.0: {} - ofetch@1.3.4: - dependencies: - destr: 2.0.3 - node-fetch-native: 1.6.4 - ufo: 1.5.4 - ofetch@1.4.1: dependencies: destr: 2.0.3 - node-fetch-native: 1.6.4 + node-fetch-native: 1.6.6 ufo: 1.5.4 ohash@1.1.4: {} @@ -9568,14 +9222,22 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 - openapi-typescript@6.7.6: + openapi-typescript@7.5.2(typescript@5.6.3): dependencies: + '@redocly/openapi-core': 1.27.2(supports-color@9.4.0) ansi-colors: 4.1.3 - fast-glob: 3.3.2 - js-yaml: 4.1.0 + change-case: 5.4.4 + parse-json: 8.1.0 supports-color: 9.4.0 - undici: 5.28.4 + typescript: 5.6.3 yargs-parser: 21.1.1 + transitivePeerDependencies: + - encoding + + openid-client@6.1.7: + dependencies: + jose: 5.9.6 + oauth4webapi: 3.1.4 optionator@0.9.4: dependencies: @@ -9604,9 +9266,11 @@ snapshots: p-try@2.2.0: {} - package-json-from-dist@1.0.0: {} + package-json-from-dist@1.0.1: {} - package-manager-detector@0.2.0: {} + package-manager-detector@0.2.8: {} + + packrup@0.1.2: {} parent-module@1.0.1: dependencies: @@ -9617,24 +9281,31 @@ snapshots: git-config-path: 2.0.0 ini: 1.3.8 - parse-imports@2.1.1: + parse-imports@2.2.1: dependencies: - es-module-lexer: 1.5.4 + es-module-lexer: 1.6.0 slashes: 3.0.12 parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-json@8.1.0: + dependencies: + '@babel/code-frame': 7.26.2 + index-to-position: 0.1.2 + type-fest: 4.33.0 + parse-path@7.0.0: dependencies: protocols: 2.0.1 - parse-url@8.1.0: + parse-url@9.2.0: dependencies: + '@types/parse-path': 7.0.3 parse-path: 7.0.0 parseurl@1.3.3: {} @@ -9664,11 +9335,13 @@ snapshots: pathe@1.1.2: {} + pathe@2.0.2: {} + pathval@2.0.0: {} perfect-debounce@1.0.0: {} - picocolors@1.1.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -9678,17 +9351,11 @@ snapshots: pirates@4.0.6: {} - pkg-types@1.2.0: - dependencies: - confbox: 0.1.7 - mlly: 1.7.1 - pathe: 1.1.2 - - pkg-types@1.2.1: + pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.7.2 - pathe: 1.1.2 + mlly: 1.7.4 + pathe: 2.0.2 pluralize@8.0.0: {} @@ -9700,173 +9367,173 @@ snapshots: transitivePeerDependencies: - supports-color - postcss-calc@10.0.2(postcss@8.4.47): + postcss-calc@10.1.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 + postcss: 8.5.1 + postcss-selector-parser: 7.0.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.4.47): + postcss-colormin@7.0.2(postcss@8.5.1): dependencies: - browserslist: 4.23.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.4.47): + postcss-convert-values@7.0.4(postcss@8.5.1): dependencies: - browserslist: 4.23.3 - postcss: 8.4.47 + browserslist: 4.24.4 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.3(postcss@8.4.47): + postcss-discard-comments@7.0.3(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-discard-duplicates@7.0.1(postcss@8.4.47): + postcss-discard-duplicates@7.0.1(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 - postcss-discard-empty@7.0.0(postcss@8.4.47): + postcss-discard-empty@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 - postcss-discard-overridden@7.0.0(postcss@8.4.47): + postcss-discard-overridden@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 - postcss-import@15.1.0(postcss@8.4.47): + postcss-import@15.1.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.8 + resolve: 1.22.10 - postcss-js@4.0.1(postcss@8.4.47): + postcss-js@4.0.1(postcss@8.5.1): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.47 + postcss: 8.5.1 - postcss-load-config@4.0.2(postcss@8.4.47): + postcss-load-config@4.0.2(postcss@8.5.1): dependencies: - lilconfig: 3.1.2 - yaml: 2.5.1 + lilconfig: 3.1.3 + yaml: 2.7.0 optionalDependencies: - postcss: 8.4.47 + postcss: 8.5.1 - postcss-merge-longhand@7.0.4(postcss@8.4.47): + postcss-merge-longhand@7.0.4(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.4.47) + stylehacks: 7.0.4(postcss@8.5.1) - postcss-merge-rules@7.0.4(postcss@8.4.47): + postcss-merge-rules@7.0.4(postcss@8.5.1): dependencies: - browserslist: 4.23.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.4.47) - postcss: 8.4.47 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-minify-font-values@7.0.0(postcss@8.4.47): + postcss-minify-font-values@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.4.47): + postcss-minify-gradients@7.0.0(postcss@8.5.1): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.4.47) - postcss: 8.4.47 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.4.47): + postcss-minify-params@7.0.2(postcss@8.5.1): dependencies: - browserslist: 4.23.3 - cssnano-utils: 5.0.0(postcss@8.4.47) - postcss: 8.4.47 + browserslist: 4.24.4 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.4.47): + postcss-minify-selectors@7.0.4(postcss@8.5.1): dependencies: cssesc: 3.0.0 - postcss: 8.4.47 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-nested@6.2.0(postcss@8.4.47): + postcss-nested@6.2.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 - postcss-nesting@12.1.5(postcss@8.4.47): + postcss-nesting@13.0.1(postcss@8.5.1): dependencies: - '@csstools/selector-resolve-nested': 1.1.0(postcss-selector-parser@6.1.2) - '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2) - postcss: 8.4.47 - postcss-selector-parser: 6.1.2 + '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.0.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.0.0) + postcss: 8.5.1 + postcss-selector-parser: 7.0.0 - postcss-normalize-charset@7.0.0(postcss@8.4.47): + postcss-normalize-charset@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 - postcss-normalize-display-values@7.0.0(postcss@8.4.47): + postcss-normalize-display-values@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.4.47): + postcss-normalize-positions@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.47): + postcss-normalize-repeat-style@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.4.47): + postcss-normalize-string@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.47): + postcss-normalize-timing-functions@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.4.47): + postcss-normalize-unicode@7.0.2(postcss@8.5.1): dependencies: - browserslist: 4.23.3 - postcss: 8.4.47 + browserslist: 4.24.4 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.4.47): + postcss-normalize-url@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.4.47): + postcss-normalize-whitespace@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.4.47): + postcss-ordered-values@7.0.1(postcss@8.5.1): dependencies: - cssnano-utils: 5.0.0(postcss@8.4.47) - postcss: 8.4.47 + cssnano-utils: 5.0.0(postcss@8.5.1) + postcss: 8.5.1 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.2(postcss@8.4.47): + postcss-reduce-initial@7.0.2(postcss@8.5.1): dependencies: - browserslist: 4.23.3 + browserslist: 4.24.4 caniuse-api: 3.0.0 - postcss: 8.4.47 + postcss: 8.5.1 - postcss-reduce-transforms@7.0.0(postcss@8.4.47): + postcss-reduce-transforms@7.0.0(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 postcss-selector-parser@6.0.10: @@ -9879,38 +9546,43 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@7.0.1(postcss@8.4.47): + postcss-selector-parser@7.0.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-svgo@7.0.1(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.4.47): + postcss-unique-selectors@7.0.3(postcss@8.5.1): dependencies: - postcss: 8.4.47 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} - postcss@8.4.47: + postcss@8.5.1: dependencies: - nanoid: 3.3.7 - picocolors: 1.1.0 + nanoid: 3.3.8 + picocolors: 1.1.1 source-map-js: 1.2.1 - prebuild-install@7.1.2: + prebuild-install@7.1.3: dependencies: detect-libc: 2.0.3 expand-template: 2.0.3 github-from-package: 0.0.0 minimist: 1.2.8 mkdirp-classic: 0.5.3 - napi-build-utils: 1.0.2 - node-abi: 3.68.0 + napi-build-utils: 2.0.0 + node-abi: 3.73.0 pump: 3.0.2 rc: 1.2.8 simple-get: 4.0.1 - tar-fs: 2.1.1 + tar-fs: 2.1.2 tunnel-agent: 0.6.0 prelude-ls@1.2.1: {} @@ -9935,9 +9607,9 @@ snapshots: punycode@2.3.1: {} - pvtsutils@1.3.5: + pvtsutils@1.3.6: dependencies: - tslib: 2.7.0 + tslib: 2.8.1 pvutils@1.1.3: {} @@ -9998,7 +9670,7 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readable-stream@4.5.2: + readable-stream@4.7.0: dependencies: abort-controller: 3.0.0 buffer: 6.0.3 @@ -10014,7 +9686,7 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.0.2: {} + readdirp@4.1.1: {} redis-errors@1.2.0: {} @@ -10024,11 +9696,11 @@ snapshots: refa@0.12.1: dependencies: - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/regexpp': 4.12.1 regexp-ast-analysis@0.7.1: dependencies: - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/regexpp': 4.12.1 refa: 0.12.1 regexp-tree@0.1.27: {} @@ -10045,6 +9717,8 @@ snapshots: require-directory@2.1.1: {} + require-from-string@2.0.2: {} + resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -10056,9 +9730,9 @@ snapshots: resolve-pkg-maps@1.0.0: {} - resolve@1.22.8: + resolve@1.22.10: dependencies: - is-core-module: 2.15.1 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -10066,60 +9740,54 @@ snapshots: rfdc@1.4.1: {} - rimraf@3.0.2: + rimraf@5.0.10: dependencies: - glob: 7.2.3 + glob: 10.4.5 - rollup-plugin-dts@6.1.1(rollup@3.29.4)(typescript@5.6.3): + rollup-plugin-dts@6.1.1(rollup@3.29.5)(typescript@5.6.3): dependencies: - magic-string: 0.30.11 - rollup: 3.29.4 + magic-string: 0.30.17 + rollup: 3.29.5 typescript: 5.6.3 optionalDependencies: - '@babel/code-frame': 7.24.7 - - rollup-plugin-visualizer@5.12.0(rollup@3.29.4): - dependencies: - open: 8.4.2 - picomatch: 2.3.1 - source-map: 0.7.4 - yargs: 17.7.2 - optionalDependencies: - rollup: 3.29.4 + '@babel/code-frame': 7.26.2 - rollup-plugin-visualizer@5.12.0(rollup@4.22.0): + rollup-plugin-visualizer@5.14.0(rollup@4.31.0): dependencies: open: 8.4.2 - picomatch: 2.3.1 + picomatch: 4.0.2 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rollup: 4.22.0 + rollup: 4.31.0 - rollup@3.29.4: + rollup@3.29.5: optionalDependencies: fsevents: 2.3.3 - rollup@4.22.0: + rollup@4.31.0: dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.22.0 - '@rollup/rollup-android-arm64': 4.22.0 - '@rollup/rollup-darwin-arm64': 4.22.0 - '@rollup/rollup-darwin-x64': 4.22.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.22.0 - '@rollup/rollup-linux-arm-musleabihf': 4.22.0 - '@rollup/rollup-linux-arm64-gnu': 4.22.0 - '@rollup/rollup-linux-arm64-musl': 4.22.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.22.0 - '@rollup/rollup-linux-riscv64-gnu': 4.22.0 - '@rollup/rollup-linux-s390x-gnu': 4.22.0 - '@rollup/rollup-linux-x64-gnu': 4.22.0 - '@rollup/rollup-linux-x64-musl': 4.22.0 - '@rollup/rollup-win32-arm64-msvc': 4.22.0 - '@rollup/rollup-win32-ia32-msvc': 4.22.0 - '@rollup/rollup-win32-x64-msvc': 4.22.0 + '@rollup/rollup-android-arm-eabi': 4.31.0 + '@rollup/rollup-android-arm64': 4.31.0 + '@rollup/rollup-darwin-arm64': 4.31.0 + '@rollup/rollup-darwin-x64': 4.31.0 + '@rollup/rollup-freebsd-arm64': 4.31.0 + '@rollup/rollup-freebsd-x64': 4.31.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.31.0 + '@rollup/rollup-linux-arm-musleabihf': 4.31.0 + '@rollup/rollup-linux-arm64-gnu': 4.31.0 + '@rollup/rollup-linux-arm64-musl': 4.31.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.31.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.31.0 + '@rollup/rollup-linux-riscv64-gnu': 4.31.0 + '@rollup/rollup-linux-s390x-gnu': 4.31.0 + '@rollup/rollup-linux-x64-gnu': 4.31.0 + '@rollup/rollup-linux-x64-musl': 4.31.0 + '@rollup/rollup-win32-arm64-msvc': 4.31.0 + '@rollup/rollup-win32-ia32-msvc': 4.31.0 + '@rollup/rollup-win32-x64-msvc': 4.31.0 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -10132,17 +9800,23 @@ snapshots: safe-buffer@5.2.1: {} + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.3 + es-errors: 1.3.0 + is-regex: 1.2.1 + safe-stable-stringify@2.5.0: {} scslre@0.3.0: dependencies: - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/regexpp': 4.12.1 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scule@1.3.0: {} - secure-json-parse@2.7.0: {} + secure-json-parse@3.0.2: {} semver@5.7.2: {} @@ -10185,8 +9859,6 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} - setprototypeof@1.1.0: {} setprototypeof@1.2.0: {} @@ -10197,7 +9869,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.1: {} + shell-quote@1.8.2: {} siginfo@2.0.0: {} @@ -10217,11 +9889,11 @@ snapshots: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) transitivePeerDependencies: - supports-color - sirv@2.0.4: + sirv@3.0.0: dependencies: '@polka/url': 1.0.0-next.28 mrmime: 2.0.0 @@ -10255,21 +9927,21 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.21 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.21 spdx-expression-parse@4.0.0: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.20 + spdx-license-ids: 3.0.21 - spdx-license-ids@3.0.20: {} + spdx-license-ids@3.0.21: {} speakingurl@14.0.1: {} @@ -10283,15 +9955,15 @@ snapshots: statuses@2.0.1: {} - std-env@3.7.0: {} + std-env@3.8.0: {} - streamx@2.20.1: + streamx@2.21.1: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 - text-decoder: 1.2.0 + text-decoder: 1.2.3 optionalDependencies: - bare-events: 2.4.2 + bare-events: 2.5.4 string-width@4.2.3: dependencies: @@ -10331,19 +10003,23 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@2.1.0: + strip-literal@2.1.1: + dependencies: + js-tokens: 9.0.1 + + strip-literal@3.0.0: dependencies: - js-tokens: 9.0.0 + js-tokens: 9.0.1 - stylehacks@7.0.4(postcss@8.4.47): + stylehacks@7.0.4(postcss@8.5.1): dependencies: - browserslist: 4.23.3 - postcss: 8.4.47 + browserslist: 4.24.4 + postcss: 8.5.1 postcss-selector-parser: 6.1.2 sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 commander: 4.1.1 glob: 10.4.5 lines-and-columns: 1.2.4 @@ -10351,14 +10027,10 @@ snapshots: pirates: 4.0.6 ts-interface-checker: 0.1.13 - superjson@2.2.1: + superjson@2.2.2: dependencies: copy-anything: 3.0.5 - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -10377,16 +10049,16 @@ snapshots: css-tree: 2.3.1 css-what: 6.1.0 csso: 5.0.5 - picocolors: 1.1.0 + picocolors: 1.1.1 - synckit@0.9.1: + synckit@0.9.2: dependencies: '@pkgr/core': 0.1.1 - tslib: 2.7.0 + tslib: 2.8.1 system-architecture@0.1.0: {} - tailwind-config-viewer@2.0.4(tailwindcss@3.4.14): + tailwind-config-viewer@2.0.4(tailwindcss@3.4.17): dependencies: '@koa/router': 12.0.2 commander: 6.2.1 @@ -10396,42 +10068,42 @@ snapshots: open: 7.4.2 portfinder: 1.0.32 replace-in-file: 6.3.5 - tailwindcss: 3.4.14 + tailwindcss: 3.4.17 transitivePeerDependencies: - supports-color - tailwind-merge@2.5.4: {} + tailwind-merge@2.6.0: {} - tailwindcss@3.4.14: + tailwindcss@3.4.17: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.3.2 + fast-glob: 3.3.3 glob-parent: 6.0.2 is-glob: 4.0.3 - jiti: 1.21.6 - lilconfig: 2.1.0 + jiti: 1.21.7 + lilconfig: 3.1.3 micromatch: 4.0.8 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.1.0 - postcss: 8.4.47 - postcss-import: 15.1.0(postcss@8.4.47) - postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.2(postcss@8.4.47) - postcss-nested: 6.2.0(postcss@8.4.47) + picocolors: 1.1.1 + postcss: 8.5.1 + postcss-import: 15.1.0(postcss@8.5.1) + postcss-js: 4.0.1(postcss@8.5.1) + postcss-load-config: 4.0.2(postcss@8.5.1) + postcss-nested: 6.2.0(postcss@8.5.1) postcss-selector-parser: 6.1.2 - resolve: 1.22.8 + resolve: 1.22.10 sucrase: 3.35.0 transitivePeerDependencies: - ts-node tapable@2.2.1: {} - tar-fs@2.1.1: + tar-fs@2.1.2: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 @@ -10448,9 +10120,9 @@ snapshots: tar-stream@3.1.7: dependencies: - b4a: 1.6.6 + b4a: 1.6.7 fast-fifo: 1.3.2 - streamx: 2.20.1 + streamx: 2.21.1 tar@6.2.1: dependencies: @@ -10461,18 +10133,25 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - terser@5.33.0: + tar@7.4.3: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.0.1 + mkdirp: 3.0.1 + yallist: 5.0.0 + + terser@5.37.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.12.1 + acorn: 8.14.0 commander: 2.20.3 source-map-support: 0.5.21 - text-decoder@1.2.0: + text-decoder@1.2.3: dependencies: - b4a: 1.6.6 - - text-table@0.2.0: {} + b4a: 1.6.7 thenify-all@1.6.0: dependencies: @@ -10486,28 +10165,19 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.0: {} - - tinyexec@0.3.1: {} - - tinyglobby@0.2.6: - dependencies: - fdir: 6.3.0(picomatch@4.0.2) - picomatch: 4.0.2 + tinyexec@0.3.2: {} - tinyglobby@0.2.9: + tinyglobby@0.2.10: dependencies: - fdir: 6.4.2(picomatch@4.0.2) + fdir: 6.4.3(picomatch@4.0.2) picomatch: 4.0.2 - tinypool@1.0.1: {} + tinypool@1.0.2: {} - tinyrainbow@1.2.0: {} + tinyrainbow@2.0.0: {} tinyspy@3.0.2: {} - to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -10520,17 +10190,17 @@ snapshots: truncatise@0.0.8: {} - ts-api-utils@1.3.0(typescript@5.6.3): + ts-api-utils@2.0.0(typescript@5.6.3): dependencies: typescript: 5.6.3 ts-interface-checker@0.1.13: {} - tsconfck@3.1.3(typescript@5.6.3): + tsconfck@3.1.4(typescript@5.6.3): optionalDependencies: typescript: 5.6.3 - tslib@2.7.0: {} + tslib@2.8.1: {} tsscmp@1.0.6: {} @@ -10550,7 +10220,7 @@ snapshots: type-fest@0.8.1: {} - type-fest@3.13.1: {} + type-fest@4.33.0: {} type-is@1.6.18: dependencies: @@ -10565,32 +10235,32 @@ snapshots: ultrahtml@1.5.3: {} - unbuild@2.0.0(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3)): + unbuild@2.0.0(typescript@5.6.3)(vue-tsc@2.2.0(typescript@5.6.3)): dependencies: - '@rollup/plugin-alias': 5.1.0(rollup@3.29.4) - '@rollup/plugin-commonjs': 25.0.8(rollup@3.29.4) - '@rollup/plugin-json': 6.1.0(rollup@3.29.4) - '@rollup/plugin-node-resolve': 15.2.3(rollup@3.29.4) - '@rollup/plugin-replace': 5.0.7(rollup@3.29.4) - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - chalk: 5.3.0 + '@rollup/plugin-alias': 5.1.1(rollup@3.29.5) + '@rollup/plugin-commonjs': 25.0.8(rollup@3.29.5) + '@rollup/plugin-json': 6.1.0(rollup@3.29.5) + '@rollup/plugin-node-resolve': 15.3.1(rollup@3.29.5) + '@rollup/plugin-replace': 5.0.7(rollup@3.29.5) + '@rollup/pluginutils': 5.1.4(rollup@3.29.5) + chalk: 5.4.1 citty: 0.1.6 - consola: 3.2.3 + consola: 3.4.0 defu: 6.1.4 esbuild: 0.19.12 globby: 13.2.2 hookable: 5.5.3 - jiti: 1.21.6 - magic-string: 0.30.11 - mkdist: 1.5.9(typescript@5.6.3)(vue-tsc@2.1.6(typescript@5.6.3)) - mlly: 1.7.1 + jiti: 1.21.7 + magic-string: 0.30.17 + mkdist: 1.6.0(typescript@5.6.3)(vue-tsc@2.2.0(typescript@5.6.3)) + mlly: 1.7.4 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.3.1 pretty-bytes: 6.1.1 - rollup: 3.29.4 - rollup-plugin-dts: 6.1.1(rollup@3.29.4)(typescript@5.6.3) + rollup: 3.29.5 + rollup-plugin-dts: 6.1.1(rollup@3.29.5)(typescript@5.6.3) scule: 1.3.0 - untyped: 1.4.2 + untyped: 1.5.2 optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -10600,183 +10270,142 @@ snapshots: uncrypto@0.1.3: {} - unctx@2.3.1: + unctx@2.4.1: dependencies: - acorn: 8.12.1 + acorn: 8.14.0 estree-walker: 3.0.3 - magic-string: 0.30.11 - unplugin: 1.14.1 - transitivePeerDependencies: - - webpack-sources + magic-string: 0.30.17 + unplugin: 2.1.2 - undici-types@6.19.8: {} - - undici@5.28.4: - dependencies: - '@fastify/busboy': 2.1.1 + undici-types@6.20.0: {} unenv@1.10.0: dependencies: - consola: 3.2.3 + consola: 3.4.0 defu: 6.1.4 mime: 3.0.0 - node-fetch-native: 1.6.4 + node-fetch-native: 1.6.6 pathe: 1.1.2 - unhead@1.11.6: + unhead@1.11.18: dependencies: - '@unhead/dom': 1.11.6 - '@unhead/schema': 1.11.6 - '@unhead/shared': 1.11.6 + '@unhead/dom': 1.11.18 + '@unhead/schema': 1.11.18 + '@unhead/shared': 1.11.18 hookable: 5.5.3 unicorn-magic@0.1.0: {} - unimport@3.12.0(rollup@3.29.4): - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - acorn: 8.12.1 - escape-string-regexp: 5.0.0 - estree-walker: 3.0.3 - fast-glob: 3.3.2 - local-pkg: 0.5.0 - magic-string: 0.30.11 - mlly: 1.7.1 - pathe: 1.1.2 - pkg-types: 1.2.0 - scule: 1.3.0 - strip-literal: 2.1.0 - unplugin: 1.14.1 - transitivePeerDependencies: - - rollup - - webpack-sources - - unimport@3.12.0(rollup@4.22.0): + unimport@3.14.6(rollup@4.31.0): dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) - acorn: 8.12.1 + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) + acorn: 8.14.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 - fast-glob: 3.3.2 - local-pkg: 0.5.0 - magic-string: 0.30.11 - mlly: 1.7.1 - pathe: 1.1.2 - pkg-types: 1.2.0 + fast-glob: 3.3.3 + local-pkg: 1.0.0 + magic-string: 0.30.17 + mlly: 1.7.4 + pathe: 2.0.2 + picomatch: 4.0.2 + pkg-types: 1.3.1 scule: 1.3.0 - strip-literal: 2.1.0 - unplugin: 1.14.1 + strip-literal: 2.1.1 + unplugin: 1.16.1 transitivePeerDependencies: - rollup - - webpack-sources universalify@2.0.1: {} - unplugin-vue-router@0.10.8(rollup@3.29.4)(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)): + unplugin-vue-router@0.10.9(rollup@4.31.0)(vue-router@4.5.0(vue@3.5.13(typescript@5.6.3)))(vue@3.5.13(typescript@5.6.3)): dependencies: - '@babel/types': 7.25.6 - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - '@vue-macros/common': 1.14.0(rollup@3.29.4)(vue@3.5.6(typescript@5.6.3)) + '@babel/types': 7.26.5 + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) + '@vue-macros/common': 1.16.1(vue@3.5.13(typescript@5.6.3)) ast-walker-scope: 0.6.2 chokidar: 3.6.0 - fast-glob: 3.3.2 + fast-glob: 3.3.3 json5: 2.2.3 - local-pkg: 0.5.0 - magic-string: 0.30.11 - mlly: 1.7.1 + local-pkg: 0.5.1 + magic-string: 0.30.17 + mlly: 1.7.4 pathe: 1.1.2 scule: 1.3.0 - unplugin: 1.14.1 - yaml: 2.5.1 + unplugin: 2.0.0-beta.1 + yaml: 2.7.0 optionalDependencies: - vue-router: 4.4.5(vue@3.5.6(typescript@5.6.3)) + vue-router: 4.5.0(vue@3.5.13(typescript@5.6.3)) transitivePeerDependencies: - rollup - vue - - webpack-sources - unplugin-vue-router@0.10.8(rollup@4.22.0)(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)): + unplugin@1.16.1: dependencies: - '@babel/types': 7.25.6 - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) - '@vue-macros/common': 1.14.0(rollup@4.22.0)(vue@3.5.6(typescript@5.6.3)) - ast-walker-scope: 0.6.2 - chokidar: 3.6.0 - fast-glob: 3.3.2 - json5: 2.2.3 - local-pkg: 0.5.0 - magic-string: 0.30.11 - mlly: 1.7.1 - pathe: 1.1.2 - scule: 1.3.0 - unplugin: 1.14.1 - yaml: 2.5.1 - optionalDependencies: - vue-router: 4.4.5(vue@3.5.6(typescript@5.6.3)) - transitivePeerDependencies: - - rollup - - vue - - webpack-sources + acorn: 8.14.0 + webpack-virtual-modules: 0.6.2 + + unplugin@2.0.0-beta.1: + dependencies: + acorn: 8.14.0 + webpack-virtual-modules: 0.6.2 - unplugin@1.14.1: + unplugin@2.1.2: dependencies: - acorn: 8.12.1 + acorn: 8.14.0 webpack-virtual-modules: 0.6.2 - unstorage@1.12.0(ioredis@5.4.1): + unstorage@1.14.4(db0@0.2.1(better-sqlite3@11.8.1))(ioredis@5.4.2): dependencies: anymatch: 3.1.3 chokidar: 3.6.0 destr: 2.0.3 - h3: 1.12.0 - listhen: 1.7.2 + h3: 1.14.0 lru-cache: 10.4.3 - mri: 1.2.0 - node-fetch-native: 1.6.4 + node-fetch-native: 1.6.6 ofetch: 1.4.1 ufo: 1.5.4 optionalDependencies: - ioredis: 5.4.1 - transitivePeerDependencies: - - uWebSockets.js + db0: 0.2.1(better-sqlite3@11.8.1) + ioredis: 5.4.2 untun@0.1.3: dependencies: citty: 0.1.6 - consola: 3.2.3 + consola: 3.4.0 pathe: 1.1.2 - untyped@1.4.2: + untyped@1.5.2: dependencies: - '@babel/core': 7.25.2 - '@babel/standalone': 7.25.6 - '@babel/types': 7.25.6 + '@babel/core': 7.26.0 + '@babel/standalone': 7.26.6 + '@babel/types': 7.26.5 + citty: 0.1.6 defu: 6.1.4 - jiti: 1.21.6 - mri: 1.2.0 + jiti: 2.4.2 + knitwork: 1.2.0 scule: 1.3.0 transitivePeerDependencies: - supports-color unwasm@0.3.9: dependencies: - knitwork: 1.1.0 - magic-string: 0.30.11 - mlly: 1.7.1 + knitwork: 1.2.0 + magic-string: 0.30.17 + mlly: 1.7.4 pathe: 1.1.2 - pkg-types: 1.2.0 - unplugin: 1.14.1 - transitivePeerDependencies: - - webpack-sources + pkg-types: 1.3.1 + unplugin: 1.16.1 - update-browserslist-db@1.1.0(browserslist@4.23.3): + update-browserslist-db@1.1.2(browserslist@4.24.4): dependencies: - browserslist: 4.23.3 + browserslist: 4.24.4 escalade: 3.2.0 - picocolors: 1.1.0 + picocolors: 1.1.1 uqr@0.1.2: {} + uri-js-replace@1.0.1: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -10792,16 +10421,17 @@ snapshots: vary@1.1.2: {} - vite-hot-client@0.2.3(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)): + vite-hot-client@0.2.4(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)): dependencies: - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) - vite-node@2.1.1(@types/node@22.5.5)(terser@5.33.0): + vite-node@2.1.8(@types/node@22.10.7)(terser@5.37.0): dependencies: cac: 6.7.14 - debug: 4.3.7 + debug: 4.4.0(supports-color@9.4.0) + es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + vite: 5.4.14(@types/node@22.10.7)(terser@5.37.0) transitivePeerDependencies: - '@types/node' - less @@ -10813,14 +10443,16 @@ snapshots: - supports-color - terser - vite-node@2.1.3(@types/node@22.5.5)(terser@5.33.0): + vite-node@3.0.3(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0): dependencies: cac: 6.7.14 - debug: 4.3.7 - pathe: 1.1.2 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + debug: 4.4.0(supports-color@9.4.0) + es-module-lexer: 1.6.0 + pathe: 2.0.2 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' + - jiti - less - lightningcss - sass @@ -10829,139 +10461,156 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml - vite-plugin-checker@0.8.0(eslint@9.13.0(jiti@2.3.3))(optionator@0.9.4)(typescript@5.6.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vue-tsc@2.1.6(typescript@5.6.3)): + vite-plugin-checker@0.8.0(eslint@9.18.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.6.3)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(vue-tsc@2.2.0(typescript@5.6.3)): dependencies: - '@babel/code-frame': 7.24.7 + '@babel/code-frame': 7.26.2 ansi-escapes: 4.3.2 chalk: 4.1.2 chokidar: 3.6.0 commander: 8.3.0 - fast-glob: 3.3.2 - fs-extra: 11.2.0 + fast-glob: 3.3.3 + fs-extra: 11.3.0 npm-run-path: 4.0.1 strip-ansi: 6.0.1 tiny-invariant: 1.3.3 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) vscode-languageclient: 7.0.0 vscode-languageserver: 7.0.0 vscode-languageserver-textdocument: 1.0.12 vscode-uri: 3.0.8 optionalDependencies: - eslint: 9.13.0(jiti@2.3.3) + eslint: 9.18.0(jiti@2.4.2) optionator: 0.9.4 typescript: 5.6.3 - vue-tsc: 2.1.6(typescript@5.6.3) + vue-tsc: 2.2.0(typescript@5.6.3) - vite-plugin-inspect@0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)): + vite-plugin-inspect@0.8.9(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.31.0))(rollup@4.31.0)(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)): dependencies: '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.0(rollup@3.29.4) - debug: 4.3.7 + '@rollup/pluginutils': 5.1.4(rollup@4.31.0) + debug: 4.4.0(supports-color@9.4.0) error-stack-parser-es: 0.1.5 - fs-extra: 11.2.0 + fs-extra: 11.3.0 open: 10.1.0 perfect-debounce: 1.0.0 - picocolors: 1.1.0 - sirv: 2.0.4 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + picocolors: 1.1.1 + sirv: 3.0.0 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) optionalDependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) transitivePeerDependencies: - rollup - supports-color - vite-plugin-inspect@0.8.7(@nuxt/kit@3.13.2(magicast@0.3.5)(rollup@3.29.4))(rollup@4.22.0)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)): + vite-plugin-inspect@10.1.0(@nuxt/kit@3.15.2(magicast@0.3.5)(rollup@4.31.0))(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)): dependencies: - '@antfu/utils': 0.7.10 - '@rollup/pluginutils': 5.1.0(rollup@4.22.0) - debug: 4.3.7 - error-stack-parser-es: 0.1.5 - fs-extra: 11.2.0 + debug: 4.4.0(supports-color@9.4.0) + error-stack-parser-es: 1.0.5 open: 10.1.0 - perfect-debounce: 1.0.0 - picocolors: 1.1.0 - sirv: 2.0.4 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + picocolors: 1.1.1 + sirv: 3.0.0 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) optionalDependencies: - '@nuxt/kit': 3.13.2(magicast@0.3.5)(rollup@3.29.4) + '@nuxt/kit': 3.15.2(magicast@0.3.5)(rollup@4.31.0) transitivePeerDependencies: - - rollup - supports-color - vite-plugin-vue-inspector@5.2.0(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)): + vite-plugin-vue-inspector@5.3.1(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)): dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-proposal-decorators': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.25.6(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) - '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.25.2) - '@vue/compiler-dom': 3.5.6 + '@babel/core': 7.26.0 + '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.26.5(@babel/core@7.26.0) + '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0) + '@vue/compiler-dom': 3.5.13 kolorist: 1.8.0 - magic-string: 0.30.11 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) + magic-string: 0.30.17 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) transitivePeerDependencies: - supports-color - vite@5.4.6(@types/node@22.5.5)(terser@5.33.0): + vite@5.4.14(@types/node@22.10.7)(terser@5.37.0): dependencies: esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.22.0 + postcss: 8.5.1 + rollup: 4.31.0 optionalDependencies: - '@types/node': 22.5.5 + '@types/node': 22.10.7 fsevents: 2.3.3 - terser: 5.33.0 + terser: 5.37.0 - vitest-environment-nuxt@1.0.1(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)): + vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0): dependencies: - '@nuxt/test-utils': 3.14.4(h3@1.12.0)(magicast@0.3.5)(nitropack@2.9.7(magicast@0.3.5))(rollup@3.29.4)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0))(vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0))(vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)))(vue@3.5.6(typescript@5.6.3)) + esbuild: 0.24.2 + postcss: 8.5.1 + rollup: 4.31.0 + optionalDependencies: + '@types/node': 22.10.7 + fsevents: 2.3.3 + jiti: 2.4.2 + terser: 5.37.0 + yaml: 2.7.0 + + vitest-environment-nuxt@1.0.1(@types/node@22.10.7)(jiti@2.4.2)(magicast@0.3.5)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vitest@3.0.3(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(yaml@2.7.0): + dependencies: + '@nuxt/test-utils': 3.15.4(@types/node@22.10.7)(jiti@2.4.2)(magicast@0.3.5)(rollup@4.31.0)(terser@5.37.0)(typescript@5.6.3)(vitest@3.0.3(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0))(yaml@2.7.0) transitivePeerDependencies: - '@cucumber/cucumber' - '@jest/globals' - '@playwright/test' - '@testing-library/vue' + - '@types/node' - '@vitest/ui' - '@vue/test-utils' - - h3 - happy-dom + - jiti - jsdom + - less + - lightningcss - magicast - - nitropack - playwright-core - rollup + - sass + - sass-embedded + - stylus + - sugarss - supports-color - - vite + - terser + - tsx + - typescript - vitest - - vue - - vue-router - - webpack-sources - - vitest@2.1.3(@types/node@22.5.5)(terser@5.33.0): - dependencies: - '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.6(@types/node@22.5.5)(terser@5.33.0)) - '@vitest/pretty-format': 2.1.3 - '@vitest/runner': 2.1.3 - '@vitest/snapshot': 2.1.3 - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 - chai: 5.1.1 - debug: 4.3.7 - magic-string: 0.30.11 - pathe: 1.1.2 - std-env: 3.7.0 + - yaml + + vitest@3.0.3(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0): + dependencies: + '@vitest/expect': 3.0.3 + '@vitest/mocker': 3.0.3(vite@6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0)) + '@vitest/pretty-format': 3.0.3 + '@vitest/runner': 3.0.3 + '@vitest/snapshot': 3.0.3 + '@vitest/spy': 3.0.3 + '@vitest/utils': 3.0.3 + chai: 5.1.2 + debug: 4.4.0(supports-color@9.4.0) + expect-type: 1.1.0 + magic-string: 0.30.17 + pathe: 2.0.2 + std-env: 3.8.0 tinybench: 2.9.0 - tinyexec: 0.3.0 - tinypool: 1.0.1 - tinyrainbow: 1.2.0 - vite: 5.4.6(@types/node@22.5.5)(terser@5.33.0) - vite-node: 2.1.3(@types/node@22.5.5)(terser@5.33.0) + tinyexec: 0.3.2 + tinypool: 1.0.2 + tinyrainbow: 2.0.0 + vite: 6.0.11(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) + vite-node: 3.0.3(@types/node@22.10.7)(jiti@2.4.2)(terser@5.37.0)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.5.5 + '@types/node': 22.10.7 transitivePeerDependencies: + - jiti - less - lightningcss - msw @@ -10971,6 +10620,8 @@ snapshots: - sugarss - supports-color - terser + - tsx + - yaml vscode-jsonrpc@6.0.0: {} @@ -10995,20 +10646,16 @@ snapshots: vscode-uri@3.0.8: {} - vue-bundle-renderer@2.1.0: + vue-bundle-renderer@2.1.1: dependencies: ufo: 1.5.4 - vue-demi@0.14.10(vue@3.5.6(typescript@5.6.3)): - dependencies: - vue: 3.5.6(typescript@5.6.3) - vue-devtools-stub@0.1.0: {} - vue-eslint-parser@9.4.3(eslint@9.13.0(jiti@2.3.3)): + vue-eslint-parser@9.4.3(eslint@9.18.0(jiti@2.4.2)): dependencies: - debug: 4.3.7 - eslint: 9.13.0(jiti@2.3.3) + debug: 4.4.0(supports-color@9.4.0) + eslint: 9.18.0(jiti@2.4.2) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -11018,30 +10665,29 @@ snapshots: transitivePeerDependencies: - supports-color - vue-router@4.4.5(vue@3.5.6(typescript@5.6.3)): + vue-router@4.5.0(vue@3.5.13(typescript@5.6.3)): dependencies: '@vue/devtools-api': 6.6.4 - vue: 3.5.6(typescript@5.6.3) + vue: 3.5.13(typescript@5.6.3) - vue-tsc@2.1.6(typescript@5.6.3): + vue-tsc@2.2.0(typescript@5.6.3): dependencies: - '@volar/typescript': 2.4.5 - '@vue/language-core': 2.1.6(typescript@5.6.3) - semver: 7.6.3 + '@volar/typescript': 2.4.11 + '@vue/language-core': 2.2.0(typescript@5.6.3) typescript: 5.6.3 - vue3-smooth-dnd@0.0.6(vue@3.5.6(typescript@5.6.3)): + vue3-smooth-dnd@0.0.6(vue@3.5.13(typescript@5.6.3)): dependencies: smooth-dnd: 0.12.1 - vue: 3.5.6(typescript@5.6.3) + vue: 3.5.13(typescript@5.6.3) - vue@3.5.6(typescript@5.6.3): + vue@3.5.13(typescript@5.6.3): dependencies: - '@vue/compiler-dom': 3.5.6 - '@vue/compiler-sfc': 3.5.6 - '@vue/runtime-dom': 3.5.6 - '@vue/server-renderer': 3.5.6(vue@3.5.6(typescript@5.6.3)) - '@vue/shared': 3.5.6 + '@vue/compiler-dom': 3.5.13 + '@vue/compiler-sfc': 3.5.13 + '@vue/runtime-dom': 3.5.13 + '@vue/server-renderer': 3.5.13(vue@3.5.13(typescript@5.6.3)) + '@vue/shared': 3.5.13 optionalDependencies: typescript: 5.6.3 @@ -11067,10 +10713,6 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - wide-align@1.1.5: - dependencies: - string-width: 4.2.3 - word-wrap@1.2.5: {} wrap-ansi@7.0.0: @@ -11097,7 +10739,11 @@ snapshots: yallist@4.0.0: {} - yaml@2.5.1: {} + yallist@5.0.0: {} + + yaml-ast-parser@0.0.43: {} + + yaml@2.7.0: {} yargs-parser@21.1.1: {} @@ -11121,6 +10767,6 @@ snapshots: dependencies: archiver-utils: 5.0.2 compress-commons: 6.0.2 - readable-stream: 4.5.2 + readable-stream: 4.7.0 - zod@3.23.8: {} + zod@3.24.1: {} diff --git a/src/module.ts b/src/module.ts index d709a329..06f4d980 100644 --- a/src/module.ts +++ b/src/module.ts @@ -3,7 +3,7 @@ import { defineNuxtModule, addPlugin, createResolver, - addImportsDir, + addImports, addServerHandler, addServerPlugin, addServerImportsDir, @@ -14,6 +14,7 @@ import { join } from 'pathe' import { defu } from 'defu' import { randomUUID } from 'uncrypto' import type { ScryptConfig } from '@adonisjs/hash/types' +import type { SessionConfig } from 'h3' // Module options TypeScript interface definition export interface ModuleOptions { @@ -57,6 +58,10 @@ declare module 'nuxt/schema' { hash: { scrypt: ScryptConfig } + /** + * Session configuration + */ + session: SessionConfig } } @@ -82,14 +87,25 @@ export default defineNuxtModule({ './runtime/types/index', ) + const composables = [ + { name: 'useUserSession', from: resolver.resolve('./runtime/app/composables/session') }, + ] + + if (options.webAuthn) { + composables.push({ name: 'useWebAuthn', from: resolver.resolve('./runtime/app/composables/webauthn') }) + } + // App addComponentsDir({ path: resolver.resolve('./runtime/app/components') }) - addImportsDir(resolver.resolve('./runtime/app/composables')) + addImports(composables) addPlugin(resolver.resolve('./runtime/app/plugins/session.server')) addPlugin(resolver.resolve('./runtime/app/plugins/session.client')) // Server addServerPlugin(resolver.resolve('./runtime/server/plugins/oauth')) addServerImportsDir(resolver.resolve('./runtime/server/lib/oauth')) + if (nuxt.options.nitro?.experimental?.websocket) { + addServerPlugin(resolver.resolve('./runtime/server/plugins/ws')) + } // WebAuthn enabled if (options.webAuthn) { // Check if dependencies are installed @@ -136,7 +152,7 @@ export default defineNuxtModule({ cookie: { sameSite: 'lax', }, - }) + }) as SessionConfig runtimeConfig.hash = defu(runtimeConfig.hash, { scrypt: options.hash?.scrypt, @@ -184,11 +200,12 @@ export default defineNuxtModule({ clientSecret: '', redirectURL: '', }) - // GitHub OAuth + // GitLab OAuth runtimeConfig.oauth.gitlab = defu(runtimeConfig.oauth.gitlab, { clientId: '', clientSecret: '', redirectURL: '', + baseURL: 'https://gitlab.com', }) // Spotify OAuth runtimeConfig.oauth.spotify = defu(runtimeConfig.oauth.spotify, { @@ -216,6 +233,14 @@ export default defineNuxtModule({ audience: '', redirectURL: '', }) + // WorkOS OAuth + runtimeConfig.oauth.workos = defu(runtimeConfig.oauth.workos, { + clientId: '', + clientSecret: '', + connectionId: '', + screenHint: '', + redirectURL: '', + }) // Microsoft OAuth runtimeConfig.oauth.microsoft = defu(runtimeConfig.oauth.microsoft, { clientId: '', @@ -244,6 +269,7 @@ export default defineNuxtModule({ clientId: '', clientSecret: '', serverUrl: '', + serverUrlInternal: '', realm: '', redirectURL: '', }) @@ -333,5 +359,57 @@ export default defineNuxtModule({ clientSecret: '', redirectURL: '', }) + // Zitadel OAuth + runtimeConfig.oauth.zitadel = defu(runtimeConfig.oauth.zitadel, { + clientId: '', + clientSecret: '', + domain: '', + redirectURL: '', + }) + // Authentik OAuth + runtimeConfig.oauth.authentik = defu(runtimeConfig.oauth.authentik, { + clientId: '', + clientSecret: '', + domain: '', + redirectURL: '', + }) + // Seznam OAuth + runtimeConfig.oauth.seznam = defu(runtimeConfig.oauth.seznam, { + clientId: '', + clientSecret: '', + redirectURL: '', + }) + // Strava OAuth + runtimeConfig.oauth.strava = defu(runtimeConfig.oauth.strava, { + clientId: '', + clientSecret: '', + redirectURL: '', + }) + // Hubspot OAuth + runtimeConfig.oauth.hubspot = defu(runtimeConfig.oauth.hubspot, { + clientId: '', + clientSecret: '', + redirectURL: '', + }) + // Line OAuth + runtimeConfig.oauth.line = defu(runtimeConfig.oauth.line, { + clientId: '', + clientSecret: '', + redirectURL: '', + }) + // Atlassian OAuth + runtimeConfig.oauth.atlassian = defu(runtimeConfig.oauth.atlassian, { + clientId: '', + clientSecret: '', + redirectURL: '', + }) + // Apple OAuth + runtimeConfig.oauth.apple = defu(runtimeConfig.oauth.apple, { + teamId: '', + keyId: '', + privateKey: '', + redirectURL: '', + clientId: '', + }) }, }) diff --git a/src/runtime/app/composables/session.ts b/src/runtime/app/composables/session.ts index 8d221e5b..fc569c98 100644 --- a/src/runtime/app/composables/session.ts +++ b/src/runtime/app/composables/session.ts @@ -1,16 +1,43 @@ -import { useState, computed, useRequestFetch } from '#imports' +import { appendResponseHeader } from 'h3' +import { useState, computed, useRequestFetch, useRequestEvent } from '#imports' import type { UserSession, UserSessionComposable } from '#auth-utils' -const useSessionState = () => useState('nuxt-session', () => ({})) -const useAuthReadyState = () => useState('nuxt-auth-ready', () => false) - /** * Composable to get back the user session and utils around it. * @see https://github.com/atinux/nuxt-auth-utils */ export function useUserSession(): UserSessionComposable { - const sessionState = useSessionState() - const authReadyState = useAuthReadyState() + const serverEvent = import.meta.server ? useRequestEvent() : null + const sessionState = useState('nuxt-session', () => ({})) + const authReadyState = useState('nuxt-auth-ready', () => false) + + const clear = async () => { + await useRequestFetch()('/api/_auth/session', { + method: 'DELETE', + onResponse({ response: { headers } }) { + // Forward the Set-Cookie header to the main server event + if (import.meta.server && serverEvent) { + for (const setCookie of headers.getSetCookie()) { + appendResponseHeader(serverEvent, 'Set-Cookie', setCookie) + } + } + }, + }) + sessionState.value = {} + } + + const fetch = async () => { + sessionState.value = await useRequestFetch()('/api/_auth/session', { + headers: { + accept: 'application/json', + }, + retry: false, + }).catch(() => ({})) + if (!authReadyState.value) { + authReadyState.value = true + } + } + return { ready: computed(() => authReadyState.value), loggedIn: computed(() => Boolean(sessionState.value.user)), @@ -20,21 +47,3 @@ export function useUserSession(): UserSessionComposable { clear, } } - -async function fetch() { - const authReadyState = useAuthReadyState() - useSessionState().value = await useRequestFetch()('/api/_auth/session', { - headers: { - Accept: 'text/json', - }, - retry: false, - }).catch(() => ({})) - if (!authReadyState.value) { - authReadyState.value = true - } -} - -async function clear() { - await $fetch('/api/_auth/session', { method: 'DELETE' }) - useSessionState().value = {} -} diff --git a/src/runtime/app/composables/webauthn.ts b/src/runtime/app/composables/webauthn.ts index 986d1914..8f11e6b9 100644 --- a/src/runtime/app/composables/webauthn.ts +++ b/src/runtime/app/composables/webauthn.ts @@ -8,7 +8,7 @@ import { import type { VerifiedAuthenticationResponse, VerifiedRegistrationResponse } from '@simplewebauthn/server' import type { PublicKeyCredentialCreationOptionsJSON, PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types' import { ref, onMounted } from '#imports' -import type { WebAuthnComposable } from '#auth-utils' +import type { WebAuthnComposable, WebAuthnUser } from '#auth-utils' interface RegistrationInitResponse { creationOptions: PublicKeyCredentialCreationOptionsJSON @@ -43,7 +43,7 @@ export function useWebAuthn(options: { useBrowserAutofill = false, } = options - async function register(user: { userName: string, displayName?: string }) { + async function register(user: WebAuthnUser) { const { creationOptions, attemptId } = await $fetch(registerEndpoint, { method: 'POST', body: { diff --git a/src/runtime/server/lib/oauth/apple.ts b/src/runtime/server/lib/oauth/apple.ts new file mode 100644 index 00000000..2c7f0f6d --- /dev/null +++ b/src/runtime/server/lib/oauth/apple.ts @@ -0,0 +1,181 @@ +import type { H3Event } from 'h3' +import { eventHandler, getRequestHeader, readBody, sendRedirect } from 'h3' +import { withQuery } from 'ufo' +import { defu } from 'defu' +import { handleMissingConfiguration, handleAccessTokenErrorResponse, getOAuthRedirectURL, requestAccessToken, signJwt, verifyJwt } from '../utils' +import { useRuntimeConfig } from '#imports' +import type { OAuthConfig } from '#auth-utils' + +export interface OAuthAppleConfig { + /** + * Apple OAuth Client ID + * @default process.env.NUXT_OAUTH_APPLE_CLIENT_ID + */ + clientId?: string + + /** + * Apple OAuth team ID + * @default process.env.NUXT_OAUTH_APPLE_TEAM_ID + */ + teamId?: string + + /** + * Apple OAuth key identifier + * @default process.env.NUXT_OAUTH_APPLE_KEY_ID + */ + keyId?: string + + /** + * Apple OAuth Private Key. Linebreaks must be replaced with \n + * @example '-----BEGIN PRIVATE KEY-----\nMIGTAgEAMBMGByqGSM...\n-----END PRIVATE KEY-----' + * @default process.env.NUXT_OAUTH_APPLE_PRIVATE_KEY + */ + privateKey?: string + + /** + * Apple OAuth Scope. Apple wants this to be a string separated by spaces, but for consistency with other providers, we also allow an array of strings. + * @default '' + * @see https://developer.apple.com/documentation/sign_in_with_apple/clientconfigi/3230955-scope + * @example 'name email' + */ + scope?: string | string[] + + /** + * Apple OAuth Authorization URL + * @default 'https://appleid.apple.com/auth/authorize' + */ + authorizationURL?: string + + /** + * Extra authorization parameters to provide to the authorization URL + * @see https://developer.apple.com/documentation/sign_in_with_apple/clientconfigi/3230955-scope + * @example { usePop: true } + */ + authorizationParams?: Record + + /** + * Apple OAuth Token URL + * @default 'https://appleid.apple.com/auth/token' + */ + tokenURL?: string + + /** + * Redirect URL to to allow overriding for situations like prod failing to determine public hostname + * @default process.env.NUXT_OAUTH_APPLE_REDIRECT_URL or current URL + */ + redirectURL?: string +} + +export interface OAuthAppleTokens { + iss: string + aud: string + exp: number + iat: number + sub: string + at_hash: string + email: string + email_verified: boolean + is_private_email: boolean + auth_time: number + nonce_supported: boolean +} + +export interface OAuthAppleUser { + name?: { + firstName?: string + lastName?: string + } + email?: string +} + +export function defineOAuthAppleEventHandler({ + config, + onSuccess, + onError, +}: OAuthConfig) { + return eventHandler(async (event: H3Event) => { + config = defu(config, useRuntimeConfig(event).oauth?.apple, { + authorizationURL: config?.authorizationURL || 'https://appleid.apple.com/auth/authorize', + authorizationParams: {}, + }) as OAuthAppleConfig + + if (!config.teamId || !config.keyId || !config.privateKey || !config.clientId) { + return handleMissingConfiguration(event, 'apple', ['teamId', 'keyId', 'privateKey', 'clientId'], onError) + } + + // instead of a query, apple sends a form post back after login + const isPost = getRequestHeader(event, 'content-type') === 'application/x-www-form-urlencoded' + + let code: string | undefined + let user: OAuthAppleUser | undefined + + if (isPost) { + // `user` will only be available the first time a user logs in. + ({ code, user } = await readBody<{ code: string, user?: OAuthAppleUser }>(event)) + } + + // Send user to apple login page. + if (!isPost || !code) { + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) + + config.scope = Array.isArray(config.scope) + ? config.scope.join(' ') + : (config.scope || 'name email') + + return sendRedirect( + event, + withQuery(config.authorizationURL as string, { + response_type: 'code', + response_mode: 'form_post', + client_id: config.clientId, + redirect_uri: redirectURL, + scope: config.scope, + ...config.authorizationParams, + }), + ) + } + + // Verify the form post data we got back from apple + try { + const secret = await signJwt( + { + iss: config.teamId, + aud: 'https://appleid.apple.com', + sub: config.clientId, + }, + { + privateKey: config.privateKey, + keyId: config.keyId, + teamId: config.teamId, + clientId: config.clientId, + expiresIn: '5m', + }, + ) + + const accessTokenResult = await requestAccessToken(config.tokenURL || 'https://appleid.apple.com/auth/token', { + params: { + client_id: config.clientId, + client_secret: secret, + code, + grant_type: 'authorization_code', + redirect_uri: config.redirectURL, + }, + }) + + const tokens = await verifyJwt(accessTokenResult.id_token, { + publicJwkUrl: 'https://appleid.apple.com/auth/keys', + audience: config.clientId, + issuer: 'https://appleid.apple.com', + }) + + if (!tokens) { + return handleAccessTokenErrorResponse(event, 'apple', tokens, onError) + } + + return onSuccess(event, { user, tokens }) + } + catch (error) { + return handleAccessTokenErrorResponse(event, 'apple', error, onError) + } + }) +} diff --git a/src/runtime/server/lib/oauth/atlassian.ts b/src/runtime/server/lib/oauth/atlassian.ts new file mode 100644 index 00000000..9f7a739b --- /dev/null +++ b/src/runtime/server/lib/oauth/atlassian.ts @@ -0,0 +1,202 @@ +import type { H3Event } from 'h3' +import { eventHandler, getQuery, sendRedirect } from 'h3' +import { withQuery } from 'ufo' +import { defu } from 'defu' +import { randomUUID } from 'uncrypto' +import { handleMissingConfiguration, handleAccessTokenErrorResponse, getOAuthRedirectURL, requestAccessToken } from '../utils' +import { useRuntimeConfig, createError } from '#imports' +import type { OAuthConfig } from '#auth-utils' + +interface AtlassianUser { + account_id?: string // 000000-X0X0X0X0-X0X0-X0X0-X0X0-X0X0X0X0X0X0 + email?: string // @example john.doe@example.com + name?: string // @example John Doe + picture?: string // @example https://secure.gravatar.com/avatar/xxx + account_status?: string // @example active | inactive + characteristics?: { not_mentionable?: boolean } + last_updated?: string // @example 2024-10-13T15:35:16.933Z + nickname?: string // @example John Doe + locale?: string // @example en-US + extended_profile?: { phone_numbers?: string[] } + account_type?: string // @example atlassian + email_verified?: boolean // @example true +} + +interface AtlassianTokens { + access_token?: string // JWT + expires_in?: number // seconds + token_type?: string // @example Bearer + scope?: string // @example 'read:account read:me' + error?: string +} + +/** + * @see https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps + */ +export interface OAuthAtlassianConfig { + /** + * Atlassian OAuth Client ID + * @default process.env.NUXT_OAUTH_ATLASSIAN_CLIENT_ID + * @see https://developer.atlassian.com/console/myapps + */ + clientId?: string + /** + * Atlassian OAuth Client Secret + * @default process.env.NUXT_OAUTH_ATLASSIAN_CLIENT_SECRET + * @see https://developer.atlassian.com/console/myapps + */ + clientSecret?: string + /** + * Redirect URL to allow overriding for situations like prod failing to determine public hostname + * @default process.env.NUXT_OAUTH_ATLASSIAN_REDIRECT_URL or current URL + * @see https://developer.atlassian.com/console/myapps + */ + redirectURL?: string + /** + * Atlassian OAuth Scope + * @default ['read:me', 'read:account'] + * @see [Jira scopes](https://developer.atlassian.com/cloud/jira/platform/scopes-for-oauth-2-3LO-and-forge-apps) | [Confluence scopes](https://developer.atlassian.com/cloud/confluence/scopes-for-oauth-2-3LO-and-forge-apps) + * + * @example + * User identity API: ['read:me', 'read:account'] + * Confluence API: ['read:confluence-user'] + * BRIE API: ['read:account:brie] + * Jira platform REST API: ['read:jira-user'] + * Personal data reporting API: ['report:personal-data'] + */ + scope?: string[] + /** + * Atlassian OAuth Audience URL + * @default 'https://api.atlassian.com' + */ + audienceURL?: string + /** + * Atlassian OAuth Authorization URL + * @default 'https://auth.atlassian.com/authorize' + */ + authorizationURL?: string + /** + * Atlassian OAuth Token URL + * @default 'https://auth.atlassian.com/oauth/token' + */ + tokenURL?: string + /** + * Require email from user, adds the ['read:me'] scope if not present + * @default false + */ + emailHasToBeVerified?: boolean + /** + * Extra authorization parameters to provide to the authorization URL + * @default {} + */ + authorizationParams?: Record +} + +/** + * Atlassian User identity, Confluence, BRIE, Jira platform, Atlassian Personal data reporting + */ +export function defineOAuthAtlassianEventHandler({ + config, + onSuccess, + onError, +}: OAuthConfig) { + return eventHandler(async (event: H3Event) => { + config = defu(config, useRuntimeConfig().oauth?.atlassian, { + authorizationURL: 'https://auth.atlassian.com/authorize', + tokenURL: 'https://auth.atlassian.com/oauth/token', + audienceURL: 'https://api.atlassian.com', + scope: ['read:me', 'read:account'], + authorizationParams: {}, + }) as OAuthAtlassianConfig + + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'atlassian', ['clientId', 'clientSecret'], onError) + } + + if (config.scope?.length === 0) { + config.scope = ['read:me'] + } + + if (config.emailHasToBeVerified && !config.scope?.includes('read:me')) { + config.scope?.push('read:me') + } + + const query = getQuery<{ code?: string, error?: string }>(event) + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) + + if (!query.code) { + return sendRedirect( + event, + withQuery(config.authorizationURL as string, { + audience: config.audienceURL, + client_id: config.clientId, + scope: config.scope?.join(' '), + redirect_uri: redirectURL, + state: randomUUID(), + response_type: 'code', + prompt: 'consent', + ...config.authorizationParams, + }), + ) + } + + if (query.error) { + const error = createError({ + statusCode: 401, + message: `Atlassian login failed: ${query.error || 'Unknown error'}`, + data: query, + }) + if (!onError) throw error + return onError(event, error) + } + + const tokens: AtlassianTokens = await requestAccessToken(config.tokenURL as string, { + headers: { + 'Content-Type': 'application/json', + }, + body: { + grant_type: 'authorization_code', + client_id: config.clientId, + client_secret: config.clientSecret, + code: query.code, + redirect_uri: redirectURL, + }, + }) + + if (tokens.error || !tokens.access_token) { + return handleAccessTokenErrorResponse(event, 'atlassian', tokens, onError) + } + + const user = await $fetch('https://api.atlassian.com/me', { + headers: { + 'Authorization': `Bearer ${tokens.access_token}`, + 'Content-Type': 'application/json', + }, + }) + + if (user.account_status === 'inactive') { + const error = createError({ + statusCode: 403, + statusMessage: 'Atlassian account is inactive', + data: { accountStatus: user.account_status }, + }) + if (!onError) throw error + return onError(event, error) + } + + if (!user.email_verified) { + const error = createError({ + statusCode: 400, + statusMessage: 'Email address is not verified', + data: { email: user.email }, + }) + if (!onError) throw error + return onError(event, error) + } + + return onSuccess(event, { + user, + tokens, + }) + }) +} diff --git a/src/runtime/server/lib/oauth/authentik.ts b/src/runtime/server/lib/oauth/authentik.ts new file mode 100644 index 00000000..055f920f --- /dev/null +++ b/src/runtime/server/lib/oauth/authentik.ts @@ -0,0 +1,113 @@ +import type { H3Event } from 'h3' +import { eventHandler, getQuery, sendRedirect } from 'h3' +import { withQuery } from 'ufo' +import { defu } from 'defu' +import { handleMissingConfiguration, handleAccessTokenErrorResponse, getOAuthRedirectURL, requestAccessToken } from '../utils' +import { useRuntimeConfig, createError } from '#imports' +import type { OAuthConfig } from '#auth-utils' + +export interface OAuthAuthentikConfig { + /** + * Authentik OAuth Client ID + * @default process.env.NUXT_OAUTH_AUTHENTIK_CLIENT_ID + */ + clientId?: string + /** + * Authentik OAuth Client Secret + * @default process.env.NUXT_OAUTH_AUTHENTIK_CLIENT_SECRET + */ + clientSecret?: string + /** + * Authentik OAuth Domain + * @example https:// + * @default process.env.NUXT_OAUTH_AUTHENTIK_DOMAIN + */ + domain?: string + /** + * Redirect URL to allow overriding for situations like prod failing to determine public hostname + * @default process.env.NUXT_OAUTH_AUTHENTIK_REDIRECT_URL or current URL + */ + redirectURL?: string +} + +export function defineOAuthAuthentikEventHandler({ config, onSuccess, onError }: OAuthConfig) { + return eventHandler(async (event: H3Event) => { + config = defu(config, useRuntimeConfig(event).oauth?.authentik) as OAuthAuthentikConfig + + const query = getQuery<{ code?: string, error?: string }>(event) + + if (query.error) { + const error = createError({ + statusCode: 401, + message: `Authentik login failed: ${query.error || 'Unknown error'}`, + data: query, + }) + if (!onError) throw error + return onError(event, error) + } + + if (!config.clientId || !config.clientSecret || !config.domain) { + return handleMissingConfiguration(event, 'authentik', ['clientId', 'clientSecret', 'domain'], onError) + } + + const authorizationURL = `https://${config.domain}/application/o/authorize/` + const tokenURL = `https://${config.domain}/application/o/token/` + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) + + if (!query.code) { + // Redirect to Authentik OAuth page + + return sendRedirect( + event, + withQuery(authorizationURL, { + response_type: 'code', + client_id: config.clientId, + redirect_uri: redirectURL, + scope: ['openid', 'profile', 'email'].join(' '), + }), + ) + } + + const tokens = await requestAccessToken(tokenURL, { + headers: { + 'Authorization': `Basic ${Buffer.from(`${config.clientId}:${config.clientSecret}`).toString('base64')}`, + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: { + grant_type: 'authorization_code', + client_id: config.clientId, + redirect_uri: redirectURL, + code: query.code, + }, + }) + + if (tokens.error) { + return handleAccessTokenErrorResponse(event, 'authentik', tokens, onError) + } + + const accessToken = tokens.access_token + // Fetch user info + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const user: any = await $fetch(`https://${config.domain}/application/o/userinfo/`, { + headers: { + Authorization: `Bearer ${accessToken}`, + Accept: 'application/json', + }, + }) + + if (!user) { + const error = createError({ + statusCode: 500, + message: 'Could not get Authentik user', + data: tokens, + }) + if (!onError) throw error + return onError(event, error) + } + + return onSuccess(event, { + user, + tokens, + }) + }) +} diff --git a/src/runtime/server/lib/oauth/cognito.ts b/src/runtime/server/lib/oauth/cognito.ts index ce0d9a2c..9b729d5c 100644 --- a/src/runtime/server/lib/oauth/cognito.ts +++ b/src/runtime/server/lib/oauth/cognito.ts @@ -1,8 +1,9 @@ +import { defu } from 'defu' import type { H3Event } from 'h3' import { eventHandler, getQuery, sendRedirect } from 'h3' +import { discovery } from 'openid-client' import { withQuery } from 'ufo' -import { defu } from 'defu' -import { handleMissingConfiguration, handleAccessTokenErrorResponse, getOAuthRedirectURL, requestAccessToken } from '../utils' +import { getOAuthRedirectURL, handleAccessTokenErrorResponse, handleMissingConfiguration, requestAccessToken } from '../utils' import { useRuntimeConfig } from '#imports' import type { OAuthConfig } from '#auth-utils' @@ -42,11 +43,6 @@ export interface OAuthCognitoConfig { * @default process.env.NUXT_OAUTH_COGNITO_REDIRECT_URL or current URL */ redirectURL?: string - /** - * AWS Cognito App Custom Domain – some pool configurations require this - * @default '' - */ - domain?: string } export function defineOAuthCognitoEventHandler({ config, onSuccess, onError }: OAuthConfig) { @@ -59,11 +55,16 @@ export function defineOAuthCognitoEventHandler({ config, onSuccess, onError }: O return handleMissingConfiguration(event, 'cognito', ['clientId', 'clientSecret', 'userPoolId', 'region'], onError) } - const urlBase = config?.domain || `${config.userPoolId}.auth.${config.region}.amazoncognito.com` - - const authorizationURL = `https://${urlBase}/oauth2/authorize` - const tokenURL = `https://${urlBase}/oauth2/token` - + const congitoDiscoveryUrl = new URL(`https://cognito-idp.${config.region}.amazonaws.com/${config.userPoolId}/.well-known/openid-configuration`) + const issuer = await discovery(congitoDiscoveryUrl, config.clientId, config.clientSecret) + const { + authorization_endpoint: authorizationURL, + token_endpoint: tokenURL, + userinfo_endpoint: userinfoURL, + // TODO: implement logout + // eslint-disable-next-line @typescript-eslint/no-unused-vars + end_session_endpoint: logoutURL, + } = issuer.serverMetadata() const query = getQuery<{ code?: string }>(event) const redirectURL = config.redirectURL || getOAuthRedirectURL(event) @@ -101,9 +102,8 @@ export function defineOAuthCognitoEventHandler({ config, onSuccess, onError }: O const tokenType = tokens.token_type const accessToken = tokens.access_token - // TODO: improve typing - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const user: any = await $fetch(`https://${urlBase}/oauth2/userInfo`, { + // TODO: improve typing of user profile + const user: unknown = await $fetch(userinfoURL as string, { headers: { Authorization: `${tokenType} ${accessToken}`, }, diff --git a/src/runtime/server/lib/oauth/discord.ts b/src/runtime/server/lib/oauth/discord.ts index 1bb27a7a..3df998e4 100644 --- a/src/runtime/server/lib/oauth/discord.ts +++ b/src/runtime/server/lib/oauth/discord.ts @@ -67,12 +67,16 @@ export function defineOAuthDiscordEventHandler({ config, onSuccess, onError }: O profileRequired: true, authorizationParams: {}, }) as OAuthDiscordConfig - const query = getQuery<{ code?: string }>(event) + const query = getQuery<{ code?: string, error?: string }>(event) if (!config.clientId || !config.clientSecret) { return handleMissingConfiguration(event, 'discord', ['clientId', 'clientSecret'], onError) } + if (query.error) { + return handleAccessTokenErrorResponse(event, 'discord', query, onError) + } + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) if (!query.code) { diff --git a/src/runtime/server/lib/oauth/dropbox.ts b/src/runtime/server/lib/oauth/dropbox.ts index f73a206e..627f96a2 100644 --- a/src/runtime/server/lib/oauth/dropbox.ts +++ b/src/runtime/server/lib/oauth/dropbox.ts @@ -68,8 +68,8 @@ export function defineOAuthDropboxEventHandler({ config, onSuccess, onError }: O const query = getQuery<{ code?: string }>(event) - if (!config.clientId) { - return handleMissingConfiguration(event, 'dropbox', ['clientId'], onError) + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'dropbox', ['clientId', 'clientSecret'], onError) } const redirectURL = config.redirectURL || getOAuthRedirectURL(event) diff --git a/src/runtime/server/lib/oauth/facebook.ts b/src/runtime/server/lib/oauth/facebook.ts index 44113797..2234844b 100644 --- a/src/runtime/server/lib/oauth/facebook.ts +++ b/src/runtime/server/lib/oauth/facebook.ts @@ -1,9 +1,9 @@ import type { H3Event } from 'h3' -import { eventHandler, getQuery, sendRedirect } from 'h3' +import { eventHandler, getQuery, sendRedirect, createError } from 'h3' import { withQuery } from 'ufo' import { defu } from 'defu' import { handleMissingConfiguration, handleAccessTokenErrorResponse, getOAuthRedirectURL, requestAccessToken } from '../utils' -import { useRuntimeConfig, createError } from '#imports' +import { useRuntimeConfig } from '#imports' import type { OAuthConfig } from '#auth-utils' export interface OAuthFacebookConfig { @@ -81,8 +81,8 @@ export function defineOAuthFacebookEventHandler({ return onError(event, error) } - if (!config.clientId) { - return handleMissingConfiguration(event, 'facebook', ['clientId'], onError) + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'facebook', ['clientId', 'clientSecret'], onError) } const redirectURL = config.redirectURL || getOAuthRedirectURL(event) @@ -125,7 +125,13 @@ export function defineOAuthFacebookEventHandler({ ) if (!user) { - throw new Error('Facebook login failed: no user found') + const error = createError({ + statusCode: 500, + message: 'Could not get Facebook user', + data: tokens, + }) + if (!onError) throw error + return onError(event, error) } return onSuccess(event, { diff --git a/src/runtime/server/lib/oauth/github.ts b/src/runtime/server/lib/oauth/github.ts index 7589291e..5f84f178 100644 --- a/src/runtime/server/lib/oauth/github.ts +++ b/src/runtime/server/lib/oauth/github.ts @@ -1,9 +1,9 @@ import type { H3Event } from 'h3' -import { eventHandler, getQuery, sendRedirect } from 'h3' +import { eventHandler, getQuery, sendRedirect, createError } from 'h3' import { withQuery } from 'ufo' import { defu } from 'defu' import { handleMissingConfiguration, handleAccessTokenErrorResponse, getOAuthRedirectURL, requestAccessToken } from '../utils' -import { useRuntimeConfig, createError } from '#imports' +import { useRuntimeConfig } from '#imports' import type { OAuthConfig } from '#auth-utils' export interface OAuthGitHubConfig { @@ -139,7 +139,13 @@ export function defineOAuthGitHubEventHandler({ config, onSuccess, onError }: OA const primaryEmail = emails.find((email: any) => email.primary) // Still no email if (!primaryEmail) { - throw new Error('GitHub login failed: no user email found') + const error = createError({ + statusCode: 500, + message: 'Could not get GitHub user email', + data: tokens, + }) + if (!onError) throw error + return onError(event, error) } user.email = primaryEmail.email } diff --git a/src/runtime/server/lib/oauth/gitlab.ts b/src/runtime/server/lib/oauth/gitlab.ts index ed45e481..328fd4f0 100644 --- a/src/runtime/server/lib/oauth/gitlab.ts +++ b/src/runtime/server/lib/oauth/gitlab.ts @@ -59,6 +59,12 @@ export interface OAuthGitLabConfig { * @default process.env.NUXT_OAUTH_GITLAB_REDIRECT_URL */ redirectURL?: string + + /** + * URL of your instance, if you are self-hosting + * @default https://gitlab.com + */ + baseURL?: string } export function defineOAuthGitLabEventHandler({ @@ -67,9 +73,12 @@ export function defineOAuthGitLabEventHandler({ onError, }: OAuthConfig) { return eventHandler(async (event: H3Event) => { - config = defu(config, useRuntimeConfig(event).oauth?.gitlab, { - authorizationURL: 'https://gitlab.com/oauth/authorize', - tokenURL: 'https://gitlab.com/oauth/token', + const runtimeConfig = useRuntimeConfig(event).oauth?.gitlab + const baseURL + = config?.baseURL ?? runtimeConfig.baseURL ?? 'https://gitlab.com' + config = defu(config, runtimeConfig, { + authorizationURL: `${baseURL}/oauth/authorize`, + tokenURL: `${baseURL}/oauth/token`, authorizationParams: {}, }) as OAuthGitLabConfig @@ -134,7 +143,7 @@ export function defineOAuthGitLabEventHandler({ const accessToken = tokens.access_token // TODO: improve typing // eslint-disable-next-line @typescript-eslint/no-explicit-any - const user: any = await $fetch('https://gitlab.com/api/v4/user', { + const user: any = await $fetch(`${baseURL}/api/v4/user`, { headers: { Authorization: `Bearer ${accessToken}`, }, diff --git a/src/runtime/server/lib/oauth/google.ts b/src/runtime/server/lib/oauth/google.ts index 6c943d38..581c1734 100644 --- a/src/runtime/server/lib/oauth/google.ts +++ b/src/runtime/server/lib/oauth/google.ts @@ -74,8 +74,8 @@ export function defineOAuthGoogleEventHandler({ const query = getQuery<{ code?: string, state?: string }>(event) - if (!config.clientId) { - return handleMissingConfiguration(event, 'google', ['clientId'], onError) + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'google', ['clientId', 'clientSecret'], onError) } const redirectURL = config.redirectURL || getOAuthRedirectURL(event) diff --git a/src/runtime/server/lib/oauth/hubspot.ts b/src/runtime/server/lib/oauth/hubspot.ts new file mode 100644 index 00000000..60a2cd3a --- /dev/null +++ b/src/runtime/server/lib/oauth/hubspot.ts @@ -0,0 +1,121 @@ +import type { H3Event } from 'h3' +import { eventHandler, getQuery, sendRedirect } from 'h3' +import { withQuery } from 'ufo' +import defu from 'defu' +import { + getOAuthRedirectURL, + handleAccessTokenErrorResponse, + handleMissingConfiguration, + requestAccessToken, +} from '../utils' +import { useRuntimeConfig } from '#imports' +import type { OAuthConfig } from '#auth-utils' + +export interface OAuthHubspotConfig { + /** + * Hubspot OAuth Client ID + * @default process.env.NUXT_OAUTH_HUBSPOT_CLIENT_ID + */ + clientId?: string + + /** + * Hubspot OAuth Client Secret + * @default process.env.NUXT_OAUTH_HUBSPOT_CLIENT_SECRET + */ + clientSecret?: string + + /** + * Hubspot OAuth Redirect URL + * @default process.env.NUXT_OAUTH_HUBSPOT_REDIRECT_URL + */ + redirectURL?: string + + /** + * Hubspot OAuth Scope + * @default ['oauth'] + * @see https://developers.hubspot.com/beta-docs/guides/apps/authentication/scopes + * @example ['accounting', 'automation', 'actions'] + */ + scope?: string[] +} +interface SignedAccessToken { + expiresAt: number + scopes: string + hubId: number + userId: number + appId: number + signature: string + scopeToScopeGroupPks?: string + newSignature?: string + hublet?: string + trialScopes?: string + trialScopeToScopeGroupPks?: string + isUserLevel: boolean +} + +interface OAuthHubspotAccessInfo { + token: string + user: string + hub_domain: string + scopes: string[] + signed_access_token: SignedAccessToken + hub_id: number + app_id: number + expires_in: number + user_id: number + token_type: string +} + +export function defineOAuthHubspotEventHandler({ config, onSuccess, onError }: OAuthConfig) { + return eventHandler(async (event: H3Event) => { + config = defu(config, useRuntimeConfig(event).oauth?.hubspot) as OAuthHubspotConfig + + if (!config.clientId || !config.clientSecret || !config.redirectURL) { + return handleMissingConfiguration(event, 'hubspot', ['clientId', 'clientSecret', 'redirectURL'], onError) + } + + const query = getQuery<{ code?: string, state?: string, error?: string, error_description?: string }>(event) + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) + + if (query.error) { + return handleAccessTokenErrorResponse(event, 'hubspot', query, onError) + } + + if (!query.code) { + return sendRedirect( + event, + withQuery('https://app.hubspot.com/oauth/authorize', { + client_id: config.clientId, + redirect_uri: redirectURL, + scope: config.scope?.join(' ') || 'oauth', + }), + ) + } + + const tokens = await requestAccessToken( + 'https://api.hubapi.com/oauth/v1/token', { + body: { + client_id: config.clientId, + client_secret: config.clientSecret, + code: query.code as string, + redirect_uri: redirectURL, + grant_type: 'authorization_code', + }, + }) + + if (tokens.error) { + return handleAccessTokenErrorResponse(event, 'hubspot', tokens, onError) + } + + const info: OAuthHubspotAccessInfo = await $fetch('https://api.hubapi.com/oauth/v1/access-tokens/' + tokens.access_token) + + return onSuccess(event, { + user: { + id: info.user_id, + email: info.user, + domain: info.hub_domain, + }, + tokens, + }) + }) +} diff --git a/src/runtime/server/lib/oauth/instagram.ts b/src/runtime/server/lib/oauth/instagram.ts index 81528ca4..72000008 100644 --- a/src/runtime/server/lib/oauth/instagram.ts +++ b/src/runtime/server/lib/oauth/instagram.ts @@ -1,9 +1,9 @@ import type { H3Event } from 'h3' -import { eventHandler, getQuery, sendRedirect } from 'h3' +import { eventHandler, getQuery, sendRedirect, createError } from 'h3' import { withQuery } from 'ufo' import { defu } from 'defu' import { handleMissingConfiguration, handleAccessTokenErrorResponse, getOAuthRedirectURL, requestAccessToken } from '../utils' -import { useRuntimeConfig, createError } from '#imports' +import { useRuntimeConfig } from '#imports' import type { OAuthConfig } from '#auth-utils' export interface OAuthInstagramConfig { @@ -19,23 +19,23 @@ export interface OAuthInstagramConfig { clientSecret?: string /** * Instagram OAuth Scope - * @default [ 'user_profile' ] + * @required [ 'business_basic' ] * @see https://developers.facebook.com/docs/instagram-basic-display-api/overview#permissions - * @example [ 'user_profile', 'user_media' ], + * @example [ 'business_basic', 'business_manage_messages' ], */ - scope?: string[] + scope?: ('business_basic' | 'business_content_publish' | 'business_manage_comments' | 'business_manage_messages')[] /** * Instagram OAuth User Fields * @default [ 'id', 'username'], * @see https://developers.facebook.com/docs/instagram-basic-display-api/reference/user#fields - * @example [ 'id', 'username', 'account_type', 'media_count' ], + * @example [ 'id', 'username', 'user_id', 'account_type', 'profile_picture_url' ], */ - fields?: string[] + fields?: ('id' | 'user_id' | 'username' | 'name' | 'account_type' | 'profile_picture_url' | 'followers_count' | 'follows_count' | 'media_count')[] /** * Instagram OAuth Authorization URL - * @default 'https://api.instagram.com/oauth/authorize' + * @default 'https://www.instagram.com/oauth/authorize' */ authorizationURL?: string @@ -64,26 +64,35 @@ export function defineOAuthInstagramEventHandler({ }: OAuthConfig) { return eventHandler(async (event: H3Event) => { config = defu(config, useRuntimeConfig(event).oauth?.instagram, { - scope: ['user_profile'], - authorizationURL: 'https://api.instagram.com/oauth/authorize', + scope: ['business_basic'], + authorizationURL: 'https://www.instagram.com/oauth/authorize', tokenURL: 'https://api.instagram.com/oauth/access_token', authorizationParams: {}, }) as OAuthInstagramConfig - const query = getQuery<{ code?: string, error?: string }>(event) + const query = getQuery<{ + code?: string + error?: string + error_reason?: string + error_description?: string + }>(event) if (query.error) { const error = createError({ statusCode: 401, message: `Instagram login failed: ${query.error || 'Unknown error'}`, - data: query, + data: { + error: query.error, + error_reason: query.error_reason, + error_description: query.error_description, + }, }) if (!onError) throw error return onError(event, error) } - if (!config.clientId) { - return handleMissingConfiguration(event, 'instagram', ['clientId'], onError) + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'instagram', ['clientId', 'clientSecret'], onError) } const redirectURL = config.redirectURL || getOAuthRedirectURL(event) @@ -96,7 +105,7 @@ export function defineOAuthInstagramEventHandler({ withQuery(config.authorizationURL as string, { client_id: config.clientId, redirect_uri: redirectURL, - scope: config.scope.join(' '), + scope: config.scope.join(), response_type: 'code', }), ) @@ -120,14 +129,20 @@ export function defineOAuthInstagramEventHandler({ // TODO: improve typing config.fields = config.fields || ['id', 'username'] - const fields = config.fields.join(',') + const fields = config.fields.join() const user = await $fetch( - `https://graph.instagram.com/v20.0/me?fields=${fields}&access_token=${accessToken}`, + `https://graph.instagram.com/v21.0/me?fields=${fields}&access_token=${accessToken}`, ) if (!user) { - throw new Error('Instagram login failed: no user found') + const error = createError({ + statusCode: 500, + message: 'Could not get Instagram user', + data: tokens, + }) + if (!onError) throw error + return onError(event, error) } return onSuccess(event, { diff --git a/src/runtime/server/lib/oauth/keycloak.ts b/src/runtime/server/lib/oauth/keycloak.ts index 4be99d1a..bcb48bea 100644 --- a/src/runtime/server/lib/oauth/keycloak.ts +++ b/src/runtime/server/lib/oauth/keycloak.ts @@ -19,10 +19,17 @@ export interface OAuthKeycloakConfig { clientSecret?: string /** * Keycloak OAuth Server URL - * @example http://192.168.1.10:8080/auth + * @example http://192.168.1.10:8080 * @default process.env.NUXT_OAUTH_KEYCLOAK_SERVER_URL */ serverUrl?: string + /** + * Optional Keycloak OAuth Server URL to use internally, e.g. if Nuxt connects to a Docker hostname while the browser + * redirect goes to localhost + * @example http://keycloak:8080 + * @default process.env.NUXT_OAUTH_KEYCLOAK_SERVER_URL_INTERNAL + */ + serverUrlInternal?: string /** * Keycloak OAuth Realm * @default process.env.NUXT_OAUTH_KEYCLOAK_REALM @@ -40,7 +47,7 @@ export interface OAuthKeycloakConfig { */ authorizationParams?: Record /** - * Redirect URL to to allow overriding for situations like prod failing to determine public hostname + * Redirect URL to allow overriding for situations like prod failing to determine public hostname * @default process.env.NUXT_OAUTH_KEYCLOAK_REDIRECT_URL or current URL */ redirectURL?: string @@ -78,9 +85,10 @@ export function defineOAuthKeycloakEventHandler({ } const realmURL = `${config.serverUrl}/realms/${config.realm}` + const realmURLInternal = `${config.serverUrlInternal || config.serverUrl}/realms/${config.realm}` const authorizationURL = `${realmURL}/protocol/openid-connect/auth` - const tokenURL = `${realmURL}/protocol/openid-connect/token` + const tokenURL = `${realmURLInternal}/protocol/openid-connect/token` const redirectURL = config.redirectURL || getOAuthRedirectURL(event) if (!query.code) { diff --git a/src/runtime/server/lib/oauth/line.ts b/src/runtime/server/lib/oauth/line.ts new file mode 100644 index 00000000..db3a91f5 --- /dev/null +++ b/src/runtime/server/lib/oauth/line.ts @@ -0,0 +1,139 @@ +import type { H3Event } from 'h3' +import { eventHandler, getQuery, sendRedirect, createError } from 'h3' +import { withQuery } from 'ufo' +import { defu } from 'defu' +import { handleMissingConfiguration, handleAccessTokenErrorResponse, getOAuthRedirectURL, requestAccessToken } from '../utils' +import { useRuntimeConfig } from '#imports' +import type { OAuthConfig } from '#auth-utils' + +export interface OAuthLineConfig { + /** + * Line OAuth Client ID + * @default process.env.NUXT_OAUTH_LINE_CLIENT_ID + */ + clientId?: string + + /** + * Line OAuth Client Secret + * @default process.env.NUXT_OAUTH_LINE_CLIENT_SECRET + */ + clientSecret?: string + + /** + * Line OAuth Scope + * @default ['profile', 'openid'] + * @see https://developers.line.biz/en/docs/line-login/integrate-line-login/ + */ + scope?: string[] + + /** + * Line OAuth Authorization URL + * @default 'https://access.line.me/oauth2/v2.1/authorize' + */ + authorizationURL?: string + + /** + * Line OAuth Token URL + * @default 'https://api.line.me/oauth2/v2.1/token' + */ + tokenURL?: string + + /** + * Line OAuth User Info URL + * @default 'https://api.line.me/v2/profile' + */ + userURL?: string + + /** + * Extra authorization parameters to provide to the authorization URL + * @example { bot_prompt: 'normal' } + */ + authorizationParams?: Record + + /** + * Redirect URL to to allow overriding for situations like prod failing to determine public hostname + * @default process.env.NUXT_OAUTH_LINE_REDIRECT_URL or current URL + */ + redirectURL?: string +} + +export function defineOAuthLineEventHandler({ + config, + onSuccess, + onError, +}: OAuthConfig) { + return eventHandler(async (event: H3Event) => { + config = defu(config, useRuntimeConfig(event).oauth?.line, { + authorizationURL: 'https://access.line.me/oauth2/v2.1/authorize', + tokenURL: 'https://api.line.me/oauth2/v2.1/token', + userURL: 'https://api.line.me/v2/profile', + authorizationParams: {}, + }) as OAuthLineConfig + + const query = getQuery<{ code?: string, error?: string, state?: string }>(event) + + if (query.error) { + return onError( + event, + new Error(`Line login failed: ${query.error || 'Unknown error'}`), + ) + } + + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'line', ['clientId', 'clientSecret'], onError) + } + + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) + if (!query.code) { + config.scope = config.scope || ['profile', 'openid'] + // Redirect to Line OAuth page + return sendRedirect( + event, + withQuery(config.authorizationURL as string, { + response_type: 'code', + client_id: config.clientId, + redirect_uri: redirectURL, + scope: config.scope.join(' '), + state: query.state || '', + ...config.authorizationParams, + }), + ) + } + + const tokens = await requestAccessToken(config.tokenURL as string, { + body: { + grant_type: 'authorization_code', + code: query.code as string, + client_id: config.clientId, + client_secret: config.clientSecret, + redirect_uri: redirectURL, + }, + }) + + if (tokens.error) { + return handleAccessTokenErrorResponse(event, 'line', tokens, onError) + } + + const accessToken = tokens.access_token + const user = await $fetch(config.userURL as string, { + headers: { + Authorization: `Bearer ${accessToken}`, + }, + }) + + if (!user) { + const error = createError({ + statusCode: 500, + message: 'Could not get Line user', + data: tokens, + }) + if (!onError) throw error + return onError(event, error) + } + + return onSuccess(event, { + tokens, + user, + }) + }) +} diff --git a/src/runtime/server/lib/oauth/paypal.ts b/src/runtime/server/lib/oauth/paypal.ts index 5bf2d704..9f58fff2 100644 --- a/src/runtime/server/lib/oauth/paypal.ts +++ b/src/runtime/server/lib/oauth/paypal.ts @@ -75,8 +75,8 @@ export function defineOAuthPaypalEventHandler({ config, onSuccess, onError }: OA const query = getQuery<{ code?: string }>(event) - if (!config.clientId) { - return handleMissingConfiguration(event, 'paypal', ['clientId'], onError) + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'paypal', ['clientId', 'clientSecret'], onError) } let paypalAPI = 'api-m.paypal.com' diff --git a/src/runtime/server/lib/oauth/seznam.ts b/src/runtime/server/lib/oauth/seznam.ts new file mode 100644 index 00000000..c0becd29 --- /dev/null +++ b/src/runtime/server/lib/oauth/seznam.ts @@ -0,0 +1,179 @@ +import defu from 'defu' +import type { H3Event } from 'h3' +import { eventHandler, getQuery, sendRedirect } from 'h3' +import { withQuery } from 'ufo' +import { getOAuthRedirectURL, handleAccessTokenErrorResponse, handleMissingConfiguration, requestAccessToken } from '../utils' +import { useRuntimeConfig } from '#imports' +import type { OAuthConfig } from '#auth-utils' + +export interface OAuthSeznamConfig { + /** + * Seznam OAuth Client ID + * @default process.env.NUXT_OAUTH_SEZNAM_CLIENT_ID + */ + clientId?: string + + /** + * Seznam OAuth Client Secret + * @default process.env.NUXT_OAUTH_SEZNAM_CLIENT_SECRET + */ + clientSecret?: string + + /** + * Seznam OAuth Scope + * @default ['identity'] + * @see https://vyvojari.seznam.cz/oauth/scopes?lang=en + * @example ['identity', 'avatar'] + */ + scope?: string[] + + /** + * Redirect URL to to allow overriding for situations like prod failing to determine public hostname + * Redirect URL has to be set as well in the Seznam OAuth settings https://vyvojari.seznam.cz/oauth/admin in order for it to work + * @see https://vyvojari.seznam.cz/oauth/admin + * @default process.env.NUXT_OAUTH_SEZNAM_REDIRECT_URL + */ + redirectURL?: string + + /** + * Seznam OAuth Authorization URL + * @default 'https://login.szn.cz/api/v1/oauth/auth' + */ + authorizationURL?: string + + /** + * Seznam OAuth Token URL + * @default 'https://login.szn.cz/api/v1/oauth/token' + */ + tokenURL?: string + + /** + * Seznam OAuth User URL + * @default 'https://login.szn.cz/api/v1/user' + */ + userURL?: string +} + +export interface OAuthSeznamUser { + /** + * Unique persistent user account identifier + */ + oauth_user_id: string + + /** + * The user's e-mail address or null for users without an e-mail + */ + email: string | null + + /** + * Given name (when available) + */ + firstname: string + + /** + * Family name (when available) + */ + lastname: string + + /** + * User account identifier suitable for usage within the Seznam ad infrastructure + */ + advert_user_id: string + + /** + * (only when provided and validated by the user; null otherwise) + * Available only when you use the contact-phone scope + * @see https://vyvojari.seznam.cz/oauth/scopes?lang=en + */ + contact_phone?: string | null + + /** + * the image's URL + * Available only when you use the avatar scope + * @see https://vyvojari.seznam.cz/oauth/scopes?lang=en + */ + avatar_url?: string | null + + /** + * true/false value corresponding to the user's adult status + * Available only when you use the avatar scope + * @see https://vyvojari.seznam.cz/oauth/scopes?lang=en + */ + adulthood?: boolean + + /** + * date of birth in the ISO 8601 format (only when present; null otherwise) + * Available only when you use the birthday scope + * @see https://vyvojari.seznam.cz/oauth/scopes?lang=en + */ + birthday?: string | null + + /** + * one of the allowed strings "Male" / "Female" / "Other" (null if not set) + * Available only when you use the gender scope + * @see https://vyvojari.seznam.cz/oauth/scopes?lang=en + */ + gender?: string | null +} + +export function defineOAuthSeznamEventHandler({ config, onSuccess, onError }: OAuthConfig) { + return eventHandler(async (event: H3Event) => { + config = defu(config, useRuntimeConfig(event).oauth?.seznam, { + authorizationURL: 'https://login.szn.cz/api/v1/oauth/auth', + tokenURL: 'https://login.szn.cz/api/v1/oauth/token', + userURL: 'https://login.szn.cz/api/v1/user', + }) as OAuthSeznamConfig + + const query = getQuery<{ code?: string, state?: string }>(event) + + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'seznam', ['clientId', 'clientSecret'], onError) + } + + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) + if (!query.code) { + config.scope = config.scope || ['identity'] // identity is mandatory + + // Redirect to Seznam Oauth page + return sendRedirect( + event, + withQuery(config.authorizationURL as string, { + response_type: 'code', + client_id: config.clientId, + redirect_uri: redirectURL, + scope: config.scope.join(','), + state: query.state || '', + }), + ) + } + + const tokens = await requestAccessToken(config.tokenURL as string, { + body: { + grant_type: 'authorization_code', + code: query.code as string, + client_id: config.clientId, + client_secret: config.clientSecret, + redirect_uri: redirectURL, + }, + }) + + if (tokens.error) { + return handleAccessTokenErrorResponse(event, 'seznam', tokens, onError) + } + + const accessToken = tokens.access_token + const user: OAuthSeznamUser = await $fetch( + config.userURL as string, + { + headers: { + Authorization: `bearer ${accessToken}`, + }, + }, + ) + + return onSuccess(event, { + tokens, + user, + }) + }) +} diff --git a/src/runtime/server/lib/oauth/strava.ts b/src/runtime/server/lib/oauth/strava.ts new file mode 100644 index 00000000..3c33a6ce --- /dev/null +++ b/src/runtime/server/lib/oauth/strava.ts @@ -0,0 +1,223 @@ +import type { H3Event } from 'h3' +import { eventHandler, getQuery, sendRedirect } from 'h3' +import { withQuery } from 'ufo' +import { defu } from 'defu' +import { + getOAuthRedirectURL, + handleAccessTokenErrorResponse, + handleMissingConfiguration, + requestAccessToken, +} from '../utils' +import { useRuntimeConfig, createError } from '#imports' +import type { OAuthConfig } from '#auth-utils' + +export interface OAuthStravaConfig { + /** + * Strava OAuth Client ID + * @default process.env.NUXT_OAUTH_STRAVA_CLIENT_ID + */ + clientId?: string + + /** + * Strava OAuth Client Secret + * @default process.env.NUXT_OAUTH_STRAVA_CLIENT_SECRET + */ + clientSecret?: string + + /** + * Strava OAuth Scope + * @default [] + * @see https://developers.strava.com/docs/authentication/ # Details About Requesting Access + * @example ['read', 'read_all', 'profile:read_all', 'profile:write', 'activity:read', 'activity:read_all', 'activity:write'] + */ + scope?: string[] + + /** + * Redirect URL to allow overriding for situations like prod failing to determine public hostname + * @default process.env.NUXT_OAUTH_STRAVA_REDIRECT_URL or current URL + */ + redirectURL?: string + + /** + * To show the authorization prompt to the user, 'force' will always show the prompt + * @default 'auto' + * @see https://developers.strava.com/docs/authentication/ # Details About Requesting Access + */ + approvalPrompt?: 'auto' | 'force' +} + +export interface OAuthStravaUser { + /** + * The unique identifier of the athlete + */ + id: number + + /** + * The username of the athlete + */ + username: string + + /** + * Resource state, indicates level of detail. + * - Meta (1): Basic information + * - Summary (2): Summary information + * - Detail (3): Detailed information + * @see https://developers.strava.com/docs/reference/#api-models-DetailedAthlete + */ + resource_state: 1 | 2 | 3 + + /** + * The athlete's first name + */ + firstname: string + + /** + * The athlete's last name + */ + lastname: string + + /** + * The athlete's bio + */ + bio: string + + /** + * The athlete's city + */ + city: string + + /** + * The athlete's state or geographical region + */ + state: string + + /** + * The athlete's country + */ + country: string + + /** + * The athlete's sex + */ + sex: string + + /** + * Whether the athlete has any Summit subscription + * @see https://developers.strava.com/docs/reference/#api-models-DetailedAthlete + */ + summit: boolean + + /** + * The time at which the athlete was created + */ + created_at: Date + + /** + * The time at which the athlete was last updated + */ + updated_at: Date + + /** + * The athlete's weight + */ + weight: number + + /** + * URL to a 124x124 pixel profile picture + */ + profile_medium: string + + /** + * URL to a 62x62 pixel profile picture + */ + profile: string + + /** + * The athlete's timezone + */ + timezone: string +} + +export interface OAuthStravaTokens { + token_type: 'Bearer' + expires_at: number + expires_in: number + access_token: string + refresh_token: string + athlete: OAuthStravaUser + error?: string +} + +export function defineOAuthStravaEventHandler({ + config, + onSuccess, + onError, +}: OAuthConfig) { + return eventHandler(async (event: H3Event) => { + config = defu(config, useRuntimeConfig(event).oauth?.strava) as OAuthStravaConfig + + const query = getQuery<{ code?: string, state?: string, error?: string }>(event) + + if (query.error) { + const error = createError({ + statusCode: 401, + message: `Strava login failed: ${query.error || 'Unknown error'}`, + data: query, + }) + if (!onError) throw error + return onError(event, error) + } + + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration( + event, + 'strava', + ['clientId', 'clientSecret'], + onError, + ) + } + + const authorizationURL = 'https://www.strava.com/oauth/authorize' + const tokenURL = 'https://www.strava.com/oauth/token' + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) + + if (!query.code) { + // Redirect to Strava login page + return sendRedirect( + event, + withQuery(authorizationURL, { + client_id: config.clientId, + redirect_uri: redirectURL, + response_type: 'code', + approval_prompt: config.approvalPrompt || 'auto', + scope: config.scope, + }), + ) + } + + const tokens: OAuthStravaTokens = await requestAccessToken(tokenURL, { + body: { + client_id: config.clientId, + client_secret: config.clientSecret, + code: query.code as string, + grant_type: 'authorization_code', + redirect_uri: redirectURL, + }, + }) + + if (tokens.error) { + return handleAccessTokenErrorResponse(event, 'strava', tokens, onError) + } + + const user: OAuthStravaUser = await $fetch('https://www.strava.com/api/v3/athlete', { + headers: { + Authorization: `Bearer ${tokens.access_token}`, + }, + }) + + return onSuccess(event, { + user, + tokens, + }) + }) +} diff --git a/src/runtime/server/lib/oauth/twitch.ts b/src/runtime/server/lib/oauth/twitch.ts index 4cbcf1f8..251df839 100644 --- a/src/runtime/server/lib/oauth/twitch.ts +++ b/src/runtime/server/lib/oauth/twitch.ts @@ -68,8 +68,8 @@ export function defineOAuthTwitchEventHandler({ config, onSuccess, onError }: OA const query = getQuery<{ code?: string }>(event) - if (!config.clientId) { - return handleMissingConfiguration(event, 'twitch', ['clientId'], onError) + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'twitch', ['clientId', 'clientSecret'], onError) } const redirectURL = config.redirectURL || getOAuthRedirectURL(event) diff --git a/src/runtime/server/lib/oauth/workos.ts b/src/runtime/server/lib/oauth/workos.ts new file mode 100644 index 00000000..125d56a1 --- /dev/null +++ b/src/runtime/server/lib/oauth/workos.ts @@ -0,0 +1,130 @@ +import type { H3Event } from 'h3' +import { eventHandler, getQuery, sendRedirect, getRequestIP, getRequestHeader } from 'h3' +import { withQuery } from 'ufo' +import { defu } from 'defu' +import { handleMissingConfiguration, handleAccessTokenErrorResponse, getOAuthRedirectURL, requestAccessToken } from '../utils' +import { useRuntimeConfig } from '#imports' +import type { OAuthConfig } from '#auth-utils' + +/** + * WorkOS OAuth Configuration + * @see https://workos.com/docs/reference/user-management/authentication + */ +export interface OAuthWorkOSConfig { + /** + * WorkOS OAuth Client ID *required + * @default process.env.NUXT_OAUTH_WORKOS_CLIENT_ID + */ + clientId?: string + /** + * WorkOS OAuth Client Secret (API Key) *required + * @default process.env.NUXT_OAUTH_WORKOS_CLIENT_SECRET + */ + clientSecret?: string + /** + * WorkOS OAuth Organization ID *not required + * @default process.env.NUXT_OAUTH_WORKOS_ORGANIZATION_ID + */ + organizationId?: string + /** + * WorkOS OAuth Connection ID *not required + * @default process.env.NUXT_OAUTH_WORKOS_CONNECTION_ID + */ + connectionId?: string + /** + * WorkOS OAuth screen hint *not required + * @default 'sign-in' + */ + screenHint?: 'sign-in' | 'sign-up' + /** + * Redirect URL to to allow overriding for situations like prod failing to determine public hostname + * @default process.env.NUXT_OAUTH_WORKOS_REDIRECT_URL or current URL + */ + redirectURL?: string +} + +export interface OAuthWorkOSUser { + object: 'user' + id: string + email: string + first_name: string | null + last_name: string | null + email_verified: boolean + profile_picture_url: string | null + created_at: string + updated_at: string +} + +export type OAuthWorkOSAuthenticationMethod = 'SSO' | 'Password' | 'AppleOAuth' | 'GitHubOAuth' | 'GoogleOAuth' | 'MicrosoftOAuth' | 'MagicAuth' | 'Impersonation' + +export interface OAuthWorkOSAuthenticateResponse { + user: OAuthWorkOSUser + organization_id: string | null + access_token: string + refresh_token: string + error: string | null + error_description: string | null + authentication_method: OAuthWorkOSAuthenticationMethod +} + +export interface OAuthWorkOSTokens { + access_token: string + refresh_token: string +} + +export function defineOAuthWorkOSEventHandler({ config, onSuccess, onError }: OAuthConfig) { + return eventHandler(async (event: H3Event) => { + config = defu(config, useRuntimeConfig(event).oauth?.workos, { screen_hint: 'sign-in' }) as OAuthWorkOSConfig + + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'workos', ['clientId', 'clientSecret'], onError) + } + + const query = getQuery<{ code?: string, state?: string, error?: string, error_description?: string }>(event) + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) + + if (query.error) { + return handleAccessTokenErrorResponse(event, 'workos', query, onError) + } + + if (!query.code) { + // Redirect to WorkOS Oauth page + return sendRedirect( + event, + withQuery('https://api.workos.com/user_management/authorize', { + response_type: 'code', + provider: 'authkit', + client_id: config.clientId, + redirect_uri: redirectURL || undefined, + connection_id: config.connectionId || undefined, + screen_hint: config.screenHint || 'sign-in', + organization_id: config.organizationId || undefined, + }), + ) + } + + const authenticateResponse: OAuthWorkOSAuthenticateResponse = await requestAccessToken('https://api.workos.com/user_management/authenticate', { + headers: { + 'Content-Type': 'application/json', + }, + body: { + grant_type: 'authorization_code', + client_id: config.clientId, + client_secret: config.clientSecret, + redirect_uri: redirectURL, + ip_address: getRequestIP(event), + user_agent: getRequestHeader(event, 'user-agent'), + code: query.code, + }, + }) + + if (authenticateResponse.error) { + return handleAccessTokenErrorResponse(event, 'workos', authenticateResponse, onError) + } + + return onSuccess(event, { + tokens: { access_token: authenticateResponse.access_token, refresh_token: authenticateResponse.refresh_token }, + user: authenticateResponse.user, + }) + }) +} diff --git a/src/runtime/server/lib/oauth/x.ts b/src/runtime/server/lib/oauth/x.ts index 489bfacf..f94a41e7 100644 --- a/src/runtime/server/lib/oauth/x.ts +++ b/src/runtime/server/lib/oauth/x.ts @@ -80,8 +80,8 @@ export function defineOAuthXEventHandler({ const query = getQuery<{ code?: string }>(event) - if (!config.clientId) { - return handleMissingConfiguration(event, 'x', ['clientId'], onError) + if (!config.clientId || !config.clientSecret) { + return handleMissingConfiguration(event, 'x', ['clientId', 'clientSecret'], onError) } const redirectURL = config.redirectURL || getOAuthRedirectURL(event) diff --git a/src/runtime/server/lib/oauth/xsuaa.ts b/src/runtime/server/lib/oauth/xsuaa.ts index b997e96f..4a290545 100644 --- a/src/runtime/server/lib/oauth/xsuaa.ts +++ b/src/runtime/server/lib/oauth/xsuaa.ts @@ -75,7 +75,7 @@ export function defineOAuthXSUAAEventHandler({ config, onSuccess, onError }: OAu }) if (tokens.error) { - return handleAccessTokenErrorResponse(event, 'auth0', tokens, onError) + return handleAccessTokenErrorResponse(event, 'xsuaa', tokens, onError) } const tokenType = tokens.token_type diff --git a/src/runtime/server/lib/oauth/zitadel.ts b/src/runtime/server/lib/oauth/zitadel.ts new file mode 100644 index 00000000..9a073518 --- /dev/null +++ b/src/runtime/server/lib/oauth/zitadel.ts @@ -0,0 +1,129 @@ +import type { H3Event } from 'h3' +import { eventHandler, getQuery, sendRedirect } from 'h3' +import { withQuery } from 'ufo' +import { defu } from 'defu' +import { handleMissingConfiguration, handleAccessTokenErrorResponse, getOAuthRedirectURL, requestAccessToken } from '../utils' +import { useRuntimeConfig, createError } from '#imports' +import type { OAuthConfig } from '#auth-utils' + +export interface OAuthZitadelConfig { + /** + * ZITADEL OAuth Client ID + * @default process.env.NUXT_OAUTH_ZITADEL_CLIENT_ID + */ + clientId?: string + /** + * ZITADEL OAuth Client Secret + * @default process.env.NUXT_OAUTH_ZITADEL_CLIENT_SECRET + */ + clientSecret?: string + /** + * ZITADEL OAuth Domain + * @example .zitadel.cloud + * @default process.env.NUXT_OAUTH_ZITADEL_DOMAIN + */ + domain?: string + /** + * ZITADEL OAuth Scope + * @default ['openid'] + * @see https://zitadel.com/docs/apis/openidoauth/scopes + * @example ['openid', 'profile', 'email'] + */ + scope?: string[] + /** + * Extra authorization parameters to provide to the authorization URL + * @example { ui_locales: 'de-CH de en' } + */ + authorizationParams?: Record + /** + * Redirect URL to allow overriding for situations like prod failing to determine public hostname + * @default process.env.NUXT_OAUTH_ZITADEL_REDIRECT_URL or current URL + */ + redirectURL?: string +} + +export function defineOAuthZitadelEventHandler({ config, onSuccess, onError }: OAuthConfig) { + return eventHandler(async (event: H3Event) => { + config = defu(config, useRuntimeConfig(event).oauth?.zitadel, { + authorizationParams: {}, + }) as OAuthZitadelConfig + + const query = getQuery<{ code?: string, error?: string }>(event) + + if (query.error) { + const error = createError({ + statusCode: 401, + message: `Zitadel login failed: ${query.error || 'Unknown error'}`, + data: query, + }) + if (!onError) throw error + return onError(event, error) + } + + if (!config.clientId || !config.clientSecret || !config.domain) { + return handleMissingConfiguration(event, 'zitadel', ['clientId', 'clientSecret', 'issuerUrl'], onError) + } + + const authorizationURL = `https://${config.domain}/oauth/v2/authorize` + const tokenURL = `https://${config.domain}/oauth/v2/token` + const redirectURL = config.redirectURL || getOAuthRedirectURL(event) + + if (!query.code) { + config.scope = config.scope || ['openid'] + // Redirect to Zitadel OAuth page + + return sendRedirect( + event, + withQuery(authorizationURL, { + response_type: 'code', + client_id: config.clientId, + redirect_uri: redirectURL, + scope: config.scope.join(' '), + ...config.authorizationParams, + }), + ) + } + + const tokens = await requestAccessToken(tokenURL, { + headers: { + 'Authorization': `Basic ${Buffer.from(`${config.clientId}:${config.clientSecret}`).toString('base64')}`, + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: { + grant_type: 'authorization_code', + client_id: config.clientId, + redirect_uri: redirectURL, + code: query.code, + }, + }) + + if (tokens.error) { + return handleAccessTokenErrorResponse(event, 'zitadel', tokens, onError) + } + + const accessToken = tokens.access_token + // Fetch user info + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const user: any = await $fetch(`https://${config.domain}/oidc/v1/userinfo`, { + headers: { + Authorization: `Bearer ${accessToken}`, + Accept: 'application/json', + }, + }) + + if (!user) { + const error = createError({ + statusCode: 500, + message: 'Could not get Zitadel user', + data: tokens, + }) + if (!onError) throw error + return onError(event, error) + } + + return onSuccess(event, { + user, + tokens, + }) + }) +} diff --git a/src/runtime/server/lib/utils.ts b/src/runtime/server/lib/utils.ts index e290c5c9..f2ee99ca 100644 --- a/src/runtime/server/lib/utils.ts +++ b/src/runtime/server/lib/utils.ts @@ -2,6 +2,7 @@ import type { H3Event } from 'h3' import { getRequestURL } from 'h3' import { FetchError } from 'ofetch' import { snakeCase, upperFirst } from 'scule' +import * as jose from 'jose' import type { OAuthProvider, OnError } from '#auth-utils' import { createError } from '#imports' @@ -22,6 +23,7 @@ export interface RequestAccessTokenBody { redirect_uri: string client_id: string client_secret?: string + [key: string]: string | undefined } interface RequestAccessTokenOptions { @@ -48,7 +50,7 @@ export async function requestAccessToken(url: string, options: RequestAccessToke // Encode the body as a URLSearchParams if the content type is 'application/x-www-form-urlencoded'. const body = headers['Content-Type'] === 'application/x-www-form-urlencoded' ? new URLSearchParams(options.body as unknown as Record || options.params || {}, - ).toString() + ).toString() : options.body return $fetch(url, { @@ -97,3 +99,60 @@ export function handleMissingConfiguration(event: H3Event, provider: OAuthProvid if (!onError) throw error return onError(event, error) } + +/** + * JWT signing using jose + * + * @see https://github.com/panva/jose + */ + +interface JWTSignOptions { + privateKey: string + keyId: string + teamId?: string + clientId?: string + algorithm?: 'ES256' | 'RS256' + expiresIn?: string // e.g., '5m', '1h' +} + +export async function signJwt>( + payload: T, + options: JWTSignOptions, +): Promise { + const now = Math.floor(Date.now() / 1000) + const privateKey = await jose.importPKCS8( + options.privateKey.replace(/\\n/g, '\n'), + options.algorithm || 'ES256', + ) + + return new jose.SignJWT(payload) + .setProtectedHeader({ alg: options.algorithm || 'ES256', kid: options.keyId }) + .setIssuedAt(now) + .setExpirationTime(options.expiresIn || '5m') + .sign(privateKey) +} + +/** + * Verify a JWT token using jose - will throw error if invalid + * + * @see https://github.com/panva/jose + */ +interface JWTVerifyOptions { + publicJwkUrl: string + audience: string + issuer: string +} + +export async function verifyJwt( + token: string, + options: JWTVerifyOptions, +): Promise { + const JWKS = jose.createRemoteJWKSet(new URL(options.publicJwkUrl)) + + const { payload } = await jose.jwtVerify(token, JWKS, { + audience: options.audience, + issuer: options.issuer, + }) + + return payload as T +} diff --git a/src/runtime/server/lib/webauthn/authenticate.ts b/src/runtime/server/lib/webauthn/authenticate.ts index c8ba0c9b..c3453495 100644 --- a/src/runtime/server/lib/webauthn/authenticate.ts +++ b/src/runtime/server/lib/webauthn/authenticate.ts @@ -2,21 +2,11 @@ import { eventHandler, H3Error, createError, getRequestURL, readBody } from 'h3' import type { GenerateAuthenticationOptionsOpts } from '@simplewebauthn/server' import { generateAuthenticationOptions, verifyAuthenticationResponse } from '@simplewebauthn/server' import defu from 'defu' -import type { AuthenticationResponseJSON } from '@simplewebauthn/types' import { getRandomValues } from 'uncrypto' import { base64URLStringToBuffer, bufferToBase64URLString } from '@simplewebauthn/browser' import { useRuntimeConfig } from '#imports' import type { WebAuthnAuthenticateEventHandlerOptions, WebAuthnCredential } from '#auth-utils' - -type AuthenticationBody = { - verify: false - userName?: string -} | { - verify: true - attemptId: string - userName?: string - response: AuthenticationResponseJSON -} +import type { AuthenticationBody } from '~/src/runtime/types/webauthn' export function defineWebAuthnAuthenticateEventHandler({ storeChallenge, @@ -30,20 +20,20 @@ export function defineWebAuthnAuthenticateEventHandler { const url = getRequestURL(event) const body = await readBody(event) - const _config = defu(await getOptions?.(event) ?? {}, useRuntimeConfig(event).webauthn.authenticate, { + const _config = defu(await getOptions?.(event, body) ?? {}, useRuntimeConfig(event).webauthn.authenticate, { rpID: url.hostname, } satisfies GenerateAuthenticationOptionsOpts) - if (allowCredentials && body.userName) { - _config.allowCredentials = await allowCredentials(event, body.userName) - } - if (!storeChallenge) { _config.challenge = '' } try { if (!body.verify) { + if (allowCredentials && body.userName) { + _config.allowCredentials = await allowCredentials(event, body.userName) + } + const options = await generateAuthenticationOptions(_config as GenerateAuthenticationOptionsOpts) const attemptId = bufferToBase64URLString(getRandomValues(new Uint8Array(32))) @@ -71,6 +61,7 @@ export function defineWebAuthnAuthenticateEventHandler = { - user: T - verify: false -} | { - user: T - verify: true - attemptId: string - response: RegistrationResponseJSON -} +import type { RegistrationBody, ValidateUserFunction } from '~/src/runtime/types/webauthn' export function defineWebAuthnRegisterEventHandler({ storeChallenge, getChallenge, getOptions, validateUser, + excludeCredentials, onSuccess, onError, }: WebAuthnRegisterEventHandlerOptions) { @@ -38,10 +29,10 @@ export function defineWebAuthnRegisterEventHandler({ let user = body.user if (validateUser) { - user = await validateUserData(body.user, validateUser) + user = await validateUserData(body.user, event, validateUser) } - const _config = defu(await getOptions?.(event) ?? {}, useRuntimeConfig(event).webauthn.register, { + const _config = defu(await getOptions?.(event, body) ?? {}, useRuntimeConfig(event).webauthn.register, { rpID: url.hostname, rpName: url.hostname, userName: user.userName, @@ -57,6 +48,10 @@ export function defineWebAuthnRegisterEventHandler({ try { if (!body.verify) { + if (excludeCredentials) { + _config.excludeCredentials = await excludeCredentials(event, user.userName) + } + const options = await generateRegistrationOptions(_config as GenerateRegistrationOptionsOpts) const attemptId = bufferToBase64URLString(getRandomValues(new Uint8Array(32))) @@ -123,18 +118,19 @@ export function defineWebAuthnRegisterEventHandler({ // Taken from h3 export async function validateUserData( - data: unknown, - fn: ValidateFunction, + userBody: WebAuthnUser, + event: H3Event, + fn: ValidateUserFunction, ): Promise { try { - const res = await fn(data) + const res = await fn(userBody, event) if (res === false) { throw createUserValidationError() } if (res === true) { - return data as T + return userBody as T } - return res ?? (data as T) + return res ?? (userBody as T) } catch (error) { throw createUserValidationError(error as Error) @@ -143,8 +139,8 @@ export async function validateUserData( // eslint-disable-next-line @typescript-eslint/no-explicit-any function createUserValidationError(validateError?: any) { throw createError({ - status: 400, - message: 'User Validation Error', + status: validateError?.statusCode || 400, + message: validateError?.message || 'User Validation Error', data: validateError, }) } diff --git a/src/runtime/server/plugins/oauth.ts b/src/runtime/server/plugins/oauth.ts index 4a26b245..d2bc3cac 100644 --- a/src/runtime/server/plugins/oauth.ts +++ b/src/runtime/server/plugins/oauth.ts @@ -1,7 +1,6 @@ -import type { NitroApp } from 'nitropack' import { defineNitroPlugin } from 'nitropack/runtime' -export default defineNitroPlugin((nitroApp: NitroApp) => { +export default defineNitroPlugin((nitroApp) => { if ( (process.env.NUXT_OAUTH_FACEBOOK_CLIENT_ID && process.env.NUXT_OAUTH_FACEBOOK_CLIENT_SECRET) || (process.env.NUXT_OAUTH_INSTAGRAM_CLIENT_ID && process.env.NUXT_OAUTH_INSTAGRAM_CLIENT_SECRET) diff --git a/src/runtime/server/plugins/ws.ts b/src/runtime/server/plugins/ws.ts new file mode 100644 index 00000000..be6d8aa5 --- /dev/null +++ b/src/runtime/server/plugins/ws.ts @@ -0,0 +1,9 @@ +import { defineNitroPlugin } from 'nitropack/runtime' +import { getUserSession } from '../utils/session' + +export default defineNitroPlugin((nitroApp) => { + // Init the session before the first WebSocket upgrade + nitroApp.hooks.hook('request', async (event) => { + await getUserSession(event) + }) +}) diff --git a/src/runtime/server/utils/session.ts b/src/runtime/server/utils/session.ts index dd7d7c3e..9db1d7f3 100644 --- a/src/runtime/server/utils/session.ts +++ b/src/runtime/server/utils/session.ts @@ -1,10 +1,12 @@ import type { H3Event, SessionConfig } from 'h3' -import { useSession, createError } from 'h3' +import { useSession, createError, isEvent } from 'h3' import { defu } from 'defu' import { createHooks } from 'hookable' import { useRuntimeConfig, useStorage } from '#imports' import type { UserSession, UserSessionRequired } from '#auth-utils' +type UseSessionEvent = Parameters[0] + export interface SessionHooks { /** * Called when fetching the session from the API @@ -27,7 +29,7 @@ export const sessionHooks = createHooks() * If not provided, falls back to autoExtendSession runtime config value. * @returns The user session */ -export async function getUserSession(event: H3Event, extendSession?: boolean) { +export async function getUserSession(event: UseSessionEvent, extendSession?: boolean) { const runtimeConfig = useRuntimeConfig(event) const session = await _useSession(event) @@ -123,14 +125,21 @@ export async function clearUserSession(event: H3Event, config?: Partial { +export async function requireUserSession(event: UseSessionEvent, opts: { statusCode?: number, message?: string } = {}): Promise { const userSession = await getUserSession(event) if (!userSession.user) { - throw createError({ - statusCode: opts.statusCode || 401, - message: opts.message || 'Unauthorized', - }) + if (isEvent(event)) { + throw createError({ + statusCode: opts.statusCode || 401, + message: opts.message || 'Unauthorized', + }) + } + else { + throw new Response(opts.message || 'Unauthorized', { + status: opts.statusCode || 401, + }) + } } return userSession as UserSessionRequired @@ -169,12 +178,11 @@ export async function cleanupOrphanedUserSessions() { let sessionConfig: SessionConfig -function _useSession(event: H3Event, config: Partial = {}) { +function _useSession(event: UseSessionEvent, config: Partial = {}) { if (!sessionConfig) { - const runtimeConfig = useRuntimeConfig(event) + const runtimeConfig = useRuntimeConfig(isEvent(event) ? event : undefined) const envSessionPassword = `${runtimeConfig.nitro?.envPrefix || 'NUXT_'}SESSION_PASSWORD` - // @ts-expect-error hard to define with defu sessionConfig = defu({ password: process.env[envSessionPassword] }, runtimeConfig.session) } const finalConfig = defu(config, sessionConfig) as SessionConfig diff --git a/src/runtime/types/oauth-config.ts b/src/runtime/types/oauth-config.ts index e5abff95..079e2862 100644 --- a/src/runtime/types/oauth-config.ts +++ b/src/runtime/types/oauth-config.ts @@ -1,6 +1,6 @@ import type { H3Event, H3Error } from 'h3' -export type OAuthProvider = 'auth0' | 'battledotnet' | 'cognito' | 'discord' | 'dropbox' | 'facebook' | 'github' | 'gitlab' | 'google' | 'instagram' | 'keycloak' | 'linear' | 'linkedin' | 'microsoft' | 'paypal' | 'polar' | 'spotify' | 'steam' | 'tiktok' | 'twitch' | 'vk' | 'x' | 'xsuaa' | 'yandex' | (string & {}) +export type OAuthProvider = 'atlassian' | 'auth0' | 'authentik' | 'battledotnet' | 'cognito' | 'discord' | 'dropbox' | 'facebook' | 'github' | 'gitlab' | 'google' | 'hubspot' | 'instagram' | 'keycloak' | 'line' | 'linear' | 'linkedin' | 'microsoft' | 'paypal' | 'polar' | 'spotify' | 'seznam' | 'steam' | 'strava' | 'tiktok' | 'twitch' | 'vk' | 'workos' | 'x' | 'xsuaa' | 'yandex' | 'zitadel' | 'apple' | (string & {}) export type OnError = (event: H3Event, error: H3Error) => Promise | void diff --git a/src/runtime/types/webauthn.ts b/src/runtime/types/webauthn.ts index 6de5bdda..03a1d9f1 100644 --- a/src/runtime/types/webauthn.ts +++ b/src/runtime/types/webauthn.ts @@ -1,6 +1,6 @@ -import type { AuthenticatorTransportFuture } from '@simplewebauthn/types' +import type { AuthenticationResponseJSON, AuthenticatorTransportFuture, RegistrationResponseJSON } from '@simplewebauthn/types' import type { Ref } from 'vue' -import type { H3Event, H3Error, ValidateFunction } from 'h3' +import type { H3Event, H3Error, ValidateResult } from 'h3' import type { GenerateAuthenticationOptionsOpts, GenerateRegistrationOptionsOpts, @@ -23,7 +23,7 @@ export interface WebAuthnUser { [key: string]: unknown } -type AllowCredentials = NonNullable +type CredentialsList = NonNullable // Using a discriminated union makes it such that you can only define both storeChallenge and getChallenge or neither type WebAuthnEventHandlerBase> = { @@ -38,22 +38,45 @@ type WebAuthnEventHandlerBase> = { onError?: (event: H3Event, error: H3Error) => void | Promise } +export type RegistrationBody = { + user: T + verify: false +} | { + user: T + verify: true + attemptId: string + response: RegistrationResponseJSON +} + +export type ValidateUserFunction = (userBody: WebAuthnUser, event: H3Event) => ValidateResult | Promise> + export type WebAuthnRegisterEventHandlerOptions = WebAuthnEventHandlerBase<{ user: T credential: WebAuthnCredential registrationInfo: Exclude }> & { - getOptions?: (event: H3Event) => GenerateRegistrationOptionsOpts | Promise - validateUser?: ValidateFunction + getOptions?: (event: H3Event, body: RegistrationBody) => Partial | Promise> + validateUser?: ValidateUserFunction + excludeCredentials?: (event: H3Event, userName: string) => CredentialsList | Promise +} + +export type AuthenticationBody = { + verify: false + userName?: string +} | { + verify: true + attemptId: string + userName?: string + response: AuthenticationResponseJSON } export type WebAuthnAuthenticateEventHandlerOptions = WebAuthnEventHandlerBase<{ credential: T authenticationInfo: Exclude }> & { - getOptions?: (event: H3Event) => Partial | Promise> + getOptions?: (event: H3Event, body: AuthenticationBody) => Partial | Promise> getCredential: (event: H3Event, credentialID: string) => T | Promise - allowCredentials?: (event: H3Event, userName: string) => AllowCredentials | Promise + allowCredentials?: (event: H3Event, userName: string) => CredentialsList | Promise } export interface WebAuthnComposable { diff --git a/test/fixtures/basic/nuxt.config.ts b/test/fixtures/basic/nuxt.config.ts index 41ece7d5..b0aa2d1e 100644 --- a/test/fixtures/basic/nuxt.config.ts +++ b/test/fixtures/basic/nuxt.config.ts @@ -2,4 +2,6 @@ export default defineNuxtConfig({ modules: [ '../../../src/module', ], + + compatibilityDate: '2024-12-13', })