fix(better-auth): allow SvelteKit 3 as a peer dependency (#11488)

Co-authored-by: Gustavo Valverde <g.valverde02@gmail.com>
This commit is contained in:
Bereket Engida
2026-10-09 16:33:41 +00:00
committed by GitHub
co-authored by Gustavo Valverde
parent 53307a7c60
commit e15625ff38
17 changed files with 428 additions and 47 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"better-auth": patch
---
SvelteKit 3 projects can now install Better Auth without `--legacy-peer-deps`. The `@sveltejs/kit` peer range now includes `^3.0.0`; SvelteKit 2 projects are unaffected.
+1
View File
@@ -128,6 +128,7 @@ out
# Nuxt.js build / generate output
.nuxt
.svelte-kit
dist
# Gatsby files
+1 -1
View File
@@ -197,6 +197,6 @@ npx auth@latest secret
**Error: Cannot find module X**
The CLI resolves most imports for you: `tsconfig.json` path aliases (including SvelteKit's `$lib`) and stubbed framework virtual modules (`$env/*`, `$app/*`, `cloudflare:workers`, Vite assets like `?raw`). For SvelteKit, run `svelte-kit sync` first so `.svelte-kit/tsconfig.json` exists.
The CLI resolves most imports for you: `tsconfig.json` path aliases, `package.json` subpath imports (including SvelteKit 3's `#lib`), and stubbed framework virtual modules (`$env/*`, `$app/*`, `cloudflare:workers`, Vite assets like `?raw`). On SvelteKit 2, run `svelte-kit sync` first so `.svelte-kit/tsconfig.json` exists and `$lib` resolves.
A few module types can't load outside their bundler (e.g. `.svelte` components or `import.meta.glob`). Keep those out of your config file's import graph.
+2 -2
View File
@@ -277,9 +277,9 @@ description: Learn how to configure Better Auth in your project.
<Tab value="svelte-kit">
```ts title="hooks.server.ts"
import { auth } from "$lib/auth"; // path to your auth file
import { auth } from "#lib/auth.js"; // SvelteKit 2: "$lib/auth"
import { svelteKitHandler } from "better-auth/svelte-kit";
import { building } from '$app/environment'
import { building } from "$app/env"; // SvelteKit 2: "$app/environment"
export async function handle({ event, resolve }) {
return svelteKitHandler({ event, resolve, auth, building });
+11 -5
View File
@@ -7,14 +7,20 @@ description: Integrate Better Auth with SvelteKit.
Before you start, make sure you have a Better Auth instance configured. If you haven't done that yet, check out the [installation](/docs/installation).
<Callout>
The examples use SvelteKit 3 imports. On SvelteKit 2, import your files from
`$lib/...` instead of `#lib/...` and `building` from `$app/environment`
instead of `$app/env`.
</Callout>
### Mount the handler
We need to mount the handler to SvelteKit server hook.
```ts title="hooks.server.ts"
import { auth } from "$lib/auth";
import { auth } from "#lib/auth.js";
import { svelteKitHandler } from "better-auth/svelte-kit";
import { building } from "$app/environment";
import { building } from "$app/env";
export async function handle({ event, resolve }) {
return svelteKitHandler({ event, resolve, auth, building });
@@ -26,9 +32,9 @@ export async function handle({ event, resolve }) {
The `svelteKitHandler` does not automatically populate `event.locals.user` or `event.locals.session`. If you want to access the current session in your server code (e.g., in `+layout.server.ts`, actions, or endpoints), populate `event.locals` in your `handle` hook:
```ts title="hooks.server.ts"
import { auth } from "$lib/auth";
import { auth } from "#lib/auth.js";
import { svelteKitHandler } from "better-auth/svelte-kit";
import { building } from "$app/environment";
import { building } from "$app/env";
export async function handle({ event, resolve }) {
// Fetch current session from Better Auth
@@ -87,7 +93,7 @@ Some of the actions are reactive. The client use [nano-store](https://github.com
```svelte
<script lang="ts">
import { authClient } from "$lib/client";
import { authClient } from "#lib/client.js";
const session = authClient.useSession();
</script>
<div>
@@ -0,0 +1,68 @@
import type { ChildProcessWithoutNullStreams } from "node:child_process";
import { spawn } from "node:child_process";
import { fileURLToPath } from "node:url";
import { terminate } from "@better-auth-test/test-utils/playwright";
import { expect, test } from "@playwright/test";
const root = fileURLToPath(new URL("..", import.meta.url));
let server: ChildProcessWithoutNullStreams;
let baseURL: string;
test.beforeAll(async () => {
server = spawn("pnpm", ["run", "dev"], {
cwd: root,
stdio: "pipe",
env: { ...process.env, NO_COLOR: "1" },
});
server.stderr.on("data", (data) => console.error(data.toString()));
baseURL = await new Promise<string>((resolve, reject) => {
server.stdout.on("data", (data) => {
const match = data.toString().match(/http:\/\/localhost:\d+/);
if (match) resolve(match[0]);
});
server.on("exit", (code) =>
reject(new Error(`vite dev exited with code ${code}`)),
);
});
});
test.afterAll(async () => {
if (server?.pid) await terminate(server.pid);
});
/**
* @see https://github.com/better-auth/better-auth/issues/10928
*/
test("signs up through a SvelteKit 3 form action and reads the session", async ({
page,
}) => {
await page.goto(baseURL);
await page.getByLabel("Name").fill("Kit User");
await page.getByLabel("Email").fill("kit@example.com");
await page.getByLabel("Password").fill("password123");
await Promise.all([
page.waitForResponse((response) => response.request().method() === "POST"),
page.getByRole("button", { name: "Sign up" }).click(),
]);
// `sveltekitCookies` forwards the session cookie set inside the action.
const cookies = await page.context().cookies();
expect(
cookies.find((cookie) => cookie.name === "better-auth.session_token"),
).toBeDefined();
// `getSession` in `hooks.server.ts` reads it on the next request.
await page.goto(baseURL);
await expect(
page.getByRole("heading", { name: "Signed in as Kit User" }),
).toBeVisible();
// `svelteKitHandler` routes auth endpoints to Better Auth.
const sessionResponse = await page.request.get(
`${baseURL}/api/auth/get-session`,
);
expect(await sessionResponse.json()).toMatchObject({
user: { name: "Kit User" },
});
});
+25
View File
@@ -0,0 +1,25 @@
{
"name": "@better-auth-test/fixtures-sveltekit",
"private": true,
"type": "module",
"scripts": {
"dev": "vite dev",
"typecheck:consumer": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json"
},
"imports": {
"#lib/*": "./src/lib/*"
},
"dependencies": {
"better-auth": "workspace:*"
},
"devDependencies": {
"@better-auth-test/test-utils": "workspace:*",
"@playwright/test": "~1.58.2",
"@sveltejs/kit": "3.0.1",
"@sveltejs/vite-plugin-svelte": "7.3.1",
"svelte": "5.57.2",
"svelte-check": "4.7.6",
"typescript": "catalog:",
"vite": "8.2.0"
}
}
+9
View File
@@ -0,0 +1,9 @@
declare global {
namespace App {
interface Locals {
userName: string | null;
}
}
}
export {};
+10
View File
@@ -0,0 +1,10 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
%sveltekit.head%
</head>
<body>
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>
@@ -0,0 +1,12 @@
import type { Handle } from "@sveltejs/kit/hooks";
import { svelteKitHandler } from "better-auth/svelte-kit";
import { auth } from "#lib/auth.js";
import { building } from "$app/env";
export const handle: Handle = async ({ event, resolve }) => {
const session = await auth.api.getSession({
headers: event.request.headers,
});
event.locals.userName = session?.user.name ?? null;
return svelteKitHandler({ event, resolve, auth, building });
};
+24
View File
@@ -0,0 +1,24 @@
import { betterAuth } from "better-auth";
import { memoryAdapter } from "better-auth/adapters/memory";
import { sveltekitCookies } from "better-auth/svelte-kit";
import { getRequestEvent } from "$app/server";
const database = {
user: [],
session: [],
account: [],
verification: [],
};
export const auth = betterAuth({
baseURL: {
allowedHosts: ["localhost:*"],
protocol: "http",
},
database: memoryAdapter(database),
secret: "better-auth-sveltekit-test-secret",
emailAndPassword: {
enabled: true,
},
plugins: [sveltekitCookies(getRequestEvent)],
});
@@ -0,0 +1,20 @@
import { auth } from "#lib/auth.js";
import type { Actions, PageServerLoad } from "./$types";
export const load: PageServerLoad = ({ locals }) => ({
userName: locals.userName,
});
export const actions: Actions = {
default: async ({ request }) => {
const form = await request.formData();
await auth.api.signUpEmail({
body: {
name: String(form.get("name")),
email: String(form.get("email")),
password: String(form.get("password")),
},
headers: request.headers,
});
},
};
@@ -0,0 +1,18 @@
<script lang="ts">
import type { PageProps } from "./$types";
// biome-ignore lint/correctness/noUnusedVariables: used in the template
let { data }: PageProps = $props();
</script>
{#if data.userName}
<h1>Signed in as {data.userName}</h1>
{:else}
<h1>Signed out</h1>
<form method="POST">
<input name="name" aria-label="Name" />
<input name="email" aria-label="Email" />
<input name="password" type="password" aria-label="Password" />
<button>Sign up</button>
</form>
{/if}
+7
View File
@@ -0,0 +1,7 @@
{
"extends": "$app/tsconfig",
"compilerOptions": {
"strict": true
},
"include": ["src"]
}
+6
View File
@@ -0,0 +1,6 @@
import { sveltekit } from "@sveltejs/kit/vite";
import { defineConfig } from "vite";
export default defineConfig({
plugins: [sveltekit()],
});
+1 -1
View File
@@ -521,7 +521,7 @@
"peerDependencies": {
"@lynx-js/react": "*",
"@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0",
"@sveltejs/kit": "^2.0.0",
"@sveltejs/kit": "^2.0.0 || ^3.0.0",
"@tanstack/react-start": "^1.0.0",
"@tanstack/solid-start": "^1.0.0",
"drizzle-kit": ">=0.31.4 || >=1.0.0-beta.1",
+208 -38
View File
@@ -302,7 +302,7 @@ importers:
version: 1.38.0
'@vercel/analytics':
specifier: ^2.0.1
version: 2.0.1(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.56.0)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(next@16.3.4(@babel/core@8.0.1)(@opentelemetry/api@1.9.1)(@playwright/test@1.58.2)(@types/node@25.9.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(nuxt@4.5.2(8ef6acf144585147fdc629df1320a580))(react@19.2.7)(svelte@5.56.0)(vue@3.5.42(typescript@6.0.3))
version: 2.0.1(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.57.2)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(next@16.3.4(@babel/core@8.0.1)(@opentelemetry/api@1.9.1)(@playwright/test@1.58.2)(@types/node@25.9.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(nuxt@4.5.2(8ef6acf144585147fdc629df1320a580))(react@19.2.7)(svelte@5.57.2)(vue@3.5.42(typescript@6.0.3))
'@vercel/og':
specifier: ^0.11.1
version: 0.11.1(@types/node@25.9.4)
@@ -338,7 +338,7 @@ importers:
version: 15.0.12(@types/mdast@4.0.4)(@types/mdx@2.0.14)(@types/react@19.2.17)(fumadocs-core@16.12.0(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.41(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.17)(lucide-react@1.21.0(react@19.2.7))(next@16.3.4(@babel/core@8.0.1)(@opentelemetry/api@1.9.1)(@playwright/test@1.58.2)(@types/node@25.9.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(zod@4.5.4))(mdast-util-directive@3.1.0)(next@16.3.4(@babel/core@8.0.1)(@opentelemetry/api@1.9.1)(@playwright/test@1.58.2)(@types/node@25.9.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7)(rolldown@1.2.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
fumadocs-typescript:
specifier: ^5.2.6
version: 5.2.6(68f004805581973de2150e24a06510a1)
version: 5.2.6(fcbb58a8ffc1eadf629bb3b69d2f2b59)
fumadocs-ui:
specifier: 16.12.0
version: 16.12.0(@types/mdx@2.0.14)(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(fumadocs-core@16.12.0(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.41(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.17)(lucide-react@1.21.0(react@19.2.7))(next@16.3.4(@babel/core@8.0.1)(@opentelemetry/api@1.9.1)(@playwright/test@1.58.2)(@types/node@25.9.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(zod@4.5.4))(next@16.3.4(@babel/core@8.0.1)(@opentelemetry/api@1.9.1)(@playwright/test@1.58.2)(@types/node@25.9.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(tailwindcss@4.3.1)
@@ -777,6 +777,37 @@ importers:
specifier: workspace:*
version: link:../test-utils
e2e/integration/sveltekit:
dependencies:
better-auth:
specifier: workspace:*
version: link:../../../packages/better-auth
devDependencies:
'@better-auth-test/test-utils':
specifier: workspace:*
version: link:../test-utils
'@playwright/test':
specifier: ~1.58.2
version: 1.58.2
'@sveltejs/kit':
specifier: 3.0.1
version: 3.0.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.57.2)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@sveltejs/vite-plugin-svelte':
specifier: 7.3.1
version: 7.3.1(svelte@5.57.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
svelte:
specifier: 5.57.2
version: 5.57.2
svelte-check:
specifier: 4.7.6
version: 4.7.6(picomatch@4.0.4)(svelte@5.57.2)(typescript@6.0.3)
typescript:
specifier: 'catalog:'
version: 6.0.3
vite:
specifier: 8.2.0
version: 8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
e2e/integration/test-utils:
devDependencies:
terminate:
@@ -1100,7 +1131,7 @@ importers:
version: 2.10.0(@opentelemetry/api@1.9.1)
'@sveltejs/kit':
specifier: ^2.70.1
version: 2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.56.0)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
version: 2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.56.0)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@tanstack/react-start':
specifier: ^1.168.60
version: 1.168.60(esbuild@0.28.1)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(rolldown@1.2.2)(rollup@4.60.4)(vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
@@ -3856,6 +3887,9 @@ packages:
'@jridgewell/sourcemap-codec@1.5.5':
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
'@jridgewell/sourcemap-codec@1.6.0':
resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==}
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
@@ -6928,6 +6962,11 @@ packages:
peerDependencies:
acorn: ^8.9.0
'@sveltejs/acorn-typescript@1.0.13':
resolution: {integrity: sha512-wgKggnhZVL9Bfx1OaKKTrYY9BFRk6C8UAkQNUcIv1+llzYrIqy+RZm5HPKzn0NpEBvTVhTqB4kQyllZywsRBRQ==}
peerDependencies:
acorn: ^8.9.0
'@sveltejs/kit@2.70.2':
resolution: {integrity: sha512-RzRoRpuR2KXqc5yMO0akQHDZeT4AslOlznGITURsqHaVbtyYP4Wn3eE3gxj9JcDyNYO0crkxhdwFHc+2vkVm6w==}
engines: {node: '>=18.13'}
@@ -6944,20 +6983,32 @@ packages:
typescript:
optional: true
'@sveltejs/vite-plugin-svelte-inspector@5.0.2':
resolution: {integrity: sha512-TZzRTcEtZffICSAoZGkPSl6Etsj2torOVrx6Uw0KpXxrec9Gg6jFWQ60Q3+LmNGfZSxHRCZL7vXVZIWmuV50Ig==}
engines: {node: ^20.19 || ^22.12 || >=24}
'@sveltejs/kit@3.0.1':
resolution: {integrity: sha512-8JMCCq7ZUJELi3hbhb0+c9Rs8qnbHW90vhOfM+t1FSF4fhIpG9/FOsH4IYgcITMhbdkSrrn+Kvd9G+q8A+UO6Q==}
engines: {node: '>=22.17'}
hasBin: true
peerDependencies:
'@sveltejs/vite-plugin-svelte': ^6.0.0-next.0
svelte: '>=5.55.7 <6'
vite: '>=6.4.3 <7'
'@opentelemetry/api': ^1.0.0
'@sveltejs/vite-plugin-svelte': ^7.0.0
svelte: ^5.57.1
typescript: ^6.0.0
vite: ^8.0.12
peerDependenciesMeta:
'@opentelemetry/api':
optional: true
typescript:
optional: true
'@sveltejs/vite-plugin-svelte@6.2.1':
resolution: {integrity: sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==}
'@sveltejs/load-config@0.2.3':
resolution: {integrity: sha512-VT3qmUb8pRV2QrZjd8iAmtg8lf4W0TIjZbvXtz5MKei/q96teWZgGJyyidJzOjzZzvdq616eSRVeMYIQChUTAQ==}
engines: {node: '>= 18.0.0'}
'@sveltejs/vite-plugin-svelte@7.3.1':
resolution: {integrity: sha512-ZPsLN8B1e/En+Ak5s4V7srFDT532oS0qieLsQwu63NGKsS+iAjoO2Js1BochlHlglcU+Pt7WAO3C5Ee+4f6gVA==}
engines: {node: ^20.19 || ^22.12 || >=24}
peerDependencies:
svelte: '>=5.55.7 <6'
vite: '>=6.4.3 <7'
vite: ^8.0.0-beta.7 || ^8.0.0
'@swc/helpers@0.5.23':
resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==}
@@ -7423,6 +7474,9 @@ packages:
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
'@types/estree@1.0.9':
resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
'@types/express-serve-static-core@5.1.1':
resolution: {integrity: sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==}
@@ -8827,6 +8881,10 @@ packages:
resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
engines: {node: '>=18'}
cookie@2.0.1:
resolution: {integrity: sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w==}
engines: {node: '>=22'}
core-js-compat@3.49.0:
resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==}
@@ -9282,6 +9340,9 @@ packages:
devalue@5.9.2:
resolution: {integrity: sha512-po4PAY5c53tw5XMocSnf8A/5OHhbbUftpr93aEN6BBoAdntUmK7vu7wOATqvt7cXO7m1Cl4gMVn6p7n6n4mj0w==}
devalue@5.9.4:
resolution: {integrity: sha512-sPAT4pztbu6586/hrhOnMKS17IJrvg12mXiSPSS3W5qDeN2RGgvZ0diZCm31dBbnevfVmujNO3IM2wrS4Y2Rhg==}
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
@@ -9790,6 +9851,14 @@ packages:
'@typescript-eslint/types':
optional: true
esrap@2.4.0:
resolution: {integrity: sha512-CQPcneEHw/czj32uwQC52nYnax8H4SXt25FCM+LIwGZ49cMIxpOj3bP8wmzcI+Z0HIy5KkClaPhRLfCySzwHPA==}
peerDependencies:
'@typescript-eslint/types': ^8.2.0
peerDependenciesMeta:
'@typescript-eslint/types':
optional: true
estree-util-attach-comments@3.0.0:
resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==}
@@ -14369,10 +14438,22 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
svelte-check@4.7.6:
resolution: {integrity: sha512-t2scM//ZuVbSY/T2w6FSBw1v9s2NEmh/g+sy1lqtosW5ylBV5AF4wFb1Ts9Kf3MbfPDUDJDZ9L436YT0SPTdvw==}
engines: {node: '>= 18.0.0'}
hasBin: true
peerDependencies:
svelte: '>=5.55.7 <6'
typescript: ^5.0.0 || ^6.0.0
svelte@5.56.0:
resolution: {integrity: sha512-kTXr26t1bchFp28ROrb957LtbujpBmBDibmqMGziVpUs7awBi96TGgX6SovrA8BNoEUDVRK2Fb9FkeYlGspoVg==}
engines: {node: '>=18'}
svelte@5.57.2:
resolution: {integrity: sha512-1YiPCAXT0Ct6g1vOMmSLa0Nsc3QRMvtDF32ihgglGVrugIuIK38RyDiFNXVDhtQ81TJjSO57NdMw6DyYLqSGDQ==}
engines: {node: '>=18'}
svgo@4.1.0:
resolution: {integrity: sha512-bkxnTg1kSU0guhIBmibA6UUhrQmPVA1XsQLN+ylCd+UWzbnLkySOcXpyk1mrl05f+pcaCx2eHb+sp6BgMZWX+Q==}
engines: {node: '>=16'}
@@ -18921,6 +19002,8 @@ snapshots:
'@jridgewell/sourcemap-codec@1.5.5': {}
'@jridgewell/sourcemap-codec@1.6.0': {}
'@jridgewell/trace-mapping@0.3.31':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
@@ -22589,11 +22672,15 @@ snapshots:
dependencies:
acorn: 8.16.0
'@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.56.0)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
'@sveltejs/acorn-typescript@1.0.13(acorn@8.18.0)':
dependencies:
acorn: 8.18.0
'@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.56.0)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@standard-schema/spec': 1.1.0
'@sveltejs/acorn-typescript': 1.0.10(acorn@8.16.0)
'@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@sveltejs/vite-plugin-svelte': 7.3.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@types/cookie': 0.6.0
acorn: 8.16.0
cookie: 0.7.2
@@ -22610,24 +22697,64 @@ snapshots:
'@opentelemetry/api': 1.9.1
typescript: 6.0.3
'@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
'@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.57.2)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@sveltejs/vite-plugin-svelte': 6.2.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@standard-schema/spec': 1.1.0
'@sveltejs/acorn-typescript': 1.0.10(acorn@8.16.0)
'@sveltejs/vite-plugin-svelte': 7.3.1(svelte@5.57.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@types/cookie': 0.6.0
acorn: 8.16.0
cookie: 0.7.2
devalue: 5.8.1
esm-env: 1.2.2
kleur: 4.1.5
magic-string: 0.30.21
mrmime: 2.0.1
set-cookie-parser: 3.1.0
sirv: 3.0.2
svelte: 5.57.2
vite: 8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
optionalDependencies:
'@opentelemetry/api': 1.9.1
typescript: 6.0.3
optional: true
'@sveltejs/kit@3.0.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.57.2)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@rolldown/pluginutils': 1.0.1
'@standard-schema/spec': 1.1.0
'@sveltejs/vite-plugin-svelte': 7.3.1(svelte@5.57.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
cookie: 2.0.1
devalue: 5.9.4
esm-env: 1.2.2
magic-string: 1.2.3
mrmime: 2.0.1
sirv: 3.0.2
svelte: 5.57.2
vite: 8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
optionalDependencies:
'@opentelemetry/api': 1.9.1
typescript: 6.0.3
'@sveltejs/load-config@0.2.3': {}
'@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
deepmerge: 4.3.1
magic-string: 1.2.3
obug: 2.1.4
svelte: 5.56.0
vite: 8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
vitefu: 1.1.3(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
'@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))':
dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
debug: 4.4.3
deepmerge: 4.3.1
magic-string: 0.30.21
svelte: 5.56.0
magic-string: 1.2.3
obug: 2.1.4
svelte: 5.57.2
vite: 8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)
vitefu: 1.1.3(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
transitivePeerDependencies:
- supports-color
'@swc/helpers@0.5.23':
dependencies:
@@ -23235,6 +23362,8 @@ snapshots:
'@types/estree@1.0.8': {}
'@types/estree@1.0.9': {}
'@types/express-serve-static-core@5.1.1':
dependencies:
'@types/node': 25.6.0
@@ -23480,21 +23609,21 @@ snapshots:
'@urql/core': 5.2.0(graphql@16.14.2)
wonka: 6.3.6
'@vercel/analytics@2.0.1(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.56.0)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(next@16.3.4(@babel/core@8.0.1)(@opentelemetry/api@1.9.1)(@playwright/test@1.58.2)(@types/node@25.9.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(nuxt@4.5.2(8ef6acf144585147fdc629df1320a580))(react@19.2.7)(svelte@5.56.0)(vue@3.5.42(typescript@6.0.3))':
'@vercel/analytics@2.0.1(@sveltejs/kit@2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.57.2)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(next@16.3.4(@babel/core@8.0.1)(@opentelemetry/api@1.9.1)(@playwright/test@1.58.2)(@types/node@25.9.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(nuxt@4.5.2(8ef6acf144585147fdc629df1320a580))(react@19.2.7)(svelte@5.57.2)(vue@3.5.42(typescript@6.0.3))':
optionalDependencies:
'@sveltejs/kit': 2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@6.2.1(svelte@5.56.0)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.56.0)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
'@sveltejs/kit': 2.70.2(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.3.1(svelte@5.57.2)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)))(svelte@5.57.2)(typescript@6.0.3)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))
next: 16.3.4(@babel/core@8.0.1)(@opentelemetry/api@1.9.1)(@playwright/test@1.58.2)(@types/node@25.9.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
nuxt: 4.5.2(8ef6acf144585147fdc629df1320a580)
react: 19.2.7
svelte: 5.56.0
svelte: 5.57.2
vue: 3.5.42(typescript@6.0.3)
'@vercel/nft@1.10.2(rollup@4.60.4)':
dependencies:
'@mapbox/node-pre-gyp': 2.0.3
'@rollup/pluginutils': 5.3.0(rollup@4.60.4)
acorn: 8.16.0
acorn-import-attributes: 1.9.5(acorn@8.16.0)
acorn: 8.18.0
acorn-import-attributes: 1.9.5(acorn@8.18.0)
async-sema: 3.1.1
bindings: 1.5.0
estree-walker: 2.0.2
@@ -23870,9 +23999,9 @@ snapshots:
mime-types: 3.0.2
negotiator: 1.0.0
acorn-import-attributes@1.9.5(acorn@8.16.0):
acorn-import-attributes@1.9.5(acorn@8.18.0):
dependencies:
acorn: 8.16.0
acorn: 8.18.0
acorn-jsx@5.3.2(acorn@8.16.0):
dependencies:
@@ -23880,7 +24009,7 @@ snapshots:
acorn-loose@8.5.2:
dependencies:
acorn: 8.16.0
acorn: 8.18.0
acorn-typescript@1.4.13(acorn@8.16.0):
dependencies:
@@ -24922,6 +25051,8 @@ snapshots:
cookie@1.1.1: {}
cookie@2.0.1: {}
core-js-compat@3.49.0:
dependencies:
browserslist: 4.28.8
@@ -25425,6 +25556,8 @@ snapshots:
devalue@5.9.2: {}
devalue@5.9.4: {}
devlop@1.1.0:
dependencies:
dequal: 2.0.3
@@ -25732,7 +25865,7 @@ snapshots:
esast-util-from-js@2.0.1:
dependencies:
'@types/estree-jsx': 1.0.5
acorn: 8.16.0
acorn: 8.18.0
esast-util-from-estree: 2.0.0
vfile-message: 4.0.3
@@ -25783,6 +25916,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
esrap@2.4.0:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
estree-util-attach-comments@3.0.0:
dependencies:
'@types/estree': 1.0.8
@@ -26447,7 +26584,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
fumadocs-typescript@5.2.6(68f004805581973de2150e24a06510a1):
fumadocs-typescript@5.2.6(fcbb58a8ffc1eadf629bb3b69d2f2b59):
dependencies:
estree-util-value-to-estree: 3.5.0
fumadocs-core: 16.12.0(@mdx-js/mdx@3.1.1)(@tanstack/react-router@1.170.41(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.17)(lucide-react@1.21.0(react@19.2.7))(next@16.3.4(@babel/core@8.0.1)(@opentelemetry/api@1.9.1)(@playwright/test@1.58.2)(@types/node@25.9.4)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(zod@4.5.4)
@@ -26462,7 +26599,7 @@ snapshots:
unified: 11.0.5
unist-util-visit: 5.1.0
optionalDependencies:
'@types/estree': 1.0.8
'@types/estree': 1.0.9
'@types/hast': 3.0.4
'@types/mdast': 4.0.4
'@types/react': 19.2.17
@@ -32221,6 +32358,19 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
svelte-check@4.7.6(picomatch@4.0.4)(svelte@5.57.2)(typescript@6.0.3):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
'@sveltejs/load-config': 0.2.3
chokidar: 4.0.3
fdir: 6.5.0(picomatch@4.0.4)
picocolors: 1.1.1
sade: 1.8.1
svelte: 5.57.2
typescript: 6.0.3
transitivePeerDependencies:
- picomatch
svelte@5.56.0:
dependencies:
'@jridgewell/remapping': 2.3.5
@@ -32242,6 +32392,26 @@ snapshots:
transitivePeerDependencies:
- '@typescript-eslint/types'
svelte@5.57.2:
dependencies:
'@jridgewell/remapping': 2.3.5
'@jridgewell/sourcemap-codec': 1.6.0
'@sveltejs/acorn-typescript': 1.0.13(acorn@8.18.0)
'@types/estree': 1.0.9
acorn: 8.18.0
aria-query: 5.3.1
axobject-query: 4.1.0
clsx: 2.1.1
devalue: 5.9.2
esm-env: 1.2.2
esrap: 2.4.0
is-reference: 3.0.3
locate-character: 3.0.0
magic-string: 0.30.21
zimmerframe: 1.1.4
transitivePeerDependencies:
- '@typescript-eslint/types'
svgo@4.1.0:
dependencies:
commander: 11.1.0
@@ -32345,7 +32515,7 @@ snapshots:
terser@5.46.1:
dependencies:
'@jridgewell/source-map': 0.3.11
acorn: 8.16.0
acorn: 8.18.0
commander: 2.20.3
source-map-support: 0.5.21
@@ -32757,7 +32927,7 @@ snapshots:
unimport@6.3.0(esbuild@0.28.1)(oxc-parser@0.135.0)(rolldown@1.2.2)(rollup@4.60.4)(vite@6.4.3(@types/node@25.9.4)(jiti@2.7.0)(lightningcss@1.33.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)):
dependencies:
acorn: 8.16.0
acorn: 8.18.0
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
local-pkg: 1.2.1
@@ -32786,7 +32956,7 @@ snapshots:
unimport@6.3.0(esbuild@0.28.1)(rolldown@1.2.2)(rollup@4.60.4)(vite@8.2.0(@types/node@25.9.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)):
dependencies:
acorn: 8.16.0
acorn: 8.18.0
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
local-pkg: 1.2.1
@@ -32906,7 +33076,7 @@ snapshots:
unplugin@2.3.11:
dependencies:
'@jridgewell/remapping': 2.3.5
acorn: 8.16.0
acorn: 8.18.0
picomatch: 4.0.4
webpack-virtual-modules: 0.6.2