diff --git a/.env.example b/.env.example index 601a0ed..4137763 100644 --- a/.env.example +++ b/.env.example @@ -19,6 +19,25 @@ AUTH_ENABLE_SIGNUP=false # Both halves are required before the GitHub button is offered. GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= +# Organizations are off unless this is exactly "true". Enabling them requires a working mail +# transport below, because invitations are delivered by email. +AUTH_ENABLE_ORGANIZATIONS=false +# Whether any signed-in user may create an organization. Ignored while organizations are off. +AUTH_ALLOW_ORGANIZATION_CREATION=false + +# Mail (packages/mail). "console" logs instead of delivering and is the default, so an +# unconfigured deployment cannot silently attempt real delivery. Use "resend" or "smtp" in +# production. +MAIL_PROVIDER=console +MAIL_FROM=noreply@example.com +# Required when MAIL_PROVIDER=resend. +RESEND_API_KEY= +# Required when MAIL_PROVIDER=smtp. SMTP_SECURE is implicit TLS: true on 465, false on 587. +SMTP_HOST= +SMTP_PORT=587 +SMTP_SECURE=false +SMTP_USER= +SMTP_PASSWORD= # Dashboard (apps/dashboard). Points the Better Auth client at the adapter. Sign-in capabilities # are derived from AUTH_ENABLE_SIGNUP and the GitHub OAuth credentials above at build time, so diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9d1a895..57c24aa 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -89,3 +89,38 @@ jobs: - name: ๐Ÿ“ฆ Verify package version run: | node --input-type=module --eval "Promise.all([import('./packages/shared/dist/index.mjs'), import('./packages/shared/package.json', { with: { type: 'json' } })]).then(([built, pkg]) => { if (built.version !== pkg.default.version) { console.error('Injected version', built.version, 'does not match package.json version', pkg.default.version); process.exit(1) } })" + + knip: + name: ๐Ÿงน Unused code check + runs-on: ubuntu-24.04-arm + + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup + uses: ./.github/actions/setup-toolchain + + - name: ๐Ÿงน Check for unused code + run: aube run knip + + i18n: + name: ๐ŸŒ i18n validation + runs-on: ubuntu-24.04-arm + + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup + uses: ./.github/actions/setup-toolchain + + - name: ๐ŸŒ Check for missing or dynamic i18n keys + run: aube run i18n:report + + - name: ๐ŸŒ Check i18n schema is up to date + run: | + aube run i18n:schema + git diff --exit-code packages/i18n/schemas packages/i18n/locales diff --git a/apps/auth-server/package.json b/apps/auth-server/package.json index 3fe8937..7cb45c2 100644 --- a/apps/auth-server/package.json +++ b/apps/auth-server/package.json @@ -6,7 +6,7 @@ "scripts": { "build": "tsdown", "clean": "tsc -b --clean", - "dev": "node --import tsx --watch src/index.ts", + "dev": "node --env-file-if-exists=../../.env --import tsx --watch src/index.ts", "lint": "oxlint --config ../../.oxlintrc.json --type-aware --type-check src", "start": "node dist/index.js", "test": "vitest run src --passWithNoTests", @@ -14,6 +14,7 @@ }, "dependencies": { "@agent-zero/auth": "workspace:*", + "@agent-zero/mail": "workspace:*", "@agent-zero/shared": "workspace:*", "@hono/node-server": "^1.19.17", "hono": "^4.13.1" diff --git a/apps/auth-server/src/index.ts b/apps/auth-server/src/index.ts index b45be6f..63ca8f5 100644 --- a/apps/auth-server/src/index.ts +++ b/apps/auth-server/src/index.ts @@ -1,6 +1,7 @@ import process from 'node:process'; import { authOptionsFromEnvironment, createAuth } from '@agent-zero/auth'; +import { createMailer, mailProviderNameFromEnvironment } from '@agent-zero/mail'; import { redactSecrets, secretValuesFromEnvironment } from '@agent-zero/shared'; import { serve } from '@hono/node-server'; import { Hono } from 'hono'; @@ -37,7 +38,31 @@ function resolvePort(value: string | undefined): number { } const options = authOptionsFromEnvironment(); -const auth = createAuth(options); + +// This process is the composition root for authentication, so it is where the mail transport is +// bound and injected. `packages/auth` declares the delivery contract structurally and never +// imports `@agent-zero/mail`, which keeps one capability package from depending on another. +// +// The transport is only injected when the configured provider actually delivers: the console +// default logs an envelope instead of sending, so wiring it in would satisfy `createAuth`'s +// startup guard while every invitation silently reached nobody. Withholding the callback lets +// that guard fail startup when organizations are enabled without a real transport. +const sendMail = createMailer(); +const deliversMail = mailProviderNameFromEnvironment() !== 'console'; + +const auth = createAuth({ + ...options, + ...(deliversMail + ? { + sendInvitationEmail: ({ to, organizationName, inviterName, acceptUrl }) => + sendMail({ + to, + templateId: 'organizationInvitation', + context: { organizationName, inviterName, acceptUrl }, + }), + } + : {}), +}); const app = new Hono(); diff --git a/apps/dashboard/app/app.vue b/apps/dashboard/app/app.vue index 766c398..66e8078 100644 --- a/apps/dashboard/app/app.vue +++ b/apps/dashboard/app/app.vue @@ -7,9 +7,9 @@ diff --git a/apps/dashboard/app/types/dashboard.ts b/apps/dashboard/app/modules/dashboard/types/dashboard.ts similarity index 100% rename from apps/dashboard/app/types/dashboard.ts rename to apps/dashboard/app/modules/dashboard/types/dashboard.ts diff --git a/apps/dashboard/app/modules/organizations/components/InviteForm.vue b/apps/dashboard/app/modules/organizations/components/InviteForm.vue new file mode 100644 index 0000000..9fd1ed1 --- /dev/null +++ b/apps/dashboard/app/modules/organizations/components/InviteForm.vue @@ -0,0 +1,86 @@ + + + diff --git a/apps/dashboard/app/modules/organizations/components/MemberList.vue b/apps/dashboard/app/modules/organizations/components/MemberList.vue new file mode 100644 index 0000000..c8df3e8 --- /dev/null +++ b/apps/dashboard/app/modules/organizations/components/MemberList.vue @@ -0,0 +1,49 @@ + + + diff --git a/apps/dashboard/app/modules/organizations/components/Switcher.vue b/apps/dashboard/app/modules/organizations/components/Switcher.vue new file mode 100644 index 0000000..cbdbcb8 --- /dev/null +++ b/apps/dashboard/app/modules/organizations/components/Switcher.vue @@ -0,0 +1,34 @@ + + + diff --git a/apps/dashboard/app/modules/organizations/composables/useOrganizations.ts b/apps/dashboard/app/modules/organizations/composables/useOrganizations.ts new file mode 100644 index 0000000..bc93bd0 --- /dev/null +++ b/apps/dashboard/app/modules/organizations/composables/useOrganizations.ts @@ -0,0 +1,158 @@ +// Imported explicitly rather than relying on Nuxt auto-imports: the package's plain `tsc` pass +// checks `app/**/*.ts` without the generated auto-import declarations that `vue-tsc` sees. +import { useAuthClient } from '@onmax/nuxt-better-auth/composables'; +import { useState } from 'nuxt/app'; + +import type { Organization, OrganizationMember, OrganizationRole } from '../types/organization.js'; + +/** Surface the server's message without assuming a shape the plugin may not return. */ +function messageFrom(cause: unknown): string { + if (cause && typeof cause === 'object' && 'message' in cause) { + const { message } = cause as { message?: unknown }; + if (typeof message === 'string' && message !== '') return message; + } + return 'organizations.errors.generic'; +} + +/** + * Better Auth client calls resolve with `{ data, error }` rather than rejecting on an API error. + * Throwing the resolved error routes it through `run`'s shared handling, so a failed action + * surfaces instead of looking successful with empty data. Checked inline at each call site + * because a generic unwrap helper collapses the client's `{ data, error }` union to `{}`. + */ +function throwOnApiError(apiError: unknown): void { + if (apiError) throw apiError; +} + +/** + * Organization state for the dashboard. + * + * Wraps the Better Auth client so components deal in plain reactive state and a few actions + * rather than in client-plugin call shapes. Every mutation refetches rather than patching local + * state: the auth server owns membership and roles, and a locally patched list would diverge the + * moment a call is rejected by a policy the dashboard cannot see. + */ +export function useOrganizations() { + // Null in client-only mode before hydration, so every action guards on it rather than assuming + // a client exists. + const client = useAuthClient(); + + const organizations = useState('organizations', () => []); + const activeOrganization = useState('organizations:active', () => null); + const members = useState('organizations:members', () => []); + const pending = useState('organizations:pending', () => false); + const error = useState('organizations:error', () => null); + + /** + * Run one client call with shared pending and error handling. + * + * The null check lives here so each action stays a single call: before hydration there is no + * client, and that is an ordinary "nothing to do yet" rather than an error to surface. + */ + async function run( + action: (authClient: NonNullable) => Promise, + ): Promise { + if (!client) return undefined; + pending.value = true; + error.value = null; + try { + return await action(client); + } catch (cause) { + error.value = messageFrom(cause); + return undefined; + } finally { + pending.value = false; + } + } + + async function refresh() { + await run(async (authClient) => { + const { data, error: apiError } = await authClient.organization.list(); + throwOnApiError(apiError); + organizations.value = data ?? []; + }); + // A fresh session arrives with no active organization while the switcher renders the first + // entry, so the selection is synchronized here or members and invitations would stay + // disabled until the user re-selects manually. + const first = organizations.value[0]; + if (!activeOrganization.value && first) await setActive(first.id); + } + + async function refreshMembers() { + const organizationId = activeOrganization.value?.id; + if (!organizationId) { + members.value = []; + return; + } + await run(async (authClient) => { + const { data, error: apiError } = await authClient.organization.listMembers({ + query: { organizationId }, + }); + throwOnApiError(apiError); + members.value = data?.members ?? []; + }); + } + + async function setActive(organizationId: string) { + await run(async (authClient) => { + const { data, error: apiError } = await authClient.organization.setActive({ organizationId }); + throwOnApiError(apiError); + activeOrganization.value = data ?? null; + }); + await refreshMembers(); + } + + async function create(input: { name: string; slug: string }) { + const created = await run(async (authClient) => { + const { data, error: apiError } = await authClient.organization.create(input); + throwOnApiError(apiError); + return data; + }); + if (created) await refresh(); + return created; + } + + async function inviteMember(input: { email: string; role: OrganizationRole }) { + const organizationId = activeOrganization.value?.id; + if (!organizationId) return undefined; + return run(async (authClient) => { + const { data, error: apiError } = await authClient.organization.inviteMember({ + ...input, + organizationId, + }); + throwOnApiError(apiError); + return data; + }); + } + + async function removeMember(memberIdOrEmail: string) { + const organizationId = activeOrganization.value?.id; + if (!organizationId) return; + // Only refresh after a successful removal: refreshMembers() runs through `run()` too, which + // clears `error` at its start, so an unconditional refresh would wipe out a failed removal's + // error the moment the refresh itself succeeds. + const removed = await run(async (authClient) => { + const { error: apiError } = await authClient.organization.removeMember({ + memberIdOrEmail, + organizationId, + }); + throwOnApiError(apiError); + return true; + }); + if (removed) await refreshMembers(); + } + + return { + organizations, + activeOrganization, + members, + pending, + error, + refresh, + refreshMembers, + setActive, + create, + inviteMember, + removeMember, + }; +} diff --git a/apps/dashboard/app/modules/organizations/types/organization.ts b/apps/dashboard/app/modules/organizations/types/organization.ts new file mode 100644 index 0000000..0d34a72 --- /dev/null +++ b/apps/dashboard/app/modules/organizations/types/organization.ts @@ -0,0 +1,28 @@ +/** + * The organization shapes the dashboard renders. + * + * Declared here rather than imported from `@agent-zero/auth`: that package pulls Better Auth and + * its database adapter, which must not reach a browser bundle. These mirror the fields the client + * plugin returns, narrowed to what the UI actually reads. + */ + +/** Roles the invitation and member views can assign. */ +export const ORGANIZATION_ROLES = ['member', 'admin', 'owner'] as const; + +export type OrganizationRole = (typeof ORGANIZATION_ROLES)[number]; + +export interface Organization { + readonly id: string; + readonly name: string; + readonly slug: string; + readonly logo?: string | null; +} + +export interface OrganizationMember { + readonly id: string; + readonly role: string; + readonly user: { + readonly name: string; + readonly email: string; + }; +} diff --git a/apps/dashboard/app/components/ColorModeToggle.vue b/apps/dashboard/app/modules/shared/components/ColorModeToggle.vue similarity index 100% rename from apps/dashboard/app/components/ColorModeToggle.vue rename to apps/dashboard/app/modules/shared/components/ColorModeToggle.vue diff --git a/apps/dashboard/app/components/ErrorPage.vue b/apps/dashboard/app/modules/shared/components/ErrorPage.vue similarity index 97% rename from apps/dashboard/app/components/ErrorPage.vue rename to apps/dashboard/app/modules/shared/components/ErrorPage.vue index 28f1466..ce85a6f 100644 --- a/apps/dashboard/app/components/ErrorPage.vue +++ b/apps/dashboard/app/modules/shared/components/ErrorPage.vue @@ -28,7 +28,7 @@ import { isNotFoundStatus, isServerErrorStatus, resolveErrorStatus, -} from '#shared/utils/error-status'; +} from '~/modules/shared/utils/error-status'; const { error } = defineProps<{ error: NuxtError; diff --git a/apps/dashboard/app/components/LocaleSwitcher.vue b/apps/dashboard/app/modules/shared/components/LocaleSwitcher.vue similarity index 90% rename from apps/dashboard/app/components/LocaleSwitcher.vue rename to apps/dashboard/app/modules/shared/components/LocaleSwitcher.vue index a7e7f43..e627504 100644 --- a/apps/dashboard/app/components/LocaleSwitcher.vue +++ b/apps/dashboard/app/modules/shared/components/LocaleSwitcher.vue @@ -12,8 +12,8 @@ diff --git a/apps/dashboard/app/pages/(organizations)/organizations/index.vue b/apps/dashboard/app/pages/(organizations)/organizations/index.vue new file mode 100644 index 0000000..96e6288 --- /dev/null +++ b/apps/dashboard/app/pages/(organizations)/organizations/index.vue @@ -0,0 +1,33 @@ + + + diff --git a/apps/dashboard/app/plugins/.gitkeep b/apps/dashboard/app/plugins/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/dashboard/app/types/.gitkeep b/apps/dashboard/app/types/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/dashboard/nuxt.config.ts b/apps/dashboard/nuxt.config.ts index 6a1a9f1..a9595c2 100644 --- a/apps/dashboard/nuxt.config.ts +++ b/apps/dashboard/nuxt.config.ts @@ -1,9 +1,12 @@ +import { dirname, join } from 'node:path'; +import { fileURLToPath } from 'node:url'; + +import { defaultLocale, i18nLocales, localeCookieName } from '@agent-zero/i18n'; import { defineNuxtConfig } from 'nuxt/config'; import { app, ui } from './config/app.js'; import { authConfigFromEnvironment, defaultAuthServerUrl, loginPath } from './config/auth.js'; import { stripEmptyI18nMessagesPlugin } from './config/i18n-empty-placeholders.js'; -import { defaultLocale, i18nLocales, localeCookieName } from './config/i18n.js'; // Resolved once at config evaluation so the dashboard publishes the same sign-in policy the auth // server derives from the shared environment (AUTH_ENABLE_SIGNUP, GitHub OAuth credentials). @@ -13,6 +16,20 @@ import { defaultLocale, i18nLocales, localeCookieName } from './config/i18n.js'; // page, never open a sign-in method the server rejects. const authPolicy = authConfigFromEnvironment(); +// `@nuxtjs/i18n`'s `langDir` does not support absolute paths in production, so a module-provided +// locale directory has to be wired through each locale's `files` entries instead (the module's own +// documented pattern for this). `@agent-zero/i18n` keeps `i18nLocales.files` package-relative +// (`en/common.json`) so it stays portable; this is the one place that resolves them against the +// installed package's real `locales/` directory. +const i18nPackageDirectory = dirname( + fileURLToPath(import.meta.resolve('@agent-zero/i18n/package.json')), +); +const i18nLocalesDirectory = join(i18nPackageDirectory, 'locales'); +const resolvedI18nLocales = i18nLocales.map((locale) => ({ + ...locale, + files: locale.files.map((file) => join(i18nLocalesDirectory, file)), +})); + export default defineNuxtConfig({ compatibilityDate: '2026-08-09', devtools: { enabled: false }, @@ -40,6 +57,28 @@ export default defineNuxtConfig({ ], ], css: ['~/assets/css/main.css'], + // Components live under per-module roots instead of the default `app/components`, matching + // supastarter's modules/ layout (with `shared` as its own module), so each root is + // registered explicitly. Nesting under each root still derives the auto-import prefix from the + // relative sub-path exactly like the default scanner did, so tag names (e.g. , + // ) are unchanged. + components: [ + { path: '~/modules/shared/components' }, + { path: '~/modules/auth/components' }, + { path: '~/modules/dashboard/components' }, + // Prefixed so the module's generic names (Switcher, MemberList, InviteForm) cannot collide + // with another module's component of the same name. + { path: '~/modules/organizations/components', prefix: 'Organizations' }, + ], + imports: { + // Composables also moved out of `app/composables`; Nuxt auto-imports by exported symbol name, + // so call sites (useAuthErrorMessage(), useSidebarCollapsed()) are unaffected. + dirs: [ + 'modules/auth/composables', + 'modules/shared/composables', + 'modules/organizations/composables', + ], + }, icon: { // The dashboard owns no Nitro routes and its e2e suite asserts that nothing hits a local // /api/** path, so the icon component may never fall back to a server endpoint or the @@ -56,7 +95,7 @@ export default defineNuxtConfig({ plugins: [stripEmptyI18nMessagesPlugin()], }, i18n: { - locales: i18nLocales, + locales: resolvedI18nLocales, defaultLocale, // The dashboard is a single internal surface, so localised URL prefixes would only churn // route paths without buying any of the SEO they exist for. @@ -96,6 +135,7 @@ export default defineNuxtConfig({ auth: { enableSignup: authPolicy.enableSignup, enableGithubOauth: authPolicy.enableGithubOauth, + enableOrganizations: authPolicy.enableOrganizations, }, }, app: { @@ -107,6 +147,10 @@ export default defineNuxtConfig({ routeRules: { '/': { appLayout: 'default', auth: { only: 'user' } }, [loginPath]: { auth: { only: 'guest' } }, + '/organizations': { appLayout: 'default', auth: { only: 'user' } }, + // Reached from an invitation email, so the visitor is frequently signed out at that moment: + // requiring a session sends them through /login and back, rather than rejecting the link. + '/organizations/accept-invitation/**': { appLayout: 'default', auth: { only: 'user' } }, }, typescript: { strict: true, diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index b48ce0f..950b9bb 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -6,12 +6,6 @@ "build": "nuxt build", "clean": "nuxt cleanup && tsc -b --clean", "dev": "nuxt dev", - "i18n:check": "node scripts/compare-translations.ts", - "i18n:check:fix": "node scripts/compare-translations.ts --fix", - "i18n:report": "node scripts/find-invalid-translations.ts", - "i18n:report:fix": "node scripts/remove-unused-translations.ts", - "i18n:schema": "node scripts/generate-i18n-schema.ts", - "i18n:status": "node scripts/i18n-status.ts", "lint": "oxlint --config ../../.oxlintrc.json --type-aware --type-check app shared test", "start": "node .output/server/index.mjs", "start:playwright:webserver": "nuxt preview --port 5678", @@ -25,6 +19,7 @@ }, "dependencies": { "@agent-zero/auth": "workspace:*", + "@agent-zero/i18n": "workspace:*", "@onmax/nuxt-better-auth": "^0.0.7", "better-auth": "^1.6.26", "nuxt": "^4.5.2", @@ -32,7 +27,6 @@ }, "devDependencies": { "@iconify-json/lucide": "^1.2.123", - "@lunariajs/core": "https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935", "@nuxt/icon": "^2.5.0", "@nuxt/test-utils": "4.1.0", "@nuxtjs/color-mode": "4.0.1", @@ -47,7 +41,6 @@ "typescript": "^5.9.2", "unocss": "^66.7.5", "vitest": "^4.1.10", - "vue-i18n-extract": "2.0.7", "vue-tsc": "^3.1.2" } } diff --git a/apps/dashboard/test/nuxt/components/LocaleSwitcher.spec.ts b/apps/dashboard/test/nuxt/components/LocaleSwitcher.spec.ts index bbce0c9..2f636dc 100644 --- a/apps/dashboard/test/nuxt/components/LocaleSwitcher.spec.ts +++ b/apps/dashboard/test/nuxt/components/LocaleSwitcher.spec.ts @@ -1,7 +1,7 @@ import { mountSuspended } from '@nuxt/test-utils/runtime'; import { describe, expect, it, vi } from 'vitest'; -import LocaleSwitcher from '~/components/LocaleSwitcher.vue'; +import LocaleSwitcher from '~/modules/shared/components/LocaleSwitcher.vue'; describe('LocaleSwitcher', () => { it('lists every configured locale under its native label', async () => { diff --git a/apps/dashboard/test/nuxt/components/UserMenu.spec.ts b/apps/dashboard/test/nuxt/components/UserMenu.spec.ts index 96d4023..7122612 100644 --- a/apps/dashboard/test/nuxt/components/UserMenu.spec.ts +++ b/apps/dashboard/test/nuxt/components/UserMenu.spec.ts @@ -2,7 +2,7 @@ import { mockNuxtImport, mountSuspended } from '@nuxt/test-utils/runtime'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { computed, ref } from 'vue'; -import UserMenu from '~/components/UserMenu.vue'; +import UserMenu from '~/modules/auth/components/UserMenu.vue'; interface MockUser { name: string; diff --git a/apps/dashboard/test/nuxt/composables/useAuthErrorMessage.spec.ts b/apps/dashboard/test/nuxt/composables/useAuthErrorMessage.spec.ts index da2dda0..633478f 100644 --- a/apps/dashboard/test/nuxt/composables/useAuthErrorMessage.spec.ts +++ b/apps/dashboard/test/nuxt/composables/useAuthErrorMessage.spec.ts @@ -2,7 +2,7 @@ import { mountSuspended } from '@nuxt/test-utils/runtime'; import { describe, expect, it } from 'vitest'; import { defineComponent, h } from 'vue'; -import { useAuthErrorMessage } from '../../../app/composables/useAuthErrorMessage.js'; +import { useAuthErrorMessage } from '../../../app/modules/auth/composables/useAuthErrorMessage.js'; /** * `useAuthErrorMessage` needs a component context for `useI18n`, so the specs mount a bare diff --git a/apps/dashboard/test/nuxt/pages/login.spec.ts b/apps/dashboard/test/nuxt/pages/login.spec.ts index 433b97d..58ba948 100644 --- a/apps/dashboard/test/nuxt/pages/login.spec.ts +++ b/apps/dashboard/test/nuxt/pages/login.spec.ts @@ -2,7 +2,7 @@ import { mockNuxtImport, mountSuspended } from '@nuxt/test-utils/runtime'; import type { VueWrapper } from '@vue/test-utils'; import { beforeEach, describe, expect, it } from 'vitest'; -import LoginPage from '~/pages/login.vue'; +import LoginPage from '~/pages/(auth)/login.vue'; /** * The login page renders whatever sign-in capabilities `appConfig.auth` publishes, which diff --git a/apps/dashboard/test/unit/error-status.test.ts b/apps/dashboard/test/unit/error-status.test.ts index c45a1f9..da7677b 100644 --- a/apps/dashboard/test/unit/error-status.test.ts +++ b/apps/dashboard/test/unit/error-status.test.ts @@ -4,7 +4,7 @@ import { isNotFoundStatus, isServerErrorStatus, resolveErrorStatus, -} from '../../shared/utils/error-status.js'; +} from '../../app/modules/shared/utils/error-status.js'; describe('resolveErrorStatus', () => { it('prefers the Nuxt-normalized status', () => { diff --git a/apps/dashboard/tsconfig.json b/apps/dashboard/tsconfig.json index b314d1e..3ce55d3 100644 --- a/apps/dashboard/tsconfig.json +++ b/apps/dashboard/tsconfig.json @@ -2,18 +2,11 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "rootDir": ".", - "outDir": "dist", - // The i18n tooling under scripts/ runs directly through Node's type stripping, which resolves - // relative imports verbatim, so those specifiers must keep their real .ts extension. - "rewriteRelativeImportExtensions": true + "outDir": "dist" }, "include": [ "app/**/*.ts", "config/**/*.ts", - "shared/**/*.ts", - "i18n/locale-features.json", - "lunaria.config.ts", - "scripts/**/*.ts", "uno-preset-a11y.ts", "uno-preset-rtl.ts", "uno.config.ts", diff --git a/apps/dashboard/vitest.config.ts b/apps/dashboard/vitest.config.ts index 09b5a60..5e1cb98 100644 --- a/apps/dashboard/vitest.config.ts +++ b/apps/dashboard/vitest.config.ts @@ -23,13 +23,12 @@ export default defineConfig({ alias: { '~': fileURLToPath(new URL('./app', import.meta.url)), '~~': rootDir, - '#shared': fileURLToPath(new URL('./shared', import.meta.url)), }, }, test: { name: 'unit', environment: 'node', - include: ['test/unit/**/*.{test,spec}.ts', '{app,config,shared}/**/*.{test,spec}.ts'], + include: ['test/unit/**/*.{test,spec}.ts', '{app,config}/**/*.{test,spec}.ts'], }, }, await defineVitestProject({ diff --git a/knip.jsonc b/knip.jsonc index 4bea456..0735a37 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -13,6 +13,20 @@ "nano-staged", ], "workspaces": { + "packages/i18n": { + // Every i18n:* script is invoked directly (`node scripts/x.ts`) from package.json rather + // than imported, so each is its own entry point. lunaria.config.ts is discovered by + // @lunariajs/core's own filesystem convention, not imported. + "entry": ["src/index.ts", "scripts/*.ts", "lunaria.config.ts"], + }, + "packages/mail": { + // maizzle.config.ts is discovered by Maizzle's own `render()` call by filesystem + // convention (it walks up from the template path), not imported by anything in src/. + "entry": ["src/index.ts", "maizzle.config.ts"], + // Resolved by Maizzle's Tailwind integration from the package name, not imported + // directly: it registers itself as the `@maizzle/tailwindcss` plugin for `css.inline`. + "ignoreDependencies": ["@maizzle/tailwindcss"], + }, "apps/server": { // Nitro discovers server routes, middleware, and utilities from the // filesystem, so knip cannot see who references them. @@ -28,10 +42,11 @@ "app/error.vue", "app/pages/**/*.vue", "app/layouts/**/*.vue", - "app/components/**/*.vue", - "app/composables/**/*.ts", + "app/modules/**/*.vue", + "app/modules/**/*.ts", "app/middleware/**/*.ts", "app/plugins/**/*.ts", + "app/types/**/*.ts", "app/utils/**/*.ts", ], // The `nuxt` Vitest environment resolves to vitest-environment-nuxt, @@ -39,12 +54,10 @@ // loads the lucide collection by name at build time, so no source file // imports @iconify-json/lucide directly. "ignoreDependencies": ["vitest-environment-nuxt", "@iconify-json/lucide"], - // Nuxt resolves ~ to the app/ source directory, ~~ to the project root, - // and #shared to the shared/ directory. + // Nuxt resolves ~ to the app/ source directory and ~~ to the project root. "paths": { "~/*": ["app/*"], "~~/*": ["*"], - "#shared/*": ["shared/*"], }, }, }, diff --git a/package.json b/package.json index 84865c2..10e91ac 100644 --- a/package.json +++ b/package.json @@ -12,8 +12,10 @@ "dev": "turbo run dev", "format": "oxfmt .", "format:check": "oxfmt --check .", + "i18n:report": "turbo run i18n:report", + "i18n:schema": "turbo run i18n:schema", "i18n:status": "turbo run i18n:status", - "knip": "knip", + "knip": "turbo run build --filter=@agent-zero/i18n --filter=@agent-zero/auth && knip", "lint": "turbo run lint", "lint:ci": "aube run format:check && aube run lint && aube run knip", "prepare": "node .husky/install.mjs && skilld prepare --agent codex", diff --git a/packages/auth/drizzle/0001_peaceful_franklin_storm.sql b/packages/auth/drizzle/0001_peaceful_franklin_storm.sql new file mode 100644 index 0000000..63ad550 --- /dev/null +++ b/packages/auth/drizzle/0001_peaceful_franklin_storm.sql @@ -0,0 +1,41 @@ +CREATE TABLE "invitation" ( + "id" text PRIMARY KEY NOT NULL, + "organization_id" text NOT NULL, + "email" text NOT NULL, + "role" text, + "status" text NOT NULL, + "expires_at" timestamp with time zone NOT NULL, + "inviter_id" text NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "member" ( + "id" text PRIMARY KEY NOT NULL, + "organization_id" text NOT NULL, + "user_id" text NOT NULL, + "role" text NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "organization" ( + "id" text PRIMARY KEY NOT NULL, + "name" text NOT NULL, + "slug" text NOT NULL, + "logo" text, + "metadata" text, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone DEFAULT now() NOT NULL +); +--> statement-breakpoint +ALTER TABLE "session" ADD COLUMN "active_organization_id" text;--> statement-breakpoint +ALTER TABLE "invitation" ADD CONSTRAINT "invitation_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "invitation" ADD CONSTRAINT "invitation_inviter_id_user_id_fk" FOREIGN KEY ("inviter_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "member" ADD CONSTRAINT "member_organization_id_organization_id_fk" FOREIGN KEY ("organization_id") REFERENCES "public"."organization"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +ALTER TABLE "member" ADD CONSTRAINT "member_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint +CREATE INDEX "invitation_organization_id_idx" ON "invitation" USING btree ("organization_id");--> statement-breakpoint +CREATE INDEX "invitation_email_idx" ON "invitation" USING btree ("email");--> statement-breakpoint +CREATE UNIQUE INDEX "member_organization_user_unique" ON "member" USING btree ("organization_id","user_id");--> statement-breakpoint +CREATE INDEX "member_user_id_idx" ON "member" USING btree ("user_id");--> statement-breakpoint +CREATE UNIQUE INDEX "organization_slug_unique" ON "organization" USING btree ("slug"); \ No newline at end of file diff --git a/packages/auth/drizzle/meta/0001_snapshot.json b/packages/auth/drizzle/meta/0001_snapshot.json new file mode 100644 index 0000000..db11e37 --- /dev/null +++ b/packages/auth/drizzle/meta/0001_snapshot.json @@ -0,0 +1,688 @@ +{ + "id": "fcdfbaa4-55ba-48af-9ee4-01a9432e8d24", + "prevId": "69dbb32c-24e3-476a-be2f-cb20d37a19c4", + "version": "7", + "dialect": "postgresql", + "tables": { + "public.account": { + "name": "account", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "account_id": { + "name": "account_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "provider_id": { + "name": "provider_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "access_token_expires_at": { + "name": "access_token_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "refresh_token_expires_at": { + "name": "refresh_token_expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "account_user_id_idx": { + "name": "account_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "account_user_id_user_id_fk": { + "name": "account_user_id_user_id_fk", + "tableFrom": "account", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.invitation": { + "name": "invitation", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "status": { + "name": "status", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "inviter_id": { + "name": "inviter_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "invitation_organization_id_idx": { + "name": "invitation_organization_id_idx", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + }, + "invitation_email_idx": { + "name": "invitation_email_idx", + "columns": [ + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "invitation_organization_id_organization_id_fk": { + "name": "invitation_organization_id_organization_id_fk", + "tableFrom": "invitation", + "tableTo": "organization", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "invitation_inviter_id_user_id_fk": { + "name": "invitation_inviter_id_user_id_fk", + "tableFrom": "invitation", + "tableTo": "user", + "columnsFrom": ["inviter_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.member": { + "name": "member", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "organization_id": { + "name": "organization_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "member_organization_user_unique": { + "name": "member_organization_user_unique", + "columns": [ + { + "expression": "organization_id", + "isExpression": false, + "asc": true, + "nulls": "last" + }, + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "member_user_id_idx": { + "name": "member_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "member_organization_id_organization_id_fk": { + "name": "member_organization_id_organization_id_fk", + "tableFrom": "member", + "tableTo": "organization", + "columnsFrom": ["organization_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + }, + "member_user_id_user_id_fk": { + "name": "member_user_id_user_id_fk", + "tableFrom": "member", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.organization": { + "name": "organization", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "slug": { + "name": "slug", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "logo": { + "name": "logo", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "metadata": { + "name": "metadata", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "organization_slug_unique": { + "name": "organization_slug_unique", + "columns": [ + { + "expression": "slug", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.session": { + "name": "session", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "ip_address": { + "name": "ip_address", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "active_organization_id": { + "name": "active_organization_id", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "session_token_unique": { + "name": "session_token_unique", + "columns": [ + { + "expression": "token", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + }, + "session_user_id_idx": { + "name": "session_user_id_idx", + "columns": [ + { + "expression": "user_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": { + "session_user_id_user_id_fk": { + "name": "session_user_id_user_id_fk", + "tableFrom": "session", + "tableTo": "user", + "columnsFrom": ["user_id"], + "columnsTo": ["id"], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.user": { + "name": "user", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "email_verified": { + "name": "email_verified", + "type": "boolean", + "primaryKey": false, + "notNull": true, + "default": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "user_email_unique": { + "name": "user_email_unique", + "columns": [ + { + "expression": "email", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + }, + "public.verification": { + "name": "verification", + "schema": "", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true + }, + "identifier": { + "name": "identifier", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true + }, + "expires_at": { + "name": "expires_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true + }, + "created_at": { + "name": "created_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + }, + "updated_at": { + "name": "updated_at", + "type": "timestamp with time zone", + "primaryKey": false, + "notNull": true, + "default": "now()" + } + }, + "indexes": { + "verification_identifier_idx": { + "name": "verification_identifier_idx", + "columns": [ + { + "expression": "identifier", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": false, + "concurrently": false, + "method": "btree", + "with": {} + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "policies": {}, + "checkConstraints": {}, + "isRLSEnabled": false + } + }, + "enums": {}, + "schemas": {}, + "sequences": {}, + "roles": {}, + "policies": {}, + "views": {}, + "_meta": { + "columns": {}, + "schemas": {}, + "tables": {} + } +} diff --git a/packages/auth/drizzle/meta/_journal.json b/packages/auth/drizzle/meta/_journal.json index c55154a..94b8d1e 100644 --- a/packages/auth/drizzle/meta/_journal.json +++ b/packages/auth/drizzle/meta/_journal.json @@ -8,6 +8,13 @@ "when": 1786382437259, "tag": "0000_unusual_quentin_quire", "breakpoints": true + }, + { + "idx": 1, + "version": "7", + "when": 1786470134471, + "tag": "0001_peaceful_franklin_storm", + "breakpoints": true } ] } diff --git a/packages/auth/src/auth.test.ts b/packages/auth/src/auth.test.ts index 052520a..4f1f4bc 100644 --- a/packages/auth/src/auth.test.ts +++ b/packages/auth/src/auth.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from 'vitest'; -import { authOptionsFromEnvironment } from './auth.js'; +import { authOptionsFromEnvironment, createAuth } from './auth.js'; +import { defaultAuthConfig } from './config.js'; const completeEnvironment = { BETTER_AUTH_SECRET: 'a-very-secret-value', @@ -10,6 +11,7 @@ const completeEnvironment = { }; const MISSING_URL_MESSAGE = /missing required environment variable: BETTER_AUTH_URL/; +const MISSING_SEND_INVITATION_EMAIL_PATTERN = /sendInvitationEmail/; /** Return the failure message so assertions stay outside the catch block. */ function messageFrom(run: () => unknown): string { @@ -62,4 +64,37 @@ describe('authOptionsFromEnvironment', () => { expect(message).toMatch(MISSING_URL_MESSAGE); expect(message).not.toContain(completeEnvironment.BETTER_AUTH_SECRET); }); + + it('points invitation links at the dashboard, not at the auth server', () => { + const options = authOptionsFromEnvironment(completeEnvironment); + + // The recipient needs the UI that can accept the invitation; the auth origin only serves the + // Better Auth handler. + expect(options.dashboardUrl).toBe(completeEnvironment.AUTH_DASHBOARD_ORIGIN); + expect(options.dashboardUrl).not.toBe(options.baseUrl); + }); +}); + +describe('createAuth with organizations', () => { + const instanceOptions = { + databaseUrl: completeEnvironment.AUTH_DATABASE_URL, + secret: completeEnvironment.BETTER_AUTH_SECRET, + baseUrl: completeEnvironment.BETTER_AUTH_URL, + trustedOrigins: [completeEnvironment.AUTH_DASHBOARD_ORIGIN], + dashboardUrl: completeEnvironment.AUTH_DASHBOARD_ORIGIN, + }; + + it('refuses to construct when organizations are enabled without a delivery transport', () => { + // Otherwise an invitation is recorded and nobody is ever told about it. + expect(() => + createAuth({ + ...instanceOptions, + config: { ...defaultAuthConfig, enableOrganizations: true }, + }), + ).toThrow(MISSING_SEND_INVITATION_EMAIL_PATTERN); + }); + + it('constructs without a transport while organizations are off', () => { + expect(() => createAuth({ ...instanceOptions, config: defaultAuthConfig })).not.toThrow(); + }); }); diff --git a/packages/auth/src/auth.ts b/packages/auth/src/auth.ts index 2a14207..7e816a3 100644 --- a/packages/auth/src/auth.ts +++ b/packages/auth/src/auth.ts @@ -1,12 +1,27 @@ import { betterAuth } from 'better-auth'; import type { BetterAuthOptions } from 'better-auth'; import { drizzleAdapter } from 'better-auth/adapters/drizzle'; +import { organization } from 'better-auth/plugins'; import { authConfigFromEnvironment, githubCredentialsFromEnvironment } from './config.js'; import type { AuthConfig, GithubOauthCredentials } from './config.js'; import { createAuthDatabase } from './database.js'; import { schema } from './schema.js'; +/** + * Delivers an organization invitation. + * + * Declared structurally rather than imported from `@agent-zero/mail`: this package owns + * authentication policy, and taking a dependency on the mail package would make one capability + * package depend on another. The composition root supplies the implementation. + */ +export type SendInvitationEmail = (invitation: { + readonly to: string; + readonly organizationName: string; + readonly inviterName: string; + readonly acceptUrl: string; +}) => Promise; + /** Everything the Better Auth instance needs that is not policy. */ export interface AuthInstanceOptions { /** Postgres connection string holding users and sessions. */ @@ -17,8 +32,15 @@ export interface AuthInstanceOptions { readonly baseUrl: string; /** Origins allowed to complete a credentialed round trip, typically the dashboard. */ readonly trustedOrigins: readonly string[]; + /** Dashboard origin invitation links point at, so a recipient lands on the UI, not the API. */ + readonly dashboardUrl: string; readonly config: AuthConfig; readonly github?: GithubOauthCredentials; + /** + * How invitations are delivered. Required when organizations are enabled: without it an + * invitation would be created that nobody is ever told about. + */ + readonly sendInvitationEmail?: SendInvitationEmail; } /** @@ -29,6 +51,12 @@ export interface AuthInstanceOptions { */ export function createAuth(options: AuthInstanceOptions) { const { config } = options; + + // Fail at construction rather than at the first invitation: a deployment that enables + // organizations without a transport would accept invitations and silently never deliver them. + if (config.enableOrganizations && !options.sendInvitationEmail) + throw new Error('organizations are enabled but no sendInvitationEmail was provided'); + // Widened to the option type Better Auth declares. Left as the concrete adapter type, the // inferred return type embeds types TypeScript cannot name in the emitted declarations. const database: BetterAuthOptions['database'] = drizzleAdapter( @@ -52,9 +80,44 @@ export function createAuth(options: AuthInstanceOptions) { ...(options.github ? { socialProviders: { github: { ...options.github, disableSignUp: !config.enableSignup } } } : {}), + plugins: config.enableOrganizations + ? [ + organization({ + allowUserToCreateOrganization: config.allowUserToCreateOrganization, + membershipLimit: config.organizationMembershipLimit, + invitationExpiresIn: config.invitationExpiresInSeconds, + sendInvitationEmail: async (data) => { + // Checked in the guard above; narrowing here keeps the callback total. + const send = options.sendInvitationEmail; + if (!send) return; + await send({ + to: data.email, + organizationName: data.organization.name, + // Better Auth exposes the inviter as a member record wrapping the user. + inviterName: data.inviter.user.name, + acceptUrl: invitationAcceptUrl(options.dashboardUrl, data.id), + }); + }, + }), + ] + : [], }); } +/** + * Build the link an invitation email points at. + * + * Resolved against the dashboard origin rather than the auth server's: the recipient needs the UI + * that can accept the invitation, and `URL` keeps a misconfigured origin from silently producing + * a relative link. + */ +function invitationAcceptUrl(dashboardUrl: string, invitationId: string): string { + return new URL( + `/organizations/accept-invitation/${encodeURIComponent(invitationId)}`, + dashboardUrl, + ).toString(); +} + /** Missing configuration is a deployment error, not something to paper over with a default. */ function requireEnvironmentValue( environment: Readonly>, @@ -82,6 +145,8 @@ export function authOptionsFromEnvironment( secret: requireEnvironmentValue(environment, 'BETTER_AUTH_SECRET'), baseUrl: requireEnvironmentValue(environment, 'BETTER_AUTH_URL'), trustedOrigins: [dashboardOrigin], + // The same origin the dashboard is served from, so invitation links resolve to the UI. + dashboardUrl: dashboardOrigin, config: authConfigFromEnvironment(environment), ...(github ? { github } : {}), }; diff --git a/packages/auth/src/config.test.ts b/packages/auth/src/config.test.ts index 00bce19..a39430f 100644 --- a/packages/auth/src/config.test.ts +++ b/packages/auth/src/config.test.ts @@ -56,4 +56,28 @@ describe('authConfigFromEnvironment', () => { .enableGithubOauth, ).toBe(true); }); + + it('keeps organizations disabled unless explicitly opted in', () => { + expect(authConfigFromEnvironment({}).enableOrganizations).toBe(false); + expect( + authConfigFromEnvironment({ AUTH_ENABLE_ORGANIZATIONS: 'TRUE' }).enableOrganizations, + ).toBe(false); + expect( + authConfigFromEnvironment({ AUTH_ENABLE_ORGANIZATIONS: 'true' }).enableOrganizations, + ).toBe(true); + }); + + it('refuses to advertise organization creation while organizations are off', () => { + // A stale AUTH_ALLOW_ORGANIZATION_CREATION must not survive turning the feature back off. + expect( + authConfigFromEnvironment({ AUTH_ALLOW_ORGANIZATION_CREATION: 'true' }) + .allowUserToCreateOrganization, + ).toBe(false); + expect( + authConfigFromEnvironment({ + AUTH_ENABLE_ORGANIZATIONS: 'true', + AUTH_ALLOW_ORGANIZATION_CREATION: 'true', + }).allowUserToCreateOrganization, + ).toBe(true); + }); }); diff --git a/packages/auth/src/config.ts b/packages/auth/src/config.ts index db6b417..97ab919 100644 --- a/packages/auth/src/config.ts +++ b/packages/auth/src/config.ts @@ -10,6 +10,12 @@ export const MINIMUM_PASSWORD_LENGTH = 8; /** How long a session stays valid without re-authentication. */ export const SESSION_MAXIMUM_AGE_SECONDS = 60 * 60 * 24 * 7; +/** How long an unaccepted organization invitation stays valid. */ +export const INVITATION_EXPIRES_IN_SECONDS = 60 * 60 * 48; + +/** Upper bound on members in a single organization. */ +export const ORGANIZATION_MEMBERSHIP_LIMIT = 100; + /** Capabilities the deployment exposes on its sign-in surface. */ export interface AuthConfig { /** Whether new accounts may be created through the sign-in page. */ @@ -18,8 +24,19 @@ export interface AuthConfig { readonly enablePasswordLogin: boolean; /** Whether the GitHub OAuth button is offered. */ readonly enableGithubOauth: boolean; + /** Whether organizations, memberships and invitations are exposed at all. */ + readonly enableOrganizations: boolean; + /** + * Whether any signed-in user may create an organization. + * + * Separate from {@link enableOrganizations} so an operator can run a deployment where + * organizations exist but only pre-provisioned ones do. + */ + readonly allowUserToCreateOrganization: boolean; readonly minimumPasswordLength: number; readonly sessionMaximumAgeSeconds: number; + readonly invitationExpiresInSeconds: number; + readonly organizationMembershipLimit: number; } /** @@ -30,8 +47,15 @@ export const defaultAuthConfig: AuthConfig = { enableSignup: false, enablePasswordLogin: true, enableGithubOauth: false, + // Organizations stay off until an operator asks for them: enabling them changes what every + // authenticated request is scoped to, which is not something a deployment should acquire by + // upgrading. + enableOrganizations: false, + allowUserToCreateOrganization: false, minimumPasswordLength: MINIMUM_PASSWORD_LENGTH, sessionMaximumAgeSeconds: SESSION_MAXIMUM_AGE_SECONDS, + invitationExpiresInSeconds: INVITATION_EXPIRES_IN_SECONDS, + organizationMembershipLimit: ORGANIZATION_MEMBERSHIP_LIMIT, }; /** GitHub OAuth credentials, present only when both halves are configured. */ @@ -66,9 +90,15 @@ export function githubCredentialsFromEnvironment( export function authConfigFromEnvironment( environment: Readonly> = process.env, ): AuthConfig { + const enableOrganizations = environment.AUTH_ENABLE_ORGANIZATIONS === 'true'; return { ...defaultAuthConfig, enableSignup: environment.AUTH_ENABLE_SIGNUP === 'true', enableGithubOauth: githubCredentialsFromEnvironment(environment) !== undefined, + enableOrganizations, + // Gated on the feature itself, so a deployment that never turned organizations on cannot + // advertise creation through a stale variable. + allowUserToCreateOrganization: + enableOrganizations && environment.AUTH_ALLOW_ORGANIZATION_CREATION === 'true', }; } diff --git a/packages/auth/src/index.ts b/packages/auth/src/index.ts index 32d126f..a5ff3ff 100644 --- a/packages/auth/src/index.ts +++ b/packages/auth/src/index.ts @@ -3,6 +3,7 @@ export { createAuth, type AuthInstance, type AuthInstanceOptions, + type SendInvitationEmail, type Session, type User, } from './auth.js'; @@ -10,7 +11,9 @@ export { authConfigFromEnvironment, defaultAuthConfig, githubCredentialsFromEnvironment, + INVITATION_EXPIRES_IN_SECONDS, MINIMUM_PASSWORD_LENGTH, + ORGANIZATION_MEMBERSHIP_LIMIT, SESSION_MAXIMUM_AGE_SECONDS, type AuthConfig, type GithubOauthCredentials, diff --git a/packages/auth/src/schema.ts b/packages/auth/src/schema.ts index 759f581..74edfe9 100644 --- a/packages/auth/src/schema.ts +++ b/packages/auth/src/schema.ts @@ -38,6 +38,9 @@ export const session = pgTable( .notNull() // Signing out a deleted account must not leave a usable session behind. .references(() => user.id, { onDelete: 'cascade' }), + // Which organization the session is currently acting in. Written by the organization plugin + // when the user switches context; null means no organization is selected. + activeOrganizationId: text('active_organization_id'), ...timestampColumns, }, (table) => [ @@ -79,5 +82,67 @@ export const verification = pgTable( (table) => [index('verification_identifier_idx').on(table.identifier)], ); +export const organization = pgTable( + 'organization', + { + id: text('id').primaryKey(), + name: text('name').notNull(), + slug: text('slug').notNull(), + logo: text('logo'), + // Better Auth stores this as a JSON-encoded string, not as a jsonb column. + metadata: text('metadata'), + ...timestampColumns, + }, + // The slug addresses an organization in URLs, so collisions have to be rejected by the database + // rather than by whichever request happened to check first. + (table) => [uniqueIndex('organization_slug_unique').on(table.slug)], +); + +export const member = pgTable( + 'member', + { + id: text('id').primaryKey(), + organizationId: text('organization_id') + .notNull() + .references(() => organization.id, { onDelete: 'cascade' }), + userId: text('user_id') + .notNull() + // A deleted account must not keep conferring access to an organization. + .references(() => user.id, { onDelete: 'cascade' }), + role: text('role').notNull(), + ...timestampColumns, + }, + (table) => [ + // One membership per user per organization: a duplicate row would make role changes + // order-dependent and could silently re-grant a revoked role. + uniqueIndex('member_organization_user_unique').on(table.organizationId, table.userId), + index('member_user_id_idx').on(table.userId), + ], +); + +export const invitation = pgTable( + 'invitation', + { + id: text('id').primaryKey(), + organizationId: text('organization_id') + .notNull() + .references(() => organization.id, { onDelete: 'cascade' }), + email: text('email').notNull(), + role: text('role'), + status: text('status').notNull(), + expiresAt: timestamp('expires_at', { withTimezone: true }).notNull(), + inviterId: text('inviter_id') + .notNull() + .references(() => user.id, { onDelete: 'cascade' }), + ...timestampColumns, + }, + (table) => [ + index('invitation_organization_id_idx').on(table.organizationId), + // Accepting an invitation is a lookup by email; without this it degrades to a scan as the + // table accumulates expired rows. + index('invitation_email_idx').on(table.email), + ], +); + /** The object shape the Better Auth Drizzle adapter resolves models against. */ -export const schema = { user, session, account, verification }; +export const schema = { user, session, account, verification, organization, member, invitation }; diff --git a/apps/dashboard/i18n/locales/en/auth.json b/packages/i18n/locales/en/auth.json similarity index 100% rename from apps/dashboard/i18n/locales/en/auth.json rename to packages/i18n/locales/en/auth.json diff --git a/apps/dashboard/i18n/locales/en/common.json b/packages/i18n/locales/en/common.json similarity index 100% rename from apps/dashboard/i18n/locales/en/common.json rename to packages/i18n/locales/en/common.json diff --git a/apps/dashboard/i18n/locales/en/dashboard.json b/packages/i18n/locales/en/dashboard.json similarity index 100% rename from apps/dashboard/i18n/locales/en/dashboard.json rename to packages/i18n/locales/en/dashboard.json diff --git a/apps/dashboard/i18n/locales/en/errors.json b/packages/i18n/locales/en/errors.json similarity index 100% rename from apps/dashboard/i18n/locales/en/errors.json rename to packages/i18n/locales/en/errors.json diff --git a/packages/i18n/locales/en/organizations.json b/packages/i18n/locales/en/organizations.json new file mode 100644 index 0000000..a53ec64 --- /dev/null +++ b/packages/i18n/locales/en/organizations.json @@ -0,0 +1,43 @@ +{ + "$schema": "../../schemas/organizations.schema.json", + "organizations": { + "title": "Organizations", + "subtitle": "Members and invitations for the selected organization.", + "noneSelected": "Select an organization to manage its members.", + "switcher": { + "label": "Organization" + }, + "roles": { + "member": "Member", + "admin": "Admin", + "owner": "Owner" + }, + "members": { + "title": "Members", + "empty": "This organization has no members yet.", + "name": "Name", + "email": "Email", + "role": "Role", + "actions": "Actions", + "remove": "Remove" + }, + "invite": { + "title": "Invite a member", + "email": "Email", + "role": "Role", + "submit": "Send invitation", + "submitPending": "Sendingโ€ฆ", + "sent": "Invitation sent to {email}." + }, + "accept": { + "title": "Organization invitation", + "pending": "Accepting your invitationโ€ฆ", + "accepted": "You have joined the organization.", + "failed": "This invitation is no longer valid. It may have expired or already been used.", + "continue": "Go to dashboard" + }, + "errors": { + "generic": "That organization action could not be completed." + } + } +} diff --git a/apps/dashboard/i18n/locales/it/auth.json b/packages/i18n/locales/it/auth.json similarity index 100% rename from apps/dashboard/i18n/locales/it/auth.json rename to packages/i18n/locales/it/auth.json diff --git a/apps/dashboard/i18n/locales/it/common.json b/packages/i18n/locales/it/common.json similarity index 100% rename from apps/dashboard/i18n/locales/it/common.json rename to packages/i18n/locales/it/common.json diff --git a/apps/dashboard/i18n/locales/it/dashboard.json b/packages/i18n/locales/it/dashboard.json similarity index 100% rename from apps/dashboard/i18n/locales/it/dashboard.json rename to packages/i18n/locales/it/dashboard.json diff --git a/apps/dashboard/i18n/locales/it/errors.json b/packages/i18n/locales/it/errors.json similarity index 100% rename from apps/dashboard/i18n/locales/it/errors.json rename to packages/i18n/locales/it/errors.json diff --git a/packages/i18n/locales/it/organizations.json b/packages/i18n/locales/it/organizations.json new file mode 100644 index 0000000..1dac5a0 --- /dev/null +++ b/packages/i18n/locales/it/organizations.json @@ -0,0 +1,43 @@ +{ + "$schema": "../../schemas/organizations.schema.json", + "organizations": { + "title": "Organizzazioni", + "subtitle": "Membri e inviti dell'organizzazione selezionata.", + "noneSelected": "Seleziona un'organizzazione per gestirne i membri.", + "switcher": { + "label": "Organizzazione" + }, + "roles": { + "member": "Membro", + "admin": "Amministratore", + "owner": "Proprietario" + }, + "members": { + "title": "Membri", + "empty": "Questa organizzazione non ha ancora membri.", + "name": "Nome", + "email": "Email", + "role": "Ruolo", + "actions": "Azioni", + "remove": "Rimuovi" + }, + "invite": { + "title": "Invita un membro", + "email": "Email", + "role": "Ruolo", + "submit": "Invia invito", + "submitPending": "Invio in corsoโ€ฆ", + "sent": "Invito inviato a {email}." + }, + "accept": { + "title": "Invito all'organizzazione", + "pending": "Accettazione dell'invito in corsoโ€ฆ", + "accepted": "Sei entrato nell'organizzazione.", + "failed": "Questo invito non รจ piรน valido. Potrebbe essere scaduto o giร  stato usato.", + "continue": "Vai alla dashboard" + }, + "errors": { + "generic": "Non รจ stato possibile completare l'operazione sull'organizzazione." + } + } +} diff --git a/apps/dashboard/i18n/locale-features.json b/packages/i18n/locales/locale-features.json similarity index 66% rename from apps/dashboard/i18n/locale-features.json rename to packages/i18n/locales/locale-features.json index 7f33744..aa443db 100644 --- a/apps/dashboard/i18n/locale-features.json +++ b/packages/i18n/locales/locale-features.json @@ -1,3 +1,3 @@ { - "features": ["common.json", "errors.json", "auth.json", "dashboard.json"] + "features": ["common.json", "errors.json", "auth.json", "dashboard.json", "organizations.json"] } diff --git a/apps/dashboard/lunaria.config.ts b/packages/i18n/lunaria.config.ts similarity index 64% rename from apps/dashboard/lunaria.config.ts rename to packages/i18n/lunaria.config.ts index 4626553..8390c2a 100644 --- a/apps/dashboard/lunaria.config.ts +++ b/packages/i18n/lunaria.config.ts @@ -1,10 +1,10 @@ import type { Locale } from '@lunariajs/core'; import { defineConfig } from '@lunariajs/core/config'; -import { defaultLocale, locales } from './config/i18n.js'; +import { defaultLocale, locales } from './src/config.js'; -// Derived from `config/i18n.ts` so the translation status can never drift from the locales the -// dashboard actually ships. Lunaria wants a source locale plus a non-empty list of targets. +// Derived from `src/config.ts` so the translation status can never drift from the locales this +// package actually ships. Lunaria wants a source locale plus a non-empty list of targets. const sourceLocale: Locale = { label: locales[defaultLocale].label, lang: defaultLocale }; const targetLocales = Object.entries(locales) @@ -18,14 +18,14 @@ if (targetLocales.length === 0) { export default defineConfig({ repository: { name: 'wolfstar-project/agent-zero', - rootDir: 'apps/dashboard', + rootDir: 'packages/i18n', }, sourceLocale, locales: targetLocales as [Locale, ...Locale[]], files: [ { - include: ['i18n/locales/en/**/*.json'], - pattern: 'i18n/locales/@lang/@path', + include: ['locales/en/**/*.json'], + pattern: 'locales/@lang/@path', type: 'dictionary', }, ], diff --git a/packages/i18n/package.json b/packages/i18n/package.json new file mode 100644 index 0000000..648feb6 --- /dev/null +++ b/packages/i18n/package.json @@ -0,0 +1,50 @@ +{ + "name": "@agent-zero/i18n", + "version": "0.3.0", + "files": [ + "dist", + "locales", + "schemas" + ], + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "scripts": { + "build": "tsdown", + "clean": "tsc -b --clean", + "i18n:check": "node scripts/compare-translations.ts", + "i18n:check:fix": "node scripts/compare-translations.ts --fix", + "i18n:report": "node scripts/find-invalid-translations.ts", + "i18n:report:fix": "node scripts/remove-unused-translations.ts", + "i18n:schema": "node scripts/generate-i18n-schema.ts", + "i18n:status": "node scripts/i18n-status.ts", + "lint": "oxlint --config ../../.oxlintrc.json --type-aware --type-check src scripts", + "test": "vitest run src --passWithNoTests", + "typecheck": "tsc --project tsconfig.json --pretty false --noEmit" + }, + "dependencies": { + "@lunariajs/core": "https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935", + "vue-i18n-extract": "2.0.7" + }, + "devDependencies": { + "oxlint": "^1.44.0", + "oxlint-tsgolint": "^7.0.2001", + "tsdown": "^0.22.14", + "typescript": "^5.9.2", + "vitest": "^3.2.4" + } +} diff --git a/apps/dashboard/i18n/schemas/auth.schema.json b/packages/i18n/schemas/auth.schema.json similarity index 97% rename from apps/dashboard/i18n/schemas/auth.schema.json rename to packages/i18n/schemas/auth.schema.json index 124db14..078cfda 100644 --- a/apps/dashboard/i18n/schemas/auth.schema.json +++ b/packages/i18n/schemas/auth.schema.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Agent Zero dashboard i18n locale file (auth.json)", + "title": "Agent Zero i18n locale file (auth.json)", "description": "Schema for auth.json. Generated from en/auth.json โ€” do not edit manually.", "type": "object", "properties": { diff --git a/apps/dashboard/i18n/schemas/common.schema.json b/packages/i18n/schemas/common.schema.json similarity index 96% rename from apps/dashboard/i18n/schemas/common.schema.json rename to packages/i18n/schemas/common.schema.json index c62aab3..837a27a 100644 --- a/apps/dashboard/i18n/schemas/common.schema.json +++ b/packages/i18n/schemas/common.schema.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Agent Zero dashboard i18n locale file (common.json)", + "title": "Agent Zero i18n locale file (common.json)", "description": "Schema for common.json. Generated from en/common.json โ€” do not edit manually.", "type": "object", "properties": { diff --git a/apps/dashboard/i18n/schemas/dashboard.schema.json b/packages/i18n/schemas/dashboard.schema.json similarity index 98% rename from apps/dashboard/i18n/schemas/dashboard.schema.json rename to packages/i18n/schemas/dashboard.schema.json index 504a2de..03f89b8 100644 --- a/apps/dashboard/i18n/schemas/dashboard.schema.json +++ b/packages/i18n/schemas/dashboard.schema.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Agent Zero dashboard i18n locale file (dashboard.json)", + "title": "Agent Zero i18n locale file (dashboard.json)", "description": "Schema for dashboard.json. Generated from en/dashboard.json โ€” do not edit manually.", "type": "object", "properties": { diff --git a/apps/dashboard/i18n/schemas/errors.schema.json b/packages/i18n/schemas/errors.schema.json similarity index 92% rename from apps/dashboard/i18n/schemas/errors.schema.json rename to packages/i18n/schemas/errors.schema.json index 3e37f32..2a20190 100644 --- a/apps/dashboard/i18n/schemas/errors.schema.json +++ b/packages/i18n/schemas/errors.schema.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Agent Zero dashboard i18n locale file (errors.json)", + "title": "Agent Zero i18n locale file (errors.json)", "description": "Schema for errors.json. Generated from en/errors.json โ€” do not edit manually.", "type": "object", "properties": { diff --git a/packages/i18n/schemas/organizations.schema.json b/packages/i18n/schemas/organizations.schema.json new file mode 100644 index 0000000..50f0402 --- /dev/null +++ b/packages/i18n/schemas/organizations.schema.json @@ -0,0 +1,132 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Agent Zero i18n locale file (organizations.json)", + "description": "Schema for organizations.json. Generated from en/organizations.json โ€” do not edit manually.", + "type": "object", + "properties": { + "organizations": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "subtitle": { + "type": "string" + }, + "noneSelected": { + "type": "string" + }, + "switcher": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "additionalProperties": false + }, + "roles": { + "type": "object", + "properties": { + "member": { + "type": "string" + }, + "admin": { + "type": "string" + }, + "owner": { + "type": "string" + } + }, + "additionalProperties": false + }, + "members": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "empty": { + "type": "string" + }, + "name": { + "type": "string" + }, + "email": { + "type": "string" + }, + "role": { + "type": "string" + }, + "actions": { + "type": "string" + }, + "remove": { + "type": "string" + } + }, + "additionalProperties": false + }, + "invite": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "email": { + "type": "string" + }, + "role": { + "type": "string" + }, + "submit": { + "type": "string" + }, + "submitPending": { + "type": "string" + }, + "sent": { + "type": "string" + } + }, + "additionalProperties": false + }, + "accept": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "pending": { + "type": "string" + }, + "accepted": { + "type": "string" + }, + "failed": { + "type": "string" + }, + "continue": { + "type": "string" + } + }, + "additionalProperties": false + }, + "errors": { + "type": "object", + "properties": { + "generic": { + "type": "string" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false + }, + "$schema": { + "type": "string" + } + }, + "additionalProperties": false +} diff --git a/apps/dashboard/scripts/compare-translations.ts b/packages/i18n/scripts/compare-translations.ts similarity index 91% rename from apps/dashboard/scripts/compare-translations.ts rename to packages/i18n/scripts/compare-translations.ts index 985ae56..dfb2d60 100644 --- a/apps/dashboard/scripts/compare-translations.ts +++ b/packages/i18n/scripts/compare-translations.ts @@ -9,13 +9,15 @@ import { styleText } from 'node:util'; import { FEATURE_FILES, REFERENCE_LOCALE, + isJsonRecord, listLocaleCodes, localeFeatureAbsolutePath, readFeatureFile, withoutSchema, + type NestedObject, } from './utils/i18n-locale-files.ts'; -type NestedObject = Record; +const JSON_EXTENSION_PATTERN = /\.json$/; interface SyncStats { missing: string[]; @@ -24,9 +26,6 @@ interface SyncStats { locale: string; } -const isNested = (value: unknown): value is NestedObject => - value !== null && typeof value === 'object' && !Array.isArray(value); - function syncLocaleData( reference: NestedObject, target: NestedObject, @@ -41,8 +40,8 @@ function syncLocaleData( const propertyPath = prefix ? `${prefix}.${key}` : key; const referenceValue = reference[key]; - if (isNested(referenceValue)) { - const nextTarget = isNested(target[key]) ? target[key] : {}; + if (isJsonRecord(referenceValue)) { + const nextTarget = isJsonRecord(target[key]) ? target[key] : {}; const data = syncLocaleData(referenceValue, nextTarget, stats, fix, propertyPath); if (fix && Object.keys(data).length === 0) continue; result[key] = data; @@ -56,7 +55,8 @@ function syncLocaleData( if (fix) { // Empty placeholder, never the English source string: copying the reference text makes an // untranslated key indistinguishable from a real translation for Lunaria and translators. - // Empty leaves are stripped at build time (config/i18n-empty-placeholders.ts), so the + // Empty leaves are stripped at build time by the consuming app (see + // apps/dashboard/config/i18n-empty-placeholders.ts), so the // runtime falls back to English. result[key] = ''; } @@ -132,7 +132,7 @@ function reportLocale(locale: string, results: SyncStats[], fix: boolean): void function main(): void { const args = process.argv.slice(2); const fix = args.includes('--fix'); - const localeArg = args.find((arg) => arg !== '--fix')?.replace(/\.json$/, ''); + const localeArg = args.find((arg) => arg !== '--fix')?.replace(JSON_EXTENSION_PATTERN, ''); const locales = localeArg ? [localeArg] @@ -140,13 +140,13 @@ function main(): void { for (const locale of locales) { if (!existsSync(localeFeatureAbsolutePath(locale, FEATURE_FILES[0] ?? ''))) { - console.error(styleText('red', `Error: locale directory not found: i18n/locales/${locale}/`)); + console.error(styleText('red', `Error: locale directory not found: locales/${locale}/`)); process.exit(1); } } console.log(styleText('cyan', `=== Translation audit${fix ? ' (with --fix)' : ''} ===`)); - console.log(`Reference: i18n/locales/${REFERENCE_LOCALE}/{feature}.json`); + console.log(`Reference: locales/${REFERENCE_LOCALE}/{feature}.json`); console.log(`Checking ${locales.length} locale(s) ร— ${FEATURE_FILES.length} feature file(s)...`); let totalMissing = 0; diff --git a/apps/dashboard/scripts/find-invalid-translations.ts b/packages/i18n/scripts/find-invalid-translations.ts similarity index 90% rename from apps/dashboard/scripts/find-invalid-translations.ts rename to packages/i18n/scripts/find-invalid-translations.ts index 76d4a38..554e6aa 100644 --- a/apps/dashboard/scripts/find-invalid-translations.ts +++ b/packages/i18n/scripts/find-invalid-translations.ts @@ -1,7 +1,8 @@ /* oxlint-disable no-console -- audit reporting */ // Static i18n usage report, ported from wolfstar.rocks (Apache 2.0 license). -// Cross-checks the keys used in `app/**` against the reference catalog: missing and dynamic keys -// fail the run, unused keys are reported as warnings (see `i18n:report:fix` to remove them). +// Cross-checks the keys used in the consuming app's source against the reference catalog: missing +// and dynamic keys fail the run, unused keys are reported as warnings (see `i18n:report:fix` to +// remove them). import { mkdtemp, rm, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; @@ -16,7 +17,9 @@ import { loadMergedLocale, } from './utils/i18n-locale-files.ts'; -const VUE_FILES_GLOB = './app/**/*.?(vue|ts|js)'; +// apps/dashboard is this package's only current consumer; extend this list if a second one starts +// shipping translations here. +const VUE_FILES_GLOB = '../../apps/dashboard/app/**/*.?(vue|ts|js)'; function printSection( title: string, diff --git a/apps/dashboard/scripts/generate-i18n-schema.ts b/packages/i18n/scripts/generate-i18n-schema.ts similarity index 65% rename from apps/dashboard/scripts/generate-i18n-schema.ts rename to packages/i18n/scripts/generate-i18n-schema.ts index 829f482..6dec71e 100644 --- a/apps/dashboard/scripts/generate-i18n-schema.ts +++ b/packages/i18n/scripts/generate-i18n-schema.ts @@ -1,6 +1,6 @@ /* oxlint-disable no-console -- generation reporting */ // JSON Schema generator for the locale feature files, ported from wolfstar.rocks (Apache 2.0 -// license). Generates `i18n/schemas/{feature}.schema.json` from each `en/*` reference file and +// license). Generates `schemas/{feature}.schema.json` from each `en/*` reference file and // points every locale's copy at the matching schema, so editors validate structure and key names. import { mkdir, readFile, readdir, writeFile } from 'node:fs/promises'; import { join } from 'node:path'; @@ -10,13 +10,13 @@ import { FEATURE_FILES, LOCALES_DIRECTORY, REFERENCE_LOCALE, + isJsonRecord, localeFeatureAbsolutePath, + type NestedObject, } from './utils/i18n-locale-files.ts'; -const SCHEMAS_DIRECTORY = join(import.meta.dirname, '../i18n/schemas'); - -type Json = Record; -type LocaleJson = Json & { $schema?: string }; +const SCHEMAS_DIRECTORY = join(import.meta.dirname, '../schemas'); +const JSON_EXTENSION_PATTERN = /\.json$/; interface JsonSchema { $schema?: string; @@ -27,13 +27,13 @@ interface JsonSchema { additionalProperties?: boolean; } -function generateSubSchema(obj: Json): JsonSchema { +function generateSubSchema(obj: NestedObject): JsonSchema { const properties: Record = {}; for (const [key, value] of Object.entries(obj)) { if (key === '$schema') continue; - if (value !== null && typeof value === 'object' && !Array.isArray(value)) { - properties[key] = generateSubSchema(value as Json); + if (isJsonRecord(value)) { + properties[key] = generateSubSchema(value); } else { properties[key] = { type: 'string' }; } @@ -42,11 +42,13 @@ function generateSubSchema(obj: Json): JsonSchema { return { type: 'object', properties, additionalProperties: false }; } -function generateSchema(obj: LocaleJson, featureFile: string): JsonSchema { +// `$schema` is never read here โ€” it's skipped by generateSubSchema and only ever discarded by +// callers below โ€” so a plain NestedObject is sufficient; no dedicated "locale file" type is needed. +function generateSchema(obj: NestedObject, featureFile: string): JsonSchema { const baseSchema = generateSubSchema(obj); return { $schema: 'http://json-schema.org/draft-07/schema#', - title: `Agent Zero dashboard i18n locale file (${featureFile})`, + title: `Agent Zero i18n locale file (${featureFile})`, description: `Schema for ${featureFile}. Generated from ${REFERENCE_LOCALE}/${featureFile} โ€” do not edit manually.`, ...baseSchema, properties: { @@ -65,9 +67,11 @@ async function main(): Promise { for (const featureFile of FEATURE_FILES) { const referenceFilePath = localeFeatureAbsolutePath(REFERENCE_LOCALE, featureFile); - const referenceContent = JSON.parse(await readFile(referenceFilePath, 'utf-8')) as LocaleJson; - const schema = generateSchema(referenceContent, featureFile); - const schemaFileName = featureFile.replace(/\.json$/, '.schema.json'); + const referenceParsed: unknown = JSON.parse(await readFile(referenceFilePath, 'utf-8')); + if (!isJsonRecord(referenceParsed)) + throw new Error(`expected ${referenceFilePath} to contain a JSON object`); + const schema = generateSchema(referenceParsed, featureFile); + const schemaFileName = featureFile.replace(JSON_EXTENSION_PATTERN, '.schema.json'); const schemaFilePath = join(SCHEMAS_DIRECTORY, schemaFileName); await writeFile(schemaFilePath, `${JSON.stringify(schema, null, 2)}\n`, 'utf-8'); @@ -76,9 +80,10 @@ async function main(): Promise { const schemaRef = `../../schemas/${schemaFileName}`; for (const localeDirectory of localeDirectories) { const featurePath = join(LOCALES_DIRECTORY, localeDirectory, featureFile); - const { $schema: _, ...content } = JSON.parse( - await readFile(featurePath, 'utf-8'), - ) as LocaleJson; + const featureParsed: unknown = JSON.parse(await readFile(featurePath, 'utf-8')); + if (!isJsonRecord(featureParsed)) + throw new Error(`expected ${featurePath} to contain a JSON object`); + const { $schema: _, ...content } = featureParsed; await writeFile( featurePath, `${JSON.stringify({ $schema: schemaRef, ...content }, null, 2)}\n`, diff --git a/apps/dashboard/scripts/i18n-status.ts b/packages/i18n/scripts/i18n-status.ts similarity index 100% rename from apps/dashboard/scripts/i18n-status.ts rename to packages/i18n/scripts/i18n-status.ts diff --git a/apps/dashboard/scripts/remove-unused-translations.ts b/packages/i18n/scripts/remove-unused-translations.ts similarity index 80% rename from apps/dashboard/scripts/remove-unused-translations.ts rename to packages/i18n/scripts/remove-unused-translations.ts index 0ef5bcd..98fcd39 100644 --- a/apps/dashboard/scripts/remove-unused-translations.ts +++ b/packages/i18n/scripts/remove-unused-translations.ts @@ -1,6 +1,6 @@ /* oxlint-disable no-console -- audit reporting */ // Unused translation remover, ported from wolfstar.rocks (Apache 2.0 license). -// Removes catalog keys that no `app/**` file references (per vue-i18n-extract) from every +// Removes catalog keys that no consuming app file references (per vue-i18n-extract) from every // locale's feature files. Review the diff: dynamically-built keys are false positives. import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises'; import { tmpdir } from 'node:os'; @@ -13,14 +13,16 @@ import { createI18NReport, type I18NItem } from 'vue-i18n-extract'; import { FEATURE_FILES, REFERENCE_LOCALE, + isJsonRecord, listLocaleCodes, loadMergedLocale, localeFeatureAbsolutePath, + type NestedObject, } from './utils/i18n-locale-files.ts'; -const VUE_FILES_GLOB = './app/**/*.?(vue|ts|js)'; - -type NestedObject = Record; +// apps/dashboard is this package's only current consumer; extend this list if a second one starts +// shipping translations here. +const VUE_FILES_GLOB = '../../apps/dashboard/app/**/*.?(vue|ts|js)'; /** Removes a key path (e.g. "foo.bar.baz") from a nested object. Cleans up empty parents. */ function removeKey(obj: NestedObject, path: string): boolean { @@ -34,8 +36,8 @@ function removeKey(obj: NestedObject, path: string): boolean { return false; } const child = obj[first]; - if (child !== null && typeof child === 'object' && !Array.isArray(child)) { - const removed = removeKey(child as NestedObject, rest.join('.')); + if (isJsonRecord(child)) { + const removed = removeKey(child, rest.join('.')); if (removed && Object.keys(child).length === 0) { delete obj[first]; } @@ -80,10 +82,11 @@ async function run(): Promise { for (const locale of listLocaleCodes()) { for (const feature of FEATURE_FILES) { const filePath = localeFeatureAbsolutePath(locale, feature); - const content = JSON.parse(await readFile(filePath, 'utf-8')) as NestedObject; - const removed = removeKeysFromObject(content, uniquePaths); + const parsed: unknown = JSON.parse(await readFile(filePath, 'utf-8')); + if (!isJsonRecord(parsed)) throw new Error(`expected ${filePath} to contain a JSON object`); + const removed = removeKeysFromObject(parsed, uniquePaths); if (removed > 0) { - await writeFile(filePath, `${JSON.stringify(content, null, 2)}\n`, 'utf-8'); + await writeFile(filePath, `${JSON.stringify(parsed, null, 2)}\n`, 'utf-8'); console.log(styleText('yellow', ` ${locale}/${feature}: removed ${removed} key(s)`)); totalRemoved += removed; } diff --git a/apps/dashboard/scripts/utils/i18n-locale-files.ts b/packages/i18n/scripts/utils/i18n-locale-files.ts similarity index 65% rename from apps/dashboard/scripts/utils/i18n-locale-files.ts rename to packages/i18n/scripts/utils/i18n-locale-files.ts index c0cd6c1..76cf4de 100644 --- a/apps/dashboard/scripts/utils/i18n-locale-files.ts +++ b/packages/i18n/scripts/utils/i18n-locale-files.ts @@ -1,15 +1,24 @@ // Shared helpers for the i18n tooling scripts, ported from wolfstar.rocks (Apache 2.0 license). -// The dashboard splits every locale into feature files under `i18n/locales/{locale}/{feature}`. +// Every locale splits into feature files under `locales/{locale}/{feature}`. import { existsSync, readFileSync, readdirSync } from 'node:fs'; import { join } from 'node:path'; -import localeFeatures from '../../i18n/locale-features.json' with { type: 'json' }; +import localeFeatures from '../../locales/locale-features.json' with { type: 'json' }; -export const LOCALES_DIRECTORY = join(import.meta.dirname, '../../i18n/locales'); +export const LOCALES_DIRECTORY = join(import.meta.dirname, '../../locales'); export const REFERENCE_LOCALE = 'en'; export const FEATURE_FILES = localeFeatures.features as readonly string[]; -type NestedObject = Record; +export type NestedObject = Record; + +/** + * True for a JSON object (not null, not an array) โ€” the shape every locale and schema file uses. + * A type guard rather than a cast: `JSON.parse` returns `any`, and these files are hand-edited, so + * a malformed one (an array, a bare string) should fail loudly instead of being trusted. + */ +export function isJsonRecord(value: unknown): value is NestedObject { + return typeof value === 'object' && value !== null && !Array.isArray(value); +} /** Absolute path to a locale feature file. */ export function localeFeatureAbsolutePath(localeCode: string, featureFile: string): string { @@ -26,7 +35,9 @@ export function listLocaleCodes(): string[] { export function readFeatureFile(localeCode: string, featureFile: string): NestedObject { const filePath = localeFeatureAbsolutePath(localeCode, featureFile); - return JSON.parse(readFileSync(filePath, 'utf-8')) as NestedObject; + const parsed: unknown = JSON.parse(readFileSync(filePath, 'utf-8')); + if (!isJsonRecord(parsed)) throw new Error(`expected ${filePath} to contain a JSON object`); + return parsed; } /** Deep-merge all feature files for a locale into one object (for tooling reports). */ diff --git a/apps/dashboard/test/unit/i18n.test.ts b/packages/i18n/src/config.test.ts similarity index 82% rename from apps/dashboard/test/unit/i18n.test.ts rename to packages/i18n/src/config.test.ts index 009af1e..46ebcbc 100644 --- a/apps/dashboard/test/unit/i18n.test.ts +++ b/packages/i18n/src/config.test.ts @@ -3,10 +3,10 @@ import { join } from 'node:path'; import { describe, expect, it } from 'vitest'; -import { defaultLocale, locales } from '../../config/i18n.js'; -import lunariaConfig from '../../lunaria.config.js'; +import lunariaConfig from '../lunaria.config.js'; +import { defaultLocale, locales } from './config.js'; -const localesDirectory = join(import.meta.dirname, '../../i18n/locales'); +const localesDirectory = join(import.meta.dirname, '../locales'); const sourceLocale: string = defaultLocale; const localeEntries = Object.entries(locales).map(([lang, definition]) => ({ @@ -49,16 +49,16 @@ describe('translation dictionaries', () => { }); describe('lunaria configuration', () => { - // `lunaria.config.ts` derives its locales from `config/i18n.ts`; these assertions guard the + // `lunaria.config.ts` derives its locales from `src/config.ts`; these assertions guard the // derivation (source excluded from targets, labels preserved) rather than a manual copy. - it('tracks the same source locale as the dashboard', () => { + it('tracks the same source locale as this package ships', () => { expect(lunariaConfig.sourceLocale).toEqual({ label: sourceEntry?.label, lang: sourceEntry?.lang, }); }); - it('tracks every non-source locale the dashboard ships', () => { + it('tracks every non-source locale this package ships', () => { expect(lunariaConfig.locales).toEqual( targetLocales.map((entry) => ({ label: entry.label, lang: entry.lang })), ); diff --git a/apps/dashboard/config/i18n.ts b/packages/i18n/src/config.ts similarity index 87% rename from apps/dashboard/config/i18n.ts rename to packages/i18n/src/config.ts index 51eb9e8..64dd1cd 100644 --- a/apps/dashboard/config/i18n.ts +++ b/packages/i18n/src/config.ts @@ -1,6 +1,6 @@ -import localeFeatures from '../i18n/locale-features.json' with { type: 'json' }; +import localeFeatures from '../locales/locale-features.json' with { type: 'json' }; -/** Presentation metadata for a locale the dashboard ships translations for. */ +/** Presentation metadata for a locale a consuming app ships translations for. */ export interface LocaleDefinition { /** Name of the language, written in that language, for the locale switcher. */ readonly label: string; @@ -23,7 +23,7 @@ export const localeCookieName = 'agent-zero-locale'; /** * Feature message files loaded (and deep-merged) per locale via `files`. - * Layout: `i18n/locales/{locale}/{feature}.json` + * Layout: `locales/{locale}/{feature}.json` * * Translations are split by scope rather than kept in one file per locale, which is also the unit * Lunaria reports progress on. diff --git a/packages/i18n/src/index.ts b/packages/i18n/src/index.ts new file mode 100644 index 0000000..a7b819f --- /dev/null +++ b/packages/i18n/src/index.ts @@ -0,0 +1,8 @@ +export { + defaultLocale, + i18nLocales, + localeCookieName, + locales, + type LocaleCode, + type LocaleDefinition, +} from './config.js'; diff --git a/packages/i18n/tsconfig.json b/packages/i18n/tsconfig.json new file mode 100644 index 0000000..b7ea6ef --- /dev/null +++ b/packages/i18n/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": ".", + "outDir": "dist", + // The i18n tooling scripts run directly through Node's type stripping, which resolves + // relative imports verbatim, so those specifiers must keep their real .ts extension. + "rewriteRelativeImportExtensions": true + }, + "include": ["src/**/*.ts", "scripts/**/*.ts", "lunaria.config.ts", "locales/locale-features.json"] +} diff --git a/packages/i18n/tsdown.config.ts b/packages/i18n/tsdown.config.ts new file mode 100644 index 0000000..bcb566f --- /dev/null +++ b/packages/i18n/tsdown.config.ts @@ -0,0 +1,3 @@ +import { definePackageConfig } from '../../scripts/tsdown.config.ts'; + +export default definePackageConfig(); diff --git a/packages/mail/emails/EmailVerification.vue b/packages/mail/emails/EmailVerification.vue new file mode 100644 index 0000000..b528b43 --- /dev/null +++ b/packages/mail/emails/EmailVerification.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/mail/emails/OrganizationInvitation.vue b/packages/mail/emails/OrganizationInvitation.vue new file mode 100644 index 0000000..e0f92ea --- /dev/null +++ b/packages/mail/emails/OrganizationInvitation.vue @@ -0,0 +1,22 @@ + + + diff --git a/packages/mail/emails/PasswordReset.vue b/packages/mail/emails/PasswordReset.vue new file mode 100644 index 0000000..08b7d10 --- /dev/null +++ b/packages/mail/emails/PasswordReset.vue @@ -0,0 +1,23 @@ + + + diff --git a/packages/mail/emails/layouts/Base.vue b/packages/mail/emails/layouts/Base.vue new file mode 100644 index 0000000..8eb3340 --- /dev/null +++ b/packages/mail/emails/layouts/Base.vue @@ -0,0 +1,17 @@ + + + diff --git a/packages/mail/maizzle.config.ts b/packages/mail/maizzle.config.ts new file mode 100644 index 0000000..872616e --- /dev/null +++ b/packages/mail/maizzle.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from '@maizzle/framework'; + +/** + * Baseline render settings shared by every template. + * + * `sendEmail` merges the per-message context over this object, so anything declared here is + * available to templates through `useConfig()`. + */ +export default defineConfig({ + build: { + content: ['emails/**/*.vue'], + }, + css: { + inline: true, + purge: true, + }, +}); diff --git a/packages/mail/package.json b/packages/mail/package.json new file mode 100644 index 0000000..6950227 --- /dev/null +++ b/packages/mail/package.json @@ -0,0 +1,58 @@ +{ + "name": "@agent-zero/mail", + "version": "0.3.0", + "files": [ + "dist", + "emails" + ], + "type": "module", + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.mts", + "exports": { + ".": { + "import": { + "types": "./dist/index.d.mts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + }, + "./package.json": "./package.json" + }, + "scripts": { + "build": "tsdown", + "clean": "tsc -b --clean", + "lint": "oxlint --config ../../.oxlintrc.json --type-aware --type-check src", + "test": "vitest run src --passWithNoTests", + "typecheck": "tsc --project tsconfig.json --pretty false --noEmit" + }, + "dependencies": { + "@maizzle/framework": "^6.0.13", + "@maizzle/tailwindcss": "^1.5.6" + }, + "devDependencies": { + "@types/nodemailer": "^8.0.1", + "nodemailer": "^9.0.5", + "oxlint": "^1.44.0", + "oxlint-tsgolint": "^7.0.2001", + "resend": "6.17.1", + "tsdown": "^0.22.14", + "typescript": "^5.9.2", + "vitest": "^3.2.4" + }, + "peerDependencies": { + "nodemailer": "^9.0.5", + "resend": "^6.17.1" + }, + "peerDependenciesMeta": { + "nodemailer": { + "optional": true + }, + "resend": { + "optional": true + } + } +} diff --git a/packages/mail/src/index.ts b/packages/mail/src/index.ts new file mode 100644 index 0000000..4fff57a --- /dev/null +++ b/packages/mail/src/index.ts @@ -0,0 +1,21 @@ +export { + createMailer, + sendEmail, + type MailerOptions, + type SendEmail, + type SendEmailOptions, +} from './mail.js'; +export { + createConsoleProvider, + createResendProvider, + createSmtpProvider, + MAIL_PROVIDER_NAMES, + mailProviderFromEnvironment, + mailProviderNameFromEnvironment, + type MailProvider, + type MailProviderName, + type OutgoingMail, + type ResendProviderOptions, + type SmtpProviderOptions, +} from './provider/index.js'; +export { mailTemplates, type MailTemplateContext, type MailTemplateId } from './util/templates.js'; diff --git a/packages/mail/src/mail.test.ts b/packages/mail/src/mail.test.ts new file mode 100644 index 0000000..6df7caa --- /dev/null +++ b/packages/mail/src/mail.test.ts @@ -0,0 +1,134 @@ +import { describe, expect, it, vi } from 'vitest'; + +import { createMailer, sendEmail } from './mail.js'; +import type { OutgoingMail } from './provider/types.js'; + +const INLINE_STYLE_PATTERN = /style="/; +const LEAKED_CLASS_ATTRIBUTE_PATTERN = /class="/; +const MISSING_MAIL_FROM_PATTERN = /MAIL_FROM/; + +/** + * These render through the real Maizzle pipeline rather than a stub. Rendering is local and + * deterministic, and the failure this guards against โ€” a template that compiles but drops its + * interpolated values โ€” is invisible to a mocked renderer. + */ +function recordingProvider() { + const sent: OutgoingMail[] = []; + return { + sent, + provider: (mail: OutgoingMail) => { + sent.push(mail); + return Promise.resolve(); + }, + }; +} + +/** Narrows `OutgoingMail | undefined` without an unsafe cast, failing the test with a clear message. */ +function assertSent(mail: OutgoingMail | undefined): asserts mail is OutgoingMail { + if (!mail) throw new Error('expected a message to have been recorded'); +} + +describe('sendEmail', () => { + it('renders the invitation template with its context in both HTML and plaintext', async () => { + const { sent, provider } = recordingProvider(); + + await sendEmail( + { + to: 'invitee@example.com', + templateId: 'organizationInvitation', + context: { + organizationName: 'Acme Ops', + inviterName: 'Dana', + acceptUrl: 'https://dashboard.example.com/accept?token=abc', + }, + }, + { provider, from: 'noreply@example.com' }, + ); + + expect(sent).toHaveLength(1); + const [mail] = sent; + assertSent(mail); + expect(mail.to).toBe('invitee@example.com'); + expect(mail.from).toBe('noreply@example.com'); + expect(mail.subject).toBe('You have been invited to an organization'); + expect(mail.html).toContain('Acme Ops'); + expect(mail.html).toContain('Dana'); + expect(mail.html).toContain('https://dashboard.example.com/accept?token=abc'); + // Clients that refuse HTML still have to be able to act on the invitation. + expect(mail.text).toContain('Acme Ops'); + expect(mail.text).toContain('https://dashboard.example.com/accept?token=abc'); + }); + + it('inlines styles so the message survives clients that drop stylesheets', async () => { + const { sent, provider } = recordingProvider(); + + await sendEmail( + { + to: 'invitee@example.com', + templateId: 'passwordReset', + context: { name: 'Dana', resetUrl: 'https://dashboard.example.com/reset?token=abc' }, + }, + { provider, from: 'noreply@example.com' }, + ); + + const [mail] = sent; + assertSent(mail); + expect(mail.html).toMatch(INLINE_STYLE_PATTERN); + // Utility classes are inlined and purged; a leftover class attribute means the CSS step + // silently did nothing and the message would arrive unstyled. + expect(mail.html).not.toMatch(LEAKED_CLASS_ATTRIBUTE_PATTERN); + }); + + it('lets the caller override the registered subject', async () => { + const { sent, provider } = recordingProvider(); + + await sendEmail( + { + to: 'invitee@example.com', + templateId: 'emailVerification', + context: { name: 'Dana', verifyUrl: 'https://dashboard.example.com/verify?token=abc' }, + subject: 'Conferma il tuo indirizzo email', + }, + { provider, from: 'noreply@example.com' }, + ); + + const [mail] = sent; + assertSent(mail); + expect(mail.subject).toBe('Conferma il tuo indirizzo email'); + }); + + it('refuses to send without a sender address rather than inventing one', async () => { + const { provider } = recordingProvider(); + vi.stubEnv('MAIL_FROM', ''); + + await expect( + sendEmail( + { + to: 'invitee@example.com', + templateId: 'emailVerification', + context: { name: 'Dana', verifyUrl: 'https://dashboard.example.com/verify' }, + }, + { provider }, + ), + ).rejects.toThrow(MISSING_MAIL_FROM_PATTERN); + + vi.unstubAllEnvs(); + }); +}); + +describe('createMailer', () => { + it('binds the provider and sender once for injection', async () => { + const { sent, provider } = recordingProvider(); + const mailer = createMailer({ provider, from: 'ops@example.com' }); + + await mailer({ + to: 'invitee@example.com', + templateId: 'emailVerification', + context: { name: 'Dana', verifyUrl: 'https://dashboard.example.com/verify?token=abc' }, + }); + + const [mail] = sent; + assertSent(mail); + expect(mail.from).toBe('ops@example.com'); + }); +}); diff --git a/packages/mail/src/mail.ts b/packages/mail/src/mail.ts new file mode 100644 index 0000000..c232b66 --- /dev/null +++ b/packages/mail/src/mail.ts @@ -0,0 +1,75 @@ +import { fileURLToPath } from 'node:url'; + +import { render } from '@maizzle/framework'; + +import { mailProviderFromEnvironment } from './provider/index.js'; +import type { MailProvider } from './provider/types.js'; +import { mailTemplates, type MailTemplateContext, type MailTemplateId } from './util/templates.js'; + +/** Templates ship beside the compiled output, so resolve them relative to this module. */ +const emailsDirectory = fileURLToPath(new URL('../emails/', import.meta.url)); + +/** A message to deliver, addressed by template id rather than by file path. */ +export interface SendEmailOptions { + readonly to: string; + readonly templateId: Id; + /** Values the template interpolates. Typed per template by {@link MailTemplateContext}. */ + readonly context: MailTemplateContext[Id]; + /** Overrides the registered subject when a caller needs to localise it. */ + readonly subject?: string; +} + +/** Everything `sendEmail` needs that is not the message itself. */ +export interface MailerOptions { + /** Delivery backend. Defaults to the one selected by `MAIL_PROVIDER`. */ + readonly provider?: MailProvider; + /** Sender address. Defaults to `MAIL_FROM`. */ + readonly from?: string; +} + +function resolveFrom(from: string | undefined): string { + const address = from ?? process.env.MAIL_FROM?.trim(); + if (!address) throw new Error('missing required environment variable: MAIL_FROM'); + return address; +} + +/** + * Render a template and hand it to the configured provider. + * + * Rendering happens per send rather than at build time: the templates carry per-recipient tokens, + * so there is no reusable compiled artifact to cache, and Maizzle's pipeline (SSR, CSS inlining, + * plaintext) is what turns the Vue source into something a mail client renders. + */ +export async function sendEmail( + options: SendEmailOptions, + mailer: MailerOptions = {}, +): Promise { + const template = mailTemplates[options.templateId]; + const { html, plaintext } = await render(`${emailsDirectory}${template.file}`, { + ...options.context, + plaintext: true, + }); + + const provider = mailer.provider ?? mailProviderFromEnvironment(); + + await provider({ + to: options.to, + subject: options.subject ?? template.subject, + html, + text: plaintext ?? '', + from: resolveFrom(mailer.from), + }); +} + +/** + * Bind a provider and sender once. + * + * Composition roots build one of these at startup and inject it, which keeps the packages that + * need to send mail free of any dependency on this one. + */ +export function createMailer(mailer: MailerOptions = {}) { + return (options: SendEmailOptions) => sendEmail(options, mailer); +} + +/** The injectable shape a consumer depends on, so no caller has to import this package's internals. */ +export type SendEmail = ReturnType; diff --git a/packages/mail/src/provider/console.ts b/packages/mail/src/provider/console.ts new file mode 100644 index 0000000..a7dd8a7 --- /dev/null +++ b/packages/mail/src/provider/console.ts @@ -0,0 +1,16 @@ +import type { MailProvider, OutgoingMail } from './types.js'; + +/** + * Development provider: logs the message instead of delivering it. + * + * This is the default so that a deployment which has not configured a transport cannot silently + * attempt real delivery, and so the test suite never opens a socket. The body is deliberately not + * logged: invitation and password-reset messages carry single-use tokens in their links, and this + * output routinely lands in shared terminal scrollback and CI logs. + */ +export function createConsoleProvider(log: (message: string) => void = console.info): MailProvider { + return (mail: OutgoingMail) => { + log(`[mail] would deliver "${mail.subject}" from ${mail.from} to ${mail.to}`); + return Promise.resolve(); + }; +} diff --git a/packages/mail/src/provider/index.test.ts b/packages/mail/src/provider/index.test.ts new file mode 100644 index 0000000..1771ab0 --- /dev/null +++ b/packages/mail/src/provider/index.test.ts @@ -0,0 +1,103 @@ +import { describe, expect, it, vi } from 'vitest'; + +import { + createConsoleProvider, + mailProviderFromEnvironment, + mailProviderNameFromEnvironment, +} from './index.js'; + +const INVALID_MAIL_PROVIDER_PATTERN = /invalid MAIL_PROVIDER/; +const MISSING_RESEND_API_KEY_PATTERN = /RESEND_API_KEY/; +const MISSING_SMTP_HOST_PATTERN = /SMTP_HOST/; +const MISSING_SMTP_PORT_PATTERN = /SMTP_PORT/; +const LEAKED_SMTP_PASSWORD_PATTERN = /hunter2/; + +/** + * Provider selection is deployment configuration, so the failure modes that matter are the + * misconfigured ones: they must fail loudly rather than fall back to a transport the operator did + * not choose. + */ +describe('mailProviderFromEnvironment', () => { + it('defaults to the console provider when nothing is configured', () => { + expect(() => mailProviderFromEnvironment({})).not.toThrow(); + }); + + it('rejects an unknown provider name instead of silently defaulting', () => { + expect(() => mailProviderFromEnvironment({ MAIL_PROVIDER: 'carrier-pigeon' })).toThrow( + INVALID_MAIL_PROVIDER_PATTERN, + ); + }); + + it('requires an API key before selecting Resend', () => { + expect(() => mailProviderFromEnvironment({ MAIL_PROVIDER: 'resend' })).toThrow( + MISSING_RESEND_API_KEY_PATTERN, + ); + }); + + it('requires host and port before selecting SMTP', () => { + expect(() => mailProviderFromEnvironment({ MAIL_PROVIDER: 'smtp' })).toThrow( + MISSING_SMTP_HOST_PATTERN, + ); + expect(() => + mailProviderFromEnvironment({ MAIL_PROVIDER: 'smtp', SMTP_HOST: 'localhost' }), + ).toThrow(MISSING_SMTP_PORT_PATTERN); + }); + + it('rejects a port that is not a whole number in range', () => { + for (const port of ['587abc', '0', '70000']) { + expect(() => + mailProviderFromEnvironment({ + MAIL_PROVIDER: 'smtp', + SMTP_HOST: 'localhost', + SMTP_PORT: port, + }), + ).toThrow(MISSING_SMTP_PORT_PATTERN); + } + }); + + it('never echoes a credential in its error messages', () => { + // A thrown connection string or key routinely ends up in a crash log. + expect(() => + mailProviderFromEnvironment({ MAIL_PROVIDER: 'smtp', SMTP_PASSWORD: 'hunter2' }), + ).toThrow(expect.not.stringMatching(LEAKED_SMTP_PASSWORD_PATTERN)); + }); +}); + +/** + * Composition roots branch on this name to withhold capabilities (such as invitation delivery) + * from the non-delivering console default, so it must report exactly what was configured. + */ +describe('mailProviderNameFromEnvironment', () => { + it('reports the console default when nothing is configured', () => { + expect(mailProviderNameFromEnvironment({})).toBe('console'); + }); + + it('reports the configured transport name', () => { + expect(mailProviderNameFromEnvironment({ MAIL_PROVIDER: 'smtp' })).toBe('smtp'); + }); + + it('rejects an unknown provider name instead of silently defaulting', () => { + expect(() => mailProviderNameFromEnvironment({ MAIL_PROVIDER: 'carrier-pigeon' })).toThrow( + INVALID_MAIL_PROVIDER_PATTERN, + ); + }); +}); + +describe('createConsoleProvider', () => { + it('reports the message without logging its body', async () => { + const log = vi.fn<(message: string) => void>(); + await createConsoleProvider(log)({ + to: 'operator@example.com', + subject: 'Reset your password', + html: 'Reset', + text: 'https://example.com/reset?token=secret-token', + from: 'noreply@example.com', + }); + + expect(log).toHaveBeenCalledOnce(); + const [message] = log.mock.calls[0] ?? []; + expect(message).toContain('operator@example.com'); + // Invitation and reset links are single-use credentials; they must not reach the log. + expect(message).not.toContain('secret-token'); + }); +}); diff --git a/packages/mail/src/provider/index.ts b/packages/mail/src/provider/index.ts new file mode 100644 index 0000000..7e203fb --- /dev/null +++ b/packages/mail/src/provider/index.ts @@ -0,0 +1,90 @@ +import { createConsoleProvider } from './console.js'; +import { createResendProvider } from './resend.js'; +import { createSmtpProvider } from './smtp.js'; +import type { MailProvider } from './types.js'; + +export { createConsoleProvider } from './console.js'; +export { createResendProvider, type ResendProviderOptions } from './resend.js'; +export { createSmtpProvider, type SmtpProviderOptions } from './smtp.js'; +export type { MailProvider, OutgoingMail } from './types.js'; + +/** Transports a deployment can select through `MAIL_PROVIDER`. */ +export const MAIL_PROVIDER_NAMES = ['console', 'resend', 'smtp'] as const; + +export type MailProviderName = (typeof MAIL_PROVIDER_NAMES)[number]; + +function isProviderName(value: string): value is MailProviderName { + return (MAIL_PROVIDER_NAMES as readonly string[]).includes(value); +} + +/** Missing configuration is a deployment error; a default would send through the wrong transport. */ +function requireEnvironmentValue( + environment: Readonly>, + name: string, +): string { + const value = environment[name]?.trim(); + if (!value) throw new Error(`missing required environment variable: ${name}`); + return value; +} + +const DECIMAL_PORT_PATTERN = /^\d+$/u; + +function requirePort( + environment: Readonly>, + name: string, +): number { + const raw = requireEnvironmentValue(environment, name); + // Validate the whole value: `Number.parseInt` would truncate `587abc` to a usable port. + if (!DECIMAL_PORT_PATTERN.test(raw)) throw new Error(`invalid ${name}: expected a port number`); + const port = Number.parseInt(raw, 10); + if (port < 1 || port > 65_535) throw new Error(`invalid ${name}: expected a port number`); + return port; +} + +/** + * Resolve and validate the configured transport name without constructing the transport. + * + * Composition roots use this to tell a delivering transport apart from the console default when + * a feature (such as organization invitations) must not silently log mail instead of sending it. + */ +export function mailProviderNameFromEnvironment( + environment: Readonly> = process.env, +): MailProviderName { + const configured = environment.MAIL_PROVIDER?.trim() ?? 'console'; + if (!isProviderName(configured)) + throw new Error( + `invalid MAIL_PROVIDER: expected one of ${MAIL_PROVIDER_NAMES.join(', ')}, received ${configured}`, + ); + return configured; +} + +/** + * Resolve the configured transport. + * + * The single place delivery backends are selected, so callers depend on {@link MailProvider} + * rather than on any one SDK. Defaults to the console provider: a deployment that has not chosen + * a transport should log rather than fail to deliver silently, and no error message here echoes a + * credential. + */ +export function mailProviderFromEnvironment( + environment: Readonly> = process.env, +): MailProvider { + const configured = mailProviderNameFromEnvironment(environment); + + if (configured === 'resend') + return createResendProvider({ + apiKey: requireEnvironmentValue(environment, 'RESEND_API_KEY'), + }); + + if (configured === 'smtp') + return createSmtpProvider({ + host: requireEnvironmentValue(environment, 'SMTP_HOST'), + port: requirePort(environment, 'SMTP_PORT'), + secure: environment.SMTP_SECURE === 'true', + ...(environment.SMTP_USER?.trim() ? { user: environment.SMTP_USER.trim() } : {}), + ...(environment.SMTP_PASSWORD ? { password: environment.SMTP_PASSWORD } : {}), + }); + + // The only remaining member of MailProviderName, narrowed by isProviderName above. + return createConsoleProvider(); +} diff --git a/packages/mail/src/provider/resend.ts b/packages/mail/src/provider/resend.ts new file mode 100644 index 0000000..0414e09 --- /dev/null +++ b/packages/mail/src/provider/resend.ts @@ -0,0 +1,31 @@ +import type { MailProvider, OutgoingMail } from './types.js'; + +/** Options the Resend transport needs. */ +export interface ResendProviderOptions { + readonly apiKey: string; +} + +/** + * Resend transport. + * + * `resend` is an optional peer dependency, so the module is imported lazily: a deployment using + * SMTP or the console provider must not need the package installed to boot. + */ +export function createResendProvider(options: ResendProviderOptions): MailProvider { + return async (mail: OutgoingMail) => { + const { Resend } = await import('resend'); + const client = new Resend(options.apiKey); + + const { error } = await client.emails.send({ + from: mail.from, + to: mail.to, + subject: mail.subject, + html: mail.html, + text: mail.text, + }); + + // The SDK reports delivery failures in the payload rather than by throwing, so an unchecked + // call would treat a rejected message as sent. + if (error) throw new Error(`resend rejected the message: ${error.message}`); + }; +} diff --git a/packages/mail/src/provider/smtp.ts b/packages/mail/src/provider/smtp.ts new file mode 100644 index 0000000..9263120 --- /dev/null +++ b/packages/mail/src/provider/smtp.ts @@ -0,0 +1,48 @@ +import type { MailProvider, OutgoingMail } from './types.js'; + +/** Connection details for a self-hosted SMTP relay. */ +export interface SmtpProviderOptions { + readonly host: string; + readonly port: number; + /** + * Implicit TLS. Conventionally true on 465 and false on 587. When false the connection must + * still upgrade via STARTTLS; delivery never falls back to plaintext. + */ + readonly secure: boolean; + readonly user?: string; + readonly password?: string; +} + +/** + * Nodemailer SMTP transport, for deployments that relay through their own infrastructure. + * + * `nodemailer` is an optional peer dependency and is imported lazily for the same reason as the + * Resend client: only the configured transport should have to be installed. + */ +export function createSmtpProvider(options: SmtpProviderOptions): MailProvider { + return async (mail: OutgoingMail) => { + const nodemailer = await import('nodemailer'); + const transport = nodemailer.createTransport({ + host: options.host, + port: options.port, + secure: options.secure, + // Without this, a relay that does not advertise STARTTLS (or an on-path party stripping + // the advertisement) would silently downgrade reset, verification, and invitation links + // plus the AUTH credentials to plaintext. Implicit-TLS connections already encrypt. + requireTLS: !options.secure, + // Anonymous relays are legitimate on an internal network, so credentials stay optional + // rather than being forced into a half-configured auth block. + ...(options.user && options.password + ? { auth: { user: options.user, pass: options.password } } + : {}), + }); + + await transport.sendMail({ + from: mail.from, + to: mail.to, + subject: mail.subject, + html: mail.html, + text: mail.text, + }); + }; +} diff --git a/packages/mail/src/provider/types.ts b/packages/mail/src/provider/types.ts new file mode 100644 index 0000000..eab5e49 --- /dev/null +++ b/packages/mail/src/provider/types.ts @@ -0,0 +1,27 @@ +/** + * The contract every delivery backend satisfies. + * + * Kept free of provider SDK types so that swapping Resend for SMTP is a configuration change + * rather than a change to callers, and so tests can substitute a recording provider without + * pulling a network client into the process. + */ + +/** A fully rendered message, ready for delivery. */ +export interface OutgoingMail { + readonly to: string; + readonly subject: string; + readonly html: string; + /** Plaintext alternative. Always populated by `sendEmail`, which renders it alongside the HTML. */ + readonly text: string; + /** Sender address. Resolved from `MAIL_FROM` unless the caller overrides it. */ + readonly from: string; +} + +/** + * Delivers a rendered message. + * + * Implementations must reject on failure rather than resolving quietly: a silently dropped + * password reset or organization invitation is indistinguishable from a delivered one, and the + * caller has no other signal to act on. + */ +export type MailProvider = (mail: OutgoingMail) => Promise; diff --git a/packages/mail/src/util/templates.ts b/packages/mail/src/util/templates.ts new file mode 100644 index 0000000..d5f4809 --- /dev/null +++ b/packages/mail/src/util/templates.ts @@ -0,0 +1,49 @@ +/** + * Template registry. + * + * Every message the product can send is declared here with its Maizzle template and subject, so + * that adding a template is one edit and callers address messages by id rather than by file path. + */ + +/** Data each template interpolates. Keyed by template id so `sendEmail` can check the context. */ +export interface MailTemplateContext { + readonly organizationInvitation: { + /** Display name of the organization the recipient is being invited to. */ + readonly organizationName: string; + /** Who sent the invitation, shown so the recipient can judge whether it is expected. */ + readonly inviterName: string; + /** Absolute URL that accepts the invitation. Carries a single-use token. */ + readonly acceptUrl: string; + }; + readonly emailVerification: { + readonly name: string; + readonly verifyUrl: string; + }; + readonly passwordReset: { + readonly name: string; + readonly resetUrl: string; + }; +} + +export type MailTemplateId = keyof MailTemplateContext; + +interface MailTemplateDefinition { + /** Path relative to this package's `emails/` directory. */ + readonly file: string; + readonly subject: string; +} + +export const mailTemplates: Readonly> = { + organizationInvitation: { + file: 'OrganizationInvitation.vue', + subject: 'You have been invited to an organization', + }, + emailVerification: { + file: 'EmailVerification.vue', + subject: 'Confirm your email address', + }, + passwordReset: { + file: 'PasswordReset.vue', + subject: 'Reset your password', + }, +}; diff --git a/packages/mail/tsconfig.json b/packages/mail/tsconfig.json new file mode 100644 index 0000000..5ee9c86 --- /dev/null +++ b/packages/mail/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { "rootDir": "src", "outDir": "dist" }, + "include": ["src/**/*.ts"] +} diff --git a/packages/mail/tsdown.config.ts b/packages/mail/tsdown.config.ts new file mode 100644 index 0000000..bcb566f --- /dev/null +++ b/packages/mail/tsdown.config.ts @@ -0,0 +1,3 @@ +import { definePackageConfig } from '../../scripts/tsdown.config.ts'; + +export default definePackageConfig(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c37ebcc..c28bbe9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -37,7 +37,7 @@ importers: version: 4.62.4 vite: specifier: '>=3' - version: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + version: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) webpack: specifier: ^4 || ^5 version: 5.109.2 @@ -53,10 +53,10 @@ importers: version: 21.2.0 '@e18e/eslint-plugin': specifier: ^0.8.0 - version: 0.8.0(eslint@10.8.1)(oxlint@1.77.0(oxlint-tsgolint@7.0.2001)) + version: 0.8.0(eslint@10.8.1)(oxlint@1.78.0(oxlint-tsgolint@7.0.2001)) '@redstardev/unplugin-version-injector': specifier: 0.0.2 - version: 0.0.2(@nuxt/kit@3.21.11)(@nuxt/schema@3.21.11)(esbuild@0.28.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + version: 0.0.2(@nuxt/kit@3.21.11)(@nuxt/schema@3.21.11)(esbuild@0.28.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) '@types/node': specifier: ^24.3.0 version: 24.13.3 @@ -65,7 +65,7 @@ importers: version: 9.1.7 knip: specifier: ^6.32.0 - version: 6.32.0 + version: 6.32.1 nano-staged: specifier: ^1.0.2 version: 1.0.2 @@ -74,7 +74,7 @@ importers: version: 0.62.0 oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 @@ -86,10 +86,10 @@ importers: version: 2.1.0 tsdown: specifier: ^0.22.14 - version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11) + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) tsx: specifier: ^4.20.5 - version: 4.23.11 + version: 4.23.12 turbo: specifier: ^2.5.6 version: 2.10.9 @@ -105,6 +105,9 @@ importers: '@agent-zero/auth': specifier: workspace:* version: 0.3.0 + '@agent-zero/mail': + specifier: workspace:* + version: 0.3.0 '@agent-zero/shared': specifier: workspace:* version: 0.3.0 @@ -132,16 +135,16 @@ importers: devDependencies: oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 tsdown: specifier: ^0.22.14 - version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11) + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) tsx: specifier: ^4.20.3 - version: 4.23.11 + version: 4.23.12 typescript: specifier: ^5.9.2 version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 @@ -154,9 +157,12 @@ importers: '@agent-zero/auth': specifier: workspace:* version: 0.3.0 + '@agent-zero/i18n': + specifier: workspace:* + version: 0.3.0 '@onmax/nuxt-better-auth': specifier: ^0.0.7 - version: 0.0.7(better-auth@1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vue@3.5.41)) + version: 0.0.7(better-auth@1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vue@3.5.41)) '@opentelemetry/api': specifier: ^1.9.0 version: 1.9.1 @@ -177,7 +183,7 @@ importers: version: 3.5.41 better-auth: specifier: ^1.6.26 - version: 1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vue@3.5.41) + version: 1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vue@3.5.41) drizzle-kit: specifier: '>=0.31.4' version: 0.31.10 @@ -213,7 +219,7 @@ importers: version: 1.2.3 vite: specifier: ^6.0.0 || ^7.0.0 || ^8.0.0 - version: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + version: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) vue: specifier: ^3.0.0 version: 3.5.41 @@ -224,27 +230,24 @@ importers: '@iconify-json/lucide': specifier: ^1.2.123 version: 1.2.123 - '@lunariajs/core': - specifier: https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935 - version: https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935 '@nuxt/icon': specifier: ^2.5.0 - version: 2.5.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41) + version: 2.5.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41) '@nuxt/test-utils': specifier: 4.1.0 - version: 4.1.0(@playwright/test@1.62.1)(@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41))(happy-dom@20.11.2)(playwright-core@1.62.1)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))) + version: 4.1.0(@playwright/test@1.62.1)(@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41))(happy-dom@20.11.2)(playwright-core@1.62.1)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))) '@nuxtjs/color-mode': specifier: 4.0.1 - version: 4.0.1(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + version: 4.0.1(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) '@nuxtjs/i18n': specifier: ^10.6.0 - version: 10.6.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2) + version: 10.6.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2) '@playwright/test': specifier: ^1.62.0 version: 1.62.1 '@unocss/nuxt': specifier: ^66.7.5 - version: 66.7.5(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + version: 66.7.5(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) '@unocss/preset-wind4': specifier: ^66.7.5 version: 66.7.5 @@ -256,7 +259,7 @@ importers: version: 20.11.2 oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 @@ -268,10 +271,7 @@ importers: version: 66.7.5(@unocss/webpack@66.7.5(webpack@5.109.2)) vitest: specifier: ^4.1.10 - version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - vue-i18n-extract: - specifier: 2.0.7 - version: 2.0.7 + version: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) vue-tsc: specifier: ^3.1.2 version: 3.3.9(typescript@6.0.3-bridge.12.tsgo.7.0.2) @@ -328,7 +328,7 @@ importers: version: 2.7.0 nitro: specifier: ^3.0.260610-beta - version: 3.0.260610-beta(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + version: 3.0.260610-beta(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) rollup: specifier: ^4.61.1 version: 4.62.4 @@ -337,10 +337,10 @@ importers: version: 5.49.2 tsx: specifier: ^4.8.1 - version: 4.23.11 + version: 4.23.12 vite-hub: specifier: ^0.0.3 - version: 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + version: 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) yaml: specifier: ^2.4.2 version: 2.9.0 @@ -350,7 +350,7 @@ importers: devDependencies: oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 @@ -359,7 +359,7 @@ importers: version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 vite: specifier: ^8.2.1 - version: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + version: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) vitest: specifier: ^3.2.4 version: 3.2.7(@types/debug@4.1.13)(@types/node@24.13.3)(happy-dom@20.11.2) @@ -395,17 +395,17 @@ importers: version: 0.3.23 tsx: specifier: '*' - version: 4.23.11 + version: 4.23.12 devDependencies: oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 tsdown: specifier: ^0.22.14 - version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11) + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) typescript: specifier: ^5.9.2 version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 @@ -441,16 +441,16 @@ importers: version: 8.21.0 better-auth: specifier: ^1.6.26 - version: 1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@3.2.7(@types/debug@4.1.13)(@types/node@24.13.3)(happy-dom@20.11.2))(vue@3.5.41) + version: 1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@3.2.7(@types/debug@4.1.13)(@types/node@24.13.3)(happy-dom@20.11.2))(vue@3.5.41) drizzle-orm: specifier: ^0.45.2 - version: 0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1) + version: 0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1) happy-dom: specifier: '*' version: 20.11.2 kysely: specifier: '*' - version: 0.29.4 + version: 0.29.5 mongodb: specifier: ^6.0.0 || ^7.0.0 version: 7.5.0 @@ -480,7 +480,7 @@ importers: version: 1.14.1 tsx: specifier: '*' - version: 4.23.11 + version: 4.23.12 vue: specifier: ^3.0.0 version: 3.5.41 @@ -490,13 +490,13 @@ importers: version: 0.31.10 oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 tsdown: specifier: ^0.22.14 - version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11) + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) typescript: specifier: ^5.9.2 version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 @@ -544,17 +544,17 @@ importers: version: 0.3.23 tsx: specifier: '*' - version: 4.23.11 + version: 4.23.12 devDependencies: oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 tsdown: specifier: ^0.22.14 - version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11) + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) typescript: specifier: ^5.9.2 version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 @@ -584,26 +584,26 @@ importers: version: 20.11.2 magic-regexp: specifier: ^0.11.0 - version: 0.11.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + version: 0.11.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) publint: specifier: ^0.3.8 version: 0.3.23 tsx: specifier: '*' - version: 4.23.11 + version: 4.23.12 yaml: specifier: ^2.8.1 version: 2.9.0 devDependencies: oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 tsdown: specifier: ^0.22.14 - version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11) + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) typescript: specifier: ^5.9.2 version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 @@ -633,17 +633,121 @@ importers: version: 0.3.23 tsx: specifier: '*' - version: 4.23.11 + version: 4.23.12 + devDependencies: + oxlint: + specifier: ^1.44.0 + version: 1.78.0(oxlint-tsgolint@7.0.2001) + oxlint-tsgolint: + specifier: ^7.0.2001 + version: 7.0.2001 + tsdown: + specifier: ^0.22.14 + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) + typescript: + specifier: ^5.9.2 + version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 + vitest: + specifier: ^3.2.4 + version: 3.2.7(@types/debug@4.1.13)(@types/node@24.13.3)(happy-dom@20.11.2) + + packages/i18n: + dependencies: + '@arethetypeswrong/core': + specifier: ^0.18.1 + version: 0.18.5 + '@lunariajs/core': + specifier: https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935 + version: https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935 + '@types/debug': + specifier: ^4.1.12 + version: 4.1.13 + '@types/node': + specifier: ^18.0.0 || ^20.0.0 || >=22.0.0 + version: 24.13.3 + happy-dom: + specifier: '*' + version: 20.11.2 + publint: + specifier: ^0.3.8 + version: 0.3.23 + tsx: + specifier: '*' + version: 4.23.12 + vue-i18n-extract: + specifier: 2.0.7 + version: 2.0.7 + devDependencies: + oxlint: + specifier: ^1.44.0 + version: 1.78.0(oxlint-tsgolint@7.0.2001) + oxlint-tsgolint: + specifier: ^7.0.2001 + version: 7.0.2001 + tsdown: + specifier: ^0.22.14 + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) + typescript: + specifier: ^5.9.2 + version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 + vitest: + specifier: ^3.2.4 + version: 3.2.7(@types/debug@4.1.13)(@types/node@24.13.3)(happy-dom@20.11.2) + + packages/mail: + dependencies: + '@arethetypeswrong/core': + specifier: ^0.18.1 + version: 0.18.5 + '@maizzle/framework': + specifier: ^6.0.13 + version: 6.0.13(shiki@4.4.3)(tailwind-merge@3.6.0)(vue@3.5.41) + '@maizzle/tailwindcss': + specifier: ^1.5.6 + version: 1.5.6 + '@types/debug': + specifier: ^4.1.12 + version: 4.1.13 + '@types/node': + specifier: ^18.0.0 || ^20.0.0 || >=22.0.0 + version: 24.13.3 + happy-dom: + specifier: '*' + version: 20.11.2 + publint: + specifier: ^0.3.8 + version: 0.3.23 + shiki: + specifier: ^1 || ^2 || ^3 || ^4 + version: 4.4.3 + tailwind-merge: + specifier: ^2 || ^3 + version: 3.6.0 + tsx: + specifier: '*' + version: 4.23.12 + vue: + specifier: ^3 + version: 3.5.41 devDependencies: + '@types/nodemailer': + specifier: ^8.0.1 + version: 8.0.1 + nodemailer: + specifier: ^9.0.5 + version: 9.0.5 oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 + resend: + specifier: 6.17.1 + version: 6.17.1 tsdown: specifier: ^0.22.14 - version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11) + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) typescript: specifier: ^5.9.2 version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 @@ -658,16 +762,16 @@ importers: version: 0.3.0 '@ai-sdk/anthropic': specifier: ^4.0.36 - version: 4.0.36(zod@4.4.3) + version: 4.0.37(zod@4.4.3) '@ai-sdk/google': specifier: ^4.0.39 - version: 4.0.39(zod@4.4.3) + version: 4.0.41(zod@4.4.3) '@ai-sdk/openai': specifier: ^4.0.36 - version: 4.0.36(zod@4.4.3) + version: 4.0.37(zod@4.4.3) '@ai-sdk/openai-compatible': specifier: ^3.0.16 - version: 3.0.27(zod@4.4.3) + version: 3.0.29(zod@4.4.3) '@arethetypeswrong/core': specifier: ^0.18.1 version: 0.18.5 @@ -679,7 +783,7 @@ importers: version: 24.13.3 ai: specifier: ^7.0.40 - version: 7.0.58(zod@4.4.3) + version: 7.0.59(zod@4.4.3) happy-dom: specifier: '*' version: 20.11.2 @@ -688,20 +792,20 @@ importers: version: 0.3.23 tsx: specifier: '*' - version: 4.23.11 + version: 4.23.12 zod: specifier: ^4.4.3 version: 4.4.3 devDependencies: oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 tsdown: specifier: ^0.22.14 - version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11) + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) typescript: specifier: ^5.9.2 version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 @@ -731,23 +835,23 @@ importers: version: 20.11.2 magic-regexp: specifier: ^0.11.0 - version: 0.11.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + version: 0.11.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) publint: specifier: ^0.3.8 version: 0.3.23 tsx: specifier: '*' - version: 4.23.11 + version: 4.23.12 devDependencies: oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 tsdown: specifier: ^0.22.14 - version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11) + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) typescript: specifier: ^5.9.2 version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 @@ -774,17 +878,17 @@ importers: version: 0.3.23 tsx: specifier: '*' - version: 4.23.11 + version: 4.23.12 devDependencies: oxlint: specifier: ^1.44.0 - version: 1.77.0(oxlint-tsgolint@7.0.2001) + version: 1.78.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: ^7.0.2001 version: 7.0.2001 tsdown: specifier: ^0.22.14 - version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11) + version: 0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12) typescript: specifier: ^5.9.2 version: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 @@ -794,8 +898,8 @@ importers: packages: - '@ai-sdk/anthropic@4.0.36': - resolution: {integrity: sha512-Wg5jfray0X4+qkrr73GZ7U7K2JNGx+S+rNY9LorVlXhkhTqnvtNLYWRA1WxSxlCDCw3yjRCJdL9kyc+b7naAog==} + '@ai-sdk/anthropic@4.0.37': + resolution: {integrity: sha512-3JVFoPkuVyW/TkUrsNpugQDwJa5RUnExK/J3LKhKece+qFv7MRR33URvmLbND/5yg2qXZ9rf+Wf97adGMltn0g==} engines: {node: '>=22'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -818,14 +922,14 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/gateway@4.0.46': - resolution: {integrity: sha512-LIAO6kAG8fpXQb9L0iwPk1FIbXftvqnyC56v5NEAzeWTeL8fUsy/Hx86VPBTWEDFdwbVprjWifJOAqS6AOj3mA==} + '@ai-sdk/gateway@4.0.47': + resolution: {integrity: sha512-BuWWlA8atWEnEJzN4eamCpGZWkoK9V3TCyNaMwgRIazhqkgWkA1Wp36si3j2JeVYzlvlEAOWrJ92dr92j/Vkqg==} engines: {node: '>=22'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/google@4.0.39': - resolution: {integrity: sha512-+mRx7UBZn9PkJ4J6YXowaRZKMZYa290cknVqqOw/roZaDg186IUOLn9JHNQkvgaj91/MLW1AZNESy1ZD2yXDCg==} + '@ai-sdk/google@4.0.41': + resolution: {integrity: sha512-1Kl5R61DyB5MaMZvAVBoTO0ZWsxOjRzAfMuYeo5sIg9++i9mJpkpcvxLDcpw9coLzVWIPstYaTktWI+F7ehQ1g==} engines: {node: '>=22'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -846,14 +950,14 @@ packages: ws: optional: true - '@ai-sdk/openai-compatible@3.0.27': - resolution: {integrity: sha512-icGSoBDbFKZotUwehg7h/JjtD7arweeKfeDcsT9UsPY+YdwiT94JciD59bqAOAdNA3wlS+klW2vsaVLxTUUhbA==} + '@ai-sdk/openai-compatible@3.0.29': + resolution: {integrity: sha512-mkTkrdpfkV93ihTV3cRIhLpYxQ+cXzBGnrGXXfuQj4wfesCZxYbbyPnCsxYv1ssDt7pGDnrz8RQmpeOqDlAy0g==} engines: {node: '>=22'} peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/openai@4.0.36': - resolution: {integrity: sha512-wHJNArBdjJPXb8GXcA+FslbRt+7qIE1KoHSAVi+CeBFidinVrTVBZKFMJz3mNZMj8YILBMl/VIvTD/oGFjX6/g==} + '@ai-sdk/openai@4.0.37': + resolution: {integrity: sha512-rQIdkvqHaqyu94zMJKkhucRwsyTpYUmI+vrH/Dm1Erc6ypURikOV+9e51Pni6RL8IxFlu2bv6y8hA1ghzCy7Gw==} engines: {node: '>=22'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -870,8 +974,8 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 - '@ai-sdk/provider-utils@5.0.25': - resolution: {integrity: sha512-xscPPHCSjCHWrdhai25sbHCJeKNLW/3D1uSpUZa4cEtTKXA8OnPQ3+Rfu1SmM5Ea/Mf8Dfn3cllw9zeMzo/zFA==} + '@ai-sdk/provider-utils@5.0.26': + resolution: {integrity: sha512-0mqhqx+Dcv+msI84+zkbLXmnCHb/mpkYJ9DU3HBvB1px+UjFQss4lLZqRCSzJ0w3NxwQk4Ishk7cP0r8wEQD5w==} engines: {node: '>=22'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -894,6 +998,10 @@ packages: resolution: {integrity: sha512-6or44XprPzKbr8zkmzosowSE0pxkvJcoojBL+mCZvPUt3kvXp3XSNqeVun9golb1acEfSo6yaEBRT18h2VU+1Q==} engines: {node: '>=22'} + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@andrewbranch/untar.js@1.0.4': resolution: {integrity: sha512-pVXSwPsLuw8IGLo2Di0EaOfsk+ntVvpkk942J/sHYIkwvtKUakEcPh7HBgZ6tuimgzKSEHgCvO4XgQ05DEbwDw==} @@ -939,8 +1047,8 @@ packages: resolution: {integrity: sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1106.0': - resolution: {integrity: sha512-hUTlnyRRGlVdfvJLL3hCEnMm7CmunSzc/lxFVRX8g1fjJTMUVbyQCfhfMhp7dZ7JBftLU6OYresu3Hje4nvkJw==} + '@aws-sdk/client-s3@3.1107.0': + resolution: {integrity: sha512-95N3VATuqbyhEUO0YHQSsgKdkG872rZXm+O2ZkffsF8RJLRDQAsplVD8/OdWW3vX78vNDogK/zbfD1VG1OcSIA==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.977.6': @@ -987,11 +1095,11 @@ packages: resolution: {integrity: sha512-/BRzvkp46mF6eXBL/l9WKPQQfifLlUPaWli6n9/T/WDLUg8he7TCyuNFnk6RvHP5j5W/kMj5Gxw7W778LJaXDA==} engines: {node: '>=20.0.0'} - '@aws-sdk/lib-storage@3.1106.0': - resolution: {integrity: sha512-xAK/baB/XLoiWYXEBFt9/YXtegqBVYfJbTWJMSXkeWSL8kuAHaCZiqJ6BRnpftKMgOyEuQ56os1hHxdaWk99mA==} + '@aws-sdk/lib-storage@3.1107.0': + resolution: {integrity: sha512-aQohoTGU0xYavudEZ+zEJejVfqH9Eu5Bk1yLi8soHyJO88qnSW+vF9qARjS8oLyo1ivXeesWvlGHfAuhCOw4Mg==} engines: {node: '>=20.0.0'} peerDependencies: - '@aws-sdk/client-s3': ^3.1106.0 + '@aws-sdk/client-s3': ^3.1107.0 '@aws-sdk/middleware-eventstream@3.972.26': resolution: {integrity: sha512-2eIvouTZoxPu5ClHY6ij13De1yhY8Rmllt0dlGeBNXX3wmR7fU1pvMCGb50fKm1GxcuntWK0t1T0cMjTyDoUQA==} @@ -1009,12 +1117,12 @@ packages: resolution: {integrity: sha512-RDHqPGQWlF6tatA/Tp3rg6oIwtgN9IVderxE+9av2Y93Dfyu+mO1hZ5Bu2jpfZg2rwdNbsssnwM+sLafIczMlQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/s3-presigned-post@3.1106.0': - resolution: {integrity: sha512-0PtmgFcPZDHFyFVAq918CcvKu642i7ei37ZtE63R4Lu2qeFUKVd3egA81Kb1q8mRK0T06zwWeMO9Qt07+cwdGg==} + '@aws-sdk/s3-presigned-post@3.1107.0': + resolution: {integrity: sha512-nYX6AZF9Z6X2Igx9MVbvO1WxpxNpRSba9aqvnSYXbr3erCtmgsiB/F55QbQseVoSqjo03SxbHmXL9f2hJ4+ZQg==} engines: {node: '>=20.0.0'} - '@aws-sdk/s3-request-presigner@3.1106.0': - resolution: {integrity: sha512-ZI5SCkyz8jB3Qr6NPSJ7R4A/PkniQvbD1DO8APwhMsubFcfwPSJMMUxrkv9k1E20ikRk7skpM9itZh+0wI9K/w==} + '@aws-sdk/s3-request-presigner@3.1107.0': + resolution: {integrity: sha512-/jlRXrrYLlVYmF33+ppCFMi8G+vYkt3LQZtwyVifDXBx66U1j1KqKstoGq6GXOQfb4I/gmojzACrrPU8eL37hw==} engines: {node: '>=20.0.0'} '@aws-sdk/signature-v4-multi-region@3.996.43': @@ -1632,8 +1740,8 @@ packages: resolution: {integrity: sha512-7zVFCDB2reMvJH5dmbKnOQPjZEvjdJTH8jc0U/PIPU1r3/+vf5pD1HlfitV2MWsWXrvu7u39iY1lyLUPOaN0Gw==} engines: {node: '>=22.12.0'} - '@conventional-changelog/git-client@3.1.1': - resolution: {integrity: sha512-w/q+UIVdWQMgXlziPIYfPlyDud+H8kcvSCzDQQoc/gid7yZzb6eNfAkNN4UlEcS2cVVh924jevsOIb36d0In2g==} + '@conventional-changelog/git-client@3.1.2': + resolution: {integrity: sha512-jZqwnJwf7nboIlAcw/mkOjVa6DexCcUOgT2oOQgkoi3z9vR8tGFkcMy2BFcYwjhL9sYcDDXkRQDayiDieCoW7A==} engines: {node: '>=22'} peerDependencies: conventional-commits-filter: ^6.0.1 @@ -1644,10 +1752,22 @@ packages: conventional-commits-parser: optional: true - '@conventional-changelog/template@1.2.1': - resolution: {integrity: sha512-TzlTVpKPjaqW6qOYjQcYUDuGsLCNsvFHVBXkYGTAnf5V37jCWrE5haKNXzz0WZUtVHjrpV76L1buANjwXMfT8w==} + '@conventional-changelog/template@1.3.0': + resolution: {integrity: sha512-GsCw/qu92GI0EX6s7fxUi/SG1lmFjG9XZivxxEDZXqztuQKCn5o5wKdz4v005zci0Md7EZzgAwmQLoIEDZoaow==} engines: {node: '>=22'} + '@csstools/selector-resolve-nested@4.0.1': + resolution: {integrity: sha512-j3vdQu0XwLME5qOTWxm8cnmvsf423R2YL6DbKklCHZwkDm7UdKNu6RPlw4REIJhSlKBICY3B70/7QZdicLqZgg==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + + '@csstools/selector-specificity@6.0.0': + resolution: {integrity: sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} @@ -2355,6 +2475,18 @@ packages: '@fastify/busboy@3.2.0': resolution: {integrity: sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA==} + '@floating-ui/core@1.8.0': + resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} + + '@floating-ui/dom@1.8.0': + resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} + + '@floating-ui/utils@0.2.12': + resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} + + '@floating-ui/vue@1.1.11': + resolution: {integrity: sha512-HzHKCNVxnGS35r9fCHBc3+uCnjw9IWIlCPL683cGgM9Kgj2BiAl8x1mS7vtvP6F9S/e/q4O6MApwSHj8hNLGfw==} + '@google-cloud/paginator@5.0.2': resolution: {integrity: sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg==} engines: {node: '>=14.0.0'} @@ -2367,9 +2499,9 @@ packages: resolution: {integrity: sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g==} engines: {node: '>=14'} - '@google-cloud/storage@7.21.0': - resolution: {integrity: sha512-l+IFTkd+6Y5LoAuXyYCKNAKtw/Ci+rAMqgdTB1jv4iZiLhw0rtq+0qjIRbBizXkNzEFmXiXUW0H7sZQQvk1ffA==} - engines: {node: '>=14'} + '@google-cloud/storage@7.22.0': + resolution: {integrity: sha512-W98gTQOAntEeEQ7/pZxSQXxfUO5CiQcXJRsxBpUa6UU25n8YN/VtogPBi0H+MAmUrn/6bY/sBhFansoWEsr2/g==} + engines: {node: '>=18'} '@google/genai@1.52.0': resolution: {integrity: sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==} @@ -2390,12 +2522,6 @@ packages: peerDependencies: hono: ^4 - '@hono/node-server@2.1.0': - resolution: {integrity: sha512-XovyyCCnBzW+zKu+z/zq8hwNs4KOR5rEMAOxo2f40Q5xoOI37IMm6MIg2COOUtUApo0i6850MTBKH2u4QLGIqg==} - engines: {node: '>=20'} - peerDependencies: - hono: ^4 - '@huggingface/jinja@0.5.9': resolution: {integrity: sha512-uWTG+l3VJRsl7EXxYizuL3P+cCPoc3cRqbWWRcQN0FhejRfbdq0RNhCmbY/YDtnTcz9icdLYuLDjsnz4d8JMuw==} engines: {node: '>=18'} @@ -2429,8 +2555,8 @@ packages: '@iconify-json/lucide@1.2.123': resolution: {integrity: sha512-0CozmpKXEOEEhltrfT2zt+/t1hez67Y+hM2VJWoIcBKdBrb83VYuKf+b5A0QU9HfQm+RNn2GjFWlTOwi+Ss6IA==} - '@iconify/collections@1.0.722': - resolution: {integrity: sha512-y7G2/u+kzDC/aGsn2sz9X1apxw47D1csij4JVpDkRso52bj7Fz0I2dCxyjBDkGMogbKvVcIJ/j72PEbnrf3elQ==} + '@iconify/collections@1.0.723': + resolution: {integrity: sha512-h9/C2f+OC/iYFwCuqPh8nFAdAbRyV0TwNUGEA2L3VI4hC89YUa6LOBMr/6LUAgcd3wMPXPnnt0Y6Ecgxqb/rIQ==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -2596,6 +2722,12 @@ packages: cpu: [x64] os: [win32] + '@internationalized/date@3.12.3': + resolution: {integrity: sha512-fuLX+3ZKLsxI73y8b01EG/WjHb6gE6weCqlfawPO27kBWGMh9G1yH6Csv1uU7/cac9H2GHmOMt6CjmuQ1aia4Q==} + + '@internationalized/number@3.6.7': + resolution: {integrity: sha512-3ji1fcrT+FPAK86UqEhB/psHixYo6niWPJtt7+qRaYFynt/BaJG8GhAPimtWUpEiVSTq8ZM8L5psMxGquiB/Vg==} + '@intlify/bundle-utils@11.2.4': resolution: {integrity: sha512-eE18yR9eM9k5n8snCkHIYp2MuVTxa19aF8z9OMyxXWv0frz2HlBZDGIPFjA38pP3OJ1IlRBXC/dW5GILeLMSCQ==} engines: {node: '>= 22.13'} @@ -2788,6 +2920,11 @@ packages: '@loaderkit/resolve@1.0.6': resolution: {integrity: sha512-G8FdIoF5CypfwmD9rl8BXod5HDn8JqB0CCNBXDTaRZ+yRYhARrrSToX1zg1zy9jX3zLqigsELwhT4gNtkdQAUg==} + '@lucide/vue@1.31.0': + resolution: {integrity: sha512-NtjEHhcAa7umPh40wrRmlESJqNGdnpc7LziBKFnW3fmlrW0g2xMCDpdWU7WeEHRSl3xOpxbqiFTLKxoK3CoVCg==} + peerDependencies: + vue: '>=3.0.1' + '@lukeed/csprng@1.1.0': resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} engines: {node: '>=8'} @@ -2796,13 +2933,36 @@ packages: resolution: {integrity: sha512-N0PDFIitA/Vzh5V6BtTacWU9jgSDJJtPLHamRLMU85mohmyuVW/pggHX8dzdV5ieqZeHEz8pDZSzH4I0hOYxOg==, tarball: https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935} version: 0.1.1 + '@maizzle/framework@6.0.13': + resolution: {integrity: sha512-cWoRA98Ur4JulzzYEhYMvMkOshniIh/hRCm/UE4VslzgCoVOiPhvEi5G9oZqVN3M3EmTpKWZx8B2aAyPK0mNew==} + hasBin: true + peerDependencies: + shiki: ^1 || ^2 || ^3 || ^4 + tailwind-merge: ^2 || ^3 + vue: ^3 + + '@maizzle/tailwindcss@1.5.6': + resolution: {integrity: sha512-JBJJLV3x1SpG7zqgdpjMGhGzANcZ/T6qxKzxMe0TzfJJ+12a2UV4N55dWzos9xLgcdt91NySPqQRMNKWZexMUg==} + '@mapbox/node-pre-gyp@2.0.3': resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} engines: {node: '>=18'} hasBin: true - '@mdream/crawl@1.5.12': - resolution: {integrity: sha512-jNR0HTQGagYwzKuO0oMG4HN+Og5esckbphtYlQI3esW9Ax8Pvd/EJK9evExikW/qikhamckMA6vgM9z+ZUR6AA==} + '@mdit-vue/plugin-component@3.0.2': + resolution: {integrity: sha512-Fu53MajrZMOAjOIPGMTdTXgHLgGU9KwTqKtYc6WNYtFZNKw04euSfJ/zFg8eBY/2MlciVngkF7Gyc2IL7e8Bsw==} + engines: {node: '>=20.0.0'} + + '@mdit-vue/plugin-frontmatter@3.0.2': + resolution: {integrity: sha512-QKKgIva31YtqHgSAz7S7hRcL7cHXiqdog4wxTfxeQCHo+9IP4Oi5/r1Y5E93nTPccpadDWzAwr3A0F+kAEnsVQ==} + engines: {node: '>=20.0.0'} + + '@mdit-vue/types@3.0.2': + resolution: {integrity: sha512-00aAZ0F0NLik6I6Yba2emGbHLxv+QYrPH00qQ5dFKXlAo1Ll2RHDXwY7nN2WAfrx2pP+WrvSRFTGFCNGdzBDHw==} + engines: {node: '>=20.0.0'} + + '@mdream/crawl@1.6.1': + resolution: {integrity: sha512-GXMU0ygFgkEHbeAMgN/q8qE8XuYoQrBEx52YQszc2Ex1kGEiYIwtyu0h9Ka/ti9A/C8nIdoi2F7mmGqAUFRB8g==} hasBin: true peerDependencies: crawlee: ^3.16.0 @@ -2813,87 +2973,87 @@ packages: playwright: optional: true - '@mdream/js@1.5.12': - resolution: {integrity: sha512-yWriJ0QLk8MtJufwDD/DQvyVfACCnVYWU0iI4OmdVE238rURk6FpofyFelcMwQGdwoyR0cfzILCNWC/RgpK6vg==} + '@mdream/js@1.6.1': + resolution: {integrity: sha512-H1a7jeWfgVKXPnoEkgbQrB3DxKFDvpVs3MfI0TWejM1l4VCZszzbR9Q3J1+iQYciRuXvPKPvxbgq9a6Bil0I2g==} hasBin: true - '@mdream/rust-android-arm-eabi@1.5.12': - resolution: {integrity: sha512-uBIQnoNa2uO4mB1tBjAmgbD046wi88er/UsihVFevYilap5+qh2O6u20Um4QLn1vAGkTz94fKa5AEYAdFoSGFw==} + '@mdream/rust-android-arm-eabi@1.6.1': + resolution: {integrity: sha512-sBVruJupMQ/ZRkfrQRfuVG4tMC/B/79BbU79FCxMSCEJYef3T6I3uD+NzK/jCV7KuGFBDfhetrOwqSRp4wOrFg==} engines: {node: '>= 22.0.0'} cpu: [arm] os: [android] - '@mdream/rust-android-arm64@1.5.12': - resolution: {integrity: sha512-nXLeg20C82CdbBW+SJXWPE11V9JYUjTooanKxvJnH5/ztW1KkflOw0eWNTs6tynb3i54trCu0UYJ1T/EX8AmEQ==} + '@mdream/rust-android-arm64@1.6.1': + resolution: {integrity: sha512-vU0VU5MKND//Mb3PIXqoDZ+qU7VPES9ZX8Ttrbpj3rYuto2d5+hzqQ8HufW/IMnWj7y8GZC0W1F8BCCfw/+Usg==} engines: {node: '>= 22.0.0'} cpu: [arm64] os: [android] - '@mdream/rust-darwin-arm64@1.5.12': - resolution: {integrity: sha512-tat3WF/qvNi/eIz/2cV0xK7EC9xnH4nULu1AdKGDTMWQOC2jGIKIjfLNa2hPZAQhdOnFSEtvoctI/5h/9eO4Ag==} + '@mdream/rust-darwin-arm64@1.6.1': + resolution: {integrity: sha512-wYq/v1lnFphosiRN9WSz9/xKh6ThxO/IGEiYAUy5H7Pbz2aMyTQlghQynMdFzs8WPb68IIjMresNUkTIqbTfkg==} engines: {node: '>= 22.0.0'} cpu: [arm64] os: [darwin] - '@mdream/rust-darwin-x64@1.5.12': - resolution: {integrity: sha512-aThsdVivbJwuKzyGo1kjMzkpMWc54gZI2N6nzRz86dL/9a/8+1/McYpQrVWWDwXYfZSra5npe2rOsCzxXctDdA==} + '@mdream/rust-darwin-x64@1.6.1': + resolution: {integrity: sha512-AHEDpXD4uc9v9iHjYxu58YjLcwGE/LIzpqtz07eL2rviJlTH1RFgWmm1T55mG5G4jO24KWQ2+dgWwlzNTL5rWA==} engines: {node: '>= 22.0.0'} cpu: [x64] os: [darwin] - '@mdream/rust-freebsd-x64@1.5.12': - resolution: {integrity: sha512-s/74VKKCVnWBXis9rrN0Ml9u69uqteM6gHVQKDmsyetK51zDQ5FqobPbFmjhFXV3wj63U03ppLjug+LZoxYY2Q==} + '@mdream/rust-freebsd-x64@1.6.1': + resolution: {integrity: sha512-yhJF/0mu8SfMaYjE7LlCXsYXCRaN8/tKhiAsDz5M91JS/P7rQmwol5az4rhzTJmI0PI5Vfg1qUl9zQ0cTkpwTQ==} engines: {node: '>= 22.0.0'} cpu: [x64] os: [freebsd] - '@mdream/rust-linux-arm-gnueabihf@1.5.12': - resolution: {integrity: sha512-zkNJ6ugspUiljC4cHvVq3KUNbxnY80zstskiF4s0rbg6/R1Vam6/9oTruMoRNEi1hj4roo3zqkBQyD9/0RL4TQ==} + '@mdream/rust-linux-arm-gnueabihf@1.6.1': + resolution: {integrity: sha512-cGFTKnDZvy/+l9ET4yYik0HxxkoxwN256KF7VxCoS92jQ30a/xOKv+1/MWw67qUVf+alUmo/V3Q7E3nC3V74lA==} engines: {node: '>= 22.0.0'} cpu: [arm] os: [linux] - '@mdream/rust-linux-arm64-gnu@1.5.12': - resolution: {integrity: sha512-nsfUwd3ha34AhPmloFmaPk9jWXm99X6EU4/k2/CGAcaA3CgzithplgQh0cnJiXYoOI0dopjki7yWJWKqmydEPA==} + '@mdream/rust-linux-arm64-gnu@1.6.1': + resolution: {integrity: sha512-comKGKew2kXdaMeCJpQoTJ2f1KLJhiR7K6GsgQKnenIvQ0lhaqJheac7cVLUIPvMHVII1+0O8Zv0GPG2jHirMA==} engines: {node: '>= 22.0.0'} cpu: [arm64] os: [linux] libc: [glibc] - '@mdream/rust-linux-arm64-musl@1.5.12': - resolution: {integrity: sha512-NneU7n/OGfOQu95oBILZpFB56o9nBxOP/pTo+vZGTgDG2E5QUycKl/zflJycTwcCXjssS58kTiB9CTgwC1YcWg==} + '@mdream/rust-linux-arm64-musl@1.6.1': + resolution: {integrity: sha512-hIbo/jPYF2wA0/YbarJdFChVHbh61ck6C0pUO/tVrQKHq7teyAM94AbStjyVMxdcs6gwAfpPfdOPISs1VLc0Gw==} engines: {node: '>= 22.0.0'} cpu: [arm64] os: [linux] libc: [musl] - '@mdream/rust-linux-x64-gnu@1.5.12': - resolution: {integrity: sha512-CI1b9b/bFUDDVNUb1NK3uc8grJeM8qD4bRoo0qCY0dpUWRYwErmTs7Sze9O7wwkpGEaGl9bv12kHSW5/9C2AWg==} + '@mdream/rust-linux-x64-gnu@1.6.1': + resolution: {integrity: sha512-KZCL44b/mYzkmrwffvwwEry5KxIwfaknyXaAptVuiAUmcLwxXt2OsUVfzVcp1QtVVwcKailLXKifRiIQgI+N9Q==} engines: {node: '>= 22.0.0'} cpu: [x64] os: [linux] libc: [glibc] - '@mdream/rust-linux-x64-musl@1.5.12': - resolution: {integrity: sha512-sAoSJKsSdtP9kjTDbMnNyAnTj+yh2lUGFrHBrqN8zWcHYl6L09rRz7Sgoguo/4kmMkzLxg24y9EDk/5660ZwVA==} + '@mdream/rust-linux-x64-musl@1.6.1': + resolution: {integrity: sha512-VArdwNAGYiaqNl2eiZyRulMU8fKC4rw3l6Z/KvL2d57edBK0wdowNb4gwRVsUntpgRM+2DN4hYWsaffwBbw6bA==} engines: {node: '>= 22.0.0'} cpu: [x64] os: [linux] libc: [musl] - '@mdream/rust-wasm32-wasi@1.5.12': - resolution: {integrity: sha512-OGriLOVHwOlXG067QKLqnGwfz+CaPKW816cG1IFrmHSAEgIA6UJzQ6zMfr0DK7yu2PGh0pkAmiurIDMt8l6/QA==} + '@mdream/rust-wasm32-wasi@1.6.1': + resolution: {integrity: sha512-jViIuWzt6qxKMoHBXrXGyB5qwRgn2z3oxwD/SXAZxnSTanTZkEhOqDE8hPfrOWZOYl1SYujDQaJd5fZIN/akew==} engines: {node: '>= 22.0.0'} cpu: [wasm32] - '@mdream/rust-win32-arm64-msvc@1.5.12': - resolution: {integrity: sha512-CxWFPKA5Fue0xC/OOqfqPLbH1hQfQrjKOHqISoQd+Yw1C8gP5ndKE/TUfyRi68GCJDYLAa9ijGkab5lWWblKPA==} + '@mdream/rust-win32-arm64-msvc@1.6.1': + resolution: {integrity: sha512-jFJE0ZdSfx/7M4MWYN8fPBw3Apci3LyO2JmwMZgHL8zT4ic2YO4fIAeynynI7e1v2J8+1UwlSmPQPGTjPjP2Jg==} engines: {node: '>= 22.0.0'} cpu: [arm64] os: [win32] - '@mdream/rust-win32-x64-msvc@1.5.12': - resolution: {integrity: sha512-Qrd29A7dLMw5x7xYY7ZHgj/8/QPz5s84dIVAQQ3BGWei6MVq5MPaOV/EJ87JBvn6eJ0q0o+ds3xMwKsh74ja5A==} + '@mdream/rust-win32-x64-msvc@1.6.1': + resolution: {integrity: sha512-JzqxZKVUu4OI2S4WsG2b/wKp71mGJFJ2aLiNnEJtVnfzLw/l6cf0errRi+LO5NxsTxq1A7piAqaNA6sRbI12yw==} engines: {node: '>= 22.0.0'} cpu: [x64] os: [win32] @@ -3195,8 +3355,8 @@ packages: '@neon-rs/load@0.0.4': resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} - '@nestjs/common@11.1.28': - resolution: {integrity: sha512-bRImsxibie+AM7xjdwcrm/gr5YeacI65kSBNzTufa1Ib5iwziaY/lqMtRh9THq6pbV4e1HP9aI2ZxGUumnmaoQ==} + '@nestjs/common@11.1.29': + resolution: {integrity: sha512-zkeNRlfiQIH/044r5zphjNzKYxBRC4O00onTdCsH2qq0R30Ixo0gOS9so5TadEbJJCuGNm0Vx3PBE2FG2vkBdA==} peerDependencies: class-transformer: '>=0.4.1' class-validator: '>=0.13.2' @@ -3208,8 +3368,8 @@ packages: class-validator: optional: true - '@nestjs/core@11.1.28': - resolution: {integrity: sha512-06m63xIRj8+l8uOeh/8LnYupGubkyu4f+bPKIadaSui6vK9KpXgoz7HveT1yOVLcEt0M0oCOEW5EuEXZkEmBBQ==} + '@nestjs/core@11.1.29': + resolution: {integrity: sha512-ANXnZxirMNAY+JuRHCIYIdTfbhX3rizeSbJloub/4EYwpIfCuUoaz9woOofWmywYYc3gsVkLxVZV03gqntI8vA==} engines: {node: '>= 20'} peerDependencies: '@nestjs/common': ^11.0.0 @@ -4268,48 +4428,97 @@ packages: cpu: [x64] os: [win32] + '@oxfmt/binding-android-arm-eabi@0.61.0': + resolution: {integrity: sha512-BaS+1OVvg9sr+Xav0+KdWedQRcAzrdoEcwMZeqoc2F6ieC1s/t5eM35YQoRPQ7vAqkZ+p3tbQb1r9I9mrV5oGA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + '@oxfmt/binding-android-arm-eabi@0.62.0': resolution: {integrity: sha512-pdsv0C4gPjJ8H1+sd8u0BDx+yLACTL+rgeMIOL1ln4ihSnhw8CWXtYWgvcSkyTfgGBIzFKab+d8rx9Xl4en/Kw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] + '@oxfmt/binding-android-arm64@0.61.0': + resolution: {integrity: sha512-of8atAV0M1egGcVOMbgZCvc10sFOP3ayQBNQV5h5G3fNq8gACdEswfFk9bzGrdbM23rtg0Coxi7np7oPLcueNw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@oxfmt/binding-android-arm64@0.62.0': resolution: {integrity: sha512-WC3YQ7uS/KtDrjmqwBviwFKe9qeoi+eXx8aX1z/ffG23Md75myjrJaQqTuJvdOLPoa4EYTjDWH0dHXfwulCVog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] + '@oxfmt/binding-darwin-arm64@0.61.0': + resolution: {integrity: sha512-7l8+5ov4BGwtAcmpzvEik/TG3bciwyw/S3e6j5GKH7pcQqcgCVxD3AuJeP6upto+SOTBKQ4wrrdbMt0gq8fHSQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@oxfmt/binding-darwin-arm64@0.62.0': resolution: {integrity: sha512-GM8Yf3LjjaR1I8PD0SfeoIlwhsh9GvSF+cQ8sf624Yxnjsyumn95aFzYfKJVefblfDIiOAnZ7QVm2sa21Er/0Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@oxfmt/binding-darwin-x64@0.61.0': + resolution: {integrity: sha512-Fnz4dDDXBb7udk+DmwelNjxbD6yptyxwCqwCH2ebo4RVLxVsRfFsn/AHJC49KIltPrVokamGv4SSOsiV50DTxQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@oxfmt/binding-darwin-x64@0.62.0': resolution: {integrity: sha512-d5THp7F8bCxLqNogEXDORRsQD6dosf3EyFtnXfBer6v+8tGdcWIjoDX9WaXrrF/26zOmL8qHpPTKCEvpBDmZkQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@oxfmt/binding-freebsd-x64@0.61.0': + resolution: {integrity: sha512-mddOebKNCP+AucmzfNsk3jgbr681qAUvgMqi865GW5gWLJ/AnzXbvjQRrny0e++NAN8aphav/aRSrfFxNsNjpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@oxfmt/binding-freebsd-x64@0.62.0': resolution: {integrity: sha512-1DnrtXGZooOZ0fHgAXZUaDQzBVh1CM2MNW4oBXyQ2aWKvCHjyljvT9fgBkOM0fEOb96X5eqtcfJ0YUVt9jj66g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@oxfmt/binding-linux-arm-gnueabihf@0.61.0': + resolution: {integrity: sha512-svx59iYL+DbaZGZUIoice4W0CjRXGExnbz7Re+awIb60rVxBS2KrU7Hnlx+nZYanLGLpjneUEgo/VFEKkSZAyQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxfmt/binding-linux-arm-gnueabihf@0.62.0': resolution: {integrity: sha512-4pQDHOYRH+Huqe0StIaWyvk2CVl/aTaqSrbZpA3/pLS2xH24ME7lBgYprhQF2fRkHBzhGGGKliwxFsDdHwx59g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@oxfmt/binding-linux-arm-musleabihf@0.61.0': + resolution: {integrity: sha512-BYK9MPJPCf6d+fLKMTruThmEyCtHzQ1zLcsrTlUVkmnoXIaHAbfpeLYQwX1tkjs7W11dyzoi6HFvKcdnvX1zNg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@oxfmt/binding-linux-arm-musleabihf@0.62.0': resolution: {integrity: sha512-X0jAaZJFMCVKhB6YyWVTQ/wN2DLsBcZKSMqTS76bF6riT+XZdtg2FPEdjDvdVbunO9cG+tWiVaEs4Zs38lxYog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@oxfmt/binding-linux-arm64-gnu@0.61.0': + resolution: {integrity: sha512-QUaCNLq2/EC6G5ljOuFanl9Lgw6ZWp4co7rs4+KOMUzbGfA4Lq58FHRjjF9sVIG+93XSbo343MxFATrOU1qctA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@oxfmt/binding-linux-arm64-gnu@0.62.0': resolution: {integrity: sha512-682Z8T5s8T5ATArYtsejKvbIfd8LEAXyyDkKkoZVq8HND7Vx8TYLlrDjDSeYfodMeVwHOgkj13lJYR8cj6vUSg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4317,6 +4526,13 @@ packages: os: [linux] libc: [glibc] + '@oxfmt/binding-linux-arm64-musl@0.61.0': + resolution: {integrity: sha512-S6uvJ6MXnRXl+zTs0CARNDvkE+cymj0EVWEKKsyKnlLlqTyQJBjw5s4D2pSIOZc+S46cy4STefzcr/sm0VzVPA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + '@oxfmt/binding-linux-arm64-musl@0.62.0': resolution: {integrity: sha512-lk25fAl7KWaLWVJcW0CHEXB7QlQZtx5eDkjpaGMK0hzXTjUe0Wmlu8IKuFHoviSOcEJedRTs4VE/506VqGxGew==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4324,6 +4540,13 @@ packages: os: [linux] libc: [musl] + '@oxfmt/binding-linux-ppc64-gnu@0.61.0': + resolution: {integrity: sha512-6VDlRcytvZG6UlSIdAFKDLbppo9tvPxrWzle6vHldYFMeuDPQEfMKrkwezp7FaBq1wik9ra554ZZeRPsyIkFpg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@oxfmt/binding-linux-ppc64-gnu@0.62.0': resolution: {integrity: sha512-SFyNqHQLwySceWNLhiSldx7wPXRAzP0L0WcW9GegP3uWrpZGJiZlQO85NbHAFPEfxR9PhZ9qSnZryEh7+v+4Gw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4331,6 +4554,13 @@ packages: os: [linux] libc: [glibc] + '@oxfmt/binding-linux-riscv64-gnu@0.61.0': + resolution: {integrity: sha512-KkBTYbzExpbmn15XjKPLu2fRV2PVlq+KWt+brad5rwIa03vdYoaDRWiS7raHII/dCTR6Ro4UpYUCH4t6lif4WQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@oxfmt/binding-linux-riscv64-gnu@0.62.0': resolution: {integrity: sha512-KYj55C1ywJfHo6+aKDuEmUtVEdJALsC5GwayDGsI6FGz2GxFqNr/mA8nxVsNbJzm7sE5MRqTQ9ziImSzhYXysA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4338,6 +4568,13 @@ packages: os: [linux] libc: [glibc] + '@oxfmt/binding-linux-riscv64-musl@0.61.0': + resolution: {integrity: sha512-69tzIq7sJLVB9dxYYtvMzcSSsnZHSO+U2U19O2RqDqgj6+Q4O7HjSXdaszbcgqzhsUwzSH7z5kWvk8nmf6BHTg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + libc: [musl] + '@oxfmt/binding-linux-riscv64-musl@0.62.0': resolution: {integrity: sha512-BhZDNo5GOU5nC378RhD0/XpvaEBHsH3HLgJp8YZX3A0InC7oivzA63HsRmiXFLtLSHAstEVrDf6fbC7Rs8Jh/A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4345,6 +4582,13 @@ packages: os: [linux] libc: [musl] + '@oxfmt/binding-linux-s390x-gnu@0.61.0': + resolution: {integrity: sha512-Oqi/N0OvtOVXsPKAOOhKgGH3msRYF8BLJaNBbWiupRiKoKVyc8JRKPCfarkQJC+RgP9U8raUKLe+bNwd0HUMiA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@oxfmt/binding-linux-s390x-gnu@0.62.0': resolution: {integrity: sha512-UyAFmyHkgSgUJ/wOM4p3U8AC2yAFvRH5PNBs7TnK0fObTT/XSWcdr/lAzPSWaekHaZFaMeFZyk9n93Joq3J93A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4352,6 +4596,13 @@ packages: os: [linux] libc: [glibc] + '@oxfmt/binding-linux-x64-gnu@0.61.0': + resolution: {integrity: sha512-3TKwv/ed4uwJSemAA8P9XcoqETpjQI4waquF9UilhA9Mn/dhr1PdUEXWlL74mtc6ZNfmKPA9+NEJm01nRF8CVA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@oxfmt/binding-linux-x64-gnu@0.62.0': resolution: {integrity: sha512-1iYMP0leytWazFubD/WnINJuIrzRPuoL1aWEJdlGezEzDbTxcd29R4r8IUzP2oWeKst5V02uMJgR2NILlPlG6w==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4359,6 +4610,13 @@ packages: os: [linux] libc: [glibc] + '@oxfmt/binding-linux-x64-musl@0.61.0': + resolution: {integrity: sha512-uFso4u4nLkVSlMCpgjyvWV60Gt7GvDQHnk1mmRxHIkZTMB0ljpUKwCD9FYGgN9H97x2wYl0UwEjgRZaPIuhEhw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@oxfmt/binding-linux-x64-musl@0.62.0': resolution: {integrity: sha512-4rA/URtJSTVNVAQz6Q8wf7SaRvOXVy+TizriT9hs/Y1XhLR/R+92uWKRQG8yFWRAIEBbFHJ6WevQcl/G9SXEfw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4366,24 +4624,48 @@ packages: os: [linux] libc: [musl] + '@oxfmt/binding-openharmony-arm64@0.61.0': + resolution: {integrity: sha512-keGLkzeOvkMpNmPp4hffXWpfoSsY6e1K8++KXD4mSSfxdvM8q9QUDsYY689TB1k6Co832DZn1MnaaVx6cIBMWQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@oxfmt/binding-openharmony-arm64@0.62.0': resolution: {integrity: sha512-mSZuFHU2ar1KLUjXpI2QBQcJ1VsOB3mOCgQXuXCpKs19dgh4u+OaovNfrWDfiJb+ihJ2+f7YFcaO9bS2dlTCXA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] + '@oxfmt/binding-win32-arm64-msvc@0.61.0': + resolution: {integrity: sha512-VzsAISkFxmNhJ5LBDEL9VuH6tJsVJMtqYit2LyIUf/HLnsCe4Pg9SMOjjVQzGWt0bnpyfJ94CrqTqcpNZzK+ug==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@oxfmt/binding-win32-arm64-msvc@0.62.0': resolution: {integrity: sha512-OfwuhkcjDlqC4EgDojtiV9mzpLqeB9KqTOWPOjLEYBVdDCVSxqW3qzp/xcIxsbtI0UgGCnKvAqYKyY25kf5JZw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@oxfmt/binding-win32-ia32-msvc@0.61.0': + resolution: {integrity: sha512-xv4t7yzwJoYaLB6Zv28B3W+j7brEjsyv50rLTAQgmxJzddce9fAMCxed8dSAkbWES0zz2J29nYK5FaTuD2YBHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + '@oxfmt/binding-win32-ia32-msvc@0.62.0': resolution: {integrity: sha512-P9uDDNFRzghO3X8QAzhkjKhK7JvtABsVn8UYtFX7uor12IAnwNt8nNIctvfWj1JkQU/kE+fmLRPiw7XlrIHsZw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] + '@oxfmt/binding-win32-x64-msvc@0.61.0': + resolution: {integrity: sha512-6EZXFkqOwxdDYjIn3TSNnPk3ST5E5GiYd4FiM6UF/mCL/LZSfr6D6UygTfW3R1PCQP2quCKpCEGRlij8E3VYbg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@oxfmt/binding-win32-x64-msvc@0.62.0': resolution: {integrity: sha512-dlI5SY7XYQCiCBafntWagCR6HcAJB/NpsLtdlPx8x08+Osz8Ok1HHz1GZuusegCe/VoJ6pAnF5a4pd5OZAq7qQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4420,124 +4702,124 @@ packages: cpu: [x64] os: [win32] - '@oxlint/binding-android-arm-eabi@1.77.0': - resolution: {integrity: sha512-E06sKWS6PiI6HRxS1wyQg22HvApt01hI7fV+T3wUk3OSbaaP4a3hYGY/MIQDmASqCiRjBdpRQYkgMkqH82cWmQ==} + '@oxlint/binding-android-arm-eabi@1.78.0': + resolution: {integrity: sha512-Bu819lmAfZMUHErrpe0cEWj3iaefuUODHSU8+UbXy67V/r7/7f4K3FL0NmbD85E+wiFLDYuhP8Zlv0XnVeXshw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.77.0': - resolution: {integrity: sha512-NvsKz0KZxTp9cYWPLf+FXaSZwB3oO3peAjtukpOMBgse2vhQSoIIVqeO1yR0lEo/UcdZIDL18uq+kL0LzQ0ytA==} + '@oxlint/binding-android-arm64@1.78.0': + resolution: {integrity: sha512-CDfxZgB61B7buRdY2FJoAYYPPXCZ1EoC1LKscnC5dg3kjobdxiconvAvvN1BmHyW4PyFT3jRLDag/BY/roSNBQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.77.0': - resolution: {integrity: sha512-bgjTn6nW4bQCFBvSvuHCpDD+sONvmpo4lGI4PxzMt1quBA+xYxhczk6RiCn3GZ9gY8uhaBbwhj9MdKGfu6T9DA==} + '@oxlint/binding-darwin-arm64@1.78.0': + resolution: {integrity: sha512-2Y2U9Ahrz+OO0Ej88f9SJYq51/jUBp1Mc7iZu0ukrbeeZ3gpRGfzIFnoqfHDY96xr0GEfNrPUBFEy0nN5aD7HA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.77.0': - resolution: {integrity: sha512-aotaIttH1R6j1Rwhx0M0htgeZyGtVQqYNTVEYMN/UcgHPquGA6kmk9OyuDc3a2GKUQBC+3C3GVQCcrRPMYqAFA==} + '@oxlint/binding-darwin-x64@1.78.0': + resolution: {integrity: sha512-rpych6eJq6m9jDRypTEaPD1xysaEW5h9+xuxhGK/QhOg+/xaqPZrCrTNoIl/f3nEjuJeCEmstNDlrE9rJi/3/g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.77.0': - resolution: {integrity: sha512-nNx/wta7ksRAdYvq+l4AWjXkLxEXHALhENxjj2cYbQAIR4ybaA5L+hCbE63HOmft5czQ6ks+hb8vmEAnn7YGPg==} + '@oxlint/binding-freebsd-x64@1.78.0': + resolution: {integrity: sha512-IcMGrQT3QizkOESUJd5et+rOhVqSkNDfNik1cvrKDqIbzqx9KMtRswpFgkCuNTSwylCFLKhGUu8KmqY1ZnC0Dg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.77.0': - resolution: {integrity: sha512-tMLLjM7xXtzXisVCzkOTXNCy9bZVId2wteNwjohlFDR/jY6WagpEDA1c1wu4xRc20Hojaxj+V6DSR7gbKxijWA==} + '@oxlint/binding-linux-arm-gnueabihf@1.78.0': + resolution: {integrity: sha512-/uLdoJ0IXE6vo/0f0LKjinQAp+re+VMaCWaNT8ENIv2EOCkSsc8SGaflXAuW0Jua2dq5+GLVWm1NQK7P3UFSNQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.77.0': - resolution: {integrity: sha512-MiAFDFaqR0tmHTAyo0YDcZ5hyLREdYw/RQhc2R3cbT+8O3tB+zqPM2th9TTQ+Uo3jn/embS+DO+HyX9ztCPkOQ==} + '@oxlint/binding-linux-arm-musleabihf@1.78.0': + resolution: {integrity: sha512-7xi4Wb/O8NRJhLoUXmDJMUVpNYvB5kefdhFU1Jb8rtae4QoXlTiLwI14X4YvAXVZLNZChP8m5qO9SQAlWQTbkQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.77.0': - resolution: {integrity: sha512-/xqQ3B16i1T4cyt/9Mn+4CpzhUXoBXp7kVpIwzOXNFLj5JmK1bIjsbSnX296Gg8A/o7oDtKWikFgBx0SLwztkw==} + '@oxlint/binding-linux-arm64-gnu@1.78.0': + resolution: {integrity: sha512-4hFW0+fVXa3OIh1Y4A5SPkmvI4wuuBSrCVKzOyE7PTjhc7yEqZ1pmvEEeS5Lj/MaqvegFxXyF33N+6jkehxdyg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-arm64-musl@1.77.0': - resolution: {integrity: sha512-LSbwuRKiNCenPDcbARqAZ5RfBy7gmj7vOvfJRLeCDU3gFtSxWbhv/+VTlaUqzUhNj1gFLHB8h7ALnxa/Az6z6g==} + '@oxlint/binding-linux-arm64-musl@1.78.0': + resolution: {integrity: sha512-oC0mvsgBJjlMijSDEhx9KuvR9zYeHXceA9MjbuXB1F8NSR78Yj2unOBrstEvTVaq+pko+kuue6DajC00eqvTdg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxlint/binding-linux-ppc64-gnu@1.77.0': - resolution: {integrity: sha512-QWdcH31mXEUe5Nq1s0CfCpceaKjIo9uZtwDjAuL681g1axf+5x8xrg/eXWaw//4NCxYZ4V4e5Hu5tvdR+pTBlg==} + '@oxlint/binding-linux-ppc64-gnu@1.78.0': + resolution: {integrity: sha512-XAllT5SUZS+ohjuZ3/5S0cwe0r7eboiuigeStCZ5DXRYx/2KVM2UvQXvAfyzXEimtQjAB7cDQ2YxDe2Zl2WNQQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.77.0': - resolution: {integrity: sha512-GnOfYgJxbcElOiPZaDFDl406ONddwvOWk2jvAAAEjwAl4GofNoHF+/HHUIBYa6bFCArlcGPi0XjC4cU1pkgF/Q==} + '@oxlint/binding-linux-riscv64-gnu@1.78.0': + resolution: {integrity: sha512-trucMER/0QtecoXvc1y/UVqE3kwJipDwrx4oHfj+nNm3dq2zjP44WT0CfHNDPM3G1DXIkx/gY6lAD21NSCZVhA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-musl@1.77.0': - resolution: {integrity: sha512-AyEMTUCf0xY+hHF+IxqXFQIX0yQOIR8ykpY0lJNOw9xYqOzUX8dyZfRvlG0RfXwuQn2eonf/8NrMmDSZJjdqsA==} + '@oxlint/binding-linux-riscv64-musl@1.78.0': + resolution: {integrity: sha512-cm3O4F/HQbdzOUX5mKHqG5KDL6E5w0pnlZ+fbBy2rmLryPOowkuLagFHTopQsEIpjcaZoPOrL+BmmAytAG9HFg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxlint/binding-linux-s390x-gnu@1.77.0': - resolution: {integrity: sha512-sPLzEcNvxd/oyVQ5oZo92CiHkFkpBeRop13E/P3TPY+hZfXHKCOWKI70TE2RYwMKFJDc20EMjH16L7NZICtKTw==} + '@oxlint/binding-linux-s390x-gnu@1.78.0': + resolution: {integrity: sha512-33wRf6HqGNsybJ3qX4cGaQN2ODPxNmc1rMa0mrTmx3eFq1VzOnvQooi9bIGVYakW8a/wmqVx1mgsUm8R2xfTiw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.77.0': - resolution: {integrity: sha512-1Oh2ssH2L7lwyvkdSqaMUfsGfwU2Wfvew+obBUYjRVqhpBcUpwnsPSEr1IzVi9XqkuY10geiLsNKecqaZC34Dw==} + '@oxlint/binding-linux-x64-gnu@1.78.0': + resolution: {integrity: sha512-rRdISSYegj6VganMZ9tjRjijowfHJ09IZU01i0toBAqr6n5LEtwHq2IeS4FjW2RoskOHlb6efB26H5izYb3GEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-musl@1.77.0': - resolution: {integrity: sha512-0j/2wRgNGO+Qj/M1uu/p57h/hFTTWWcfie0ufkbabeus2s5+/QqkCflnMOwLLN5m2GsNeWp4xdl4cPa4n7QCOQ==} + '@oxlint/binding-linux-x64-musl@1.78.0': + resolution: {integrity: sha512-GmsP4rW0xTL6u5CVdcDsaN5Fbc7hBc382Wmar1kttbnwSEviM+rSINKOMQ+UQ6iH+AGwC+8gaAiwu134Tgh6Lg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxlint/binding-openharmony-arm64@1.77.0': - resolution: {integrity: sha512-BJ/j54qS0usEnyDkLYURMj2iiD9h5Cyy+ppzeMSXBGRXaGRNWnj1Mw14NqWMR5E/PzdgB30OOCCzLzbRoduafw==} + '@oxlint/binding-openharmony-arm64@1.78.0': + resolution: {integrity: sha512-sy9yeYuADc8a+n4TLBayzMCZiHPW78DcIFVpOXTmdKHWQeM9xe5uzkqIIZmi326D5hY9XVwacipEB1p7tQjPAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.77.0': - resolution: {integrity: sha512-Yh8w+g2Lpx7StrvtYkoz9JJvXjB9wxgFChFNb85nrXm/wj/XTwGWS1hve9+900HL7llrntYB3YP+y32E3tRqzA==} + '@oxlint/binding-win32-arm64-msvc@1.78.0': + resolution: {integrity: sha512-rjc2hF1KfMi8fZj1X/m3AmnHbdsF3rL0v6KQg0Uc880Yb2khjz+3U14sfdZ7jWTpRnN1m1NQa/TT7uU9lJWPrA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.77.0': - resolution: {integrity: sha512-zja5b7+6a7UsRFgAQSrnax5vrzliEyNPLCjfXONu/vTWswaIVZGFajJZptaeRvPE4LghtFdAzVFlexTm7MVTGA==} + '@oxlint/binding-win32-ia32-msvc@1.78.0': + resolution: {integrity: sha512-zcuXFVrEFHIafRfkCQT8w/Xe41o07ozl/vwHq7p94vB29xVzsB0sZGYORU1jhcYKv3Lr0J3HbJ2T4fHH5rWmvA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.77.0': - resolution: {integrity: sha512-+teyvPDZ2RjUvo+SuCqS/UhaJl1QtdW5fWT5NJTV61V5MIuIS90Db9LixmtEGvXixyttiK62P96MSu3UlpviBw==} + '@oxlint/binding-win32-x64-msvc@1.78.0': + resolution: {integrity: sha512-Sb5ocmLSuYeOuXd+CFOToGKp/gjXUEWDnvIGwhnh8aq8wY4TMmEnKnvbogSW7RdMZv77JSARduS7/gv+khYEjA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -5068,6 +5350,37 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@shikijs/core@4.4.3': + resolution: {integrity: sha512-QCR4q2ZO/ILJEuwiBMel4wdcTDb1JGwfjKTxPDF6x8ixOaluPrVqIn06C99AcRPhmYlBR56d/Fb+GN58GzExpg==} + engines: {node: '>=20'} + + '@shikijs/engine-javascript@4.4.3': + resolution: {integrity: sha512-FbOjFJp9VLdo1Wevs10BBtVxiTWwNLqZh5Gkhjgda/ioL15YOgeSl9n+6XMa3qRlPQzfhFNe641SrynFHYG0nQ==} + engines: {node: '>=20'} + + '@shikijs/engine-oniguruma@4.4.3': + resolution: {integrity: sha512-EcOQkxdxGQrc1Row/cC2c96/v1dbZqGnEVu1qTuT/MJmp6+cXCvQussowVmCv5Tqr3KuY3c7IbM6HTW3LJ1k9w==} + engines: {node: '>=20'} + + '@shikijs/langs@4.4.3': + resolution: {integrity: sha512-ePic0yfAJGOF83D5wBHK/00EjK65oahBYxFk5epgq33WRv7X9UuxLEV8PtR0szC0z8dl7INIpIodB99JRFlR+A==} + engines: {node: '>=20'} + + '@shikijs/primitive@4.4.3': + resolution: {integrity: sha512-m0wBeLDQDeIxRdUmrCPdQqfuUamDwRL5isCfYbguKD6NiaKpVbsv+3J81DyIKgNW5h4WAIIr8T4EkgQrBBxvaQ==} + engines: {node: '>=20'} + + '@shikijs/themes@4.4.3': + resolution: {integrity: sha512-w8UHjeUnIR965KMWJHUPXOc2mNJUnK3vpVLYLvw5IYU2mnTTJ89E24OrJDBNiJDQ0qzb0tc4l7mrIXx5cFeIyw==} + engines: {node: '>=20'} + + '@shikijs/types@4.4.3': + resolution: {integrity: sha512-UEJxmRR++MAGR6hugn0vgVS2W/6lWAts84FFSrnlH9sP0LNol7E5+NQ792pH8liWUhyMyjhTgSUH3k7iD7tc5g==} + engines: {node: '>=20'} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@simple-git/args-pathspec@1.0.3': resolution: {integrity: sha512-ngJMaHlsWDTfjyq9F3VIQ8b7NXbBLq5j9i5bJ6XLYtD6qlDXT7fdKY2KscWWUF8t18xx052Y/PUO1K1TRc9yKA==} @@ -5137,6 +5450,9 @@ packages: '@speed-highlight/core@1.2.24': resolution: {integrity: sha512-qeW2e1l78afw8VhRPfPQ1Gjj+KU5XFQ/OFV5ti6eTa9bruO7mJyZtA4vw0ofqmA3tKCkROE9xLk3VZoeRc98nw==} + '@stablelib/base64@1.0.1': + resolution: {integrity: sha512-1bnPQqSxSuc3Ii6MhBysoWCg58j97aUjuCSZrGSmDxNqtytIi0k8utUenAwTZN4V5mXXYGsVUI9zeBqy+jBOSQ==} + '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} @@ -5172,8 +5488,8 @@ packages: '@standardserver/shared@0.7.1': resolution: {integrity: sha512-tBDheI3Me1gQEKPU+XhcCZ6/njmkKgJhA5rhi1/m6GauGhHq87UuVslDNc8qB+T/xsxVch/qETFhssEWO9c6BA==} - '@supabase/storage-js@2.112.2': - resolution: {integrity: sha512-6jyBq/J1iXOHNpbjCZS7gFcDk49iM1MCJUVkDl71gLd/+XnLDzpUBs8icGebtwiHpl4kVszxIRDYAosbF4Rsig==} + '@supabase/storage-js@2.112.3': + resolution: {integrity: sha512-oSK61tzlUvg+BWPqpKQCu9qqonsO26btaoAR9D6Gest2aj7xUqToj9rKyaoYOJczkhg9BjqA1REbYy9tPI4bDA==} engines: {node: '>=22.0.0'} '@swc/cli@0.8.1': @@ -5263,42 +5579,143 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + '@swc/types@0.1.28': resolution: {integrity: sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==} - '@tokenizer/inflate@0.4.1': - resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} - engines: {node: '>=18'} - - '@tokenizer/token@0.3.0': - resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - - '@tootallnate/once@2.0.1': - resolution: {integrity: sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==} - engines: {node: '>= 10'} - - '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + '@tailwindcss/node@4.3.3': + resolution: {integrity: sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==} - '@turbo/darwin-64@2.10.9': - resolution: {integrity: sha512-Jh+pTGXLNz8+1tkUU13TI/f+ZOI+OvC4YbHi1H+57iSpLt5DR3xgptd+4sA07RdjdRR/RX/01uQQu2OkbzIefA==} - cpu: [x64] - os: [darwin] + '@tailwindcss/oxide-android-arm64@4.3.3': + resolution: {integrity: sha512-Y85A2gmPSkl5Ve5qR86GL4HT509cFqQh1aes9p3sSkyTPwt0Pppf3GkwGe4JPACcRYjgJIEhQgM6dBClnr0NYw==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] - '@turbo/darwin-arm64@2.10.9': - resolution: {integrity: sha512-aqtpPkiIC4IUas8Vv27oJ3aDfTuP1d5wofd01dZ7gfhHRrIKuFdqQb4imvNnVFahcOViF9Jh8Oi7feDoz8/ciA==} + '@tailwindcss/oxide-darwin-arm64@4.3.3': + resolution: {integrity: sha512-BiaWatpBcERQFDlOjRDpIVXuFK5PJez5SA4JMg6VYZdBYU+qKfV/vqjcIs+IYmtitf1xYQZTwXvU/8y4lfZUGw==} + engines: {node: '>= 20'} cpu: [arm64] os: [darwin] - '@turbo/linux-64@2.10.9': - resolution: {integrity: sha512-XyAneUBsS5uNOUOjBSs81zyigMVwwhVUd3u7F2JFMKGQk6F7eNAiOEBASJ+aHLldjYsOEjhfW+5gWIqwziyFFw==} + '@tailwindcss/oxide-darwin-x64@4.3.3': + resolution: {integrity: sha512-fAeUqfV5ndhxRwai8cXGzdLvul9utWOmeTkv69unv4ZXixjn61Z+p9lCWdwOwA3TYboG3BwdVuN/RDjhBRl0mw==} + engines: {node: '>= 20'} cpu: [x64] - os: [android, linux] + os: [darwin] - '@turbo/linux-arm64@2.10.9': - resolution: {integrity: sha512-5jAcldLnkuWIjujGhCn2MGIeUwW8IVNOq9Sce4EEzzgLcxmhTasbV0RiW6ZkaRdOjmOCGzeNXPLkDJEOIucOLw==} - cpu: [arm64] - os: [android, linux] + '@tailwindcss/oxide-freebsd-x64@4.3.3': + resolution: {integrity: sha512-iyf5bV6+wnAlflVeEy7R25dupxTNECZN5QMI0qNT6eT+EgaGdZcKhGkr5SdoaWiLJ3spLqIY9VCeSGrwmtg4kw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3': + resolution: {integrity: sha512-aAYUprJAJQWWbRrPvtjdroZ56Md+JM8pMiopS6xGEwDfLhqj+2ver2p4nU4Mb3CRqcMmNBjo8KkUgcxhkzVQGQ==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.3': + resolution: {integrity: sha512-nDxldcEENOxZRzC2uu9jrutZdAAQtb+8WWDCSnWL1zvBk1+FN+x6MtDViPB5AJMfttVCUhehGWus3XBPgatM/w==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-arm64-musl@4.3.3': + resolution: {integrity: sha512-Md44bD6veX/PC5iyF8cDVnw4HBIANZepRZZ7a8DQOvkfo5WUBwcp6iAuCUz23u+4SUkhJlD3eL7hNdW8ezd/kA==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-linux-x64-gnu@4.3.3': + resolution: {integrity: sha512-tx7us1muwOKAKWao2v/GaafFeQboE6aj88vC6ziN2NCGcRm8gWUhwjzg+YdVB1e4boAtdtma4L43onunI6NS4w==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@tailwindcss/oxide-linux-x64-musl@4.3.3': + resolution: {integrity: sha512-SJxX60smvHgasZoBy11dX6YRjXJFovwWBoedhbQPOBzgFWBHGB+TVPWB9BxzR7TTxU8FQZAI2AyiNCMzFm8Img==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@tailwindcss/oxide-wasm32-wasi@4.3.3': + resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': + resolution: {integrity: sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.3.3': + resolution: {integrity: sha512-yJ0pwIVc/nYeGoV02WtsN8KYyLQv7kyI2wDnkezyJlGGjkd4QLwDGAwl47YpPJeuI0M0ObaXGSPjvWDPeTPggw==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.3.3': + resolution: {integrity: sha512-krXjAikiaFSPaK/FkAQT5UTx3VormQaiZ5hBFlJZ9UFQGB/rwg1MZIhHAG9smMQRTdyJxP6Qt5MwMtdyU5FWrA==} + engines: {node: '>= 20'} + + '@tailwindcss/postcss@4.3.3': + resolution: {integrity: sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg==} + + '@tailwindcss/vite@4.3.3': + resolution: {integrity: sha512-yYU8cogLeSh/ms2jh8Fj7jaba/EWa7Ja6GoUqYZaraEuCI5YS6ms6ObZgjjedm+jm6XZjdNRWBpPP6Z86oOxcw==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 || ^8 + + '@tanstack/virtual-core@3.17.7': + resolution: {integrity: sha512-bp+v10y65sp2H7WpWfIMyxTNfl8ZVfxFTLRjPIFRryi6FV/J33z4IS53WO4pTk36KlvJ4iLiQz+oaydDC1xbcA==} + + '@tanstack/vue-virtual@3.13.35': + resolution: {integrity: sha512-lOfSPvgPdlaH6Qy+CyIc3XpycitaSQ9GECndGpTuDiu+uDA1am+90yWXwzDSd/20ZM196ggWJLS+Qb6WjVd/OA==} + peerDependencies: + vue: ^2.7.0 || ^3.0.0 + + '@tokenizer/inflate@0.4.1': + resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} + engines: {node: '>=18'} + + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + + '@tootallnate/once@2.0.1': + resolution: {integrity: sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==} + engines: {node: '>= 10'} + + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + + '@turbo/darwin-64@2.10.9': + resolution: {integrity: sha512-Jh+pTGXLNz8+1tkUU13TI/f+ZOI+OvC4YbHi1H+57iSpLt5DR3xgptd+4sA07RdjdRR/RX/01uQQu2OkbzIefA==} + cpu: [x64] + os: [darwin] + + '@turbo/darwin-arm64@2.10.9': + resolution: {integrity: sha512-aqtpPkiIC4IUas8Vv27oJ3aDfTuP1d5wofd01dZ7gfhHRrIKuFdqQb4imvNnVFahcOViF9Jh8Oi7feDoz8/ciA==} + cpu: [arm64] + os: [darwin] + + '@turbo/linux-64@2.10.9': + resolution: {integrity: sha512-XyAneUBsS5uNOUOjBSs81zyigMVwwhVUd3u7F2JFMKGQk6F7eNAiOEBASJ+aHLldjYsOEjhfW+5gWIqwziyFFw==} + cpu: [x64] + os: [android, linux] + + '@turbo/linux-arm64@2.10.9': + resolution: {integrity: sha512-5jAcldLnkuWIjujGhCn2MGIeUwW8IVNOq9Sce4EEzzgLcxmhTasbV0RiW6ZkaRdOjmOCGzeNXPLkDJEOIucOLw==} + cpu: [arm64] + os: [android, linux] '@turbo/windows-64@2.10.9': resolution: {integrity: sha512-u1xGpGlefzuhBedbt/VR2nWdftfFVZwPeDg9e5uZl68sV1fL3HNYTNr5VyHkzgtPK2VTYg1x4OKZuGrh1Gvhtg==} @@ -5367,6 +5784,9 @@ packages: '@types/geojson@7946.0.16': resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} + '@types/http-cache-semantics@4.2.0': resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} @@ -5379,9 +5799,15 @@ packages: '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + '@types/lodash-es@4.17.12': + resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} + '@types/lodash@4.17.25': resolution: {integrity: sha512-+K1NIO8I+F9/wNulfVvu23QYd0Pe9/OCqRrim4NoYIf1VoEDL90Ve4ClzpyqBLc7NpGGWRvYNCKZ1BE/Jpf8dQ==} + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -5418,6 +5844,9 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + '@types/webidl-conversions@7.0.3': resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} @@ -5430,34 +5859,34 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typescript-eslint/project-service@8.66.0': - resolution: {integrity: sha512-7MthGPTt4BP69lSryqpqq8HQqxuzynssckL/jyDyk3+TNMQ3y2jFWkptCrktWvBrP+EH787Nl5N5Qpw7WZg+5g==} + '@typescript-eslint/project-service@8.67.0': + resolution: {integrity: sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.66.0': - resolution: {integrity: sha512-8TGcH25j9zqJ/IULB/ppyhRvxA8QYfFEZ7nfbg6/BN9spDgb8fPWQXlE5l8TWBL50EtUx007uZ1o9VOwrq2/9g==} + '@typescript-eslint/scope-manager@8.67.0': + resolution: {integrity: sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.66.0': - resolution: {integrity: sha512-9D5gLYZG4rOjcoag8MQ/fWI8WqA9wcPDyOGyWtWFhvM1lHRbliqUSPIY5J3zqCU1tvSwzXxnnjhQhz5Ne7mJ4g==} + '@typescript-eslint/tsconfig-utils@8.67.0': + resolution: {integrity: sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.66.0': - resolution: {integrity: sha512-H6gcYaSDOyvL3AD/jHUtUFo2jqGgn/F6nuyuZSu0QTesxL+cP4dQoIMrODRofuJC09g64+WgZ6tE19Y1N2YIFQ==} + '@typescript-eslint/types@8.67.0': + resolution: {integrity: sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.66.0': - resolution: {integrity: sha512-8/x4INiiQb10jGgXYD7116/zQ+OL84ZIFn0za68wwFHCanT/VLbBEroWht8RV8fn0/ZCAoazHLQgwUC0UQcDfg==} + '@typescript-eslint/typescript-estree@8.67.0': + resolution: {integrity: sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.66.0': - resolution: {integrity: sha512-dkKR8q+lKciskj1Y3vthHktl+3cMLWGyVUP23bRiPZ5O9BRT++4EqDDV+TVeIKBL1VXVEqrJlz8MYbcnvJcAlg==} + '@typescript-eslint/visitor-keys@8.67.0': + resolution: {integrity: sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-native-bridge/darwin-arm64@6.0.3-bridge.12.tsgo.7.0.2': @@ -5499,6 +5928,9 @@ packages: resolution: {integrity: sha512-bLMpVcWZNzq6lYOybwFwOAR1IXKcHnhUNqYeHjl1bET/qE3jFPFH+p8Wrh3rU4xwdnifPxmKNESBYnvnmc75aA==} engines: {node: '>=22.0.0'} + '@ungap/structured-clone@1.3.3': + resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} + '@unhead/bundler@3.3.1': resolution: {integrity: sha512-F9gEgqpUKqHFzOv+7Pgm3TbmXhUdLX+WjZiPAK/huLDzblzZmvAUE9vRDymWaOST7jqGT/tPKkwl2kqbgb3nPw==} peerDependencies: @@ -5624,22 +6056,22 @@ packages: '@uploadthing/shared@7.1.10': resolution: {integrity: sha512-R/XSA3SfCVnLIzFpXyGaKPfbwlYlWYSTuGjTFHuJhdAomuBuhopAHLh2Ois5fJibAHzi02uP1QCKbgTAdmArqg==} - '@vercel/blob@2.7.0': - resolution: {integrity: sha512-cWo8XeRI+eq+pTAQOGZEljSeARw/PZfvNCez9xioGcz/KFvwTR5ESGuKd4wPkGnhbPXyxJJMEgP4oOkwQ4uNGQ==} + '@vercel/blob@2.8.0': + resolution: {integrity: sha512-Nu+HWKpkgovCh/ezlG7wCVwF7RErTzLzZMbGKFBdGBCbTKyK+s5VXPLl+0+TpNEQPH8AVaGzOpIsXUOtkqylCQ==} engines: {node: '>=20.0.0'} '@vercel/cli-auth@0.0.1': resolution: {integrity: sha512-CnqiuMlZ4pjs2LCPYiR6aLKPPd3Xb8SBI1Y7eotXKgpx6qgrGNY+E7EIyUt5ErGHJGIrCZyGG5WEo4bHtVmz2Q==} - '@vercel/cli-config@0.2.2': - resolution: {integrity: sha512-kAy35eymNzRBfmcqEViVQge0KJ59FYEKsPqGNCSJQ7M9HTuFGWd3qPcZos1A5cZpAWRBdiYe82Bcz9P7pIZvUQ==} + '@vercel/cli-config@0.2.3': + resolution: {integrity: sha512-Ggh0Wmi92TUkUexmSUPkkDtvJmbjUr7IvF5T3FkSsWrXXs3GFzOujfxFpECdJZpux1JG4SWDv9BT4w++TDgD6A==} '@vercel/cli-exec@1.0.1': resolution: {integrity: sha512-g9XerViJ/paZujufXYcu5XYI2vU2rtB4sgdpjUHde5RnOkdmpu0ngH46LCFGHoPXO/C+qDPSczIHIRN+8Q2YKQ==} engines: {node: '>= 18'} - '@vercel/functions@3.9.1': - resolution: {integrity: sha512-RhrIZvQ0Jfgeq0pCaeZ/E19OujpGEyB2BDO//6F91Z8VC5JJ5H4ckLLswaKnM7vOutRswU/MO6UQMGhtm7fA/Q==} + '@vercel/functions@3.9.2': + resolution: {integrity: sha512-yz1WkUftukJXPWAze3eEKwO72beNOYjukB3369zwyTHAc6klTZTY5MOB6UZKZEvAlCSyGFWo/uf/r0lEr/s6kQ==} engines: {node: '>= 20'} peerDependencies: '@aws-sdk/credential-provider-web-identity': '*' @@ -5659,8 +6091,8 @@ packages: resolution: {integrity: sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug==} engines: {node: '>= 20'} - '@vercel/oidc@3.8.2': - resolution: {integrity: sha512-nmVSeQ7tewCkqYBNB/MNL8aPB9sTvtjvqIE6+U17U4IuTyehuWVERDlWrSn0DVfiFAstRlRkGLHBlKHB2FyzbQ==} + '@vercel/oidc@3.8.3': + resolution: {integrity: sha512-FmKJ7Fic8CnHvEagfOK1VRczvg83WHQYAJinUMMuxFw5VHpGXeZ9abfP1+5a8SxhTazsTtPFCMBSrjf/heAWBQ==} engines: {node: '>= 20'} '@vercel/queue@0.0.0-alpha.40': @@ -6136,6 +6568,19 @@ packages: '@vue/server-renderer': optional: true + '@vueuse/core@14.4.0': + resolution: {integrity: sha512-X4WHz1HlCzCBoYXesUkifzzWBAcZgXG8Fi5iNPQg/epdzOB3gu8Fawj3hvuwYR1nGcXGnvxwYYcUC/71++svtQ==} + peerDependencies: + vue: ^3.5.0 + + '@vueuse/metadata@14.4.0': + resolution: {integrity: sha512-swx/255R6JyHZFJhx845iz5CRWDZdCfvkZOpACWc5+c5WHcG24mv8gUT1WIdFQaHt6dq79rvILd9QnCWiyVm9g==} + + '@vueuse/shared@14.4.0': + resolution: {integrity: sha512-JRgY90Sz8DDtPMsaDflvPMp9xYk69JZAmbuDvAquUVXKr2gEjqtzGNTTthLfckH0BzBqvnu31gb4a8TGLRe79g==} + peerDependencies: + vue: ^3.5.0 + '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -6548,8 +6993,8 @@ packages: peerDependencies: zod: ^3.25.76 || ^4.1.8 - ai@7.0.58: - resolution: {integrity: sha512-GfgO90CQQ0yYuoxJAUOeQ6tviyYw1BUIDygSZ1q3Ce6kSc93tYmB5eltKY/NxC0YOouAax7JvDqVnYxvIAr04Q==} + ai@7.0.59: + resolution: {integrity: sha512-p10cqg8KvLIZi7Gk+XsQjoYoLENoDdEYvehP0rSo6Wg15nbCmP+nwIy1rOIX+WGIDWGdI+jmhjVx5fXShBVC3w==} engines: {node: '>=22'} peerDependencies: zod: ^3.25.76 || ^4.1.8 @@ -6587,6 +7032,10 @@ packages: ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -6637,6 +7086,9 @@ packages: resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} engines: {node: '>= 14'} + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -6644,6 +7096,18 @@ packages: resolution: {integrity: sha512-DhBpBfXL4SS2uC0N922MMajKR3CdrTG0u2or1PNYgXMsrSzViJrbtvT0nCLlLGUI0plam/ZZCs7aAauHtW9thw==} engines: {node: '>=22'} + aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + + array-pull-all-with-glob@7.1.3: + resolution: {integrity: sha512-BCkrHE6iK3EXywYuivo1okICHMD5WnKcoMsyM7O5AjpvTpsYM96UTFaukKv/pRAj42rzmXrNuSAMZXwFKNWn4Q==} + engines: {node: '>=14.18.0'} + + arrayiffy-if-string@5.1.3: + resolution: {integrity: sha512-LQk6w4KAE/65Yr1v9/1Z6dMXNnWrU5TxtQm5nFBNbqzoimKReG1tfYgmIctzMiYW1KgnsGXL8F9G0vlH0r01Ww==} + engines: {node: '>=14.18.0'} + arrify@2.0.1: resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} engines: {node: '>=8'} @@ -6730,35 +7194,6 @@ packages: bare-abort-controller: optional: true - bare-fs@4.8.0: - resolution: {integrity: sha512-fM+MhCvdQhZ7NV6S95a07gPSqjIYKn6mFaXfx266wN3ajZGl/+1AzH+ubkXQ0fFZvOe2nk9VHkzdYkQE5zMV3Q==} - engines: {bare: '>=1.28.0'} - peerDependencies: - bare-buffer: '*' - peerDependenciesMeta: - bare-buffer: - optional: true - - bare-path@3.1.1: - resolution: {integrity: sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ==} - - bare-stream@2.13.3: - resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==} - peerDependencies: - bare-abort-controller: '*' - bare-buffer: '*' - bare-events: '*' - peerDependenciesMeta: - bare-abort-controller: - optional: true - bare-buffer: - optional: true - bare-events: - optional: true - - bare-url@2.5.1: - resolution: {integrity: sha512-cD5ciQuKlx+eumTCfqbfiL+fhQm+dHbVNB/cX4+d+I/nx4JsVop9VoFEPAs5RJ6I84QR6bZIBjpd2kjDOYeWcg==} - base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -6931,8 +7366,8 @@ packages: birpc@2.9.0: resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} - birpc@4.0.0: - resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} + birpc@4.1.0: + resolution: {integrity: sha512-O8L9vALWGqdEe0cG4HJckauw3WeJETlJnDRPUYpgwB7wrU43b/5NGMdVjdVcRo+4ROgd3ih2wha1glDe4HRVgw==} bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -6944,6 +7379,10 @@ packages: boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + boolbase@2.0.0: + resolution: {integrity: sha512-DkVaaQHymRhpYEYo9x1oo7Q7B0Y6KJUsjm3c9eTyFDby4MHLBTwZ6ZDWBel5zrYxj1WsZgC5oLpiz+93MluXeA==} + engines: {node: '>=20.19.0'} + boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. @@ -6999,9 +7438,6 @@ packages: buffer@5.6.0: resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} @@ -7104,6 +7540,12 @@ packages: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} + character-entities-html4@2.1.0: + resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} + + character-entities-legacy@3.0.0: + resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} + character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} @@ -7126,6 +7568,13 @@ packages: resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.2.0: + resolution: {integrity: sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==} + engines: {node: '>=20.18.1'} + chevrotain@10.5.0: resolution: {integrity: sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==} @@ -7160,6 +7609,9 @@ packages: cjs-module-lexer@2.2.0: resolution: {integrity: sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==} + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -7187,6 +7639,10 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} + engines: {node: '>=18.20'} + cli-table3@0.6.5: resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} @@ -7202,10 +7658,18 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + cluster-key-slot@1.1.1: resolution: {integrity: sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==} engines: {node: '>=0.10.0'} + codsen-utils@1.7.3: + resolution: {integrity: sha512-YIFQQ1n2NSgwoB3sCe7RpkZzsrPxTMek6jc7wC9fXOm1wwfWAKja9gLOMEjlXOUd3LKV3o6Jci7n9BoHs5Z8Sg==} + engines: {node: '>=14.18.0'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -7213,6 +7677,10 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-shorthand-hex-to-six-digit@5.1.3: + resolution: {integrity: sha512-uHNVXSceG5/sJ5abbk9i6ZuzYVIRI2MwgdcX13rFHD7oxiGq8bJOkOiJI7Pbjrl0zIm13hfEGefGoiQaLTi3XQ==} + engines: {node: '>=14.18.0'} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -7234,6 +7702,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: + resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} + commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} @@ -7246,6 +7717,10 @@ packages: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + commander@15.0.0: resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} engines: {node: '>=22.12.0'} @@ -7303,12 +7778,12 @@ packages: resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==} engines: {node: '>=18'} - conventional-changelog-angular@9.2.1: - resolution: {integrity: sha512-oWSL6ZhnXbYraOFTK3PgRAQJ8fADDAEv5K6AdeyQPLvjFmhG8+ejL0jZZp/R7vTmGJaBvZEE+sE7dB4bCv7sAw==} + conventional-changelog-angular@9.3.0: + resolution: {integrity: sha512-0MWQLVUT1oVCsUGs9aAWteBVxPlLwJTn5VbQH7B0B3fDizZgrJ9QGnKl/2mp1+5P7153GCBCjO/v1aKJ6eysCg==} engines: {node: '>=22'} - conventional-changelog-conventionalcommits@10.2.1: - resolution: {integrity: sha512-n4Kr1HFMTf3iMbES0TMxKIcYtUUv4rKqyQQp2JwfOEfFCOfGT3Tq4mCyJ8S9/YPyWhydjfKrrvnyl+gCjA+mJQ==} + conventional-changelog-conventionalcommits@10.3.0: + resolution: {integrity: sha512-qag0zFD867Qq1DK0jAWicyWlEMS1FFC/BLVLISaoeI7Y6Em6aWchk7BCkhOTsecRpMsV6qX41XmlNnghiiTmSw==} engines: {node: '>=22'} conventional-commits-parser@7.1.2: @@ -7407,6 +7882,10 @@ packages: css-select@5.2.2: resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + css-select@7.0.0: + resolution: {integrity: sha512-snmjEVXy+1LnwXdxhYvTMj1d9tOh4HxkA1YmoayVBeeyR2C14Pum7fcxJIm4SswYspVy866eYNwlH6xC3/VH5g==} + engines: {node: '>=20.19.0'} + css-tree@2.2.1: resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} @@ -7419,28 +7898,32 @@ packages: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} + css-what@8.0.0: + resolution: {integrity: sha512-DH0Bqq3DNp5tdOReuNyAA+Ev4Y2GS5FMbZpeTLP6C4CDi0h5nL0BmUPChXw3o/qbHLDWHl49sbNqQVY7bMSDdw==} + engines: {node: '>=20.19.0'} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - cssnano-preset-default@8.0.4: - resolution: {integrity: sha512-WUn2NmdLD0FlUI8XdQrlfDjVNGLOI3cxaw7Y6msbfxn4G2vJByuO6M73Wo5B9Rd0Ap36SQhG7wsOXAMnVdC2eQ==} + cssnano-preset-default@8.0.5: + resolution: {integrity: sha512-R9O+oRNnKcVBf7GZZ7nfBcOiBZZwi3kR1HtKirBHel/gTtHLMHOCsL2H3QGy1161CPystJV4EiKniC7XyUKfcw==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - cssnano-utils@6.0.2: - resolution: {integrity: sha512-AqysikWP69dOKAP/UMvUYrlZ1gvvQu0/eMFVUKLhH+ZM23dUAKXC31xKvNyL9It2UMF2uDmK4XotBeO9vSBKzg==} + cssnano-utils@6.0.3: + resolution: {integrity: sha512-HskzChO3gRkXBQSWg68DfwoVfptRUV2GvuiQBvt+C7mUw4VB0CvPjkC4iF4JSf7yW1/66Hsc6WJtqNqD5Ydt2Q==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - cssnano@8.0.4: - resolution: {integrity: sha512-m6epEvKkzysdXamdK4BU9S6lQzx+syY+5Qm4f2dbpxlewBtEYOKi2v2iIr1jLsjuAr3V1WjRp6hXFPH1BEDirw==} + cssnano@8.0.5: + resolution: {integrity: sha512-Yigb8Apuqi/jWwii1XFmZwgAPZ2RHDUx/ANodBZsEQusYIFryChhwOQNKco0A7V6zgFqDDy3LqefGK6OnniGMA==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} @@ -7449,6 +7932,10 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + culori@4.0.2: + resolution: {integrity: sha512-1+BhOB8ahCn4O0cep0Sh2l9KCOfOdY+BXJnKMHFFzDEouSr/el18QwXEMRlOj9UY5nCeA8UN3a/82rUWRBeyBw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + d3-array@3.2.1: resolution: {integrity: sha512-gUY/qeHq/yNqqoCKNq4vtpFLdoCdvyNpWoC/KNjhGbhDuQpAM9sIQQKkXSNpXa9h5KySs/gzm7R88WkUutgwWQ==} engines: {node: '>=12'} @@ -7546,6 +8033,10 @@ packages: decode-named-character-reference@1.3.0: resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} + decode-uri-component@0.5.0: + resolution: {integrity: sha512-1BiQVoK8C9gUbQU6NzAtO/tkz2qOFpEObMWpcFvhx4fYnj4Oc5yzaJN/LD36ihkVUdXyh5ZekzX+yM+ty/SrPg==} + engines: {node: '>=14.16'} + decompress-response@10.0.0: resolution: {integrity: sha512-oj7KWToJuuxlPr7VV0vabvxEIiqNMo+q0NueIiL3XhtwC6FVOX7Hr1c0C4eD0bmf7Zr+S/dSf2xvkH3Ad6sU3Q==} engines: {node: '>=20'} @@ -7943,12 +8434,16 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.403: - resolution: {integrity: sha512-MQsYmdaLzvaCX5j+ZZBr5Fm6uCCnPQcRtlvmvRlWqrXy+BH2O4ffXIAScF+JQznQWB9brWp4lSD9Z4yNmaf2BA==} + electron-to-chromium@1.5.404: + resolution: {integrity: sha512-3WJtd7/lVq2Jnuz6wed1l9+1ZD2u2Tet1/1NBc4Iedkmgbu+I7YuAqdAQ8T+VZtnwysMsAf3IqSq9D1gyZjA2g==} elkjs@0.11.1: resolution: {integrity: sha512-zxxR9k+rx5ktMwT/FwyLdPCrq7xN6e4VGGHH8hA01vVYKjTFik7nHOxBnAYtrgYUB1RpAiLvA1/U2YraWxyKKg==} + email-comb@7.1.3: + resolution: {integrity: sha512-QOv6wPr7qU+aM/8cJ8Eddrb86q2djGyDTnLdvAp/7B2FQ+XFRrk4VNn22xarc6NzvcDSEslaM4oF2hp10xFNZw==} + engines: {node: '>=14.18.0'} + emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -7973,6 +8468,9 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + encoding-sniffer@0.2.1: + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} + end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} @@ -7988,6 +8486,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + entities@7.0.1: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} @@ -8090,6 +8592,10 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + escape-goat@3.0.0: + resolution: {integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==} + engines: {node: '>=10'} + escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -8186,8 +8692,8 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - eventsource-parser@3.1.0: - resolution: {integrity: sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==} + eventsource-parser@3.1.1: + resolution: {integrity: sha512-EKN1vKAMcZ8MlYMpaNuxN6R9yakzH6uajHcHVTqWJzvu5pWw9DyhbP35HH8MVBQ+dZjAfDxk+A8NiR9KWaXiyQ==} engines: {node: '>=18.0.0'} eventsource@3.0.7: @@ -8241,6 +8747,10 @@ packages: resolution: {integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==} engines: {node: '>=4'} + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} @@ -8285,6 +8795,9 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-sha256@1.3.0: + resolution: {integrity: sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==} + fast-string-truncated-width@3.0.3: resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} @@ -8500,6 +9013,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + filter-obj@5.1.0: + resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} + engines: {node: '>=14.16'} + finalhandler@2.1.1: resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} engines: {node: '>= 18.0.0'} @@ -8780,6 +9297,10 @@ packages: graphmatch@1.1.1: resolution: {integrity: sha512-5ykVn/EXM1hF0XCaWh05VbYvEiOL2lY1kBxZtaYsyvjp7cmWOU1XsAdfQBwClraEofXDT197lFbXOEVMHpvQOg==} + gray-matter@4.0.3: + resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==} + engines: {node: '>=6.0'} + gtoken@7.1.0: resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} engines: {node: '>=14.0.0'} @@ -8852,6 +9373,15 @@ packages: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + + hast-util-whitespace@3.0.0: + resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} + + hex-color-regex@1.1.0: + resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} + highlight.js@10.7.3: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} @@ -8865,13 +9395,26 @@ packages: hookable@6.1.1: resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} + html-crush@6.1.3: + resolution: {integrity: sha512-IrDC4BrdrMmV+GMYfXtx6BtzQ6hVf+GjLSDhmg/14DkpNbXtxAcbH3Wk9VeNZbg/y2MpobWTVOSrCzr/HWBwcw==} + engines: {node: '>=14.18.0'} + html-entities@2.6.0: resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + + htmlparser2@10.1.0: + resolution: {integrity: sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==} + htmlparser2@12.0.0: resolution: {integrity: sha512-Tz7u1i95/g2x2jz81+x0FBVhBhY5aRTvD3tXXdFaljuNdzDLJ8UGNRrTcj2cgQvAg3iW/h77Fz15nLW0L0CrZw==} engines: {node: '>=20.19.0'} + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + http-cache-semantics@4.2.0: resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} @@ -8927,6 +9470,10 @@ packages: resolution: {integrity: sha512-1dhVQZXhcHje7798IVM+xoo/1ZdVfzOMIc8/rgVSijRK38EDqOJoGula9N/8ZI5RD8QTxNQtK/Gozpr+qUqRRA==} engines: {node: '>=20.0.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + iconv-lite@0.7.3: resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} engines: {node: '>=0.10.0'} @@ -9009,8 +9556,8 @@ packages: resolution: {integrity: sha512-ehuGcf94bQXhfagULNXrJdfnWO38v070jxSx/qE87Kjzmu2fU7ro5EFAb+OPituLqgfyuQaym5DlrNydW2sJ9A==} engines: {node: '>=12.22.0'} - ip-address@10.4.0: - resolution: {integrity: sha512-oSK96Grm3aP6OrS263xVxbNDGVL7rzBtYdpGqlDG8iQdoenDoTs/nkki+DflYbAEE8Xl6o5YxhxlrKvI3nqKXQ==} + ip-address@10.5.0: + resolution: {integrity: sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==} engines: {node: '>= 12'} ipaddr.js@1.9.1: @@ -9045,6 +9592,10 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -9136,6 +9687,10 @@ packages: is-unsafe@2.0.0: resolution: {integrity: sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA==} + is-url-superb@6.1.0: + resolution: {integrity: sha512-LXdhGlYqUPdvEyIhWPEEwYYK3yrUiPcBjmFGlZNv1u5GtIL5qQRf7ddDyPNAvsMFqdzS923FROpTQU97tLe3JQ==} + engines: {node: '>=12'} + is-valid-glob@1.0.0: resolution: {integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==} engines: {node: '>=0.10.0'} @@ -9161,8 +9716,8 @@ packages: resolution: {integrity: sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==} engines: {node: '>=20'} - isomorphic-git@1.41.0: - resolution: {integrity: sha512-YADpOKD/pLemtcyZ9jssNXnPVhfDObGl/BAKMtvmU17svgNzOKTT6AHX68DzFHpie5hAZHRtutC0Cka3lYdmBA==} + isomorphic-git@1.41.3: + resolution: {integrity: sha512-5O+pSDz+F8eUqhWHjvoF1kcCYtt9mjja5rHficiNFRAWbYfoiXoPfBKzLTqWyEKoEgLObu4TXthkCmYGpfkiyQ==} engines: {node: '>=14.17'} hasBin: true @@ -9226,6 +9781,10 @@ packages: js-tokens@9.0.1: resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + js-yaml@3.15.1: + resolution: {integrity: sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==} + hasBin: true + js-yaml@4.3.1: resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} hasBin: true @@ -9292,6 +9851,11 @@ packages: resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} + juice@12.1.2: + resolution: {integrity: sha512-qNFegEEo14v4aCh0OwdWhGsHKoxWx6RYl1GyzMhxNHfFnVGFi+MFgAiJ6pyFWPw0KucvPwmHctXPZwrsD0ufqg==} + engines: {node: '>=22.12.0'} + hasBin: true + just-bash@3.2.0: resolution: {integrity: sha512-hRTLLWBXCKuosjaNFJR7uPYBza+T2vjG3NdPBz4wxlctlnxwrbLjtLQf6RtSKmy/jzNJ6/URCtvxrXjy6yFGeQ==} engines: {node: '>=20.18.1'} @@ -9325,8 +9889,8 @@ packages: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} - knip@6.32.0: - resolution: {integrity: sha512-KDX9OmmOFmlvmxTkrx6Z0GHISMut+pXMSKR8eg84bovaxJKx2NdQD4JYCXveSbvieRe107W6vCD2xCpmz0qBYA==} + knip@6.32.1: + resolution: {integrity: sha512-mIiIHMTJVUgSlz0mxEgPt7wg8DmfbCp1Txqab3WpbMCJF7YHvHtC9jeAHHXfISMl72N8WzhyG71SQlaqCOGZtg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -9340,8 +9904,8 @@ packages: resolution: {integrity: sha512-nbD8lB9EB3wNdMhOCdx5Li8DxnLbvKByylRLcJ1h+4SkrowVeECAyZlyiKMThF7xFdRz0jSQ2MoJr+wXux2y0Q==} engines: {node: '>=20.0.0'} - kysely@0.29.4: - resolution: {integrity: sha512-y5mVgQNkMbs1eK9Xyc0pmNdabN2wHhRYY/5r4W5HrUT1rYCEPeVNSj1RUJeSDKT3U0p+mXCvLgkrFuIafYI6BA==} + kysely@0.29.5: + resolution: {integrity: sha512-ooa+eSbBNPTo3MycPEuW5jdrxQdQwdtB3LC3h43FiXQbIry5tR0C5lDG7eealK0E4D7XjrnOP5DIUg/LyjRMYQ==} engines: {node: '>=22.0.0'} launch-editor@2.14.1: @@ -9360,36 +9924,73 @@ packages: cpu: [x64, arm64, wasm32, arm] os: [darwin, linux, win32] + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + lightningcss-android-arm64@1.33.0: resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [android] + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + lightningcss-darwin-arm64@1.33.0: resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + lightningcss-darwin-x64@1.33.0: resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + lightningcss-freebsd-x64@1.33.0: resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + lightningcss-linux-arm-gnueabihf@1.33.0: resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + lightningcss-linux-arm64-gnu@1.33.0: resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} engines: {node: '>= 12.0.0'} @@ -9397,6 +9998,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + lightningcss-linux-arm64-musl@1.33.0: resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} engines: {node: '>= 12.0.0'} @@ -9404,6 +10012,13 @@ packages: os: [linux] libc: [musl] + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + lightningcss-linux-x64-gnu@1.33.0: resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} engines: {node: '>= 12.0.0'} @@ -9411,6 +10026,13 @@ packages: os: [linux] libc: [glibc] + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + lightningcss-linux-x64-musl@1.33.0: resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} engines: {node: '>= 12.0.0'} @@ -9418,18 +10040,34 @@ packages: os: [linux] libc: [musl] + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + lightningcss-win32-arm64-msvc@1.33.0: resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + lightningcss-win32-x64-msvc@1.33.0: resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lightningcss@1.33.0: resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} engines: {node: '>= 12.0.0'} @@ -9477,6 +10115,9 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + lodash.includes@4.3.0: resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} @@ -9501,13 +10142,14 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - lodash@4.18.1: - resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - log-symbols@6.0.0: resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} + log-symbols@7.0.1: + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} + engines: {node: '>=18'} + log-update@8.0.0: resolution: {integrity: sha512-lddSgOt3bPASrylL54ZSpy8nBHns+vBVSoILlVOx+dei300pnLRN958rj/EdlVLKuWlSESU3qdnDZdAI7FXYGg==} engines: {node: '>=22'} @@ -9566,9 +10208,16 @@ packages: resolution: {integrity: sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==} engines: {node: '>=18'} + markdown-exit@1.0.0-beta.9: + resolution: {integrity: sha512-5tzrMKMF367amyBly131vm6eGuWRL2DjBqWaFmPzPbLyuxP0XOmyyyroOAIXuBAMF/3kZbbfqOxvW/SotqKqbQ==} + markdown-exit@1.1.0-beta.2: resolution: {integrity: sha512-8CzMGVlFZ4DEfnc8KU+4ycUW2SIOuiXqCHD7z51ecVEi/weyc0f2ylQbCm4KoKuVlTZSuMUMnWT0hTyquZ7anQ==} + markdown-it@14.3.0: + resolution: {integrity: sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==} + hasBin: true + markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -9587,6 +10236,10 @@ packages: resolution: {integrity: sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==} engines: {node: '>=10'} + matcher@6.0.0: + resolution: {integrity: sha512-TzDerdcNtI79w7Av4GT57bLdElPA/VAkjqdMZv8yhuc8geU2z0ljW9anXbX/55aHEMTpYypZb1lxsA/46r9oOQ==} + engines: {node: '>=20'} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -9618,6 +10271,9 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} + mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -9630,8 +10286,8 @@ packages: mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} - mdream@1.5.12: - resolution: {integrity: sha512-9d+Bq09UUe3fQa0QTfRD2e3djGqA4rTbesn2hEDXg6blRjZBfRcLEgEwt2FvfiFb/QJlIP+LJzIZ6UxFfa5Y5Q==} + mdream@1.6.1: + resolution: {integrity: sha512-h+S4DpsoApCK0rO5B1Q6za/z+YHG4tsqsz3tX8dJ1xAx554JgM4JC5LWcfQR6r+8GuqJUxty2mXO2j/nezH7uQ==} hasBin: true mdurl@2.1.0: @@ -9759,6 +10415,11 @@ packages: resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} engines: {node: '>=18'} + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + mime@3.0.0: resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} engines: {node: '>=10.0.0'} @@ -10118,6 +10779,10 @@ packages: resolution: {integrity: sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==} engines: {node: '>=18'} + nodemailer@9.0.5: + resolution: {integrity: sha512-wvjiKvjczmsN7U/8006JOdXubgBk2XFAbioDMbT+sM7cPs0QrhJTa6KBRX7P5REGGkDcLUz/EarWidb8G8C1jQ==} + engines: {node: '>=6.0.0'} + nopt@7.2.1: resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -10154,6 +10819,10 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + nth-check@3.0.1: + resolution: {integrity: sha512-GX0gsdbGVCgnRgbeGaubfjpBXyYRWOOCVeYh08bSQvDZqxz5ndXs1OTfAt/h36G1xvI94YIspsI0sVFqAV9+RQ==} + engines: {node: '>=20.19.0'} + nuxt-define@1.0.0: resolution: {integrity: sha512-CYZ2WjU+KCyCDVzjYUM4eEpMF0rkPmkpiFrybTqqQCRpUbPt2h3snswWIpFPXTi+osRCY6Og0W/XLAQgDL4FfQ==} @@ -10180,6 +10849,10 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + object-boolean-combinations@6.2.3: + resolution: {integrity: sha512-A2inWgy5Hy3+9prMyiKBUBYcTpbuZbKOMt+YKMD3ZAsli7TwKh6TPSZdK+kNF5hmJFhaVbjHwP/xsfjO2Z/GmQ==} + engines: {node: '>=14.18.0'} + object-identity@0.2.3: resolution: {integrity: sha512-2J8Joz2Tf7aaylhqFvIUJHNgpuGR38Hh75Voq9GzTbStBxJUaOtN0K1aOd3cV5qp+ij1pMqRbPrGCGMOyX303w==} @@ -10230,6 +10903,12 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + oniguruma-parser@0.12.2: + resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} + + oniguruma-to-es@4.3.6: + resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} + onnxruntime-common@1.24.0-dev.20251116-b39e144322: resolution: {integrity: sha512-BOoomdHYmNRL5r4iQ4bMvsl2t0/hzVQ3OM3PHD0gxeXu1PmggqBv3puZicEUVOA3AtHHYmqZtjMj9FOfGrATTw==} @@ -10275,6 +10954,10 @@ packages: resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} engines: {node: '>=18'} + ora@9.4.1: + resolution: {integrity: sha512-6VlU9MLXbjVQD04AZCMX28hVtA5bUoadvUqO76MUCVA0ilwJbMiHsITRPfyVm6p/BC0Av/BXMujx39WCe1LEqw==} + engines: {node: '>=20'} + os-paths@4.4.0: resolution: {integrity: sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg==} engines: {node: '>= 6.0'} @@ -10321,8 +11004,8 @@ packages: rolldown: optional: true - oxfmt@0.62.0: - resolution: {integrity: sha512-vxgGHTmnDU9j4CX7dDBLzxgmHxfda/yPcgJkGCMUSCwRmz+euo/V08xXLNgXTeqAB9Fhf3Pe2nO1RNKLCVgphQ==} + oxfmt@0.61.0: + resolution: {integrity: sha512-DxdHBEMYpcEnHoUHjjOigUqV2TYKsvxLwUPXnVYBjgFdqrcQ/91OtwubtZ2PUodCs3sStI8R5Qw3fKNGK4e8wQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -10334,16 +11017,29 @@ packages: vite-plus: optional: true - oxlint-tsgolint@7.0.2001: - resolution: {integrity: sha512-KjK/XLcXr1DSyonKhsuFqJRiuKqcyG9j3LJ8nkOsrLzGvodBPqzHOKauy10asLMDI0sUpvb+1sxlzff3udZvfg==} - hasBin: true - - oxlint@1.77.0: - resolution: {integrity: sha512-qnGh8XJHaQ0dprrDXNQZgS0FgjI6v+V3+X8DwmaV++5Aamy6jGKfDdQ1TUvhUxtmKFAbEf4/WeO5QZX+5WSngg==} + oxfmt@0.62.0: + resolution: {integrity: sha512-vxgGHTmnDU9j4CX7dDBLzxgmHxfda/yPcgJkGCMUSCwRmz+euo/V08xXLNgXTeqAB9Fhf3Pe2nO1RNKLCVgphQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - oxlint-tsgolint: '>=7.0.2001' + svelte: ^5.0.0 + vite-plus: '*' + peerDependenciesMeta: + svelte: + optional: true + vite-plus: + optional: true + + oxlint-tsgolint@7.0.2001: + resolution: {integrity: sha512-KjK/XLcXr1DSyonKhsuFqJRiuKqcyG9j3LJ8nkOsrLzGvodBPqzHOKauy10asLMDI0sUpvb+1sxlzff3udZvfg==} + hasBin: true + + oxlint@1.78.0: + resolution: {integrity: sha512-QgQePuxIqKOzo1KSjG2EnITEeWvWnKAm77eq8nrMtf6AGoA+zyGc4PFYtDNJSD25g/ibOwfQ851hZ4/SPkMVoA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=7.0.2001' vite-plus: '*' peerDependenciesMeta: oxlint-tsgolint: @@ -10434,12 +11130,21 @@ packages: parse5-htmlparser2-tree-adapter@6.0.1: resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + parse5@5.1.1: resolution: {integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==} parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -10583,171 +11288,192 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postal-mime@2.7.4: + resolution: {integrity: sha512-0WdnFQYUrPGGTFu1uOqD2s7omwua8xaeYGdO6rb88oD5yJ/4pPHDA4sdWqfD8wQVfCny563n/HQS7zTFft+f/g==} + postcss-calc@10.1.1: resolution: {integrity: sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==} engines: {node: ^18.12 || ^20.9 || >=22.0} peerDependencies: postcss: ^8.4.38 - postcss-colormin@8.0.2: - resolution: {integrity: sha512-3puH3etbn8GPaJuF8OybCdUW6PJO0KU9ZnsaA/1VG9HU0Wdrf94dOTQkbQnA8/qkYdPjwHzcWvzUGXIeawBa0w==} + postcss-colormin@8.0.3: + resolution: {integrity: sha512-kypgzYcOcrKsrAZyId3TMumHtIiwZxgK1h5B33S4RjQNV02RHKrXCWP8ndyx5S0R5mk4pkcIfJ95o3BwIN8r2Q==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-convert-values@8.0.2: - resolution: {integrity: sha512-KA6VVp93xASmDI0HWgRQ7938XR20hZEVL525YCbcTVsuxn4BNxs+ge4wLNow+ay+uqPuy3uEh51zhjfI92uN4w==} + postcss-convert-values@8.0.3: + resolution: {integrity: sha512-14lU1u5MeX8oGQ4zMhiMYhFcav9ebgmjjxTYwk77pmZ5A9Rq8hr5X/XZaTfffvbIGMOoLK82YDsLxA+1hFGbbA==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-discard-comments@8.0.2: - resolution: {integrity: sha512-tQk36szZkG9ngZM9bKrUp3hM2SxdclYJVnMtAMKyi0RqY7IQpx67TJ3+0thRMV47niKBw9Y/1auGkBeCfPC97A==} + postcss-discard-comments@8.0.3: + resolution: {integrity: sha512-oDe4ITEfp1/113ebPi/ujyfWX2E9+vbHhY0dPnypgHwIgw8LBQ7MczmtAbccw8gUs+Zlmgt80qtTKS0t8eCi+Q==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-discard-duplicates@8.0.2: - resolution: {integrity: sha512-Y2IDdRqvnpzsOH5ZLcJnvh/Eiye8O3r6uO7oFTe3YuFfrat3xQRDPjTVohRmi8RWuOIq2rGjva1n4Adus4pljw==} + postcss-discard-duplicates@8.0.3: + resolution: {integrity: sha512-6f6ZVBozciZ0nG7nurrHk+K2yNeBgEoOjZvj5JwFThK982tSPyOjtClbkTYgqwDuSFjBvtu5C9Iz/2QEPvUg+Q==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-discard-empty@8.0.2: - resolution: {integrity: sha512-fGHTnqg2S4fBudyd+tCE+qT57R4YRUaYLannCrKYsE8u/rCMGCBMPwIM4jcNWJLP5vMEBitGrXa5mGB7VKA+Eg==} + postcss-discard-empty@8.0.3: + resolution: {integrity: sha512-IpqNmuH9djHODVELb5c4tC6274pxjEWqrpGtTu7BR8TtOz3beqTv7JjE9xSuGOacphh9XZbbyEebvfMxYC5PTA==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-discard-overridden@8.0.2: - resolution: {integrity: sha512-a9Dvv5ccOI7P94oCaeytj4FCSsHiXyH8KwXQorU/GJWDRvwFMY9yUs4uPKSG2HBSGtR49xo3ieml6F1EQCJtZA==} + postcss-discard-overridden@8.0.3: + resolution: {integrity: sha512-G2Ksn7kkNsNlsYsgfVn0YFfcGewJTuc1KOENvoVtwu2bSEyR28+GaomozkV4DPUBbKF8Nvco/9rLyKkgf/TY6w==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-merge-longhand@8.0.2: - resolution: {integrity: sha512-iN1JQ21vKd3ZdbHmj69lqOwaWiFvxlXVQ5EeH/sw5M3TqI1sFR28G4yleAcNkMwB55E6qGRRVR3lem+ZJazmoQ==} + postcss-merge-longhand@8.0.3: + resolution: {integrity: sha512-/Byag1rLsEffmnidL+8HGwr0AsQWiaY2gpChEKwKP4+YcBtzz44rKVxAJLdhQtRLFrpGiBoLzCdCfH/ZTkozuA==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-merge-rules@8.0.2: - resolution: {integrity: sha512-ipELN1m3k/GLGD+wmYHtiEVE2TMW5OKm4CgSRqYDeDz1ZX89AbeUCoeos0dUdTcpMilSa+zIRwvD78U3Uv/1BA==} + postcss-merge-rules@8.0.3: + resolution: {integrity: sha512-gBnrjp2ebQyrBNDqxORirC6ZM6g4cHKglAwGf1JiuKmDPjUJbNM6WhxYMYkHf+hxysnZfq27+TtxGrYESv3GMQ==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-minify-font-values@8.0.2: - resolution: {integrity: sha512-T6oURfdYH/BtXLLN/biomuY1hSYSGbfRyLyxQ+7+VCRw7Zj1ROpRwHpaX2PP/rpmT/0yHaGIVUNShmanvm3PXw==} + postcss-minify-font-values@8.0.3: + resolution: {integrity: sha512-kAXxTCIVub5LZvyKTr9AObrRxri0WtWpNVsG6R9NdBKHDHYu5WNAnZRntgOforsKeFeZRZvOOXnTqOANQeyzKg==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-minify-gradients@8.0.2: - resolution: {integrity: sha512-s49jAcFm5eF7GLLU0+28e4mQc/vISBMtu+1gQbq/Uf7+w155G8nbItaQp5NYY7QsYerpj2qvtNkYN25gZWWYdw==} + postcss-minify-gradients@8.0.3: + resolution: {integrity: sha512-0O9UDPjIB4OikREx/aOwPY3pco23txEpXpdTlzfoSrVQllNh5j9GaCkThA5ylsKcDWz5sunV3tFW9+zlHFWUww==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-minify-params@8.0.2: - resolution: {integrity: sha512-ifaU795JsBddkffWbTOXl8ubUyBqpNiLS8xjqKmE/Sw9AOpjWG2uFPfpEv3AZPXWNkWJf8kGvW9wLHImEUJUkA==} + postcss-minify-params@8.0.3: + resolution: {integrity: sha512-DuSZEJbWxUX7wvIkz6K4qN8zs5unI/MSg7gcH4AXXA3524OcI4BOBUhR8B8OIBIi9FfcBbfgHYlATVhMeDBXNg==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-minify-selectors@8.0.3: - resolution: {integrity: sha512-3WchKL9xoA80/jNkRcimRGIc9mP6sHPQUY/1WzV+GbF69I/upieyaKzZcIdQzf9cBmCJ6vjxi+NrKqCojoOb7Q==} + postcss-minify-selectors@8.0.4: + resolution: {integrity: sha512-+rqBW9gYNLq2RNBwfVx2QdElj2cTiqbNwah+bw1XvyhCnRe4uFLNW2kny0VspFyYR7OGuVyWZaz2K4DbX5J9sw==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 + + postcss-nesting@14.0.1: + resolution: {integrity: sha512-80MH7KcmMtb7ffSBX82uZwnogltubaXF0sagu+OGD8M9jViR3ngRgCdoTzKCvKEtllB0MW2U7Rgfcub5fR1Bug==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss: ^8.4 - postcss-normalize-charset@8.0.2: - resolution: {integrity: sha512-iy3/b+gX+dHfbNZq/4rfThbMAqxhneBJEhS71y5toliav5rLowkZ6g0ZJGymXRZytDOt/u+fRSFkNJLkRPYaug==} + postcss-normalize-charset@8.0.3: + resolution: {integrity: sha512-losd0Uu4XVpiKN5tcGh32QxpB9t3S09PMQaW6I2GszKl9wOR0I34DY0a8ApO50jzfBC52lv8jPpkvh5ltbgajg==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-normalize-display-values@8.0.2: - resolution: {integrity: sha512-T6Az9mgc7FUWvI6mK0uOsItT6csep7fdLtDSRC2XBMTCvrQmtYiz86T5hEM6sfAkZVVhfrALPhdPxJWVoNAktw==} + postcss-normalize-display-values@8.0.3: + resolution: {integrity: sha512-IaCp/Rp7bg0e8Hv0Wc4G+niuuA61iGOSzhGBUeo6P6qyoumyFbOzYbYWZSkzMNsC4o2gfHAj3q2VbQfds8Huzw==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-normalize-positions@8.0.2: - resolution: {integrity: sha512-BBg188AxYLC86LDEnkbQTcdnZugP2vDwYQQDV+Htju2gpTqM2a3o/oQ91/h9+j0277InjNgrI7l1LDDRrlWQ5w==} + postcss-normalize-positions@8.0.3: + resolution: {integrity: sha512-OA/n9pI6W66Sv1vki0MLv/0QpDECV8i3UHwlXPVnv3XewsBjx310NQDV+ybMx2ZZQc/RHS7Uf8ES+oxLVhd0iA==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-normalize-repeat-style@8.0.2: - resolution: {integrity: sha512-6mbVJzuogwcAHMd6MMpmAMcc3BkleOcY2xazCp+HCMiod78tx7rdOrufTrPYGjBLaTjkgNUr8KCkLHj8mfH6WQ==} + postcss-normalize-repeat-style@8.0.3: + resolution: {integrity: sha512-lMCbxiLBd7awGEoRM1WD02R08XpEGDHg3x7z9VSWnZibgSGHNJ+k7aheucuLBcxPAHWPudwc8O65sYD2FDx0Hg==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-normalize-string@8.0.2: - resolution: {integrity: sha512-8UK2KJSChlv7V12QgWTWtbRzzZcki/f21e8egMlFHTE9rEBCCyLo60rcY3mh77cDZhrBSIfKM9ciOsU6249nbA==} + postcss-normalize-string@8.0.3: + resolution: {integrity: sha512-F8jkemEEIGDjerUzTa5w18CQc4GfhpJdEk78LdtwOjLjG1DlaDZyCdec+PyxCHjSY7vsbULXhlk24vSA+eUtIg==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-normalize-timing-functions@8.0.2: - resolution: {integrity: sha512-C2OyYiEMKjCxA0m+QJ5SeMf12OenIIGqrXEuWizEunZZP+s5TRq1aT8naxqr/8rytSRqD4SwH4mywc9G44u4cw==} + postcss-normalize-timing-functions@8.0.3: + resolution: {integrity: sha512-6MO4j7ySljCmhPKx6GLkIpDdV6nOhb5UaB8j/0i0EbfooH1NeVQG60Zt7qAQ9h21HUwV6kQDIbWGqU78DhPHtw==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-normalize-unicode@8.0.2: - resolution: {integrity: sha512-ttWq9oM88gSPpfspoZB49r/lv1fvjOadi79E/4BxGVt0rughnNDdTnDLmWj+epOjS6iKhmse3kbNcISR6Jl+3A==} + postcss-normalize-unicode@8.0.3: + resolution: {integrity: sha512-gfMC9A0z8d1HrS792ZFIUMZeTysN/GrtQEiyV/aSJPBwqOOak9BTGTSUp1VHozNuEeQs4MUoO+fBQzDXpRX28A==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-normalize-url@8.0.2: - resolution: {integrity: sha512-PvSiaJOQpP0AW5GSHrWZXupfhUgLUtS1MubJX+wPwh6RZZP6CHnZQy/S8uX2vvHMd57qIZ44Sb/37rFMiAWPfA==} + postcss-normalize-url@8.0.3: + resolution: {integrity: sha512-ksA0HgWATlnIzDaB9gFPslXxJkTa7aHZK3jWSbbyJdFJuRIY0BOL0eNMRrZNpe6//g4Af/iB00ETbT0cNmCzKQ==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-normalize-whitespace@8.0.2: - resolution: {integrity: sha512-Fipz8bjy96XPmtMPsqbGw3fypbS+aOHJfpTzfQY9z0lDYFqqGIqYWwrfsi2ZOv7B86pY81vQGJ6mSHWvTXDV7g==} + postcss-normalize-whitespace@8.0.3: + resolution: {integrity: sha512-Hz/IeeZXk1686EZtnCKKIkU8Mu+PGTxPhkuXnKxJZCD8lkVgD9blIhymu3I/itL4FoOyFTWzh7hQvIri8SbrXg==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-ordered-values@8.0.2: - resolution: {integrity: sha512-LBqMGd6Bam4TVp9dKui01o0prWtsGfPP+WtENunNs3L9oi+t75uPyEmzzaimxinmGgeiFLix9xLI0FfD+qedjw==} + postcss-ordered-values@8.0.3: + resolution: {integrity: sha512-Sp62UbMrsCNcPvtnme1Kz+nNJK3tqCqRvGiKdL7ugYgu3/m8buMlFy3QO/BJ0dJQHHJP2u6CESrw4xhKFJTvvA==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-reduce-initial@8.0.2: - resolution: {integrity: sha512-+612lhSpyp1g4ZU0zQKwmdHnAi8LevMpzvQuP2RVhq+EUWqAwwUMk03OQEfzy+es9OSdRTuy5ugnFeEeOiIe2A==} + postcss-reduce-initial@8.0.3: + resolution: {integrity: sha512-z2cMLQtjr+gXd4QIg2O6c21xGsk1QV2HNKaiYVvxZYRrvyuAqPAHFfRSo+7zbGc/n7rilzEFkljJN5WihG99AQ==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-reduce-transforms@8.0.2: - resolution: {integrity: sha512-7D2vDXJ2HBNQpbiw5dY9UyLfBRCGRBjV0ChMqHdHghFsjAH3hIIUgb/rE+e77LFiT8VjXUK2fZh3omG4R96n8A==} + postcss-reduce-transforms@8.0.3: + resolution: {integrity: sha512-MKebqhCviCaOlz9ZnlQxviw0R94q3POvxv3m2Xk1IEyBrk2lsNiKBJsuwXLWHWkQB3y+pQDE0FA26J4+NYhzLg==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 + + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 postcss-selector-parser@7.1.5: resolution: {integrity: sha512-KvvtD7SrlBP7dlgkBghEE3r84CABm5SmV2aNcG4oCA+qDnJ/tvKonFVvwWAyyWUEwxuNawdfEAZKP9zM3oZ2Uw==} engines: {node: '>=4'} - postcss-svgo@8.0.3: - resolution: {integrity: sha512-ADG8YNtwE5bcqvxw1gU0X7FkgdvinZZxWKHSCMwayX7gPl4XRmBMyiC84Ukal5bPS9Nk/2tI7siJwqxIN4/grg==} + postcss-sort-media-queries@6.7.1: + resolution: {integrity: sha512-NU+cVdLaPMYspggR6JSpk7YdAoRY9Y9jNacHRjA/5vJ0iP6/Stgg2FV82IVnryTQKbtp7B5cQ33KrWbVe07VSQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + postcss: ^8.5.21 + + postcss-svgo@8.0.4: + resolution: {integrity: sha512-cmxRK3zz5BLFO/r/crOHy4QosyNCHpyAG9fOjtOSAEKkajcAK5xyURRWcotPOXcz88VbzIrYJCWVAGjrX4GeJw==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 - postcss-unique-selectors@8.0.2: - resolution: {integrity: sha512-cIftRB4rW3UCqnQjFAS6WlUzragjsU2AtMzWDdDQKTMjgPh1rO8qYgnoYqkUgRXKnxd3902laOWbkkYO/GYEHw==} + postcss-unique-selectors@8.0.3: + resolution: {integrity: sha512-uKwlnCNyKmny7yFPOnQJAN82Er0WzGQbSlpZHTKTqlTQsvZF+skA4ANMHqKh+68jQYet6IotH3dtxs1VdyBdxw==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -10837,6 +11563,9 @@ packages: proper-lockfile@4.1.2: resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + property-information@7.2.0: + resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} + proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -10887,6 +11616,10 @@ packages: quansync@1.0.0: resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + query-string@9.5.0: + resolution: {integrity: sha512-YlJmwNyi0RGYjlxYcuDncMsxFU7YyutbuI7gTm8ySxIGBlwx5yiBCOD5ig9ZNoHkawk/1Dey0N5mEfcUybMVAA==} + engines: {node: '>=18'} + queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -10912,6 +11645,22 @@ packages: resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==} engines: {node: '>= 0.6'} + ranges-apply@7.1.3: + resolution: {integrity: sha512-+dpc801TK6qUoMKU9dnwD0wH6XORtZicXLVm4p43jEp+te7Q+Tw0Pa4cHX9Mj1W0zshVYh1S4RIYI38ZUPglqQ==} + engines: {node: '>=14.18.0'} + + ranges-merge@9.1.3: + resolution: {integrity: sha512-dPS11e7AHD1tnuzrboYa+n07JqbHccMqt94C3cSlJ9tTC/RN6P+iGePhTyvCPpoNDWVOEVX4JGyGH0oHjwas0g==} + engines: {node: '>=14.18.0'} + + ranges-push@7.1.3: + resolution: {integrity: sha512-3laGXNa4CW1vt6e2RqC35xRmxXpcWwLNpepTQJ+dkftc/7rH+d9pQ/UQgV6/peN6DsDcpJuu+PjLjWprz2UjDA==} + engines: {node: '>=14.18.0'} + + ranges-sort@6.1.3: + resolution: {integrity: sha512-JsTMmurWEOPYowp1OwUbjcfXyDfaTB+AWoiZwjV+3qOv0uUI7A1CExGwyFwfXEO5HYThOTDC96qC9a6BYqFbyg==} + engines: {node: '>=14.18.0'} + raw-body@3.0.2: resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} engines: {node: '>= 0.10'} @@ -10968,6 +11717,19 @@ packages: reflect-metadata@0.2.2: resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + regex-empty-conditional-comments@3.1.3: + resolution: {integrity: sha512-1bld//jNjpNXXfcuv7Ch7gDaHaK4DU8I7B52E7c20jPjwUJk5X9TpP7BmLr6KtyLUZgKqTzZME+TRL1JzfOROg==} + engines: {node: '>=14.18.0'} + + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.1.0: + resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} + regexp-to-ast@0.5.0: resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} @@ -10975,6 +11737,11 @@ packages: resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} hasBin: true + reka-ui@2.10.3: + resolution: {integrity: sha512-nJGZbwcha8AcP2wbnjodfzsciTKBqp1mIzepC9Pi2xDI/YK3++ej3vpJOSPyxqrkq1Oorj4K+BdJkbVCV6x6ag==} + peerDependencies: + vue: '>= 3.4.0' + remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} @@ -11002,6 +11769,15 @@ packages: resolution: {integrity: sha512-QT7FVMXfWOYFbeRBF6nu+I6tr2Tf3u0q8RIEjNob/heKY/nh7drD/k7eeMFmSQgnTtCzLDcCu/XEnpW2wk4xCQ==} engines: {node: '>=9.3.0 || >=8.10.0 <9.0.0'} + resend@6.17.1: + resolution: {integrity: sha512-QhHHIRPPM9Tq2uilWmNF8C8kd6nLkUmiFgDQCt1v4eR4o+6p86qrK+Vn12jnAs0jR8Gf6ABdxI18/90LGQ7GVA==} + engines: {node: '>=20'} + peerDependencies: + '@react-email/render': '*' + peerDependenciesMeta: + '@react-email/render': + optional: true + resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -11090,6 +11866,9 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + rimraf@5.0.10: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true @@ -11206,6 +11985,10 @@ packages: scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} + section-matter@1.0.0: + resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} + engines: {node: '>=4'} + seedrandom@3.0.5: resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} @@ -11302,6 +12085,10 @@ packages: resolution: {integrity: sha512-w1aiOKwKuRgtwAReIIj89puqg+I7GvX4IbLrvmhXbzQsj1+Zwi4VO3+fa6ZF91TWSjIxoEkKnMeHcLEODK5ZXA==} engines: {node: '>= 0.4'} + shiki@4.4.3: + resolution: {integrity: sha512-Mb/GvXPHBAXdgGIcnfU5L3ldpn1XcxrGkPHwqgRx17/I2XRfqlFKk2vGkHWINn1kdXvzJZeuO3is6I9KLPFm0g==} + engines: {node: '>=20'} + side-channel-list@1.0.1: resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} engines: {node: '>= 0.4'} @@ -11389,6 +12176,10 @@ packages: resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + sort-css-media-queries@3.0.5: + resolution: {integrity: sha512-wRgTa9kOgx5nV+lp/uwT0XBlH/WN5dpsOxyIkbtQud65Ie66TYjHceWH/8d1C0siMjcdSjjXg4zV022QmvLsaw==} + engines: {node: '>= 16'} + sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} engines: {node: '>=0.10.0'} @@ -11412,13 +12203,23 @@ packages: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + sparse-bitfield@3.0.3: resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + split-on-first@3.0.0: + resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} + engines: {node: '>=12'} + split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} @@ -11471,6 +12272,9 @@ packages: standard-as-callback@2.1.0: resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} + standardwebhooks@1.0.0: + resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==} + statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} engines: {node: '>= 0.8'} @@ -11485,6 +12289,10 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} + stdin-discarder@0.3.2: + resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==} + engines: {node: '>=18'} + stream-browserify@3.0.0: resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} @@ -11497,6 +12305,42 @@ packages: streamx@2.28.0: resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==} + string-character-is-astral-surrogate@3.1.3: + resolution: {integrity: sha512-sqj1xo8SMWp6WG/pUYoIiYNgSHQTTuJA/BmdpnvoAoo121RVOTJJQ7V1RKAOwT+vVOYhwiLydb9ul5tgnMPY9w==} + engines: {node: '>=14.18.0'} + + string-collapse-leading-whitespace@7.1.3: + resolution: {integrity: sha512-bCgNODedM9daANnnNPOHuz++qUeVHgsPMghNPznbLLnBviNyuKt9vzHIa6OGTSpWzJUO4Rlffu4+RD47pSTq3g==} + engines: {node: '>=14.18.0'} + + string-extract-class-names@8.1.3: + resolution: {integrity: sha512-C93V3u9dZHHsIaNab765gQv+ewuRvkgx6tseXclrxN1DgLakhbfL8s48QG30uRryXqRttCJrLCQs3EeO5WAz9w==} + engines: {node: '>=14.18.0'} + + string-left-right@6.1.3: + resolution: {integrity: sha512-XPqLphMTTbPMRs4DPX0flLtVFsDWZ+Og3tyku1FiiE2b/+SUHmiO1KRg7NBlb5e9UrojE5F3ryXORL0VYhwwgA==} + engines: {node: '>=14.18.0'} + + string-match-left-right@9.1.3: + resolution: {integrity: sha512-X+lhDoz+Ef7aGeczV+s6W219mpygsytvt/N+WbnJ/ZSi38siK0LgYfAKHe6LPZiRYTYgN2UPXA/FW6bExcxRLg==} + engines: {node: '>=14.18.0'} + + string-range-expander@4.1.3: + resolution: {integrity: sha512-gUBIVv6YYHhXU+fqyEhTQzGHhsVq6NjUpX7y3ZcOtiSbIEiIYzeUzx/+p1koy20LZkfeWbhusRuR4AHdh1JxNg==} + engines: {node: '>=14.18.0'} + + string-strip-html@13.5.3: + resolution: {integrity: sha512-MjrGYjcyOfY8VLXpbEJRtiHLFkWRRIdRt7hcBxGUo2GGM/YSyIfiRQ3q0y2pb+RwYHUfVbw3euuyLzxqyxhyIA==} + engines: {node: '>=14.18.0'} + + string-trim-spaces-only@5.1.3: + resolution: {integrity: sha512-Flb782YX49j4GkLv/M2rqJik/lUq+OJnT/q7kQ6byZtgknAo1wb1XFBN3b+7UMW5I6VB1QdNAoh9oiUa9izBpA==} + engines: {node: '>=14.18.0'} + + string-uglify@3.1.3: + resolution: {integrity: sha512-g93pMqRK4swYKXxYOVma28u7ON/2bg+g5iectIvRZEu6ZSCEMOE19pa2cMGmzqkfS4DxG1Jc4y11wf/luTF3Mg==} + engines: {node: '>=14.18.0'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -11519,6 +12363,9 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-entities@4.0.4: + resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -11527,6 +12374,10 @@ packages: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} + strip-bom-string@1.0.0: + resolution: {integrity: sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==} + engines: {node: '>=0.10.0'} + strip-dirs@3.0.0: resolution: {integrity: sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==} @@ -11575,11 +12426,11 @@ packages: stubs@3.0.0: resolution: {integrity: sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw==} - stylehacks@8.0.2: - resolution: {integrity: sha512-3d5vjQODiMc4VwED1w24fAYSfeAjdIRLy88cJQ9NAYkZr/6ozCVbusda5N+0kXsfGWW3pizUgYK2TOZxiU0cSQ==} + stylehacks@8.0.3: + resolution: {integrity: sha512-cHciVnyMEuLOYt6AGCTyzRjEvBTvA+0H/QThOFgKTI9uuFK4RA34gLVEt/Uuz11rtSPvZHjMWLjTazF9pLMPog==} engines: {node: ^22.11.0 || ^24.11.0 || >=26.0} peerDependencies: - postcss: ^8.5.25 + postcss: ^8.5.26 super-regex@1.1.0: resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==} @@ -11627,6 +12478,12 @@ packages: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} + tailwind-merge@3.6.0: + resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==} + + tailwindcss@4.3.3: + resolution: {integrity: sha512-gOhV3P7ufE62QDGg1zVaTgCR+EtPv92k2nIhVcVKcLmxT1sUBsQGhnZj175j+MqRt4zLF7ic+sCYjfhxMxj7YQ==} + tapable@2.3.3: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} @@ -11641,9 +12498,6 @@ packages: tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar-stream@3.2.0: - resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==} - tar@7.5.22: resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==} engines: {node: '>=18'} @@ -11652,9 +12506,6 @@ packages: resolution: {integrity: sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g==} engines: {node: '>=14'} - teex@1.0.1: - resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} - terminal-link@5.0.0: resolution: {integrity: sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==} engines: {node: '>=20'} @@ -11664,6 +12515,10 @@ packages: engines: {node: '>=10'} hasBin: true + test-mixer@4.2.3: + resolution: {integrity: sha512-6sBlzwiDARX7Qp13MwYygwjeNrtlkbHj+6t/+1OnROQWLX+rpquOc+XXbjVs5xYUtltNo6ZpvFM4nNWtOdInHw==} + engines: {node: '>=14.18.0'} + text-decoder@1.2.7: resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} @@ -11779,6 +12634,9 @@ packages: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + trim-lines@3.0.1: + resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} @@ -11828,8 +12686,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tsx@4.23.11: - resolution: {integrity: sha512-Ry2oTEUnhBdeEdWIztY8kf3/nBGnPnjMLVGL0YfdRXMORuPER5NlKmayqxtxRxwB1xBN+RivRaJfe7PM1rtiyw==} + tsx@4.23.12: + resolution: {integrity: sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==} engines: {node: '>=18.0.0'} hasBin: true @@ -11844,6 +12702,9 @@ packages: resolution: {integrity: sha512-I8yFsfRzmzK0WV1pNNOA4A7y4RDfFxPRxb3t+e3ui14qSGOxGtiSP6GjeX+Y6CHb7HYaFj7ECUD7VE5kQMZWGQ==} engines: {node: '>=18', npm: '>=9'} + tw-animate-css@1.4.0: + resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -11871,8 +12732,8 @@ packages: type-level-regexp@0.1.17: resolution: {integrity: sha512-wTk4DH3cxwk196uGLK/E9pE45aLfeKJacKmcEgEOA/q5dnPGNxXt0cfYdFxb57L+sEpf1oJH4Dnx/pnRcku9jg==} - typebox@1.3.11: - resolution: {integrity: sha512-tZGKIS02Opbh4EYMmAEVuXl+y3EQJ9ZlkitLZ1CmFCY4ZOqr/xWR9dDSCFmIjNDICGMWkOqMh6WxGTyRXqcSGQ==} + typebox@1.3.12: + resolution: {integrity: sha512-CTZgXB7zyNxwKXq7ktZYGcKZHqu/ZtpPGMHxf5xBa2hrfY9cokVd6SHwwx/r/EHur9V1jJcfeP3Guw9v1QpZ7g==} typebox@1.3.7: resolution: {integrity: sha512-meKuifc33Pccx0O6PdIzYMq3Og8zvP4TIi/a+Bw3AEMZMxOD0+RHGQvpglEe6Zdy3wZ8nqn/j95h8LUZLk/6Hg==} @@ -12078,6 +12939,9 @@ packages: unist-util-is@6.0.1: resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} + unist-util-position@5.0.0: + resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} + unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} @@ -12109,10 +12973,38 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unplugin-auto-import@21.1.0: + resolution: {integrity: sha512-EzrSqWIBulEqCuP7idADXH+tVKYrbwKlR5+r/lOWik0o+Ksny1kitmtryHGNSv7puzzORlcIwT/x2JStiszlHA==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@nuxt/kit': ^4.0.0 + '@vueuse/core': '*' + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@vueuse/core': + optional: true + unplugin-utils@0.3.2: resolution: {integrity: sha512-xVToRh2CTmLk2HnEG7ac4rl1MJTT3RFkpS8B++/SnB0kXvuaavD+n3m/vrzyWQOdJNSZQACnbz01pnppbwV5BA==} engines: {node: '>=20.19.0'} + unplugin-vue-components@32.1.0: + resolution: {integrity: sha512-YiUkSxuRjab18XFOrX5VsIxXzccrfmHVGsGeJgSgklb829DQmCy9E4vvDUE4tuvZZdxyFJZX0Oc4TPnnxiiMyg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@nuxt/kit': ^3.2.2 || ^4.0.0 + vue: ^3.0.0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + unplugin-vue-markdown@32.0.0: + resolution: {integrity: sha512-K9uiYJF9kvngrN/NRx8fVPZFXiqJR7tbnXQV4mVFxjcsKhuiL6+vVQ5woam59RqeCDprecBmbg+cCGADz0somA==} + engines: {node: '>=22'} + peerDependencies: + vite: ^2.0.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + unplugin@2.3.11: resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} engines: {node: '>=18.12.0'} @@ -12300,8 +13192,8 @@ packages: unwasm@0.5.3: resolution: {integrity: sha512-keBgTSfp3r6+s9ZcSma+0chwxQdmLbB5+dAD9vjtB21UTMYuKAxHXCU1K2CbCtnP09EaWeRvACnXk0EJtUx+hw==} - update-browserslist-db@1.3.0: - resolution: {integrity: sha512-x/M6q3w4Ybp91CNaS4S69UnliqR3BzRpOT6LWbksjth0S/+jhfaPJsWjt/TewpT8j9eLIojUf5jr29WextHroA==} + update-browserslist-db@1.3.1: + resolution: {integrity: sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -12364,6 +13256,10 @@ packages: typescript: optional: true + valid-data-url@3.0.1: + resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==} + engines: {node: '>=10'} + validate-npm-package-name@5.0.1: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -12453,8 +13349,8 @@ packages: '@nuxt/kit': optional: true - vite-plugin-vue-tracer@1.4.0: - resolution: {integrity: sha512-0tQCjCqZWVSK6UeRW9S4ABbf47lKQ68zvrT2FNvZmiL+alDydCVyH/T3Jlfbdc3T3C2Iuyyl5aVsMbF8IQIoxA==} + vite-plugin-vue-tracer@1.5.0: + resolution: {integrity: sha512-G2aQ676fLBPnYhRi5lsARoL4hbtc/sx6fVzO7p44AB+1xQXo2UuiRgv7K26UdijrNzmuQprmJ121n3rdjBk1CA==} peerDependencies: vite: ^6.0.0 || ^7.0.0 || ^8.0.0-0 vue: ^3.5.0 @@ -12624,6 +13520,17 @@ packages: vue-component-type-helpers@3.3.9: resolution: {integrity: sha512-3c/UfMe0SqyEfcGTyH7mfshHagJ9QTCbppCb0/uGpHZpFug7+If3GeGZN7I0YheKEExemx3xldQPoO7PQSOLQg==} + 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-devtools-stub@0.1.0: resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==} @@ -12680,6 +13587,10 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + web-resource-inliner@8.0.0: + resolution: {integrity: sha512-Ezr98sqXW/+OCGoUEXuOKVR+oVFlSdn1tIySEEJdiSAw4IjrW8hQkwARSSBJTSB5Us5dnytDgL0ZDliAYBhaNA==} + engines: {node: '>=10.0.0'} + web-streams-polyfill@3.3.3: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} @@ -12711,10 +13622,19 @@ packages: webpack-cli: optional: true + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation + whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + whatwg-url@14.2.0: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} @@ -12923,10 +13843,10 @@ packages: snapshots: - '@ai-sdk/anthropic@4.0.36(zod@4.4.3)': + '@ai-sdk/anthropic@4.0.37(zod@4.4.3)': dependencies: '@ai-sdk/provider': 4.0.7 - '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) + '@ai-sdk/provider-utils': 5.0.26(zod@4.4.3) zod: 4.4.3 '@ai-sdk/gateway@3.0.151(zod@4.1.11)': @@ -12950,17 +13870,17 @@ snapshots: '@vercel/oidc': 3.2.0 zod: 4.1.11 - '@ai-sdk/gateway@4.0.46(zod@4.4.3)': + '@ai-sdk/gateway@4.0.47(zod@4.4.3)': dependencies: '@ai-sdk/provider': 4.0.7 - '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) + '@ai-sdk/provider-utils': 5.0.26(zod@4.4.3) '@vercel/oidc': 3.2.0 zod: 4.4.3 - '@ai-sdk/google@4.0.39(zod@4.4.3)': + '@ai-sdk/google@4.0.41(zod@4.4.3)': dependencies: '@ai-sdk/provider': 4.0.7 - '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) + '@ai-sdk/provider-utils': 5.0.26(zod@4.4.3) zod: 4.4.3 '@ai-sdk/harness-codex@1.0.41(zod@4.1.11)': @@ -12981,23 +13901,23 @@ snapshots: ws: 8.21.3 zod: 4.1.11 - '@ai-sdk/openai-compatible@3.0.27(zod@4.4.3)': + '@ai-sdk/openai-compatible@3.0.29(zod@4.4.3)': dependencies: '@ai-sdk/provider': 4.0.7 - '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) + '@ai-sdk/provider-utils': 5.0.26(zod@4.4.3) zod: 4.4.3 - '@ai-sdk/openai@4.0.36(zod@4.4.3)': + '@ai-sdk/openai@4.0.37(zod@4.4.3)': dependencies: '@ai-sdk/provider': 4.0.7 - '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) + '@ai-sdk/provider-utils': 5.0.26(zod@4.4.3) zod: 4.4.3 '@ai-sdk/provider-utils@4.0.39(zod@4.1.11)': dependencies: '@ai-sdk/provider': 3.0.14 '@standard-schema/spec': 1.1.0 - eventsource-parser: 3.1.0 + eventsource-parser: 3.1.1 zod: 4.1.11 '@ai-sdk/provider-utils@5.0.12(zod@4.1.11)': @@ -13005,15 +13925,15 @@ snapshots: '@ai-sdk/provider': 4.0.3 '@standard-schema/spec': 1.1.0 '@workflow/serde': 4.1.0 - eventsource-parser: 3.1.0 + eventsource-parser: 3.1.1 zod: 4.1.11 - '@ai-sdk/provider-utils@5.0.25(zod@4.4.3)': + '@ai-sdk/provider-utils@5.0.26(zod@4.4.3)': dependencies: '@ai-sdk/provider': 4.0.7 '@standard-schema/spec': 1.1.0 '@workflow/serde': 4.1.0 - eventsource-parser: 3.1.0 + eventsource-parser: 3.1.1 undici: 7.29.0 zod: 4.4.3 @@ -13022,7 +13942,7 @@ snapshots: '@ai-sdk/provider': 4.0.3 '@standard-schema/spec': 1.1.0 '@workflow/serde': 4.1.0 - eventsource-parser: 3.1.0 + eventsource-parser: 3.1.1 zod: 4.1.11 '@ai-sdk/provider@3.0.14': @@ -13037,6 +13957,8 @@ snapshots: dependencies: json-schema: 0.4.0 + '@alloc/quick-lru@5.2.0': {} + '@andrewbranch/untar.js@1.0.4': {} '@antfu/install-pkg@1.1.0': @@ -13120,7 +14042,7 @@ snapshots: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1106.0': + '@aws-sdk/client-s3@3.1107.0': dependencies: '@aws-sdk/checksums': 3.1000.26 '@aws-sdk/core': 3.977.6 @@ -13245,9 +14167,9 @@ snapshots: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/lib-storage@3.1106.0(@aws-sdk/client-s3@3.1106.0)': + '@aws-sdk/lib-storage@3.1107.0(@aws-sdk/client-s3@3.1107.0)': dependencies: - '@aws-sdk/client-s3': 3.1106.0 + '@aws-sdk/client-s3': 3.1107.0 '@smithy/core': 3.31.1 '@smithy/types': 4.16.1 buffer: 5.6.0 @@ -13292,9 +14214,9 @@ snapshots: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/s3-presigned-post@3.1106.0': + '@aws-sdk/s3-presigned-post@3.1107.0': dependencies: - '@aws-sdk/client-s3': 3.1106.0 + '@aws-sdk/client-s3': 3.1107.0 '@aws-sdk/core': 3.977.6 '@aws-sdk/types': 3.974.2 '@smithy/core': 3.31.1 @@ -13302,7 +14224,7 @@ snapshots: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.1106.0': + '@aws-sdk/s3-request-presigner@3.1107.0': dependencies: '@aws-sdk/core': 3.977.6 '@aws-sdk/signature-v4-multi-region': 3.996.43 @@ -13742,7 +14664,7 @@ snapshots: '@babel/helper-string-parser': 8.0.0 '@babel/helper-validator-identifier': 8.0.4 - '@better-auth/cli@1.5.0-beta.13(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.2.1(zod@4.4.3))(drizzle-kit@0.31.10)(jose@6.2.8)(kysely@0.28.17)(mongodb@7.5.0)(mysql2@3.15.3)(nanostores@1.4.2)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vue@3.5.41)': + '@better-auth/cli@1.5.0-beta.13(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.2.1(zod@4.4.3))(drizzle-kit@0.31.10)(jose@6.2.8)(kysely@0.28.17)(mongodb@7.5.0)(mysql2@3.15.3)(nanostores@1.4.2)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vue@3.5.41)': dependencies: '@babel/core': 7.29.7 '@babel/preset-react': 7.29.7(@babel/core@7.29.7) @@ -13754,7 +14676,7 @@ snapshots: '@mrleebo/prisma-ast': 0.13.1 '@prisma/client': 5.22.0(prisma@7.9.1) '@types/pg': 8.21.0 - better-auth: 1.5.0-beta.13(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.41.0(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.28.17)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vue@3.5.41) + better-auth: 1.5.0-beta.13(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.41.0(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.28.17)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vue@3.5.41) c12: 3.3.4 chalk: 5.6.2 commander: 12.1.0 @@ -13811,7 +14733,7 @@ snapshots: nanostores: 1.4.2 zod: 4.4.3 - '@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2)': + '@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2)': dependencies: '@better-auth/utils': 0.4.2 '@better-fetch/fetch': 1.3.1 @@ -13820,7 +14742,7 @@ snapshots: '@standard-schema/spec': 1.1.0 better-call: 1.3.7(zod@4.4.3) jose: 6.2.8 - kysely: 0.29.4 + kysely: 0.29.5 nanostores: 1.4.2 zod: 4.4.3 @@ -13830,11 +14752,11 @@ snapshots: '@better-auth/utils': 0.3.1 drizzle-orm: 0.41.0(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.28.17)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1) - '@better-auth/drizzle-adapter@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1))': + '@better-auth/drizzle-adapter@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1))': dependencies: - '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2) + '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) '@better-auth/utils': 0.4.2 - drizzle-orm: 0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1) + drizzle-orm: 0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1) '@better-auth/kysely-adapter@1.5.0-beta.13(@better-auth/core@1.5.0-beta.13(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.2.1(zod@4.4.3))(jose@6.2.8)(kysely@0.28.17)(nanostores@1.4.2))(@better-auth/utils@0.3.1)(kysely@0.28.17)': dependencies: @@ -13842,20 +14764,20 @@ snapshots: '@better-auth/utils': 0.3.1 kysely: 0.28.17 - '@better-auth/kysely-adapter@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(kysely@0.29.4)': + '@better-auth/kysely-adapter@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(kysely@0.29.5)': dependencies: - '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2) + '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) '@better-auth/utils': 0.4.2 - kysely: 0.29.4 + kysely: 0.29.5 '@better-auth/memory-adapter@1.5.0-beta.13(@better-auth/core@1.5.0-beta.13(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.2.1(zod@4.4.3))(jose@6.2.8)(kysely@0.28.17)(nanostores@1.4.2))(@better-auth/utils@0.3.1)': dependencies: '@better-auth/core': 1.5.0-beta.13(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.2.1(zod@4.4.3))(jose@6.2.8)(kysely@0.28.17)(nanostores@1.4.2) '@better-auth/utils': 0.3.1 - '@better-auth/memory-adapter@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)': + '@better-auth/memory-adapter@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)': dependencies: - '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2) + '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) '@better-auth/utils': 0.4.2 '@better-auth/mongo-adapter@1.5.0-beta.13(@better-auth/core@1.5.0-beta.13(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.2.1(zod@4.4.3))(jose@6.2.8)(kysely@0.28.17)(nanostores@1.4.2))(@better-auth/utils@0.3.1)(mongodb@7.5.0)': @@ -13864,9 +14786,9 @@ snapshots: '@better-auth/utils': 0.3.1 mongodb: 7.5.0 - '@better-auth/mongo-adapter@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(mongodb@7.5.0)': + '@better-auth/mongo-adapter@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(mongodb@7.5.0)': dependencies: - '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2) + '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) '@better-auth/utils': 0.4.2 mongodb: 7.5.0 @@ -13877,9 +14799,9 @@ snapshots: '@prisma/client': 5.22.0(prisma@7.9.1) prisma: 7.9.1 - '@better-auth/prisma-adapter@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@prisma/client@5.22.0(prisma@7.9.1))(prisma@7.9.1)': + '@better-auth/prisma-adapter@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@prisma/client@5.22.0(prisma@7.9.1))(prisma@7.9.1)': dependencies: - '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2) + '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) '@better-auth/utils': 0.4.2 '@prisma/client': 5.22.0(prisma@7.9.1) prisma: 7.9.1 @@ -13890,9 +14812,9 @@ snapshots: '@better-auth/utils': 0.3.1 '@better-fetch/fetch': 1.1.21 - '@better-auth/telemetry@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)': + '@better-auth/telemetry@1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)': dependencies: - '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2) + '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) '@better-auth/utils': 0.4.2 '@better-fetch/fetch': 1.3.1 @@ -14022,7 +14944,7 @@ snapshots: '@commitlint/config-conventional@21.2.0': dependencies: '@commitlint/types': 21.2.0 - conventional-changelog-conventionalcommits: 10.2.1 + conventional-changelog-conventionalcommits: 10.3.0 '@commitlint/config-validator@21.2.0': dependencies: @@ -14072,14 +14994,14 @@ snapshots: '@commitlint/parse@21.2.0': dependencies: '@commitlint/types': 21.2.0 - conventional-changelog-angular: 9.2.1 + conventional-changelog-angular: 9.3.0 conventional-commits-parser: 7.1.2 '@commitlint/read@21.2.1': dependencies: '@commitlint/top-level': 21.2.0 '@commitlint/types': 21.2.0 - '@conventional-changelog/git-client': 3.1.1 + '@conventional-changelog/git-client': 3.1.2 tinyexec: 1.3.0 transitivePeerDependencies: - conventional-commits-filter @@ -14111,27 +15033,35 @@ snapshots: conventional-commits-parser: 7.1.2 picocolors: 1.1.1 - '@conventional-changelog/git-client@3.1.1': + '@conventional-changelog/git-client@3.1.2': dependencies: '@simple-libs/child-process-utils': 2.0.0 '@simple-libs/stream-utils': 2.0.0 semver: 7.8.5 - '@conventional-changelog/template@1.2.1': {} + '@conventional-changelog/template@1.3.0': {} + + '@csstools/selector-resolve-nested@4.0.1(postcss-selector-parser@7.1.5)': + dependencies: + postcss-selector-parser: 7.1.5 + + '@csstools/selector-specificity@6.0.0(postcss-selector-parser@7.1.5)': + dependencies: + postcss-selector-parser: 7.1.5 '@drizzle-team/brocli@0.10.2': {} - '@dxup/nuxt@0.5.6(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)': + '@dxup/nuxt@0.5.6(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)': dependencies: '@dxup/unimport': 0.1.2 - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) '@vue/compiler-dom': 3.5.41 chokidar: 5.0.0 knitwork: 1.3.0 magic-string: 1.1.0 pathe: 2.0.3 tinyglobby: 0.2.17 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -14142,12 +15072,12 @@ snapshots: '@dxup/unimport@0.1.2': {} - '@e18e/eslint-plugin@0.8.0(eslint@10.8.1)(oxlint@1.77.0(oxlint-tsgolint@7.0.2001))': + '@e18e/eslint-plugin@0.8.0(eslint@10.8.1)(oxlint@1.78.0(oxlint-tsgolint@7.0.2001))': dependencies: empathic: 2.0.1 eslint: 10.8.1 module-replacements: 3.1.0 - oxlint: 1.77.0(oxlint-tsgolint@7.0.2001) + oxlint: 1.78.0(oxlint-tsgolint@7.0.2001) semver: 7.8.5 '@earendil-works/pi-ai@0.83.0': @@ -14568,6 +15498,25 @@ snapshots: '@fastify/busboy@3.2.0': {} + '@floating-ui/core@1.8.0': + dependencies: + '@floating-ui/utils': 0.2.12 + + '@floating-ui/dom@1.8.0': + dependencies: + '@floating-ui/core': 1.8.0 + '@floating-ui/utils': 0.2.12 + + '@floating-ui/utils@0.2.12': {} + + '@floating-ui/vue@1.1.11(vue@3.5.41)': + dependencies: + '@floating-ui/dom': 1.8.0 + '@floating-ui/utils': 0.2.12 + vue-demi: 0.14.10(vue@3.5.41) + transitivePeerDependencies: + - '@vue/composition-api' + '@google-cloud/paginator@5.0.2': dependencies: arrify: 2.0.1 @@ -14577,7 +15526,7 @@ snapshots: '@google-cloud/promisify@4.0.0': {} - '@google-cloud/storage@7.21.0': + '@google-cloud/storage@7.22.0': dependencies: '@google-cloud/paginator': 5.0.2 '@google-cloud/projectify': 4.0.0 @@ -14618,10 +15567,6 @@ snapshots: dependencies: hono: 4.13.1 - '@hono/node-server@2.1.0(hono@4.13.1)': - dependencies: - hono: 4.13.1 - '@huggingface/jinja@0.5.9': {} '@huggingface/tokenizers@0.1.3': {} @@ -14654,7 +15599,7 @@ snapshots: dependencies: '@iconify/types': 2.0.0 - '@iconify/collections@1.0.722': + '@iconify/collections@1.0.723': dependencies: '@iconify/types': 2.0.0 @@ -14767,6 +15712,14 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true + '@internationalized/date@3.12.3': + dependencies: + '@swc/helpers': 0.5.23 + + '@internationalized/number@3.6.7': + dependencies: + '@swc/helpers': 0.5.23 + '@intlify/bundle-utils@11.2.4(vue-i18n@11.4.8(vue@3.5.41))': dependencies: '@intlify/message-compiler': 11.4.8 @@ -14808,21 +15761,21 @@ snapshots: '@intlify/shared@11.4.8': {} - '@intlify/unplugin-vue-i18n@11.2.4(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41)(vue-i18n@11.4.8(vue@3.5.41))': + '@intlify/unplugin-vue-i18n@11.2.4(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)(vue-i18n@11.4.8(vue@3.5.41))': dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@10.8.1(jiti@2.7.0)) '@intlify/bundle-utils': 11.2.4(vue-i18n@11.4.8(vue@3.5.41)) '@intlify/shared': 11.4.8 '@intlify/vue-i18n-extensions': 8.0.0(@intlify/shared@11.4.8)(@vue/compiler-dom@3.5.41)(vue@3.5.41)(vue-i18n@11.4.8(vue@3.5.41)) '@rollup/pluginutils': 5.4.0(rollup@4.62.4) - '@typescript-eslint/scope-manager': 8.66.0 - '@typescript-eslint/typescript-estree': 8.66.0(typescript@6.0.3-bridge.12.tsgo.7.0.2) + '@typescript-eslint/scope-manager': 8.67.0 + '@typescript-eslint/typescript-estree': 8.67.0(typescript@6.0.3-bridge.12.tsgo.7.0.2) debug: 4.4.3 fast-glob: 3.3.3 pathe: 2.0.3 picocolors: 1.1.1 unplugin: 2.3.11 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) vue: 3.5.41 vue-i18n: 11.4.8(vue@3.5.41) transitivePeerDependencies: @@ -14970,6 +15923,10 @@ snapshots: dependencies: '@braidai/lang': 1.1.2 + '@lucide/vue@1.31.0(vue@3.5.41)': + dependencies: + vue: 3.5.41 + '@lukeed/csprng@1.1.0': {} '@lunariajs/core@https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@904b935': @@ -14988,6 +15945,84 @@ snapshots: transitivePeerDependencies: - supports-color + '@maizzle/framework@6.0.13(shiki@4.4.3)(tailwind-merge@3.6.0)(vue@3.5.41)': + dependencies: + '@lucide/vue': 1.31.0(vue@3.5.41) + '@maizzle/tailwindcss': 1.5.6 + '@tailwindcss/postcss': 4.3.3 + '@tailwindcss/vite': 4.3.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@unhead/vue': 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2) + '@vitejs/plugin-vue': 6.0.8(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41) + '@vueuse/core': 14.4.0(vue@3.5.41) + class-variance-authority: 0.7.1 + clsx: 2.1.1 + color-shorthand-hex-to-six-digit: 5.1.3 + css-select: 7.0.0 + culori: 4.0.2 + defu: 6.1.7 + dom-serializer: 3.1.1 + domhandler: 6.0.1 + email-comb: 7.1.3 + html-crush: 6.1.3 + htmlparser2: 12.0.0 + is-url-superb: 6.1.0 + jiti: 2.7.0 + juice: 12.1.2 + markdown-exit: 1.1.0-beta.2 + nodemailer: 9.0.5 + ora: 9.4.1 + oxfmt: 0.61.0 + pathe: 2.0.3 + postcss: 8.5.26 + postcss-calc: 10.1.1(postcss@8.5.26) + postcss-merge-longhand: 8.0.3(postcss@8.5.26) + postcss-safe-parser: 7.0.1(postcss@8.5.26) + postcss-sort-media-queries: 6.7.1(postcss@8.5.26) + postcss-value-parser: 4.2.0 + query-string: 9.5.0 + reka-ui: 2.10.3(vue@3.5.41) + shiki: 4.4.3 + string-strip-html: 13.5.3 + tailwind-merge: 3.6.0 + tinyglobby: 0.2.17 + tinypool: 2.1.0 + tw-animate-css: 1.4.0 + typescript: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 + unplugin-auto-import: 21.1.0(@vueuse/core@14.4.0(vue@3.5.41)) + unplugin-vue-components: 32.1.0(@nuxt/kit@3.21.11)(vue@3.5.41) + unplugin-vue-markdown: 32.0.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + uqr: 0.1.3 + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) + vue: 3.5.41 + vue-router: 5.2.0(@vue/compiler-sfc@3.5.41)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41) + transitivePeerDependencies: + - '@farmfe/core' + - '@nuxt/kit' + - '@oxc-project/types' + - '@pinia/colada' + - '@rspack/core' + - '@unhead/cli' + - '@vitejs/devtools' + - '@vitejs/devtools-kit' + - '@vue/composition-api' + - bun-types-no-globals + - less + - lightningcss + - oxc-parser + - pinia + - rolldown + - sass + - sass-embedded + - stylus + - sugarss + - svelte + - unloader + - vite-plus + bundledDependencies: + - maizzle + + '@maizzle/tailwindcss@1.5.6': {} + '@mapbox/node-pre-gyp@2.0.3': dependencies: consola: 3.4.2 @@ -15001,13 +16036,27 @@ snapshots: - encoding - supports-color - '@mdream/crawl@1.5.12': + '@mdit-vue/plugin-component@3.0.2': + dependencies: + '@types/markdown-it': 14.1.2 + markdown-it: 14.3.0 + + '@mdit-vue/plugin-frontmatter@3.0.2': + dependencies: + '@mdit-vue/types': 3.0.2 + '@types/markdown-it': 14.1.2 + gray-matter: 4.0.3 + markdown-it: 14.3.0 + + '@mdit-vue/types@3.0.2': {} + + '@mdream/crawl@1.6.1': dependencies: '@clack/prompts': 1.7.0 - '@mdream/js': 1.5.12 + '@mdream/js': 1.6.1 c12: 3.3.4 hookable: 6.1.1 - mdream: 1.5.12 + mdream: 1.6.1 nypm: 0.6.9 ofetch: 1.5.1 pathe: 2.0.3 @@ -15017,42 +16066,42 @@ snapshots: transitivePeerDependencies: - magicast - '@mdream/js@1.5.12': + '@mdream/js@1.6.1': dependencies: cac: 7.0.0 pathe: 2.0.3 - '@mdream/rust-android-arm-eabi@1.5.12': + '@mdream/rust-android-arm-eabi@1.6.1': optional: true - '@mdream/rust-android-arm64@1.5.12': + '@mdream/rust-android-arm64@1.6.1': optional: true - '@mdream/rust-darwin-arm64@1.5.12': + '@mdream/rust-darwin-arm64@1.6.1': optional: true - '@mdream/rust-darwin-x64@1.5.12': + '@mdream/rust-darwin-x64@1.6.1': optional: true - '@mdream/rust-freebsd-x64@1.5.12': + '@mdream/rust-freebsd-x64@1.6.1': optional: true - '@mdream/rust-linux-arm-gnueabihf@1.5.12': + '@mdream/rust-linux-arm-gnueabihf@1.6.1': optional: true - '@mdream/rust-linux-arm64-gnu@1.5.12': + '@mdream/rust-linux-arm64-gnu@1.6.1': optional: true - '@mdream/rust-linux-arm64-musl@1.5.12': + '@mdream/rust-linux-arm64-musl@1.6.1': optional: true - '@mdream/rust-linux-x64-gnu@1.5.12': + '@mdream/rust-linux-x64-gnu@1.6.1': optional: true - '@mdream/rust-linux-x64-musl@1.5.12': + '@mdream/rust-linux-x64-musl@1.6.1': optional: true - '@mdream/rust-wasm32-wasi@1.5.12': + '@mdream/rust-wasm32-wasi@1.6.1': optional: true bundledDependencies: - '@emnapi/core' @@ -15062,10 +16111,10 @@ snapshots: - '@tybys/wasm-util' - tslib - '@mdream/rust-win32-arm64-msvc@1.5.12': + '@mdream/rust-win32-arm64-msvc@1.6.1': optional: true - '@mdream/rust-win32-x64-msvc@1.5.12': + '@mdream/rust-win32-x64-msvc@1.6.1': optional: true '@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1)': @@ -15095,14 +16144,14 @@ snapshots: '@modelcontextprotocol/sdk@1.30.0(zod@4.1.11)': dependencies: - '@hono/node-server': 2.1.0(hono@4.13.1) + '@hono/node-server': 1.19.17(hono@4.13.1) ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) content-type: 1.0.5 cors: 2.8.6 cross-spawn: 7.0.6 eventsource: 3.0.7 - eventsource-parser: 3.1.0 + eventsource-parser: 3.1.1 express: 5.2.1 express-rate-limit: 8.6.2(express@5.2.1) hono: 4.13.1 @@ -15291,7 +16340,7 @@ snapshots: '@neon-rs/load@0.0.4': {} - '@nestjs/common@11.1.28(reflect-metadata@0.2.2)(rxjs@7.8.2)': + '@nestjs/common@11.1.29(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: file-type: 21.3.4 iterare: 1.2.1 @@ -15303,9 +16352,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@nestjs/core@11.1.28(@nestjs/common@11.1.28(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)': + '@nestjs/core@11.1.29(@nestjs/common@11.1.29(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2)': dependencies: - '@nestjs/common': 11.1.28(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.29(reflect-metadata@0.2.2)(rxjs@7.8.2) fast-safe-stringify: 2.1.1 iterare: 1.2.1 path-to-regexp: 8.4.2 @@ -15409,19 +16458,19 @@ snapshots: '@nuxt/devalue@2.0.2': {} - '@nuxt/devtools-kit@2.7.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@nuxt/devtools-kit@2.7.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@nuxt/kit': 3.21.11 execa: 8.0.1 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - magicast - '@nuxt/devtools-kit@3.4.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@nuxt/devtools-kit@3.4.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) execa: 8.0.1 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - magicast - oxc-parser @@ -15437,14 +16486,14 @@ snapshots: pkg-types: 2.3.1 semver: 7.8.5 - '@nuxt/devtools@3.4.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@nuxt/devtools@3.4.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: - '@nuxt/devtools-kit': 3.4.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@nuxt/devtools-kit': 3.4.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@nuxt/devtools-wizard': 3.4.1 - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) '@vue/devtools-core': 8.2.1(vue@3.5.41) '@vue/devtools-kit': 8.2.1 - birpc: 4.0.0 + birpc: 4.1.0 consola: 3.4.2 destr: 2.0.5 error-stack-parser-es: 2.0.1 @@ -15468,9 +16517,9 @@ snapshots: structured-clone-es: 2.0.1 tinyglobby: 0.2.17 unstorage: 1.17.5 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) - vite-plugin-inspect: 11.4.1(@nuxt/kit@4.5.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - vite-plugin-vue-tracer: 1.4.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) + vite-plugin-inspect: 11.4.1(@nuxt/kit@4.5.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + vite-plugin-vue-tracer: 1.5.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41) which: 6.0.1 ws: 8.21.3 transitivePeerDependencies: @@ -15499,14 +16548,14 @@ snapshots: - uploadthing - utf-8-validate - '@nuxt/icon@2.5.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41)': + '@nuxt/icon@2.5.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)': dependencies: - '@iconify/collections': 1.0.722 + '@iconify/collections': 1.0.723 '@iconify/types': 2.0.0 '@iconify/utils': 3.1.4 '@iconify/vue': 5.0.1(vue@3.5.41) - '@nuxt/devtools-kit': 3.4.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + '@nuxt/devtools-kit': 3.4.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) consola: 3.4.2 local-pkg: 1.2.1 mlly: 1.8.2 @@ -15570,7 +16619,7 @@ snapshots: transitivePeerDependencies: - magicast - '@nuxt/kit@4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2))': + '@nuxt/kit@4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2))': dependencies: c12: 3.3.4 consola: 3.4.2 @@ -15590,7 +16639,7 @@ snapshots: scule: 1.3.0 tinyglobby: 0.2.17 ufo: 1.6.4 - unctx: 3.0.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + unctx: 3.0.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) untyped: 2.0.0 verkit: 0.3.2 transitivePeerDependencies: @@ -15600,8 +16649,8 @@ snapshots: '@nuxt/nitro-server@4.5.2(nuxt@4.5.2(@types/node@24.13.3)(rolldown@1.2.3))': dependencies: '@nuxt/devalue': 2.0.2 - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) - '@unhead/vue': 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) + '@unhead/vue': 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2) '@vue/shared': 3.5.41 consola: 3.4.2 defu: 6.1.7 @@ -15611,7 +16660,7 @@ snapshots: escape-string-regexp: 5.0.0 exsolve: 1.1.1 h3: 1.15.11 - impound: 1.1.6(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + impound: 1.1.6(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) klona: 2.0.6 mocked-exports: 0.1.1 nitropack: 2.13.4 @@ -15623,7 +16672,7 @@ snapshots: rou3: 0.9.1 std-env: 4.2.0 ufo: 1.6.4 - unctx: 3.0.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + unctx: 3.0.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) unstorage: 1.17.5 vue: 3.5.41 vue-bundle-renderer: 2.3.2 @@ -15653,7 +16702,6 @@ snapshots: - '@vitejs/devtools-kit' - aws4fetch - bare-abort-controller - - bare-buffer - better-sqlite3 - bun-types-no-globals - db0 @@ -15690,17 +16738,17 @@ snapshots: '@nuxt/telemetry@2.8.0(@nuxt/kit@4.5.2)': dependencies: - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) citty: 0.2.2 consola: 3.4.2 ofetch: 2.0.0-alpha.3 rc9: 3.0.1 std-env: 4.2.0 - '@nuxt/test-utils@4.1.0(@playwright/test@1.62.1)(@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41))(happy-dom@20.11.2)(playwright-core@1.62.1)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))': + '@nuxt/test-utils@4.1.0(@playwright/test@1.62.1)(@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41))(happy-dom@20.11.2)(playwright-core@1.62.1)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))': dependencies: '@clack/prompts': 1.7.0 - '@nuxt/devtools-kit': 2.7.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@nuxt/devtools-kit': 2.7.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@nuxt/kit': 3.21.11 '@playwright/test': 1.62.1 '@vue/test-utils': 2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41) @@ -15728,9 +16776,9 @@ snapshots: std-env: 4.2.0 tinyexec: 1.3.0 ufo: 1.6.4 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - vitest-environment-nuxt: 2.0.0(@playwright/test@1.62.1)(@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41))(happy-dom@20.11.2)(playwright-core@1.62.1)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + vitest-environment-nuxt: 2.0.0(@playwright/test@1.62.1)(@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41))(happy-dom@20.11.2)(playwright-core@1.62.1)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))) vue: 3.5.41 transitivePeerDependencies: - '@farmfe/core' @@ -15742,12 +16790,12 @@ snapshots: '@nuxt/vite-builder@4.5.2(nuxt@4.5.2(@types/node@24.13.3)(rolldown@1.2.3))(rolldown@1.2.3)(vue@3.5.41)': dependencies: - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) - '@vitejs/plugin-vue': 6.0.8(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41) - '@vitejs/plugin-vue-jsx': 5.1.6(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) + '@vitejs/plugin-vue': 6.0.8(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41) + '@vitejs/plugin-vue-jsx': 5.1.6(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41) autoprefixer: 10.5.4(postcss@8.5.26) consola: 3.4.2 - cssnano: 8.0.4(postcss@8.5.26) + cssnano: 8.0.5(postcss@8.5.26) defu: 6.1.7 escape-string-regexp: 5.0.0 exsolve: 1.1.1 @@ -15769,9 +16817,9 @@ snapshots: std-env: 4.2.0 ufo: 1.6.4 unenv: 2.0.0-rc.24 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) - vite-node: 6.0.0(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) - vite-plugin-checker: 0.14.5(eslint@10.8.1(jiti@2.7.0))(oxlint@1.77.0(oxlint-tsgolint@7.0.2001))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue-tsc@3.3.9(typescript@6.0.3-bridge.12.tsgo.7.0.2)) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) + vite-node: 6.0.0(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) + vite-plugin-checker: 0.14.5(eslint@10.8.1(jiti@2.7.0))(oxlint@1.78.0(oxlint-tsgolint@7.0.2001))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue-tsc@3.3.9(typescript@6.0.3-bridge.12.tsgo.7.0.2)) vue: 3.5.41 vue-bundle-renderer: 2.3.2 transitivePeerDependencies: @@ -15790,9 +16838,9 @@ snapshots: - supports-color - typescript - '@nuxtjs/color-mode@4.0.1(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2))': + '@nuxtjs/color-mode@4.0.1(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2))': dependencies: - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) exsolve: 1.1.1 pathe: 2.0.3 pkg-types: 2.3.1 @@ -15801,16 +16849,16 @@ snapshots: - magicast - oxc-parser - '@nuxtjs/i18n@10.6.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2)': + '@nuxtjs/i18n@10.6.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2)': dependencies: '@intlify/core': 11.4.8 '@intlify/h3': 0.7.4 '@intlify/message-compiler': 11.4.8 '@intlify/shared': 11.4.8 - '@intlify/unplugin-vue-i18n': 11.2.4(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41)(vue-i18n@11.4.8(vue@3.5.41)) + '@intlify/unplugin-vue-i18n': 11.2.4(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)(vue-i18n@11.4.8(vue@3.5.41)) '@intlify/utils': 0.14.1 '@miyaneee/rollup-plugin-json5': 1.2.0(rollup@4.62.4) - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) '@rollup/plugin-yaml': 4.1.2(rollup@4.62.4) '@vue/compiler-sfc': 3.5.41 confbox: 0.2.4 @@ -15826,12 +16874,12 @@ snapshots: oxc-walker: 0.7.0(oxc-parser@0.141.0) pathe: 2.0.3 ufo: 1.6.4 - unhead: 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + unhead: 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) unrouting: 0.2.2 unstorage: 1.17.5 vue-i18n: 11.4.8(vue@3.5.41) - vue-router: 5.2.0(@vue/compiler-sfc@3.5.41)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41) + vue-router: 5.2.0(@vue/compiler-sfc@3.5.41)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -15890,11 +16938,11 @@ snapshots: '@one-ini/wasm@0.1.1': {} - '@onmax/nuxt-better-auth@0.0.7(better-auth@1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vue@3.5.41))': + '@onmax/nuxt-better-auth@0.0.7(better-auth@1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vue@3.5.41))': dependencies: - '@better-auth/cli': 1.5.0-beta.13(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.2.1(zod@4.4.3))(drizzle-kit@0.31.10)(jose@6.2.8)(kysely@0.28.17)(mongodb@7.5.0)(mysql2@3.15.3)(nanostores@1.4.2)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vue@3.5.41) - '@nuxt/kit': 4.4.8 - better-auth: 1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vue@3.5.41) + '@better-auth/cli': 1.5.0-beta.13(@better-fetch/fetch@1.1.21)(@opentelemetry/api@1.9.1)(better-call@1.2.1(zod@4.4.3))(drizzle-kit@0.31.10)(jose@6.2.8)(kysely@0.28.17)(mongodb@7.5.0)(mysql2@3.15.3)(nanostores@1.4.2)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vue@3.5.41) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) + better-auth: 1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vue@3.5.41) defu: 6.1.7 h3: 1.15.11 jiti: 2.7.0 @@ -15927,6 +16975,7 @@ snapshots: - knex - magicast - next + - oxc-parser - pg-native - postgres - solid-js @@ -16418,60 +17467,117 @@ snapshots: '@oxc-transform/binding-win32-x64-msvc@0.141.0': optional: true + '@oxfmt/binding-android-arm-eabi@0.61.0': + optional: true + '@oxfmt/binding-android-arm-eabi@0.62.0': optional: true + '@oxfmt/binding-android-arm64@0.61.0': + optional: true + '@oxfmt/binding-android-arm64@0.62.0': optional: true + '@oxfmt/binding-darwin-arm64@0.61.0': + optional: true + '@oxfmt/binding-darwin-arm64@0.62.0': optional: true + '@oxfmt/binding-darwin-x64@0.61.0': + optional: true + '@oxfmt/binding-darwin-x64@0.62.0': optional: true + '@oxfmt/binding-freebsd-x64@0.61.0': + optional: true + '@oxfmt/binding-freebsd-x64@0.62.0': optional: true + '@oxfmt/binding-linux-arm-gnueabihf@0.61.0': + optional: true + '@oxfmt/binding-linux-arm-gnueabihf@0.62.0': optional: true + '@oxfmt/binding-linux-arm-musleabihf@0.61.0': + optional: true + '@oxfmt/binding-linux-arm-musleabihf@0.62.0': optional: true + '@oxfmt/binding-linux-arm64-gnu@0.61.0': + optional: true + '@oxfmt/binding-linux-arm64-gnu@0.62.0': optional: true + '@oxfmt/binding-linux-arm64-musl@0.61.0': + optional: true + '@oxfmt/binding-linux-arm64-musl@0.62.0': optional: true + '@oxfmt/binding-linux-ppc64-gnu@0.61.0': + optional: true + '@oxfmt/binding-linux-ppc64-gnu@0.62.0': optional: true + '@oxfmt/binding-linux-riscv64-gnu@0.61.0': + optional: true + '@oxfmt/binding-linux-riscv64-gnu@0.62.0': optional: true + '@oxfmt/binding-linux-riscv64-musl@0.61.0': + optional: true + '@oxfmt/binding-linux-riscv64-musl@0.62.0': optional: true + '@oxfmt/binding-linux-s390x-gnu@0.61.0': + optional: true + '@oxfmt/binding-linux-s390x-gnu@0.62.0': optional: true + '@oxfmt/binding-linux-x64-gnu@0.61.0': + optional: true + '@oxfmt/binding-linux-x64-gnu@0.62.0': optional: true + '@oxfmt/binding-linux-x64-musl@0.61.0': + optional: true + '@oxfmt/binding-linux-x64-musl@0.62.0': optional: true + '@oxfmt/binding-openharmony-arm64@0.61.0': + optional: true + '@oxfmt/binding-openharmony-arm64@0.62.0': optional: true + '@oxfmt/binding-win32-arm64-msvc@0.61.0': + optional: true + '@oxfmt/binding-win32-arm64-msvc@0.62.0': optional: true + '@oxfmt/binding-win32-ia32-msvc@0.61.0': + optional: true + '@oxfmt/binding-win32-ia32-msvc@0.62.0': optional: true + '@oxfmt/binding-win32-x64-msvc@0.61.0': + optional: true + '@oxfmt/binding-win32-x64-msvc@0.62.0': optional: true @@ -16493,61 +17599,61 @@ snapshots: '@oxlint-tsgolint/win32-x64@7.0.2001': optional: true - '@oxlint/binding-android-arm-eabi@1.77.0': + '@oxlint/binding-android-arm-eabi@1.78.0': optional: true - '@oxlint/binding-android-arm64@1.77.0': + '@oxlint/binding-android-arm64@1.78.0': optional: true - '@oxlint/binding-darwin-arm64@1.77.0': + '@oxlint/binding-darwin-arm64@1.78.0': optional: true - '@oxlint/binding-darwin-x64@1.77.0': + '@oxlint/binding-darwin-x64@1.78.0': optional: true - '@oxlint/binding-freebsd-x64@1.77.0': + '@oxlint/binding-freebsd-x64@1.78.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.77.0': + '@oxlint/binding-linux-arm-gnueabihf@1.78.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.77.0': + '@oxlint/binding-linux-arm-musleabihf@1.78.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.77.0': + '@oxlint/binding-linux-arm64-gnu@1.78.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.77.0': + '@oxlint/binding-linux-arm64-musl@1.78.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.77.0': + '@oxlint/binding-linux-ppc64-gnu@1.78.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.77.0': + '@oxlint/binding-linux-riscv64-gnu@1.78.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.77.0': + '@oxlint/binding-linux-riscv64-musl@1.78.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.77.0': + '@oxlint/binding-linux-s390x-gnu@1.78.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.77.0': + '@oxlint/binding-linux-x64-gnu@1.78.0': optional: true - '@oxlint/binding-linux-x64-musl@1.77.0': + '@oxlint/binding-linux-x64-musl@1.78.0': optional: true - '@oxlint/binding-openharmony-arm64@1.77.0': + '@oxlint/binding-openharmony-arm64@1.78.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.77.0': + '@oxlint/binding-win32-arm64-msvc@1.78.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.77.0': + '@oxlint/binding-win32-ia32-msvc@1.78.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.77.0': + '@oxlint/binding-win32-x64-msvc@1.78.0': optional: true '@parcel/watcher-wasm@2.6.0': @@ -16743,14 +17849,14 @@ snapshots: '@types/react': 19.2.18 react: 19.2.8 - '@redstardev/unplugin-version-injector@0.0.2(@nuxt/kit@3.21.11)(@nuxt/schema@3.21.11)(esbuild@0.28.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)': + '@redstardev/unplugin-version-injector@0.0.2(@nuxt/kit@3.21.11)(@nuxt/schema@3.21.11)(esbuild@0.28.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)': dependencies: '@nuxt/kit': 3.21.11 '@nuxt/schema': 3.21.11 '@sapphire/result': 2.8.0 esbuild: 0.28.2 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) webpack: 5.109.2 transitivePeerDependencies: - '@farmfe/core' @@ -16944,6 +18050,46 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} + '@shikijs/core@4.4.3': + dependencies: + '@shikijs/primitive': 4.4.3 + '@shikijs/types': 4.4.3 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@4.4.3': + dependencies: + '@shikijs/types': 4.4.3 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 4.3.6 + + '@shikijs/engine-oniguruma@4.4.3': + dependencies: + '@shikijs/types': 4.4.3 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@4.4.3': + dependencies: + '@shikijs/types': 4.4.3 + + '@shikijs/primitive@4.4.3': + dependencies: + '@shikijs/types': 4.4.3 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + '@shikijs/themes@4.4.3': + dependencies: + '@shikijs/types': 4.4.3 + + '@shikijs/types@4.4.3': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + + '@shikijs/vscode-textmate@10.0.2': {} + '@simple-git/args-pathspec@1.0.3': {} '@simple-git/argv-parser@1.1.1': @@ -17017,6 +18163,8 @@ snapshots: '@speed-highlight/core@1.2.24': {} + '@stablelib/base64@1.0.1': {} + '@standard-schema/spec@1.0.0': {} '@standard-schema/spec@1.0.0-beta.4': {} @@ -17057,7 +18205,7 @@ snapshots: '@standardserver/shared@0.7.1': {} - '@supabase/storage-js@2.112.2': + '@supabase/storage-js@2.112.3': dependencies: iceberg-js: 0.8.1 tslib: 2.8.1 @@ -17127,15 +18275,109 @@ snapshots: '@swc/counter@0.1.3': {} + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + '@swc/types@0.1.28': dependencies: '@swc/counter': 0.1.3 - '@tokenizer/inflate@0.4.1': + '@tailwindcss/node@4.3.3': dependencies: - debug: 4.4.3 - token-types: 6.1.2 - transitivePeerDependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.24.5 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.3.3 + + '@tailwindcss/oxide-android-arm64@4.3.3': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.3.3': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.3.3': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.3.3': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.3.3': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.3.3': + optional: true + bundledDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + - '@emnapi/wasi-threads' + - '@napi-rs/wasm-runtime' + - '@tybys/wasm-util' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.3.3': + optional: true + + '@tailwindcss/oxide@4.3.3': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.3.3 + '@tailwindcss/oxide-darwin-arm64': 4.3.3 + '@tailwindcss/oxide-darwin-x64': 4.3.3 + '@tailwindcss/oxide-freebsd-x64': 4.3.3 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.3 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.3 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.3 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.3 + '@tailwindcss/oxide-linux-x64-musl': 4.3.3 + '@tailwindcss/oxide-wasm32-wasi': 4.3.3 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 + + '@tailwindcss/postcss@4.3.3': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.3.3 + '@tailwindcss/oxide': 4.3.3 + postcss: 8.5.26 + tailwindcss: 4.3.3 + + '@tailwindcss/vite@4.3.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': + dependencies: + '@tailwindcss/node': 4.3.3 + '@tailwindcss/oxide': 4.3.3 + tailwindcss: 4.3.3 + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) + + '@tanstack/virtual-core@3.17.7': {} + + '@tanstack/vue-virtual@3.13.35(vue@3.5.41)': + dependencies: + '@tanstack/virtual-core': 3.17.7 + vue: 3.5.41 + + '@tokenizer/inflate@0.4.1': + dependencies: + debug: 4.4.3 + token-types: 6.1.2 + transitivePeerDependencies: - supports-color '@tokenizer/token@0.3.0': {} @@ -17216,6 +18458,10 @@ snapshots: '@types/geojson@7946.0.16': {} + '@types/hast@3.0.5': + dependencies: + '@types/unist': 3.0.3 + '@types/http-cache-semantics@4.2.0': {} '@types/jsesc@2.5.1': {} @@ -17224,8 +18470,17 @@ snapshots: '@types/linkify-it@5.0.0': {} + '@types/lodash-es@4.17.12': + dependencies: + '@types/lodash': 4.17.25 + '@types/lodash@4.17.25': {} + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 @@ -17267,6 +18522,8 @@ snapshots: '@types/unist@3.0.3': {} + '@types/web-bluetooth@0.0.21': {} + '@types/webidl-conversions@7.0.3': {} '@types/whatwg-mimetype@3.0.2': {} @@ -17279,32 +18536,32 @@ snapshots: dependencies: '@types/node': 24.13.3 - '@typescript-eslint/project-service@8.66.0(typescript@6.0.3-bridge.12.tsgo.7.0.2)': + '@typescript-eslint/project-service@8.67.0(typescript@6.0.3-bridge.12.tsgo.7.0.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@6.0.3-bridge.12.tsgo.7.0.2) - '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3-bridge.12.tsgo.7.0.2) + '@typescript-eslint/types': 8.67.0 debug: 4.4.3 typescript: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.66.0': + '@typescript-eslint/scope-manager@8.67.0': dependencies: - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/visitor-keys': 8.66.0 + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 - '@typescript-eslint/tsconfig-utils@8.66.0(typescript@6.0.3-bridge.12.tsgo.7.0.2)': + '@typescript-eslint/tsconfig-utils@8.67.0(typescript@6.0.3-bridge.12.tsgo.7.0.2)': dependencies: typescript: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 - '@typescript-eslint/types@8.66.0': {} + '@typescript-eslint/types@8.67.0': {} - '@typescript-eslint/typescript-estree@8.66.0(typescript@6.0.3-bridge.12.tsgo.7.0.2)': + '@typescript-eslint/typescript-estree@8.67.0(typescript@6.0.3-bridge.12.tsgo.7.0.2)': dependencies: - '@typescript-eslint/project-service': 8.66.0(typescript@6.0.3-bridge.12.tsgo.7.0.2) - '@typescript-eslint/tsconfig-utils': 8.66.0(typescript@6.0.3-bridge.12.tsgo.7.0.2) - '@typescript-eslint/types': 8.66.0 - '@typescript-eslint/visitor-keys': 8.66.0 + '@typescript-eslint/project-service': 8.67.0(typescript@6.0.3-bridge.12.tsgo.7.0.2) + '@typescript-eslint/tsconfig-utils': 8.67.0(typescript@6.0.3-bridge.12.tsgo.7.0.2) + '@typescript-eslint/types': 8.67.0 + '@typescript-eslint/visitor-keys': 8.67.0 debug: 4.4.3 minimatch: 10.2.6 semver: 7.8.5 @@ -17314,9 +18571,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.66.0': + '@typescript-eslint/visitor-keys@8.67.0': dependencies: - '@typescript-eslint/types': 8.66.0 + '@typescript-eslint/types': 8.67.0 eslint-visitor-keys: 5.0.1 '@typescript-native-bridge/darwin-arm64@6.0.3-bridge.12.tsgo.7.0.2': @@ -17348,15 +18605,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@unhead/bundler@3.3.1(esbuild@0.28.2)(rolldown@1.2.3)(unhead@3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)': + '@ungap/structured-clone@1.3.3': {} + + '@unhead/bundler@3.3.1(esbuild@0.28.2)(rolldown@1.2.3)(unhead@3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)': dependencies: esbuild: 0.28.2 magic-string: 1.1.0 oxc-walker: 1.1.1(rolldown@1.2.3) rolldown: 1.2.3 - unhead: 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + unhead: 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) webpack: 5.109.2 transitivePeerDependencies: - '@farmfe/core' @@ -17366,13 +18625,13 @@ snapshots: - oxc-parser - unloader - '@unhead/vue@3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2)': + '@unhead/vue@3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2)': dependencies: - '@unhead/bundler': 3.3.1(esbuild@0.28.2)(rolldown@1.2.3)(unhead@3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + '@unhead/bundler': 3.3.1(esbuild@0.28.2)(rolldown@1.2.3)(unhead@3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) hookable: 6.1.1 - unhead: 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + unhead: 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) vue: 3.5.41 webpack: 5.109.2 transitivePeerDependencies: @@ -17425,9 +18684,9 @@ snapshots: gzip-size: 6.0.0 sirv: 3.0.2 - '@unocss/nuxt@66.7.5(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)': + '@unocss/nuxt@66.7.5(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)': dependencies: - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) '@unocss/config': 66.7.5 '@unocss/core': 66.7.5 '@unocss/preset-attributify': 66.7.5 @@ -17438,7 +18697,7 @@ snapshots: '@unocss/preset-wind3': 66.7.5 '@unocss/preset-wind4': 66.7.5 '@unocss/reset': 66.7.5 - '@unocss/vite': 66.7.5(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@unocss/vite': 66.7.5(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@unocss/webpack': 66.7.5(webpack@5.109.2) unocss: 66.7.5(@unocss/webpack@66.7.5(webpack@5.109.2)) transitivePeerDependencies: @@ -17530,7 +18789,7 @@ snapshots: dependencies: '@unocss/core': 66.7.5 - '@unocss/vite@66.7.5(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@unocss/vite@66.7.5(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@jridgewell/remapping': 2.3.5 '@unocss/config': 66.7.5 @@ -17541,7 +18800,7 @@ snapshots: pathe: 2.0.3 tinyglobby: 0.2.17 unplugin-utils: 0.3.2 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) '@unocss/webpack@66.7.5(webpack@5.109.2)': dependencies: @@ -17552,7 +18811,7 @@ snapshots: magic-string: 0.30.21 pathe: 2.0.3 tinyglobby: 0.2.17 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) unplugin-utils: 0.3.2 webpack: 5.109.2 webpack-sources: 3.5.1 @@ -17570,9 +18829,9 @@ snapshots: effect: 3.17.7 sqids: 0.3.0 - '@vercel/blob@2.7.0': + '@vercel/blob@2.8.0': dependencies: - '@vercel/oidc': 3.8.2 + '@vercel/oidc': 3.8.3 async-retry: 1.3.3 is-buffer: 2.0.5 is-node-process: 1.2.0 @@ -17586,7 +18845,7 @@ snapshots: xdg-app-paths: 5.1.0 zod: 4.1.11 - '@vercel/cli-config@0.2.2': + '@vercel/cli-config@0.2.3': dependencies: xdg-app-paths: 5.1.0 zod: 4.1.11 @@ -17595,14 +18854,14 @@ snapshots: dependencies: execa: 5.1.1 - '@vercel/functions@3.9.1': + '@vercel/functions@3.9.2': dependencies: - '@vercel/oidc': 3.8.2 + '@vercel/oidc': 3.8.3 - '@vercel/functions@3.9.1(@aws-sdk/credential-provider-web-identity@3.972.49)': + '@vercel/functions@3.9.2(@aws-sdk/credential-provider-web-identity@3.972.49)': dependencies: '@aws-sdk/credential-provider-web-identity': 3.972.49 - '@vercel/oidc': 3.8.2 + '@vercel/oidc': 3.8.3 '@vercel/nft@1.10.2(rollup@4.62.4)': dependencies: @@ -17624,9 +18883,9 @@ snapshots: '@vercel/oidc@3.2.0': {} - '@vercel/oidc@3.8.2': + '@vercel/oidc@3.8.3': dependencies: - '@vercel/cli-config': 0.2.2 + '@vercel/cli-config': 0.2.3 '@vercel/cli-exec': 1.0.1 jose: 5.10.0 @@ -17735,7 +18994,7 @@ snapshots: d3-time-format: 4.1.0 internmap: 2.0.3 - '@vite-hub/agent@0.0.3(a08d4e0b7d28c3acb45700979c488772)': + '@vite-hub/agent@0.0.3(ec966830e493cafda8aca782de65b552)': dependencies: '@ai-sdk/gateway': 4.0.26(zod@4.1.11) '@ai-sdk/harness': 1.0.39(ws@8.21.3)(zod@4.1.11) @@ -17745,21 +19004,21 @@ snapshots: '@standard-schema/spec': 1.1.0 '@types/json-schema': 7.0.15 '@vercel/nft': 1.10.2(rollup@4.62.4) - '@vite-hub/blob': 0.0.3(@aws-sdk/client-s3@3.1106.0)(@aws-sdk/lib-storage@3.1106.0(@aws-sdk/client-s3@3.1106.0))(@aws-sdk/s3-presigned-post@3.1106.0)(@aws-sdk/s3-request-presigner@3.1106.0)(files-sdk@2.2.3(@aws-sdk/client-s3@3.1106.0)(@aws-sdk/lib-storage@3.1106.0(@aws-sdk/client-s3@3.1106.0))(@aws-sdk/s3-presigned-post@3.1106.0)(@aws-sdk/s3-request-presigner@3.1106.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.21.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.2)(@vercel/blob@2.7.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/blob': 0.0.3(@aws-sdk/client-s3@3.1107.0)(@aws-sdk/lib-storage@3.1107.0(@aws-sdk/client-s3@3.1107.0))(@aws-sdk/s3-presigned-post@3.1107.0)(@aws-sdk/s3-request-presigner@3.1107.0)(files-sdk@2.2.3(@aws-sdk/client-s3@3.1107.0)(@aws-sdk/lib-storage@3.1107.0(@aws-sdk/client-s3@3.1107.0))(@aws-sdk/s3-presigned-post@3.1107.0)(@aws-sdk/s3-request-presigner@3.1107.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.22.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.3)(@vercel/blob@2.8.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vite-hub/box': 0.0.3(@cloudflare/sandbox@0.8.14)(@vercel/sandbox@1.10.2) - '@vite-hub/email': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/markdown-template': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/rate-limit': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/email': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/markdown-template': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/rate-limit': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vite-hub/runtime': 0.0.3 - '@vite-hub/schedule': 0.0.3(@vite-hub/kv@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/workflow': 0.0.3(@vite-hub/database@0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(@workflow/builders@5.0.0-beta.35)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(workflow@5.0.0-beta.35) - '@vite-hub/workspace': 0.0.3(@vite-hub/shell@0.0.3)(ai@7.0.19(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/schedule': 0.0.3(@vite-hub/kv@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/workflow': 0.0.3(@vite-hub/database@0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(@workflow/builders@5.0.0-beta.35)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(workflow@5.0.0-beta.35) + '@vite-hub/workspace': 0.0.3(@vite-hub/shell@0.0.3)(ai@7.0.19(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) ai: 7.0.19(zod@4.1.11) chat: 4.35.0(ai@7.0.19(zod@4.1.11))(workflow@5.0.0-beta.35)(zod@4.1.11) comark: 0.5.1 effect: 4.0.0-beta.99 esbuild: 0.27.7 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@asciidev/box-sdk' - '@cfworker/json-schema' @@ -17775,12 +19034,12 @@ snapshots: - utf-8-validate - vue - '@vite-hub/auth@0.0.3(@vite-hub/agent@0.0.3(a08d4e0b7d28c3acb45700979c488772))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/auth@0.0.3(@vite-hub/agent@0.0.3(ec966830e493cafda8aca782de65b552))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: - '@vite-hub/agent': 0.0.3(a08d4e0b7d28c3acb45700979c488772) + '@vite-hub/agent': 0.0.3(ec966830e493cafda8aca782de65b552) '@vite-hub/runtime': 0.0.3 - better-auth: 1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@3.2.7(@types/debug@4.1.13)(@types/node@24.13.3)(happy-dom@20.11.2))(vue@3.5.41) - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + better-auth: 1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@3.2.7(@types/debug@4.1.13)(@types/node@24.13.3)(happy-dom@20.11.2))(vue@3.5.41) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@cloudflare/workers-types' - '@lynx-js/react' @@ -17792,22 +19051,22 @@ snapshots: - solid-js - svelte - '@vite-hub/blob@0.0.3(@aws-sdk/client-s3@3.1106.0)(@aws-sdk/lib-storage@3.1106.0(@aws-sdk/client-s3@3.1106.0))(@aws-sdk/s3-presigned-post@3.1106.0)(@aws-sdk/s3-request-presigner@3.1106.0)(files-sdk@2.2.3(@aws-sdk/client-s3@3.1106.0)(@aws-sdk/lib-storage@3.1106.0(@aws-sdk/client-s3@3.1106.0))(@aws-sdk/s3-presigned-post@3.1106.0)(@aws-sdk/s3-request-presigner@3.1106.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.21.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.2)(@vercel/blob@2.7.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/blob@0.0.3(@aws-sdk/client-s3@3.1107.0)(@aws-sdk/lib-storage@3.1107.0(@aws-sdk/client-s3@3.1107.0))(@aws-sdk/s3-presigned-post@3.1107.0)(@aws-sdk/s3-request-presigner@3.1107.0)(files-sdk@2.2.3(@aws-sdk/client-s3@3.1107.0)(@aws-sdk/lib-storage@3.1107.0(@aws-sdk/client-s3@3.1107.0))(@aws-sdk/s3-presigned-post@3.1107.0)(@aws-sdk/s3-request-presigner@3.1107.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.22.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.3)(@vercel/blob@2.8.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: - '@aws-sdk/client-s3': 3.1106.0 - '@aws-sdk/lib-storage': 3.1106.0(@aws-sdk/client-s3@3.1106.0) - '@aws-sdk/s3-presigned-post': 3.1106.0 - '@aws-sdk/s3-request-presigner': 3.1106.0 + '@aws-sdk/client-s3': 3.1107.0 + '@aws-sdk/lib-storage': 3.1107.0(@aws-sdk/client-s3@3.1107.0) + '@aws-sdk/s3-presigned-post': 3.1107.0 + '@aws-sdk/s3-request-presigner': 3.1107.0 '@netlify/blobs': 10.7.12 - '@vercel/blob': 2.7.0 + '@vercel/blob': 2.8.0 '@vite-hub/runtime': 0.0.3 aws4fetch: 1.0.20 defu: 6.1.7 esbuild: 0.27.7 - files-sdk: 2.2.3(@aws-sdk/client-s3@3.1106.0)(@aws-sdk/lib-storage@3.1106.0(@aws-sdk/client-s3@3.1106.0))(@aws-sdk/s3-presigned-post@3.1106.0)(@aws-sdk/s3-request-presigner@3.1106.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.21.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.2)(@vercel/blob@2.7.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11) + files-sdk: 2.2.3(@aws-sdk/client-s3@3.1107.0)(@aws-sdk/lib-storage@3.1107.0(@aws-sdk/client-s3@3.1107.0))(@aws-sdk/s3-presigned-post@3.1107.0)(@aws-sdk/s3-request-presigner@3.1107.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.22.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.3)(@vercel/blob@2.8.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11) h3: 2.0.1-rc.25(crossws@0.4.10) pathe: 2.0.3 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -17817,19 +19076,19 @@ snapshots: '@vercel/sandbox': 1.10.2 '@vite-hub/runtime': 0.0.3 - '@vite-hub/browser@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/browser@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@cloudflare/playwright': 1.3.5(playwright-core@1.62.1) '@vite-hub/runtime': 0.0.3 playwright-core: 1.62.1 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) - '@vite-hub/cli@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/cli@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: pathe: 2.0.3 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) - '@vite-hub/database@0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/database@0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@libsql/client': 0.17.4 drizzle-kit: 0.31.10 @@ -17837,34 +19096,34 @@ snapshots: esbuild: 0.28.2 h3: 2.0.1-rc.25(crossws@0.4.10) pathe: 2.0.3 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - bufferutil - utf-8-validate - '@vite-hub/email@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/email@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@types/nodemailer': 8.0.1 - '@vite-hub/markdown-template': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/markdown-template': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vite-hub/runtime': 0.0.3 comark: 0.5.1 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - beautiful-mermaid - katex - shiki - '@vite-hub/env@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/env@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vite-hub/runtime': 0.0.3 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) - '@vite-hub/kv@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/kv@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vite-hub/runtime': 0.0.3 defu: 6.1.7 - unstorage: 2.0.0-alpha.7(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@netlify/blobs@10.7.12)(db0@0.3.4)(uploadthing@7.7.4) - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + unstorage: 2.0.0-alpha.7(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@netlify/blobs@10.7.12)(uploadthing@7.7.4) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -17879,43 +19138,44 @@ snapshots: - '@vercel/kv' - aws4fetch - chokidar + - db0 - idb-keyval - ioredis - lru-cache - mongodb - ofetch - '@vite-hub/markdown-template@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/markdown-template@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: comark: 0.5.1 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - beautiful-mermaid - katex - shiki - '@vite-hub/queue@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/queue@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: - '@vercel/functions': 3.9.1 + '@vercel/functions': 3.9.2 '@vercel/queue': 0.0.0-alpha.40 '@vite-hub/runtime': 0.0.3 defu: 6.1.7 esbuild: 0.27.7 h3: 2.0.1-rc.25(crossws@0.4.10) pathe: 2.0.3 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@aws-sdk/credential-provider-web-identity' - ws - '@vite-hub/rate-limit@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/rate-limit@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: h3: 2.0.1-rc.25(crossws@0.4.10) - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) '@vite-hub/runtime@0.0.3': {} - '@vite-hub/sandbox@0.0.3(@cloudflare/sandbox@0.8.14)(@vercel/sandbox@1.10.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/sandbox@0.0.3(@cloudflare/sandbox@0.8.14)(@vercel/sandbox@1.10.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@cloudflare/sandbox': 0.8.14 '@vercel/sandbox': 1.10.2 @@ -17930,25 +19190,26 @@ snapshots: scule: 1.3.0 typescript: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 ufo: 1.6.4 - unimport: 6.4.0(rolldown@1.2.3) - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + unimport: 6.4.0 + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@asciidev/box-sdk' - '@farmfe/core' - '@rspack/core' - bun-types-no-globals - oxc-parser + - rolldown - ssh2 - unloader - '@vite-hub/schedule@0.0.3(@vite-hub/kv@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/schedule@0.0.3(@vite-hub/kv@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: - '@vite-hub/kv': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/kv': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vite-hub/runtime': 0.0.3 cron-schedule: 6.0.0 effect: 4.0.0-beta.99 esbuild: 0.28.2 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) '@vite-hub/shell@0.0.3': dependencies: @@ -17971,27 +19232,27 @@ snapshots: - '@cfworker/json-schema' - supports-color - '@vite-hub/workflow@0.0.3(@vite-hub/database@0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(@workflow/builders@5.0.0-beta.35)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(workflow@5.0.0-beta.35)': + '@vite-hub/workflow@0.0.3(@vite-hub/database@0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(@workflow/builders@5.0.0-beta.35)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(workflow@5.0.0-beta.35)': dependencies: - '@vercel/functions': 3.9.1 - '@vite-hub/database': 0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vercel/functions': 3.9.2 + '@vite-hub/database': 0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vite-hub/runtime': 0.0.3 '@workflow/builders': 5.0.0-beta.35 defu: 6.1.7 esbuild: 0.28.2 h3: 2.0.1-rc.25(crossws@0.4.10) pathe: 2.0.3 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) workflow: 5.0.0-beta.35 transitivePeerDependencies: - '@aws-sdk/credential-provider-web-identity' - ws - '@vite-hub/workspace@0.0.3(@vite-hub/shell@0.0.3)(ai@6.0.228(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/workspace@0.0.3(@vite-hub/shell@0.0.3)(ai@6.0.228(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vercel/nft': 1.10.2(rollup@4.62.4) '@vite-hub/box': 0.0.3(@cloudflare/sandbox@0.8.14)(@vercel/sandbox@1.10.2) - '@vite-hub/markdown-template': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/markdown-template': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vite-hub/runtime': 0.0.3 '@vite-hub/shell': 0.0.3 '@vite-hub/source': 0.0.3(zod@4.1.11) @@ -17999,13 +19260,13 @@ snapshots: defu: 6.1.7 exsolve: 1.1.1 h3: 2.0.1-rc.25(crossws@0.4.10) - isomorphic-git: 1.41.0 + isomorphic-git: 1.41.3 jiti: 2.7.0 minimatch: 10.2.6 mountx: 0.0.2 mrmime: 2.0.1 ofetch: 1.5.1 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@asciidev/box-sdk' - '@cfworker/json-schema' @@ -18017,11 +19278,11 @@ snapshots: - supports-color - unstorage - '@vite-hub/workspace@0.0.3(@vite-hub/shell@0.0.3)(ai@7.0.19(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vite-hub/workspace@0.0.3(@vite-hub/shell@0.0.3)(ai@7.0.19(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vercel/nft': 1.10.2(rollup@4.62.4) '@vite-hub/box': 0.0.3(@cloudflare/sandbox@0.8.14)(@vercel/sandbox@1.10.2) - '@vite-hub/markdown-template': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/markdown-template': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vite-hub/runtime': 0.0.3 '@vite-hub/shell': 0.0.3 '@vite-hub/source': 0.0.3(zod@4.1.11) @@ -18029,13 +19290,13 @@ snapshots: defu: 6.1.7 exsolve: 1.1.1 h3: 2.0.1-rc.25(crossws@0.4.10) - isomorphic-git: 1.41.0 + isomorphic-git: 1.41.3 jiti: 2.7.0 minimatch: 10.2.6 mountx: 0.0.2 mrmime: 2.0.1 ofetch: 1.5.1 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@asciidev/box-sdk' - '@cfworker/json-schema' @@ -18047,22 +19308,22 @@ snapshots: - supports-color - unstorage - '@vitejs/plugin-vue-jsx@5.1.6(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41)': + '@vitejs/plugin-vue-jsx@5.1.6(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)': dependencies: '@babel/core': 7.29.7 '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) '@rolldown/pluginutils': 1.0.1 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.29.7) - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) vue: 3.5.41 transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@6.0.8(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41)': + '@vitejs/plugin-vue@6.0.8(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)': dependencies: '@rolldown/pluginutils': 1.0.1 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) vue: 3.5.41 '@vitest/expect@3.2.7': @@ -18082,19 +19343,19 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.1 - '@vitest/mocker@3.2.7(vite@7.3.6(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.11))': + '@vitest/mocker@3.2.7(vite@7.3.6(@types/node@24.13.3)(tsx@4.23.12))': dependencies: '@vitest/spy': 3.2.7 estree-walker: 3.0.3 magic-string: 0.30.21 - vite: 7.3.6(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.11) + vite: 7.3.6(@types/node@24.13.3)(tsx@4.23.12) - '@vitest/mocker@4.1.10(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))': + '@vitest/mocker@4.1.10(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))': dependencies: '@vitest/spy': 4.1.10 estree-walker: 3.0.3 magic-string: 0.30.21 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) '@vitest/pretty-format@3.2.7': dependencies: @@ -18288,6 +19549,19 @@ snapshots: vue: 3.5.41 vue-component-type-helpers: 3.3.9 + '@vueuse/core@14.4.0(vue@3.5.41)': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 14.4.0 + '@vueuse/shared': 14.4.0(vue@3.5.41) + vue: 3.5.41 + + '@vueuse/metadata@14.4.0': {} + + '@vueuse/shared@14.4.0(vue@3.5.41)': + dependencies: + vue: 3.5.41 + '@webassemblyjs/ast@1.14.1': dependencies: '@webassemblyjs/helper-numbers': 1.13.2 @@ -18474,7 +19748,7 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 '@standard-schema/spec': 1.0.0 '@types/ms': 2.1.0 - '@vercel/functions': 3.9.1(@aws-sdk/credential-provider-web-identity@3.972.49) + '@vercel/functions': 3.9.2(@aws-sdk/credential-provider-web-identity@3.972.49) '@workflow/errors': 5.0.0-beta.11 '@workflow/serde': 5.0.0-beta.2 '@workflow/utils': 5.0.0-beta.6 @@ -18499,10 +19773,10 @@ snapshots: '@workflow/utils': 5.0.0-beta.6 ms: 2.1.3 - '@workflow/nest@5.0.0-beta.35(@nestjs/common@11.1.28(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.28(@nestjs/common@11.1.28(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(@swc/cli@0.8.1(@swc/core@1.15.3))(@swc/core@1.15.3)': + '@workflow/nest@5.0.0-beta.35(@nestjs/common@11.1.29(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.29(@nestjs/common@11.1.29(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(@swc/cli@0.8.1(@swc/core@1.15.3))(@swc/core@1.15.3)': dependencies: - '@nestjs/common': 11.1.28(reflect-metadata@0.2.2)(rxjs@7.8.2) - '@nestjs/core': 11.1.28(@nestjs/common@11.1.28(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/common': 11.1.29(reflect-metadata@0.2.2)(rxjs@7.8.2) + '@nestjs/core': 11.1.29(@nestjs/common@11.1.29(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2) '@swc/cli': 0.8.1(@swc/core@1.15.3) '@swc/core': 1.15.3 '@workflow/builders': 5.0.0-beta.35 @@ -18876,11 +20150,11 @@ snapshots: '@ai-sdk/provider-utils': 5.0.12(zod@4.1.11) zod: 4.1.11 - ai@7.0.58(zod@4.4.3): + ai@7.0.59(zod@4.4.3): dependencies: - '@ai-sdk/gateway': 4.0.46(zod@4.4.3) + '@ai-sdk/gateway': 4.0.47(zod@4.4.3) '@ai-sdk/provider': 4.0.7 - '@ai-sdk/provider-utils': 5.0.25(zod@4.4.3) + '@ai-sdk/provider-utils': 5.0.26(zod@4.4.3) zod: 4.4.3 ajv-formats@2.1.1(ajv@8.20.0): @@ -18916,6 +20190,8 @@ snapshots: dependencies: string-width: 4.2.3 + ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 @@ -18953,7 +20229,7 @@ snapshots: graceful-fs: 4.2.11 is-stream: 2.0.1 lazystream: 1.0.1 - lodash: 4.18.1 + lodash: 4.17.21 normalize-path: 3.0.0 readable-stream: 4.7.0 @@ -18964,17 +20240,30 @@ snapshots: buffer-crc32: 1.0.0 readable-stream: 4.7.0 readdir-glob: 1.1.3 - tar-stream: 3.2.0 + tar-stream: 3.1.7 zip-stream: 6.0.1 transitivePeerDependencies: - bare-abort-controller - - bare-buffer - react-native-b4a + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} argue-cli@3.1.0: {} + aria-hidden@1.2.6: + dependencies: + tslib: 2.8.1 + + array-pull-all-with-glob@7.1.3: + dependencies: + matcher: 6.0.0 + + arrayiffy-if-string@5.1.3: {} + arrify@2.0.1: {} assertion-error@2.0.1: {} @@ -19040,41 +20329,13 @@ snapshots: bare-events@2.9.1: {} - bare-fs@4.8.0: - dependencies: - bare-events: 2.9.1 - bare-path: 3.1.1 - bare-stream: 2.13.3(bare-events@2.9.1) - bare-url: 2.5.1 - fast-fifo: 1.3.2 - transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - - react-native-b4a - - bare-path@3.1.1: {} - - bare-stream@2.13.3(bare-events@2.9.1): - dependencies: - b4a: 1.8.1 - bare-events: 2.9.1 - streamx: 2.28.0 - teex: 1.0.1 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - - bare-url@2.5.1: - dependencies: - bare-path: 3.1.1 - base64-js@1.5.1: {} baseline-browser-mapping@2.11.13: {} basic-ftp@5.3.1: {} - better-auth@1.5.0-beta.13(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.41.0(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.28.17)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vue@3.5.41): + better-auth@1.5.0-beta.13(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.41.0(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.28.17)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vue@3.5.41): dependencies: '@better-auth/core': 1.5.0-beta.13(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.2.1(zod@4.4.3))(jose@6.2.8)(kysely@0.28.17)(nanostores@1.4.2) '@better-auth/drizzle-adapter': 1.5.0-beta.13(@better-auth/core@1.5.0-beta.13(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(better-call@1.2.1(zod@4.4.3))(jose@6.2.8)(kysely@0.28.17)(nanostores@1.4.2))(@better-auth/utils@0.3.1)(drizzle-orm@0.41.0(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.28.17)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)) @@ -19101,19 +20362,19 @@ snapshots: prisma: 7.9.1 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) vue: 3.5.41 zod: 4.4.3 - better-auth@1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@3.2.7(@types/debug@4.1.13)(@types/node@24.13.3)(happy-dom@20.11.2))(vue@3.5.41): + better-auth@1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@3.2.7(@types/debug@4.1.13)(@types/node@24.13.3)(happy-dom@20.11.2))(vue@3.5.41): dependencies: - '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2) - '@better-auth/drizzle-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1)) - '@better-auth/kysely-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(kysely@0.29.4) - '@better-auth/memory-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2) - '@better-auth/mongo-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(mongodb@7.5.0) - '@better-auth/prisma-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@prisma/client@5.22.0(prisma@7.9.1))(prisma@7.9.1) - '@better-auth/telemetry': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1) + '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) + '@better-auth/drizzle-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1)) + '@better-auth/kysely-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(kysely@0.29.5) + '@better-auth/memory-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2) + '@better-auth/mongo-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(mongodb@7.5.0) + '@better-auth/prisma-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@prisma/client@5.22.0(prisma@7.9.1))(prisma@7.9.1) + '@better-auth/telemetry': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1) '@better-auth/utils': 0.4.2 '@better-fetch/fetch': 1.3.1 '@noble/ciphers': 2.3.0 @@ -19122,9 +20383,9 @@ snapshots: better-call: 1.3.7(zod@4.4.3) defu: 6.1.7 drizzle-kit: 0.31.10 - drizzle-orm: 0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1) + drizzle-orm: 0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1) jose: 6.2.8 - kysely: 0.29.4 + kysely: 0.29.5 mongodb: 7.5.0 mysql2: 3.15.3 nanostores: 1.4.2 @@ -19138,15 +20399,15 @@ snapshots: transitivePeerDependencies: - '@cloudflare/workers-types' - better-auth@1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vue@3.5.41): + better-auth@1.6.26(@prisma/client@5.22.0(prisma@7.9.1))(drizzle-kit@0.31.10)(drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1))(mongodb@7.5.0)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vue@3.5.41): dependencies: - '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2) - '@better-auth/drizzle-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1)) - '@better-auth/kysely-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(kysely@0.29.4) - '@better-auth/memory-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2) - '@better-auth/mongo-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(mongodb@7.5.0) - '@better-auth/prisma-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@prisma/client@5.22.0(prisma@7.9.1))(prisma@7.9.1) - '@better-auth/telemetry': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.4)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1) + '@better-auth/core': 1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2) + '@better-auth/drizzle-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1)) + '@better-auth/kysely-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(kysely@0.29.5) + '@better-auth/memory-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2) + '@better-auth/mongo-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(mongodb@7.5.0) + '@better-auth/prisma-adapter': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@prisma/client@5.22.0(prisma@7.9.1))(prisma@7.9.1) + '@better-auth/telemetry': 1.6.26(@better-auth/core@1.6.26(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1)(@opentelemetry/api@1.9.1)(better-call@1.3.7(zod@4.4.3))(jose@6.2.8)(kysely@0.29.5)(nanostores@1.4.2))(@better-auth/utils@0.4.2)(@better-fetch/fetch@1.3.1) '@better-auth/utils': 0.4.2 '@better-fetch/fetch': 1.3.1 '@noble/ciphers': 2.3.0 @@ -19155,9 +20416,9 @@ snapshots: better-call: 1.3.7(zod@4.4.3) defu: 6.1.7 drizzle-kit: 0.31.10 - drizzle-orm: 0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1) + drizzle-orm: 0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1) jose: 6.2.8 - kysely: 0.29.4 + kysely: 0.29.5 mongodb: 7.5.0 mysql2: 3.15.3 nanostores: 1.4.2 @@ -19165,7 +20426,7 @@ snapshots: prisma: 7.9.1 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + vitest: 4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) vue: 3.5.41 zod: 4.4.3 transitivePeerDependencies: @@ -19208,11 +20469,11 @@ snapshots: birpc@2.9.0: {} - birpc@4.0.0: {} + birpc@4.1.0: {} bl@4.1.0: dependencies: - buffer: 5.7.1 + buffer: 5.6.0 inherits: 2.0.4 readable-stream: 3.6.2 optional: true @@ -19233,6 +20494,8 @@ snapshots: boolbase@1.0.0: {} + boolbase@2.0.0: {} + boolean@3.2.0: {} bowser@2.14.1: {} @@ -19283,9 +20546,9 @@ snapshots: dependencies: baseline-browser-mapping: 2.11.13 caniuse-lite: 1.0.30001809 - electron-to-chromium: 1.5.403 + electron-to-chromium: 1.5.404 node-releases: 2.0.53 - update-browserslist-db: 1.3.0(browserslist@4.28.8) + update-browserslist-db: 1.3.1(browserslist@4.28.8) bson@7.3.1: {} @@ -19304,12 +20567,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - optional: true - buffer@6.0.3: dependencies: base64-js: 1.5.1 @@ -19439,6 +20696,10 @@ snapshots: char-regex@1.0.2: {} + character-entities-html4@2.1.0: {} + + character-entities-legacy@3.0.0: {} + character-entities@2.0.2: {} chat@4.35.0(ai@7.0.19(zod@4.1.11))(workflow@5.0.0-beta.35)(zod@4.1.11): @@ -19458,6 +20719,29 @@ snapshots: check-error@2.1.3: {} + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.2.2 + css-what: 6.2.2 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + + cheerio@1.2.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + encoding-sniffer: 0.2.1 + htmlparser2: 10.1.0 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 7.29.0 + whatwg-mimetype: 4.0.0 + chevrotain@10.5.0: dependencies: '@chevrotain/cst-dts-gen': 10.5.0 @@ -19492,6 +20776,10 @@ snapshots: cjs-module-lexer@2.2.0: {} + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + classnames@2.5.1: {} clean-git-ref@2.0.1: {} @@ -19517,6 +20805,8 @@ snapshots: cli-spinners@2.9.2: {} + cli-spinners@3.4.0: {} + cli-table3@0.6.5: dependencies: string-width: 4.2.3 @@ -19538,14 +20828,26 @@ snapshots: clone@1.0.4: optional: true + clsx@2.1.1: {} + cluster-key-slot@1.1.1: {} + codsen-utils@1.7.3: + dependencies: + rfdc: 1.4.1 + color-convert@2.0.1: dependencies: color-name: 1.1.4 color-name@1.1.4: {} + color-shorthand-hex-to-six-digit@5.1.3: + dependencies: + codsen-utils: 1.7.3 + hex-color-regex: 1.1.0 + rfdc: 1.4.1 + colorette@2.0.20: {} comark@0.5.1: @@ -19559,12 +20861,16 @@ snapshots: dependencies: delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} + commander@10.0.1: {} commander@11.1.0: {} commander@12.1.0: {} + commander@14.0.3: {} + commander@15.0.0: {} commander@2.20.3: {} @@ -19606,13 +20912,13 @@ snapshots: content-type@2.0.0: {} - conventional-changelog-angular@9.2.1: + conventional-changelog-angular@9.3.0: dependencies: - '@conventional-changelog/template': 1.2.1 + '@conventional-changelog/template': 1.3.0 - conventional-changelog-conventionalcommits@10.2.1: + conventional-changelog-conventionalcommits@10.3.0: dependencies: - '@conventional-changelog/template': 1.2.1 + '@conventional-changelog/template': 1.3.0 conventional-commits-parser@7.1.2: dependencies: @@ -19693,6 +20999,14 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 + css-select@7.0.0: + dependencies: + boolbase: 2.0.0 + css-what: 8.0.0 + domhandler: 6.0.1 + domutils: 4.0.2 + nth-check: 3.0.1 + css-tree@2.2.1: dependencies: mdn-data: 2.0.28 @@ -19705,48 +21019,50 @@ snapshots: css-what@6.2.2: {} + css-what@8.0.0: {} + cssesc@3.0.0: {} - cssnano-preset-default@8.0.4(postcss@8.5.26): + cssnano-preset-default@8.0.5(postcss@8.5.26): dependencies: browserslist: 4.28.8 - cssnano-utils: 6.0.2(postcss@8.5.26) + cssnano-utils: 6.0.3(postcss@8.5.26) postcss: 8.5.26 postcss-calc: 10.1.1(postcss@8.5.26) - postcss-colormin: 8.0.2(postcss@8.5.26) - postcss-convert-values: 8.0.2(postcss@8.5.26) - postcss-discard-comments: 8.0.2(postcss@8.5.26) - postcss-discard-duplicates: 8.0.2(postcss@8.5.26) - postcss-discard-empty: 8.0.2(postcss@8.5.26) - postcss-discard-overridden: 8.0.2(postcss@8.5.26) - postcss-merge-longhand: 8.0.2(postcss@8.5.26) - postcss-merge-rules: 8.0.2(postcss@8.5.26) - postcss-minify-font-values: 8.0.2(postcss@8.5.26) - postcss-minify-gradients: 8.0.2(postcss@8.5.26) - postcss-minify-params: 8.0.2(postcss@8.5.26) - postcss-minify-selectors: 8.0.3(postcss@8.5.26) - postcss-normalize-charset: 8.0.2(postcss@8.5.26) - postcss-normalize-display-values: 8.0.2(postcss@8.5.26) - postcss-normalize-positions: 8.0.2(postcss@8.5.26) - postcss-normalize-repeat-style: 8.0.2(postcss@8.5.26) - postcss-normalize-string: 8.0.2(postcss@8.5.26) - postcss-normalize-timing-functions: 8.0.2(postcss@8.5.26) - postcss-normalize-unicode: 8.0.2(postcss@8.5.26) - postcss-normalize-url: 8.0.2(postcss@8.5.26) - postcss-normalize-whitespace: 8.0.2(postcss@8.5.26) - postcss-ordered-values: 8.0.2(postcss@8.5.26) - postcss-reduce-initial: 8.0.2(postcss@8.5.26) - postcss-reduce-transforms: 8.0.2(postcss@8.5.26) - postcss-svgo: 8.0.3(postcss@8.5.26) - postcss-unique-selectors: 8.0.2(postcss@8.5.26) - - cssnano-utils@6.0.2(postcss@8.5.26): + postcss-colormin: 8.0.3(postcss@8.5.26) + postcss-convert-values: 8.0.3(postcss@8.5.26) + postcss-discard-comments: 8.0.3(postcss@8.5.26) + postcss-discard-duplicates: 8.0.3(postcss@8.5.26) + postcss-discard-empty: 8.0.3(postcss@8.5.26) + postcss-discard-overridden: 8.0.3(postcss@8.5.26) + postcss-merge-longhand: 8.0.3(postcss@8.5.26) + postcss-merge-rules: 8.0.3(postcss@8.5.26) + postcss-minify-font-values: 8.0.3(postcss@8.5.26) + postcss-minify-gradients: 8.0.3(postcss@8.5.26) + postcss-minify-params: 8.0.3(postcss@8.5.26) + postcss-minify-selectors: 8.0.4(postcss@8.5.26) + postcss-normalize-charset: 8.0.3(postcss@8.5.26) + postcss-normalize-display-values: 8.0.3(postcss@8.5.26) + postcss-normalize-positions: 8.0.3(postcss@8.5.26) + postcss-normalize-repeat-style: 8.0.3(postcss@8.5.26) + postcss-normalize-string: 8.0.3(postcss@8.5.26) + postcss-normalize-timing-functions: 8.0.3(postcss@8.5.26) + postcss-normalize-unicode: 8.0.3(postcss@8.5.26) + postcss-normalize-url: 8.0.3(postcss@8.5.26) + postcss-normalize-whitespace: 8.0.3(postcss@8.5.26) + postcss-ordered-values: 8.0.3(postcss@8.5.26) + postcss-reduce-initial: 8.0.3(postcss@8.5.26) + postcss-reduce-transforms: 8.0.3(postcss@8.5.26) + postcss-svgo: 8.0.4(postcss@8.5.26) + postcss-unique-selectors: 8.0.3(postcss@8.5.26) + + cssnano-utils@6.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 - cssnano@8.0.4(postcss@8.5.26): + cssnano@8.0.5(postcss@8.5.26): dependencies: - cssnano-preset-default: 8.0.4(postcss@8.5.26) + cssnano-preset-default: 8.0.5(postcss@8.5.26) lilconfig: 3.1.3 postcss: 8.5.26 @@ -19756,6 +21072,8 @@ snapshots: csstype@3.2.3: {} + culori@4.0.2: {} + d3-array@3.2.1: dependencies: internmap: 2.0.3 @@ -19832,6 +21150,8 @@ snapshots: dependencies: character-entities: 2.0.2 + decode-uri-component@0.5.0: {} + decompress-response@10.0.0: dependencies: mimic-response: 4.0.0 @@ -19977,7 +21297,7 @@ snapshots: '@drizzle-team/brocli': 0.10.2 '@esbuild-kit/esm-loader': 2.6.5 esbuild: 0.25.12 - tsx: 4.23.11 + tsx: 4.23.12 drizzle-orm@0.41.0(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.28.17)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1): dependencies: @@ -19991,14 +21311,14 @@ snapshots: drizzle-orm@0.45.2: {} - drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1): + drizzle-orm@0.45.2(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(@types/pg@8.21.0)(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(postgres@3.4.9)(prisma@7.9.1)(sql.js@1.14.1): dependencies: '@electric-sql/pglite': 0.4.3 '@libsql/client': 0.17.4 '@opentelemetry/api': 1.9.1 '@prisma/client': 5.22.0(prisma@7.9.1) '@types/pg': 8.21.0 - kysely: 0.29.4 + kysely: 0.29.5 mysql2: 3.15.3 pg: 8.23.0 postgres: 3.4.9 @@ -20009,11 +21329,11 @@ snapshots: dependencies: '@libsql/client': 0.17.4 - drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1): + drizzle-orm@0.45.2(@opentelemetry/api@1.9.1)(@prisma/client@5.22.0(prisma@7.9.1))(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1): dependencies: '@opentelemetry/api': 1.9.1 '@prisma/client': 5.22.0(prisma@7.9.1) - kysely: 0.29.4 + kysely: 0.29.5 mysql2: 3.15.3 pg: 8.23.0 prisma: 7.9.1 @@ -20026,10 +21346,10 @@ snapshots: pg: 8.23.0 prisma: 7.9.1 - drizzle-orm@0.45.2(@prisma/client@5.22.0(prisma@7.9.1))(kysely@0.29.4)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1): + drizzle-orm@0.45.2(@prisma/client@5.22.0(prisma@7.9.1))(kysely@0.29.5)(mysql2@3.15.3)(pg@8.23.0)(prisma@7.9.1): dependencies: '@prisma/client': 5.22.0(prisma@7.9.1) - kysely: 0.29.4 + kysely: 0.29.5 mysql2: 3.15.3 pg: 8.23.0 prisma: 7.9.1 @@ -20102,10 +21422,25 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.403: {} + electron-to-chromium@1.5.404: {} elkjs@0.11.1: {} + email-comb@7.1.3: + dependencies: + array-pull-all-with-glob: 7.1.3 + codsen-utils: 1.7.3 + html-crush: 6.1.3 + matcher: 6.0.0 + ranges-apply: 7.1.3 + ranges-push: 7.1.3 + regex-empty-conditional-comments: 3.1.3 + string-extract-class-names: 8.1.3 + string-left-right: 6.1.3 + string-match-left-right: 9.1.3 + string-range-expander: 4.1.3 + string-uglify: 3.1.3 + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -20120,6 +21455,11 @@ snapshots: encodeurl@2.0.0: {} + encoding-sniffer@0.2.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + end-of-stream@1.4.5: dependencies: once: 1.4.0 @@ -20136,6 +21476,8 @@ snapshots: entities@4.5.0: {} + entities@6.0.1: {} + entities@7.0.1: {} entities@8.0.0: {} @@ -20301,6 +21643,8 @@ snapshots: escalade@3.2.0: {} + escape-goat@3.0.0: {} + escape-html@1.0.3: {} escape-string-regexp@4.0.0: {} @@ -20448,11 +21792,11 @@ snapshots: events@3.3.0: {} - eventsource-parser@3.1.0: {} + eventsource-parser@3.1.1: {} eventsource@3.0.7: dependencies: - eventsource-parser: 3.1.0 + eventsource-parser: 3.1.1 execa@5.1.1: dependencies: @@ -20502,7 +21846,7 @@ snapshots: dependencies: debug: 4.4.3 express: 5.2.1 - ip-address: 10.4.0 + ip-address: 10.5.0 transitivePeerDependencies: - supports-color @@ -20554,6 +21898,10 @@ snapshots: ext-list: 2.2.2 sort-keys-length: 1.0.1 + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + extend@3.0.2: {} fake-indexeddb@6.2.5: {} @@ -20594,6 +21942,8 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-sha256@1.3.0: {} + fast-string-truncated-width@3.0.3: {} fast-string-width@3.0.2: @@ -20668,20 +22018,20 @@ snapshots: dependencies: filename-reserved-regex: 4.0.0 - files-sdk@2.2.3(@aws-sdk/client-s3@3.1106.0)(@aws-sdk/lib-storage@3.1106.0(@aws-sdk/client-s3@3.1106.0))(@aws-sdk/s3-presigned-post@3.1106.0)(@aws-sdk/s3-request-presigner@3.1106.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.21.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.2)(@vercel/blob@2.7.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11): + files-sdk@2.2.3(@aws-sdk/client-s3@3.1107.0)(@aws-sdk/lib-storage@3.1107.0(@aws-sdk/client-s3@3.1107.0))(@aws-sdk/s3-presigned-post@3.1107.0)(@aws-sdk/s3-request-presigner@3.1107.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.22.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.3)(@vercel/blob@2.8.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11): dependencies: - '@aws-sdk/client-s3': 3.1106.0 - '@aws-sdk/lib-storage': 3.1106.0(@aws-sdk/client-s3@3.1106.0) - '@aws-sdk/s3-presigned-post': 3.1106.0 - '@aws-sdk/s3-request-presigner': 3.1106.0 + '@aws-sdk/client-s3': 3.1107.0 + '@aws-sdk/lib-storage': 3.1107.0(@aws-sdk/client-s3@3.1107.0) + '@aws-sdk/s3-presigned-post': 3.1107.0 + '@aws-sdk/s3-request-presigner': 3.1107.0 '@azure/identity': 4.13.1 '@azure/storage-blob': 12.33.0 - '@google-cloud/storage': 7.21.0 + '@google-cloud/storage': 7.22.0 '@googleapis/drive': 20.2.0 '@microsoft/microsoft-graph-client': 3.0.7(@azure/identity@4.13.1) '@netlify/blobs': 10.7.12 - '@supabase/storage-js': 2.112.2 - '@vercel/blob': 2.7.0 + '@supabase/storage-js': 2.112.3 + '@vercel/blob': 2.8.0 ai: 6.0.228(zod@4.1.11) aws4fetch: 1.0.20 box-typescript-sdk-gen: 1.19.1 @@ -20702,6 +22052,8 @@ snapshots: dependencies: to-regex-range: 5.0.1 + filter-obj@5.1.0: {} + finalhandler@2.1.1: dependencies: debug: 4.4.3 @@ -21070,6 +22422,13 @@ snapshots: graphmatch@1.1.1: {} + gray-matter@4.0.3: + dependencies: + js-yaml: 3.15.1 + kind-of: 6.0.3 + section-matter: 1.0.0 + strip-bom-string: 1.0.0 + gtoken@7.1.0: dependencies: gaxios: 6.7.1 @@ -21152,6 +22511,26 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.5 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.1 + property-information: 7.2.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + + hast-util-whitespace@3.0.0: + dependencies: + '@types/hast': 3.0.5 + + hex-color-regex@1.1.0: {} + highlight.js@10.7.3: {} hono@4.13.1: {} @@ -21160,8 +22539,27 @@ snapshots: hookable@6.1.1: {} + html-crush@6.1.3: + dependencies: + codsen-utils: 1.7.3 + ranges-apply: 7.1.3 + ranges-push: 7.1.3 + string-left-right: 6.1.3 + string-match-left-right: 9.1.3 + string-range-expander: 4.1.3 + test-mixer: 4.2.3 + html-entities@2.6.0: {} + html-void-elements@3.0.0: {} + + htmlparser2@10.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 7.0.1 + htmlparser2@12.0.0: dependencies: domelementtype: 3.0.0 @@ -21169,6 +22567,13 @@ snapshots: domutils: 4.0.2 entities: 8.0.0 + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + http-cache-semantics@4.2.0: {} http-errors@2.0.1: @@ -21227,6 +22632,10 @@ snapshots: iceberg-js@0.8.1: {} + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + iconv-lite@0.7.3: dependencies: safer-buffer: 2.1.2 @@ -21256,12 +22665,12 @@ snapshots: import-without-cache@0.4.0: {} - impound@1.1.6(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2): + impound@1.1.6(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2): dependencies: '@jridgewell/trace-mapping': 0.3.31 es-module-lexer: 2.3.1 pathe: 2.0.3 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) unplugin-utils: 0.3.2 transitivePeerDependencies: - '@farmfe/core' @@ -21306,7 +22715,7 @@ snapshots: transitivePeerDependencies: - supports-color - ip-address@10.4.0: {} + ip-address@10.5.0: {} ipaddr.js@1.9.1: {} @@ -21326,6 +22735,8 @@ snapshots: is-docker@3.0.0: {} + is-extendable@0.1.1: {} + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -21387,6 +22798,8 @@ snapshots: is-unsafe@2.0.0: {} + is-url-superb@6.1.0: {} + is-valid-glob@1.0.0: {} is-wsl@2.2.0: @@ -21405,7 +22818,7 @@ snapshots: isexe@4.0.0: {} - isomorphic-git@1.41.0: + isomorphic-git@1.41.3: dependencies: async-lock: 1.4.1 clean-git-ref: 2.0.1 @@ -21473,6 +22886,11 @@ snapshots: js-tokens@9.0.1: {} + js-yaml@3.15.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + js-yaml@4.3.1: dependencies: argparse: 2.0.1 @@ -21540,6 +22958,17 @@ snapshots: ms: 2.1.3 semver: 7.8.5 + juice@12.1.2: + dependencies: + cheerio: 1.2.0 + commander: 14.0.3 + entities: 8.0.0 + postcss: 8.5.26 + postcss-nesting: 14.0.1(postcss@8.5.26) + postcss-safe-parser: 7.0.1(postcss@8.5.26) + postcss-selector-parser: 7.1.5 + web-resource-inliner: 8.0.0 + just-bash@3.2.0: dependencies: diff: 8.0.4 @@ -21591,7 +23020,7 @@ snapshots: klona@2.0.6: {} - knip@6.32.0: + knip@6.32.1: dependencies: fdir: 6.5.0(picomatch@4.0.5) formatly: 0.3.0 @@ -21613,7 +23042,7 @@ snapshots: kysely@0.28.17: {} - kysely@0.29.4: {} + kysely@0.29.5: {} launch-editor@2.14.1: dependencies: @@ -21644,39 +23073,88 @@ snapshots: '@libsql/linux-x64-musl': 0.5.29 '@libsql/win32-x64-msvc': 0.5.29 + lightningcss-android-arm64@1.32.0: + optional: true + lightningcss-android-arm64@1.33.0: optional: true + lightningcss-darwin-arm64@1.32.0: + optional: true + lightningcss-darwin-arm64@1.33.0: optional: true + lightningcss-darwin-x64@1.32.0: + optional: true + lightningcss-darwin-x64@1.33.0: optional: true + lightningcss-freebsd-x64@1.32.0: + optional: true + lightningcss-freebsd-x64@1.33.0: optional: true + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + lightningcss-linux-arm-gnueabihf@1.33.0: optional: true + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + lightningcss-linux-arm64-gnu@1.33.0: optional: true + lightningcss-linux-arm64-musl@1.32.0: + optional: true + lightningcss-linux-arm64-musl@1.33.0: optional: true + lightningcss-linux-x64-gnu@1.32.0: + optional: true + lightningcss-linux-x64-gnu@1.33.0: optional: true + lightningcss-linux-x64-musl@1.32.0: + optional: true + lightningcss-linux-x64-musl@1.33.0: optional: true + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + lightningcss-win32-arm64-msvc@1.33.0: optional: true + lightningcss-win32-x64-msvc@1.32.0: + optional: true + lightningcss-win32-x64-msvc@1.33.0: optional: true + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + lightningcss@1.33.0: dependencies: detect-libc: 2.1.2 @@ -21740,6 +23218,8 @@ snapshots: dependencies: p-locate: 6.0.0 + lodash-es@4.18.1: {} + lodash.includes@4.3.0: {} lodash.isboolean@3.0.3: {} @@ -21756,13 +23236,16 @@ snapshots: lodash@4.17.21: {} - lodash@4.18.1: {} - log-symbols@6.0.0: dependencies: chalk: 5.6.2 is-unicode-supported: 1.3.0 + log-symbols@7.0.1: + dependencies: + is-unicode-supported: 2.1.0 + yoctocolors: 2.2.0 + log-update@8.0.0: dependencies: ansi-escapes: 7.3.0 @@ -21802,12 +23285,12 @@ snapshots: ufo: 1.6.4 unplugin: 2.3.11 - magic-regexp@0.11.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2): + magic-regexp@0.11.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2): dependencies: magic-string: 0.30.21 regexp-tree: 0.1.27 type-level-regexp: 0.1.17 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -21838,6 +23321,16 @@ snapshots: type-fest: 4.41.0 web-worker: 1.5.0 + markdown-exit@1.0.0-beta.9: + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + entities: 7.0.1 + linkify-it: 5.0.2 + mdurl: 2.1.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + markdown-exit@1.1.0-beta.2: dependencies: '@types/linkify-it': 5.0.0 @@ -21848,6 +23341,15 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 + markdown-it@14.3.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.2 + mdurl: 2.1.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + markdown-table@3.0.4: {} marked-terminal@7.3.0(marked@9.1.6): @@ -21867,6 +23369,10 @@ snapshots: dependencies: escape-string-regexp: 4.0.0 + matcher@6.0.0: + dependencies: + escape-string-regexp: 5.0.0 + math-intrinsics@1.1.0: {} mdast-util-find-and-replace@3.0.2: @@ -21955,6 +23461,18 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.1 + mdast-util-to-hast@13.2.1: + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@ungap/structured-clone': 1.3.3 + devlop: 1.1.0 + micromark-util-sanitize-uri: 2.0.1 + trim-lines: 3.0.1 + unist-util-position: 5.0.0 + unist-util-visit: 5.1.0 + vfile: 6.0.3 + mdast-util-to-markdown@2.1.2: dependencies: '@types/mdast': 4.0.4 @@ -21975,21 +23493,21 @@ snapshots: mdn-data@2.27.1: {} - mdream@1.5.12: + mdream@1.6.1: optionalDependencies: - '@mdream/rust-android-arm-eabi': 1.5.12 - '@mdream/rust-android-arm64': 1.5.12 - '@mdream/rust-darwin-arm64': 1.5.12 - '@mdream/rust-darwin-x64': 1.5.12 - '@mdream/rust-freebsd-x64': 1.5.12 - '@mdream/rust-linux-arm-gnueabihf': 1.5.12 - '@mdream/rust-linux-arm64-gnu': 1.5.12 - '@mdream/rust-linux-arm64-musl': 1.5.12 - '@mdream/rust-linux-x64-gnu': 1.5.12 - '@mdream/rust-linux-x64-musl': 1.5.12 - '@mdream/rust-wasm32-wasi': 1.5.12 - '@mdream/rust-win32-arm64-msvc': 1.5.12 - '@mdream/rust-win32-x64-msvc': 1.5.12 + '@mdream/rust-android-arm-eabi': 1.6.1 + '@mdream/rust-android-arm64': 1.6.1 + '@mdream/rust-darwin-arm64': 1.6.1 + '@mdream/rust-darwin-x64': 1.6.1 + '@mdream/rust-freebsd-x64': 1.6.1 + '@mdream/rust-linux-arm-gnueabihf': 1.6.1 + '@mdream/rust-linux-arm64-gnu': 1.6.1 + '@mdream/rust-linux-arm64-musl': 1.6.1 + '@mdream/rust-linux-x64-gnu': 1.6.1 + '@mdream/rust-linux-x64-musl': 1.6.1 + '@mdream/rust-wasm32-wasi': 1.6.1 + '@mdream/rust-win32-arm64-msvc': 1.6.1 + '@mdream/rust-win32-x64-msvc': 1.6.1 mdurl@2.1.0: {} @@ -22211,6 +23729,8 @@ snapshots: dependencies: mime-db: 1.54.0 + mime@2.6.0: {} + mime@3.0.0: {} mime@4.1.0: {} @@ -22376,7 +23896,7 @@ snapshots: nf3@0.3.23: {} - nitro@3.0.260610-beta(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)): + nitro@3.0.260610-beta(dotenv@17.4.2)(giget@3.3.1)(jiti@2.7.0)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)): dependencies: consola: 3.4.2 crossws: 0.4.10(srvx@0.11.22) @@ -22396,7 +23916,7 @@ snapshots: srvx: 0.11.22 unenv: 2.0.0-rc.24 unstorage: 2.0.0-alpha.7(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@netlify/blobs@10.7.12)(db0@0.3.4)(uploadthing@7.7.4) - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -22520,7 +24040,6 @@ snapshots: - '@vercel/kv' - aws4fetch - bare-abort-controller - - bare-buffer - better-sqlite3 - bun-types-no-globals - encoding @@ -22585,6 +24104,8 @@ snapshots: node-releases@2.0.53: {} + nodemailer@9.0.5: {} + nopt@7.2.1: dependencies: abbrev: 2.0.0 @@ -22616,20 +24137,24 @@ snapshots: dependencies: boolbase: 1.0.0 + nth-check@3.0.1: + dependencies: + boolbase: 2.0.0 + nuxt-define@1.0.0: {} nuxt@4.5.2(@types/node@24.13.3)(rolldown@1.2.3): dependencies: - '@dxup/nuxt': 0.5.6(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + '@dxup/nuxt': 0.5.6(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) '@nuxt/cli': 3.37.0(@nuxt/schema@4.5.2) - '@nuxt/devtools': 3.4.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + '@nuxt/devtools': 3.4.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) '@nuxt/nitro-server': 4.5.2(nuxt@4.5.2(@types/node@24.13.3)(rolldown@1.2.3)) '@nuxt/schema': 4.5.2 '@nuxt/telemetry': 2.8.0(@nuxt/kit@4.5.2) '@nuxt/vite-builder': 4.5.2(nuxt@4.5.2(@types/node@24.13.3)(rolldown@1.2.3))(rolldown@1.2.3)(vue@3.5.41) '@types/node': 24.13.3 - '@unhead/vue': 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2) + '@unhead/vue': 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41)(webpack@5.109.2) '@vue/shared': 3.5.41 chokidar: 5.0.0 compatx: 0.2.0 @@ -22643,7 +24168,7 @@ snapshots: fnv1a-64: 0.1.2 hookable: 6.1.1 ignore: 7.0.6 - impound: 1.1.6(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + impound: 1.1.6(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) jiti: 2.7.0 klona: 2.0.6 knitwork: 1.3.0 @@ -22670,17 +24195,17 @@ snapshots: ufo: 1.6.4 ultrahtml: 1.7.0 uncrypto: 0.1.3 - unctx: 3.0.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + unctx: 3.0.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) undici: 8.10.0 - unhead: 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + unhead: 3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) unimport: 6.4.0(rolldown@1.2.3) - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) unrouting: 0.2.2 untyped: 2.0.0 verkit: 0.3.2 vue: 3.5.41 vue-component-type-helpers: 3.3.9 - vue-router: 5.2.0(@vue/compiler-sfc@3.5.41)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41) + vue-router: 5.2.0(@vue/compiler-sfc@3.5.41)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -22713,7 +24238,6 @@ snapshots: - '@vitejs/devtools-kit' - aws4fetch - bare-abort-controller - - bare-buffer - better-sqlite3 - bufferutil - bun-types-no-globals @@ -22753,6 +24277,11 @@ snapshots: object-assign@4.1.1: {} + object-boolean-combinations@6.2.3: + dependencies: + codsen-utils: 1.7.3 + rfdc: 1.4.1 + object-identity@0.2.3: {} object-inspect@1.13.4: {} @@ -22797,6 +24326,14 @@ snapshots: dependencies: mimic-function: 5.0.1 + oniguruma-parser@0.12.2: {} + + oniguruma-to-es@4.3.6: + dependencies: + oniguruma-parser: 0.12.2 + regex: 6.1.0 + regex-recursion: 6.0.2 + onnxruntime-common@1.24.0-dev.20251116-b39e144322: {} onnxruntime-common@1.24.3: {} @@ -22861,6 +24398,17 @@ snapshots: string-width: 7.2.0 strip-ansi: 7.2.0 + ora@9.4.1: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 3.4.0 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 7.0.1 + stdin-discarder: 0.3.2 + string-width: 8.2.2 + os-paths@4.4.0: {} oxc-parser@0.131.0: @@ -23021,6 +24569,30 @@ snapshots: dependencies: rolldown: 1.2.3 + oxfmt@0.61.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.61.0 + '@oxfmt/binding-android-arm64': 0.61.0 + '@oxfmt/binding-darwin-arm64': 0.61.0 + '@oxfmt/binding-darwin-x64': 0.61.0 + '@oxfmt/binding-freebsd-x64': 0.61.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.61.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.61.0 + '@oxfmt/binding-linux-arm64-gnu': 0.61.0 + '@oxfmt/binding-linux-arm64-musl': 0.61.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.61.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.61.0 + '@oxfmt/binding-linux-riscv64-musl': 0.61.0 + '@oxfmt/binding-linux-s390x-gnu': 0.61.0 + '@oxfmt/binding-linux-x64-gnu': 0.61.0 + '@oxfmt/binding-linux-x64-musl': 0.61.0 + '@oxfmt/binding-openharmony-arm64': 0.61.0 + '@oxfmt/binding-win32-arm64-msvc': 0.61.0 + '@oxfmt/binding-win32-ia32-msvc': 0.61.0 + '@oxfmt/binding-win32-x64-msvc': 0.61.0 + oxfmt@0.62.0: dependencies: tinypool: 2.1.0 @@ -23054,29 +24626,29 @@ snapshots: '@oxlint-tsgolint/win32-arm64': 7.0.2001 '@oxlint-tsgolint/win32-x64': 7.0.2001 - oxlint@1.77.0(oxlint-tsgolint@7.0.2001): + oxlint@1.78.0(oxlint-tsgolint@7.0.2001): dependencies: oxlint-tsgolint: 7.0.2001 optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.77.0 - '@oxlint/binding-android-arm64': 1.77.0 - '@oxlint/binding-darwin-arm64': 1.77.0 - '@oxlint/binding-darwin-x64': 1.77.0 - '@oxlint/binding-freebsd-x64': 1.77.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.77.0 - '@oxlint/binding-linux-arm-musleabihf': 1.77.0 - '@oxlint/binding-linux-arm64-gnu': 1.77.0 - '@oxlint/binding-linux-arm64-musl': 1.77.0 - '@oxlint/binding-linux-ppc64-gnu': 1.77.0 - '@oxlint/binding-linux-riscv64-gnu': 1.77.0 - '@oxlint/binding-linux-riscv64-musl': 1.77.0 - '@oxlint/binding-linux-s390x-gnu': 1.77.0 - '@oxlint/binding-linux-x64-gnu': 1.77.0 - '@oxlint/binding-linux-x64-musl': 1.77.0 - '@oxlint/binding-openharmony-arm64': 1.77.0 - '@oxlint/binding-win32-arm64-msvc': 1.77.0 - '@oxlint/binding-win32-ia32-msvc': 1.77.0 - '@oxlint/binding-win32-x64-msvc': 1.77.0 + '@oxlint/binding-android-arm-eabi': 1.78.0 + '@oxlint/binding-android-arm64': 1.78.0 + '@oxlint/binding-darwin-arm64': 1.78.0 + '@oxlint/binding-darwin-x64': 1.78.0 + '@oxlint/binding-freebsd-x64': 1.78.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.78.0 + '@oxlint/binding-linux-arm-musleabihf': 1.78.0 + '@oxlint/binding-linux-arm64-gnu': 1.78.0 + '@oxlint/binding-linux-arm64-musl': 1.78.0 + '@oxlint/binding-linux-ppc64-gnu': 1.78.0 + '@oxlint/binding-linux-riscv64-gnu': 1.78.0 + '@oxlint/binding-linux-riscv64-musl': 1.78.0 + '@oxlint/binding-linux-s390x-gnu': 1.78.0 + '@oxlint/binding-linux-x64-gnu': 1.78.0 + '@oxlint/binding-linux-x64-musl': 1.78.0 + '@oxlint/binding-openharmony-arm64': 1.78.0 + '@oxlint/binding-win32-arm64-msvc': 1.78.0 + '@oxlint/binding-win32-ia32-msvc': 1.78.0 + '@oxlint/binding-win32-x64-msvc': 1.78.0 p-all@5.0.1: dependencies: @@ -23162,10 +24734,23 @@ snapshots: dependencies: parse5: 6.0.1 + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.3.0 + parse5@5.1.1: {} parse5@6.0.1: {} + parse5@7.3.0: + dependencies: + entities: 6.0.1 + parseurl@1.3.3: {} partial-json@0.1.7: {} @@ -23281,13 +24866,15 @@ snapshots: possible-typed-array-names@1.1.0: {} + postal-mime@2.7.4: {} + postcss-calc@10.1.1(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-selector-parser: 7.1.5 postcss-value-parser: 4.2.0 - postcss-colormin@8.0.2(postcss@8.5.26): + postcss-colormin@8.0.3(postcss@8.5.26): dependencies: '@colordx/core': 5.5.0 browserslist: 4.28.8 @@ -23295,63 +24882,63 @@ snapshots: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-convert-values@8.0.2(postcss@8.5.26): + postcss-convert-values@8.0.3(postcss@8.5.26): dependencies: browserslist: 4.28.8 postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-discard-comments@8.0.2(postcss@8.5.26): + postcss-discard-comments@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-selector-parser: 7.1.5 - postcss-discard-duplicates@8.0.2(postcss@8.5.26): + postcss-discard-duplicates@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 - postcss-discard-empty@8.0.2(postcss@8.5.26): + postcss-discard-empty@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 - postcss-discard-overridden@8.0.2(postcss@8.5.26): + postcss-discard-overridden@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 - postcss-merge-longhand@8.0.2(postcss@8.5.26): + postcss-merge-longhand@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 - stylehacks: 8.0.2(postcss@8.5.26) + stylehacks: 8.0.3(postcss@8.5.26) - postcss-merge-rules@8.0.2(postcss@8.5.26): + postcss-merge-rules@8.0.3(postcss@8.5.26): dependencies: browserslist: 4.28.8 caniuse-api: 4.0.0 - cssnano-utils: 6.0.2(postcss@8.5.26) + cssnano-utils: 6.0.3(postcss@8.5.26) postcss: 8.5.26 postcss-selector-parser: 7.1.5 - postcss-minify-font-values@8.0.2(postcss@8.5.26): + postcss-minify-font-values@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-minify-gradients@8.0.2(postcss@8.5.26): + postcss-minify-gradients@8.0.3(postcss@8.5.26): dependencies: '@colordx/core': 5.5.0 - cssnano-utils: 6.0.2(postcss@8.5.26) + cssnano-utils: 6.0.3(postcss@8.5.26) postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-minify-params@8.0.2(postcss@8.5.26): + postcss-minify-params@8.0.3(postcss@8.5.26): dependencies: browserslist: 4.28.8 - cssnano-utils: 6.0.2(postcss@8.5.26) + cssnano-utils: 6.0.3(postcss@8.5.26) postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-minify-selectors@8.0.3(postcss@8.5.26): + postcss-minify-selectors@8.0.4(postcss@8.5.26): dependencies: browserslist: 4.28.8 caniuse-api: 4.0.0 @@ -23359,80 +24946,96 @@ snapshots: postcss: 8.5.26 postcss-selector-parser: 7.1.5 - postcss-normalize-charset@8.0.2(postcss@8.5.26): + postcss-nesting@14.0.1(postcss@8.5.26): dependencies: + '@csstools/selector-resolve-nested': 4.0.1(postcss-selector-parser@7.1.5) + '@csstools/selector-specificity': 6.0.0(postcss-selector-parser@7.1.5) postcss: 8.5.26 + postcss-selector-parser: 7.1.5 - postcss-normalize-display-values@8.0.2(postcss@8.5.26): + postcss-normalize-charset@8.0.3(postcss@8.5.26): + dependencies: + postcss: 8.5.26 + + postcss-normalize-display-values@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-normalize-positions@8.0.2(postcss@8.5.26): + postcss-normalize-positions@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@8.0.2(postcss@8.5.26): + postcss-normalize-repeat-style@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-normalize-string@8.0.2(postcss@8.5.26): + postcss-normalize-string@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@8.0.2(postcss@8.5.26): + postcss-normalize-timing-functions@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@8.0.2(postcss@8.5.26): + postcss-normalize-unicode@8.0.3(postcss@8.5.26): dependencies: browserslist: 4.28.8 postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-normalize-url@8.0.2(postcss@8.5.26): + postcss-normalize-url@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@8.0.2(postcss@8.5.26): + postcss-normalize-whitespace@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-ordered-values@8.0.2(postcss@8.5.26): + postcss-ordered-values@8.0.3(postcss@8.5.26): dependencies: - cssnano-utils: 6.0.2(postcss@8.5.26) + cssnano-utils: 6.0.3(postcss@8.5.26) postcss: 8.5.26 postcss-value-parser: 4.2.0 - postcss-reduce-initial@8.0.2(postcss@8.5.26): + postcss-reduce-initial@8.0.3(postcss@8.5.26): dependencies: browserslist: 4.28.8 caniuse-api: 4.0.0 postcss: 8.5.26 - postcss-reduce-transforms@8.0.2(postcss@8.5.26): + postcss-reduce-transforms@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 + postcss-safe-parser@7.0.1(postcss@8.5.26): + dependencies: + postcss: 8.5.26 + postcss-selector-parser@7.1.5: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-svgo@8.0.3(postcss@8.5.26): + postcss-sort-media-queries@6.7.1(postcss@8.5.26): + dependencies: + postcss: 8.5.26 + sort-css-media-queries: 3.0.5 + + postcss-svgo@8.0.4(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-value-parser: 4.2.0 svgo: 4.0.2 - postcss-unique-selectors@8.0.2(postcss@8.5.26): + postcss-unique-selectors@8.0.3(postcss@8.5.26): dependencies: postcss: 8.5.26 postcss-selector-parser: 7.1.5 @@ -23517,6 +25120,8 @@ snapshots: retry: 0.12.0 signal-exit: 3.0.7 + property-information@7.2.0: {} + proto-list@1.2.4: {} protobufjs@7.6.5: @@ -23583,6 +25188,12 @@ snapshots: quansync@1.0.0: {} + query-string@9.5.0: + dependencies: + decode-uri-component: 0.5.0 + filter-obj: 5.1.0 + split-on-first: 3.0.0 + queue-microtask@1.2.3: {} quick-lru@5.1.1: {} @@ -23605,6 +25216,25 @@ snapshots: range-parser@1.3.0: {} + ranges-apply@7.1.3: + dependencies: + ranges-merge: 9.1.3 + tiny-invariant: 1.3.3 + + ranges-merge@9.1.3: + dependencies: + ranges-push: 7.1.3 + ranges-sort: 6.1.3 + + ranges-push@7.1.3: + dependencies: + codsen-utils: 1.7.3 + ranges-sort: 6.1.3 + string-collapse-leading-whitespace: 7.1.3 + string-trim-spaces-only: 5.1.3 + + ranges-sort@6.1.3: {} + raw-body@3.0.2: dependencies: bytes: 3.1.2 @@ -23674,10 +25304,38 @@ snapshots: reflect-metadata@0.2.2: {} + regex-empty-conditional-comments@3.1.3: {} + + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.1.0: + dependencies: + regex-utilities: 2.3.0 + regexp-to-ast@0.5.0: {} regexp-tree@0.1.27: {} + reka-ui@2.10.3(vue@3.5.41): + dependencies: + '@floating-ui/dom': 1.8.0 + '@floating-ui/vue': 1.1.11(vue@3.5.41) + '@internationalized/date': 3.12.3 + '@internationalized/number': 3.6.7 + '@tanstack/vue-virtual': 3.13.35(vue@3.5.41) + '@vueuse/core': 14.4.0(vue@3.5.41) + '@vueuse/shared': 14.4.0(vue@3.5.41) + aria-hidden: 1.2.6 + defu: 6.1.7 + ohash: 2.0.11 + vue: 3.5.41 + transitivePeerDependencies: + - '@vue/composition-api' + remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 @@ -23719,6 +25377,11 @@ snapshots: transitivePeerDependencies: - supports-color + resend@6.17.1: + dependencies: + postal-mime: 2.7.4 + standardwebhooks: 1.0.0 + resolve-alpn@1.2.1: {} resolve-from@4.0.0: {} @@ -23764,6 +25427,8 @@ snapshots: reusify@1.1.0: {} + rfdc@1.4.1: {} + rimraf@5.0.10: dependencies: glob: 10.5.0 @@ -23910,6 +25575,11 @@ snapshots: scule@1.3.0: {} + section-matter@1.0.0: + dependencies: + extend-shallow: 2.0.1 + kind-of: 6.0.3 + seedrandom@3.0.5: {} seek-bzip@2.0.0: @@ -24031,6 +25701,17 @@ snapshots: shell-quote@1.10.0: {} + shiki@4.4.3: + dependencies: + '@shikijs/core': 4.4.3 + '@shikijs/engine-javascript': 4.4.3 + '@shikijs/engine-oniguruma': 4.4.3 + '@shikijs/langs': 4.4.3 + '@shikijs/themes': 4.4.3 + '@shikijs/types': 4.4.3 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.5 + side-channel-list@1.0.1: dependencies: es-errors: 1.3.0 @@ -24100,14 +25781,14 @@ snapshots: '@clack/prompts': 1.7.0 '@earendil-works/pi-ai': 0.83.0 '@huggingface/transformers': 4.2.0 - '@mdream/crawl': 1.5.12 + '@mdream/crawl': 1.6.1 citty: 0.2.2 consola: 3.4.2 giget: 3.3.1 hookable: 6.1.1 jsonc-parser: 3.3.1 log-update: 8.0.0 - mdream: 1.5.12 + mdream: 1.6.1 ofetch: 1.5.1 oxc-parser: 0.143.0 p-limit: 7.3.1 @@ -24116,7 +25797,7 @@ snapshots: skilld-protocol: 2.1.0 sqlite-vec: 0.1.9 std-env: 4.2.0 - typebox: 1.3.11 + typebox: 1.3.12 typescript: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 unagent: 0.0.8(@huggingface/transformers@4.2.0)(sqlite-vec@0.1.9) verkit: 0.3.2 @@ -24183,9 +25864,11 @@ snapshots: socks@2.8.9: dependencies: - ip-address: 10.4.0 + ip-address: 10.5.0 smart-buffer: 4.2.0 + sort-css-media-queries@3.0.5: {} + sort-keys-length@1.0.1: dependencies: sort-keys: 1.1.2 @@ -24205,12 +25888,18 @@ snapshots: source-map@0.7.6: {} + space-separated-tokens@2.0.2: {} + sparse-bitfield@3.0.3: dependencies: memory-pager: 1.5.0 + split-on-first@3.0.0: {} + split2@4.2.0: {} + sprintf-js@1.0.3: {} + sprintf-js@1.1.3: {} sqids@0.3.0: {} @@ -24248,6 +25937,11 @@ snapshots: standard-as-callback@2.1.0: {} + standardwebhooks@1.0.0: + dependencies: + '@stablelib/base64': 1.0.1 + fast-sha256: 1.3.0 + statuses@2.0.2: {} std-env@3.10.0: {} @@ -24256,6 +25950,8 @@ snapshots: stdin-discarder@0.2.2: {} + stdin-discarder@0.3.2: {} + stream-browserify@3.0.0: dependencies: inherits: 2.0.4 @@ -24276,6 +25972,43 @@ snapshots: - bare-abort-controller - react-native-b4a + string-character-is-astral-surrogate@3.1.3: {} + + string-collapse-leading-whitespace@7.1.3: {} + + string-extract-class-names@8.1.3: + dependencies: + string-left-right: 6.1.3 + + string-left-right@6.1.3: + dependencies: + codsen-utils: 1.7.3 + rfdc: 1.4.1 + + string-match-left-right@9.1.3: + dependencies: + arrayiffy-if-string: 5.1.3 + codsen-utils: 1.7.3 + string-character-is-astral-surrogate: 3.1.3 + + string-range-expander@4.1.3: + dependencies: + codsen-utils: 1.7.3 + + string-strip-html@13.5.3: + dependencies: + '@types/lodash-es': 4.17.12 + codsen-utils: 1.7.3 + html-entities: 2.6.0 + lodash-es: 4.18.1 + ranges-apply: 7.1.3 + ranges-push: 7.1.3 + string-left-right: 6.1.3 + + string-trim-spaces-only@5.1.3: {} + + string-uglify@3.1.3: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -24307,6 +26040,11 @@ snapshots: dependencies: safe-buffer: 5.2.1 + stringify-entities@4.0.4: + dependencies: + character-entities-html4: 2.1.0 + character-entities-legacy: 3.0.0 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -24315,6 +26053,8 @@ snapshots: dependencies: ansi-regex: 6.2.2 + strip-bom-string@1.0.0: {} + strip-dirs@3.0.0: dependencies: inspect-with-kind: 1.0.5 @@ -24357,7 +26097,7 @@ snapshots: stubs@3.0.0: {} - stylehacks@8.0.2(postcss@8.5.26): + stylehacks@8.0.3(postcss@8.5.26): dependencies: browserslist: 4.28.8 postcss: 8.5.26 @@ -24411,6 +26151,10 @@ snapshots: tagged-tag@1.0.0: {} + tailwind-merge@3.6.0: {} + + tailwindcss@4.3.3: {} + tapable@2.3.3: {} tar-fs@2.1.5: @@ -24439,17 +26183,6 @@ snapshots: - bare-abort-controller - react-native-b4a - tar-stream@3.2.0: - dependencies: - b4a: 1.8.1 - bare-fs: 4.8.0 - fast-fifo: 1.3.2 - streamx: 2.28.0 - transitivePeerDependencies: - - bare-abort-controller - - bare-buffer - - react-native-b4a - tar@7.5.22: dependencies: '@isaacs/fs-minipass': 4.0.1 @@ -24469,13 +26202,6 @@ snapshots: - encoding - supports-color - teex@1.0.1: - dependencies: - streamx: 2.28.0 - transitivePeerDependencies: - - bare-abort-controller - - react-native-b4a - terminal-link@5.0.0: dependencies: ansi-escapes: 7.3.0 @@ -24488,6 +26214,11 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + test-mixer@4.2.3: + dependencies: + object-boolean-combinations: 6.2.3 + rfdc: 1.4.1 + text-decoder@1.2.7: dependencies: b4a: 1.8.1 @@ -24579,6 +26310,8 @@ snapshots: tree-kill@1.2.2: {} + trim-lines@3.0.1: {} + trough@2.2.0: {} ts-algebra@2.0.0: {} @@ -24587,7 +26320,7 @@ snapshots: dependencies: typescript: typescript-native-bridge@6.0.3-bridge.12.tsgo.7.0.2 - tsdown@0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.11): + tsdown@0.22.14(@arethetypeswrong/core@0.18.5)(publint@0.3.23)(tsx@4.23.12): dependencies: '@arethetypeswrong/core': 0.18.5 ansis: 4.3.1 @@ -24604,7 +26337,7 @@ snapshots: tinyexec: 1.3.0 tinyglobby: 0.2.17 tree-kill: 1.2.2 - tsx: 4.23.11 + tsx: 4.23.12 unconfig-core: 7.5.0 verkit: 0.3.2 transitivePeerDependencies: @@ -24616,7 +26349,7 @@ snapshots: tslib@2.8.1: {} - tsx@4.23.11: + tsx@4.23.12: dependencies: esbuild: 0.28.2 optionalDependencies: @@ -24640,6 +26373,8 @@ snapshots: dependencies: '@mixmark-io/domino': 2.2.0 + tw-animate-css@1.4.0: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -24662,7 +26397,7 @@ snapshots: type-level-regexp@0.1.17: {} - typebox@1.3.11: {} + typebox@1.3.12: {} typebox@1.3.7: {} @@ -24737,11 +26472,11 @@ snapshots: magic-string: 0.30.21 unplugin: 2.3.11 - unctx@3.0.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)): + unctx@3.0.0(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)): dependencies: magic-string: 1.1.0 rolldown: 1.2.3 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) undici-types@7.18.2: {} @@ -24757,11 +26492,11 @@ snapshots: dependencies: pathe: 2.0.3 - unhead@3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)): + unhead@3.3.1(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)): dependencies: hookable: 6.1.1 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@farmfe/core' - '@rspack/core' @@ -24786,6 +26521,28 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 + unimport@6.4.0: + dependencies: + acorn: 8.18.0 + escape-string-regexp: 5.0.0 + estree-walker: 3.0.3 + local-pkg: 1.2.1 + magic-string: 1.1.0 + mlly: 1.8.2 + pathe: 2.0.3 + picomatch: 4.0.5 + pkg-types: 2.3.1 + scule: 1.3.0 + strip-literal: 4.0.0 + tinyglobby: 0.2.17 + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) + unplugin-utils: 0.3.2 + transitivePeerDependencies: + - '@farmfe/core' + - '@rspack/core' + - bun-types-no-globals + - unloader + unimport@6.4.0(rolldown@1.2.3): dependencies: acorn: 8.18.0 @@ -24801,7 +26558,7 @@ snapshots: scule: 1.3.0 strip-literal: 4.0.0 tinyglobby: 0.2.17 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) unplugin-utils: 0.3.2 transitivePeerDependencies: - '@farmfe/core' @@ -24813,6 +26570,10 @@ snapshots: dependencies: '@types/unist': 3.0.3 + unist-util-position@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 @@ -24848,16 +26609,67 @@ snapshots: '@unocss/transformer-compile-class': 66.7.5 '@unocss/transformer-directives': 66.7.5 '@unocss/transformer-variant-group': 66.7.5 - '@unocss/vite': 66.7.5(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@unocss/vite': 66.7.5(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@unocss/webpack': 66.7.5(webpack@5.109.2) unpipe@1.0.0: {} + unplugin-auto-import@21.1.0(@vueuse/core@14.4.0(vue@3.5.41)): + dependencies: + '@vueuse/core': 14.4.0(vue@3.5.41) + local-pkg: 1.2.1 + magic-string: 1.1.0 + picomatch: 4.0.5 + unimport: 6.4.0 + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) + unplugin-utils: 0.3.2 + transitivePeerDependencies: + - '@farmfe/core' + - '@rspack/core' + - bun-types-no-globals + - oxc-parser + - rolldown + - unloader + unplugin-utils@0.3.2: dependencies: pathe: 2.0.3 picomatch: 4.0.5 + unplugin-vue-components@32.1.0(@nuxt/kit@3.21.11)(vue@3.5.41): + dependencies: + '@nuxt/kit': 3.21.11 + chokidar: 5.0.0 + local-pkg: 1.2.1 + magic-string: 0.30.21 + mlly: 1.8.2 + obug: 2.1.4 + picomatch: 4.0.5 + tinyglobby: 0.2.17 + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) + unplugin-utils: 0.3.2 + vue: 3.5.41 + transitivePeerDependencies: + - '@farmfe/core' + - '@rspack/core' + - bun-types-no-globals + - unloader + + unplugin-vue-markdown@32.0.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)): + dependencies: + '@mdit-vue/plugin-component': 3.0.2 + '@mdit-vue/plugin-frontmatter': 3.0.2 + '@mdit-vue/types': 3.0.2 + markdown-exit: 1.0.0-beta.9 + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) + unplugin-utils: 0.3.2 + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) + transitivePeerDependencies: + - '@farmfe/core' + - '@rspack/core' + - bun-types-no-globals + - unloader + unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 @@ -24865,14 +26677,14 @@ snapshots: picomatch: 4.0.5 webpack-virtual-modules: 0.6.2 - unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2): + unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2): dependencies: '@jridgewell/remapping': 2.3.5 esbuild: 0.28.2 picomatch: 4.0.5 rolldown: 1.2.3 rollup: 4.62.4 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) webpack: 5.109.2 webpack-virtual-modules: 0.6.2 @@ -24913,6 +26725,13 @@ snapshots: db0: 0.3.4 uploadthing: 7.7.4 + unstorage@2.0.0-alpha.7(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@netlify/blobs@10.7.12)(uploadthing@7.7.4): + dependencies: + '@azure/identity': 4.13.1 + '@azure/storage-blob': 12.33.0 + '@netlify/blobs': 10.7.12 + uploadthing: 7.7.4 + untun@0.2.2: {} untyped@2.0.0: @@ -24932,7 +26751,7 @@ snapshots: pathe: 2.0.3 pkg-types: 2.3.1 - update-browserslist-db@1.3.0(browserslist@4.28.8): + update-browserslist-db@1.3.1(browserslist@4.28.8): dependencies: browserslist: 4.28.8 escalade: 3.2.0 @@ -24968,6 +26787,8 @@ snapshots: valibot@1.4.2: {} + valid-data-url@3.0.1: {} + validate-npm-package-name@5.0.1: {} vary@1.1.2: {} @@ -24984,61 +26805,61 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-dev-rpc@2.0.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)): + vite-dev-rpc@2.0.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)): dependencies: - birpc: 4.0.0 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) - vite-hot-client: 2.2.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + birpc: 4.1.0 + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) + vite-hot-client: 2.2.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) - vite-hot-client@2.2.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)): + vite-hot-client@2.2.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)): dependencies: - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) - vite-hub@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)): + vite-hub@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)): dependencies: - '@aws-sdk/client-s3': 3.1106.0 - '@aws-sdk/lib-storage': 3.1106.0(@aws-sdk/client-s3@3.1106.0) - '@aws-sdk/s3-presigned-post': 3.1106.0 - '@aws-sdk/s3-request-presigner': 3.1106.0 + '@aws-sdk/client-s3': 3.1107.0 + '@aws-sdk/lib-storage': 3.1107.0(@aws-sdk/client-s3@3.1107.0) + '@aws-sdk/s3-presigned-post': 3.1107.0 + '@aws-sdk/s3-request-presigner': 3.1107.0 '@azure/identity': 4.13.1 '@azure/storage-blob': 12.33.0 '@cloudflare/sandbox': 0.8.14 - '@google-cloud/storage': 7.21.0 + '@google-cloud/storage': 7.22.0 '@googleapis/drive': 20.2.0 '@microsoft/microsoft-graph-client': 3.0.7(@azure/identity@4.13.1) '@netlify/blobs': 10.7.12 - '@supabase/storage-js': 2.112.2 + '@supabase/storage-js': 2.112.3 '@vercel/sandbox': 1.10.2 - '@vite-hub/agent': 0.0.3(a08d4e0b7d28c3acb45700979c488772) - '@vite-hub/auth': 0.0.3(@vite-hub/agent@0.0.3(a08d4e0b7d28c3acb45700979c488772))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/blob': 0.0.3(@aws-sdk/client-s3@3.1106.0)(@aws-sdk/lib-storage@3.1106.0(@aws-sdk/client-s3@3.1106.0))(@aws-sdk/s3-presigned-post@3.1106.0)(@aws-sdk/s3-request-presigner@3.1106.0)(files-sdk@2.2.3(@aws-sdk/client-s3@3.1106.0)(@aws-sdk/lib-storage@3.1106.0(@aws-sdk/client-s3@3.1106.0))(@aws-sdk/s3-presigned-post@3.1106.0)(@aws-sdk/s3-request-presigner@3.1106.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.21.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.2)(@vercel/blob@2.7.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/agent': 0.0.3(ec966830e493cafda8aca782de65b552) + '@vite-hub/auth': 0.0.3(@vite-hub/agent@0.0.3(ec966830e493cafda8aca782de65b552))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/blob': 0.0.3(@aws-sdk/client-s3@3.1107.0)(@aws-sdk/lib-storage@3.1107.0(@aws-sdk/client-s3@3.1107.0))(@aws-sdk/s3-presigned-post@3.1107.0)(@aws-sdk/s3-request-presigner@3.1107.0)(files-sdk@2.2.3(@aws-sdk/client-s3@3.1107.0)(@aws-sdk/lib-storage@3.1107.0(@aws-sdk/client-s3@3.1107.0))(@aws-sdk/s3-presigned-post@3.1107.0)(@aws-sdk/s3-request-presigner@3.1107.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.22.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.3)(@vercel/blob@2.8.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vite-hub/box': 0.0.3(@cloudflare/sandbox@0.8.14)(@vercel/sandbox@1.10.2) - '@vite-hub/browser': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/cli': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/database': 0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/email': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/env': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/kv': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/markdown-template': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/queue': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/rate-limit': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/browser': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/cli': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/database': 0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/email': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/env': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/kv': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/markdown-template': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/queue': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/rate-limit': 0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vite-hub/runtime': 0.0.3 - '@vite-hub/sandbox': 0.0.3(@cloudflare/sandbox@0.8.14)(@vercel/sandbox@1.10.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) - '@vite-hub/schedule': 0.0.3(@vite-hub/kv@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/sandbox': 0.0.3(@cloudflare/sandbox@0.8.14)(@vercel/sandbox@1.10.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) + '@vite-hub/schedule': 0.0.3(@vite-hub/kv@0.0.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vite-hub/shell': 0.0.3 '@vite-hub/source': 0.0.3(zod@4.1.11) - '@vite-hub/workflow': 0.0.3(@vite-hub/database@0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)))(@workflow/builders@5.0.0-beta.35)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(workflow@5.0.0-beta.35) - '@vite-hub/workspace': 0.0.3(@vite-hub/shell@0.0.3)(ai@6.0.228(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vite-hub/workflow': 0.0.3(@vite-hub/database@0.0.3(drizzle-kit@0.31.10)(drizzle-orm@0.45.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)))(@workflow/builders@5.0.0-beta.35)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(workflow@5.0.0-beta.35) + '@vite-hub/workspace': 0.0.3(@vite-hub/shell@0.0.3)(ai@6.0.228(zod@4.1.11))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@workflow/builders': 5.0.0-beta.35 ai: 6.0.228(zod@4.1.11) box-typescript-sdk-gen: 1.19.1 drizzle-kit: 0.31.10 drizzle-orm: 0.45.2 dropbox: 10.44.0 - files-sdk: 2.2.3(@aws-sdk/client-s3@3.1106.0)(@aws-sdk/lib-storage@3.1106.0(@aws-sdk/client-s3@3.1106.0))(@aws-sdk/s3-presigned-post@3.1106.0)(@aws-sdk/s3-request-presigner@3.1106.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.21.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.2)(@vercel/blob@2.7.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11) + files-sdk: 2.2.3(@aws-sdk/client-s3@3.1107.0)(@aws-sdk/lib-storage@3.1107.0(@aws-sdk/client-s3@3.1107.0))(@aws-sdk/s3-presigned-post@3.1107.0)(@aws-sdk/s3-request-presigner@3.1107.0)(@azure/identity@4.13.1)(@azure/storage-blob@12.33.0)(@google-cloud/storage@7.22.0)(@googleapis/drive@20.2.0)(@microsoft/microsoft-graph-client@3.0.7(@azure/identity@4.13.1))(@netlify/blobs@10.7.12)(@supabase/storage-js@2.112.3)(@vercel/blob@2.8.0)(ai@6.0.228(zod@4.1.11))(box-typescript-sdk-gen@1.19.1)(dropbox@10.44.0)(google-auth-library@10.9.1)(uploadthing@7.7.4)(zod@4.1.11) google-auth-library: 10.9.1 uploadthing: 7.7.4 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) workflow: 5.0.0-beta.35 transitivePeerDependencies: - '@ai-sdk/harness-claude-code' @@ -25102,6 +26923,7 @@ snapshots: - chokidar - cloudinary - convex + - db0 - disk - encoding - expo-sqlite @@ -25135,6 +26957,7 @@ snapshots: - react - react-dom - react-native-b4a + - rolldown - shiki - solid-js - sql.js @@ -25154,14 +26977,15 @@ snapshots: - webdav - ws - vite-node@3.2.4(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.11): + vite-node@3.2.4(@types/node@24.13.3)(tsx@4.23.12): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.6(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.11) + vite: 7.3.6(@types/node@24.13.3)(tsx@4.23.12) transitivePeerDependencies: + - jiti - less - lightningcss - sass @@ -25172,13 +26996,13 @@ snapshots: - terser - yaml - vite-node@6.0.0(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0): + vite-node@6.0.0(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0): dependencies: cac: 7.0.0 es-module-lexer: 2.3.1 obug: 2.1.4 pathe: 2.0.3 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) transitivePeerDependencies: - '@vitejs/devtools' - less @@ -25187,23 +27011,23 @@ snapshots: - stylus - sugarss - vite-plugin-checker@0.14.5(eslint@10.8.1(jiti@2.7.0))(oxlint@1.77.0(oxlint-tsgolint@7.0.2001))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue-tsc@3.3.9(typescript@6.0.3-bridge.12.tsgo.7.0.2)): + vite-plugin-checker@0.14.5(eslint@10.8.1(jiti@2.7.0))(oxlint@1.78.0(oxlint-tsgolint@7.0.2001))(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue-tsc@3.3.9(typescript@6.0.3-bridge.12.tsgo.7.0.2)): dependencies: '@babel/code-frame': 7.29.7 chokidar: 5.0.0 eslint: 10.8.1(jiti@2.7.0) npm-run-path: 6.0.0 - oxlint: 1.77.0(oxlint-tsgolint@7.0.2001) + oxlint: 1.78.0(oxlint-tsgolint@7.0.2001) picocolors: 1.1.1 picomatch: 4.0.5 proper-lockfile: 4.1.2 tiny-invariant: 1.3.3 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) vue-tsc: 3.3.9(typescript@6.0.3-bridge.12.tsgo.7.0.2) - vite-plugin-inspect@11.4.1(@nuxt/kit@4.5.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)): + vite-plugin-inspect@11.4.1(@nuxt/kit@4.5.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)): dependencies: - '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2)) + '@nuxt/kit': 4.5.2(magic-string@1.1.0)(rolldown@1.2.3)(unplugin@3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2)) ansis: 4.3.1 error-stack-parser-es: 1.0.5 obug: 2.1.4 @@ -25212,34 +27036,33 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.2 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) - vite-dev-rpc: 2.0.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) + vite-dev-rpc: 2.0.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) - vite-plugin-vue-tracer@1.4.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41): + vite-plugin-vue-tracer@1.5.0(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41): dependencies: estree-walker: 3.0.3 exsolve: 1.1.1 - magic-string: 0.30.21 + magic-string: 1.1.0 pathe: 2.0.3 source-map-js: 1.2.1 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) vue: 3.5.41 - vite@7.3.6(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.11): + vite@7.3.6(@types/node@24.13.3)(tsx@4.23.12): dependencies: '@types/node': 24.13.3 esbuild: 0.28.2 fdir: 6.5.0(picomatch@4.0.5) - jiti: 2.7.0 picomatch: 4.0.5 postcss: 8.5.26 rollup: 4.62.4 tinyglobby: 0.2.17 - tsx: 4.23.11 + tsx: 4.23.12 optionalDependencies: fsevents: 2.3.3 - vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0): + vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0): dependencies: '@types/node': 24.13.3 esbuild: 0.27.7 @@ -25250,12 +27073,12 @@ snapshots: rolldown: 1.2.3 terser: 5.49.2 tinyglobby: 0.2.17 - tsx: 4.23.11 + tsx: 4.23.12 yaml: 2.9.0 optionalDependencies: fsevents: 2.3.3 - vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0): + vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0): dependencies: '@types/node': 24.13.3 esbuild: 0.28.2 @@ -25266,14 +27089,14 @@ snapshots: rolldown: 1.2.3 terser: 5.49.2 tinyglobby: 0.2.17 - tsx: 4.23.11 + tsx: 4.23.12 yaml: 2.9.0 optionalDependencies: fsevents: 2.3.3 - vitest-environment-nuxt@2.0.0(@playwright/test@1.62.1)(@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41))(happy-dom@20.11.2)(playwright-core@1.62.1)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))): + vitest-environment-nuxt@2.0.0(@playwright/test@1.62.1)(@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41))(happy-dom@20.11.2)(playwright-core@1.62.1)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))): dependencies: - '@nuxt/test-utils': 4.1.0(@playwright/test@1.62.1)(@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41))(happy-dom@20.11.2)(playwright-core@1.62.1)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))) + '@nuxt/test-utils': 4.1.0(@playwright/test@1.62.1)(@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.41)(vue@3.5.41))(happy-dom@20.11.2)(playwright-core@1.62.1)(vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))) transitivePeerDependencies: - '@cucumber/cucumber' - '@farmfe/core' @@ -25294,7 +27117,7 @@ snapshots: '@types/debug': 4.1.13 '@types/node': 24.13.3 '@vitest/expect': 3.2.7 - '@vitest/mocker': 3.2.7(vite@7.3.6(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.11)) + '@vitest/mocker': 3.2.7(vite@7.3.6(@types/node@24.13.3)(tsx@4.23.12)) '@vitest/pretty-format': 3.2.7 '@vitest/runner': 3.2.7 '@vitest/snapshot': 3.2.7 @@ -25313,10 +27136,11 @@ snapshots: tinyglobby: 0.2.17 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.3.6(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.11) - vite-node: 3.2.4(@types/node@24.13.3)(jiti@2.7.0)(tsx@4.23.11) + vite: 7.3.6(@types/node@24.13.3)(tsx@4.23.12) + vite-node: 3.2.4(@types/node@24.13.3)(tsx@4.23.12) why-is-node-running: 2.3.0 transitivePeerDependencies: + - jiti - less - lightningcss - msw @@ -25328,12 +27152,12 @@ snapshots: - terser - yaml - vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)): + vitest@4.1.10(@opentelemetry/api@1.9.1)(@types/node@24.13.3)(happy-dom@20.11.2)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)): dependencies: '@opentelemetry/api': 1.9.1 '@types/node': 24.13.3 '@vitest/expect': 4.1.10 - '@vitest/mocker': 4.1.10(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0)) + '@vitest/mocker': 4.1.10(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0)) '@vitest/pretty-format': 4.1.10 '@vitest/runner': 4.1.10 '@vitest/snapshot': 4.1.10 @@ -25351,7 +27175,7 @@ snapshots: tinyexec: 1.3.0 tinyglobby: 0.2.17 tinyrainbow: 3.1.1 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) why-is-node-running: 2.3.0 transitivePeerDependencies: - msw @@ -25364,6 +27188,10 @@ snapshots: vue-component-type-helpers@3.3.9: {} + vue-demi@0.14.10(vue@3.5.41): + dependencies: + vue: 3.5.41 + vue-devtools-stub@0.1.0: {} vue-i18n-extract@2.0.7: @@ -25382,7 +27210,7 @@ snapshots: '@vue/devtools-api': 6.6.4 vue: 3.5.41 - vue-router@5.2.0(@vue/compiler-sfc@3.5.41)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(vue@3.5.41): + vue-router@5.2.0(@vue/compiler-sfc@3.5.41)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(vue@3.5.41): dependencies: '@babel/generator': 8.0.0 '@vue-macros/common': 3.1.4(vue@3.5.41) @@ -25400,9 +27228,9 @@ snapshots: picomatch: 4.0.5 scule: 1.3.0 tinyglobby: 0.2.17 - unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0))(webpack@5.109.2) + unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.2.3)(rollup@4.62.4)(vite@8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0))(webpack@5.109.2) unplugin-utils: 0.3.2 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.11)(yaml@2.9.0) + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.49.2)(tsx@4.23.12)(yaml@2.9.0) vue: 3.5.41 yaml: 2.9.0 transitivePeerDependencies: @@ -25436,6 +27264,14 @@ snapshots: defaults: 1.0.4 optional: true + web-resource-inliner@8.0.0: + dependencies: + ansi-colors: 4.1.3 + escape-goat: 3.0.0 + htmlparser2: 9.1.0 + mime: 2.6.0 + valid-data-url: 3.0.1 + web-streams-polyfill@3.3.3: {} web-worker@1.5.0: {} @@ -25483,8 +27319,14 @@ snapshots: - postcss - uglify-js + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + whatwg-mimetype@3.0.0: {} + whatwg-mimetype@4.0.0: {} + whatwg-url@14.2.0: dependencies: tr46: 5.1.1 @@ -25538,7 +27380,7 @@ snapshots: '@workflow/cli': 5.0.0-beta.35(react@19.2.8) '@workflow/core': 5.0.0-beta.35 '@workflow/errors': 5.0.0-beta.11 - '@workflow/nest': 5.0.0-beta.35(@nestjs/common@11.1.28(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.28(@nestjs/common@11.1.28(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(@swc/cli@0.8.1(@swc/core@1.15.3))(@swc/core@1.15.3) + '@workflow/nest': 5.0.0-beta.35(@nestjs/common@11.1.29(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@11.1.29(@nestjs/common@11.1.29(reflect-metadata@0.2.2)(rxjs@7.8.2))(reflect-metadata@0.2.2)(rxjs@7.8.2))(@swc/cli@0.8.1(@swc/core@1.15.3))(@swc/core@1.15.3) '@workflow/next': 5.0.0-beta.35 '@workflow/nitro': 5.0.0-beta.35(react@19.2.8) '@workflow/nuxt': 5.0.0-beta.35(react@19.2.8) diff --git a/turbo.json b/turbo.json index f0cc12a..e232ffe 100644 --- a/turbo.json +++ b/turbo.json @@ -38,6 +38,10 @@ "cache": false, "outputs": [] }, + "i18n:schema": { + "cache": false, + "outputs": [] + }, "i18n:status": { "cache": false, "outputs": []