diff --git a/demo/expo-example/components.json b/demo/expo-example/components.json index 78d20a54..044a9568 100644 --- a/demo/expo-example/components.json +++ b/demo/expo-example/components.json @@ -1,6 +1,6 @@ { - "aliases": { - "components": "@/components", - "lib": "@/lib" - } + "aliases": { + "components": "@/components", + "lib": "@/lib" + } } diff --git a/demo/nextjs/components/sign-in.tsx b/demo/nextjs/components/sign-in.tsx index d8382b3f..f80d174c 100644 --- a/demo/nextjs/components/sign-in.tsx +++ b/demo/nextjs/components/sign-in.tsx @@ -103,19 +103,20 @@ export default function SignIn() { toast.success("Successfully signed in"); router.push(getCallbackURL(params)); }, + onError(context) { + toast.error(context.error.message); + }, }, ); }); }} > -
- - {loading ? ( - - ) : ( - "Login" - )} - +
+ {loading ? ( + + ) : ( + "Login" + )} {client.isLastUsedLoginMethod("email") && }
diff --git a/demo/nextjs/components/ui/calendar.tsx b/demo/nextjs/components/ui/calendar.tsx index 73d5432f..8dddff6f 100644 --- a/demo/nextjs/components/ui/calendar.tsx +++ b/demo/nextjs/components/ui/calendar.tsx @@ -1,7 +1,6 @@ "use client"; import * as React from "react"; -import { ChevronLeftIcon, ChevronRightIcon } from "@radix-ui/react-icons"; import { DayPicker } from "react-day-picker"; import { cn } from "@/lib/utils"; @@ -59,10 +58,6 @@ function Calendar({ day_hidden: "invisible", ...classNames, }} - components={{ - IconLeft: ({ ...props }) => , - IconRight: ({ ...props }) => , - }} {...props} /> ); diff --git a/docs/app/blog/_components/support.tsx b/docs/app/blog/_components/support.tsx index 84293b62..15fb584d 100644 --- a/docs/app/blog/_components/support.tsx +++ b/docs/app/blog/_components/support.tsx @@ -19,11 +19,9 @@ import { SelectValue, } from "@/components/ui/select"; import { Textarea } from "@/components/ui/textarea"; -import { Callout } from "@/components/ui/callout"; import * as React from "react"; import { Card, - CardContent, CardDescription, CardFooter, CardHeader, diff --git a/docs/components/ui/calendar.tsx b/docs/components/ui/calendar.tsx index c94ef6ec..fc9e54ec 100644 --- a/docs/components/ui/calendar.tsx +++ b/docs/components/ui/calendar.tsx @@ -1,7 +1,6 @@ "use client"; import * as React from "react"; -import { ChevronLeft, ChevronRight } from "lucide-react"; import { DayPicker } from "react-day-picker"; import { cn } from "@/lib/utils"; @@ -59,14 +58,6 @@ function Calendar({ day_hidden: "invisible", ...classNames, }} - components={{ - IconLeft: ({ className, ...props }) => ( - - ), - IconRight: ({ className, ...props }) => ( - - ), - }} {...props} /> ); diff --git a/e2e/smoke/tsconfig.json b/e2e/smoke/tsconfig.json index 865dd2b4..8b92a7c8 100644 --- a/e2e/smoke/tsconfig.json +++ b/e2e/smoke/tsconfig.json @@ -2,12 +2,12 @@ "extends": "../../tsconfig.json", "compilerOptions": { "target": "esnext", - "module": "esnext", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, - "moduleResolution": "node16" + "moduleResolution": "node16", + "module": "Node16" }, "include": ["./test/**/*"] } diff --git a/package.json b/package.json index f8f4ccae..68bac164 100644 --- a/package.json +++ b/package.json @@ -19,15 +19,17 @@ "test": "turbo --filter \"./packages/*\" test", "e2e:smoke": "turbo --filter \"./e2e/*\" e2e:smoke", "e2e:integration": "turbo --filter \"./e2e/*\" e2e:integration", - "typecheck": "tsc -b --verbose --diagnostics" + "typecheck": "turbo --filter \"./packages/*\" typecheck" }, "devDependencies": { "@biomejs/biome": "2.2.4", + "@types/bun": "^1.2.20", "@types/node": "^24.4.0", "bumpp": "^10.2.3", "tinyglobby": "^0.2.15", "turbo": "^2.5.6", "typescript": "catalog:", + "unbuild": "catalog:", "vitest": "catalog:" }, "resolutions": { diff --git a/packages/better-auth/CHANGELOG.md b/packages/better-auth/CHANGELOG.md deleted file mode 100644 index ad7ec087..00000000 --- a/packages/better-auth/CHANGELOG.md +++ /dev/null @@ -1,17 +0,0 @@ -# better-auth - -## 1.3.4 - -### Patch Changes - -- 2bd2fa9: Added support for listing organization members with pagination, sorting, and filtering, and improved client inference for additional organization fields. Also fixed date handling in rate limits and tokens, improved Notion OAuth user extraction, and ensured session is always set in context. - - Organization - - - Added listMembers API with pagination, sorting, and filtering. - - Added membersLimit param to getFullOrganization. - - Improved client inference for additional fields in organization schemas. - - Bug Fixes - - Fixed date handling by casting DB values to Date objects before using date methods. - - Fixed Notion OAuth to extract user info correctly. - - Ensured session is set in context when reading from cookie cach diff --git a/packages/better-auth/src/db/internal-adapter.ts b/packages/better-auth/src/db/internal-adapter.ts index 43083c41..05a35b6a 100644 --- a/packages/better-auth/src/db/internal-adapter.ts +++ b/packages/better-auth/src/db/internal-adapter.ts @@ -69,42 +69,7 @@ export const createInternalAdapter = ( session: parsed.session, user, }), - sessionTTL, - ); - }), - ); - } - - async function refreshUserSessions(user: User) { - if (!secondaryStorage) return; - - const listRaw = await secondaryStorage.get(`active-sessions-${user.id}`); - if (!listRaw) return; - - const now = Date.now(); - const list = - safeJSONParse<{ token: string; expiresAt: number }[]>(listRaw) || []; - const validSessions = list.filter((s) => s.expiresAt > now); - - await Promise.all( - validSessions.map(async ({ token }) => { - const cached = await secondaryStorage.get(token); - if (!cached) return; - const parsed = safeJSONParse<{ session: Session; user: User }>(cached); - if (!parsed) return; - - const sessionTTL = Math.max( - Math.floor(new Date(parsed.session.expiresAt).getTime() - now) / 1000, - 0, - ); - - await secondaryStorage.set( - token, - JSON.stringify({ - session: parsed.session, - user, - }), - sessionTTL, + Math.floor(sessionTTL), ); }), ); diff --git a/packages/better-auth/src/oauth2/link-account.test.ts b/packages/better-auth/src/oauth2/link-account.test.ts index 9a84bbf7..983cceba 100644 --- a/packages/better-auth/src/oauth2/link-account.test.ts +++ b/packages/better-auth/src/oauth2/link-account.test.ts @@ -1,6 +1,5 @@ import { describe, expect, it, vi } from "vitest"; import { getTestInstance } from "../test-utils/test-instance"; -import { parseSetCookieHeader } from "../cookies"; import type { GoogleProfile } from "../social-providers"; import { DEFAULT_SECRET } from "../utils/constants"; import { getOAuth2Tokens } from "../oauth2"; @@ -43,7 +42,7 @@ vi.mock("../oauth2", async (importOriginal) => { }); describe("oauth2 - email verification on link", async () => { - const { auth, client } = await getTestInstance({ + const { auth, client, cookieSetter } = await getTestInstance({ socialProviders: { google: { clientId: "test", @@ -66,25 +65,19 @@ describe("oauth2 - email verification on link", async () => { const ctx = await auth.$context; async function linkGoogleAccount() { + const oAuthHeaders = new Headers(); const signInRes = await client.signIn.social({ provider: "google", callbackURL: "/", + fetchOptions: { + onSuccess: cookieSetter(oAuthHeaders), + }, }); - const state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; - const headers = new Headers(); - const cookies = parseSetCookieHeader( - (signInRes as any).headers?.["set-cookie"] || "", - ); - headers.set( - "cookie", - `better-auth.state=${cookies.get("better-auth.state")?.value}`, - ); - await client.$fetch("/callback/google", { query: { state, code: "test_code" }, method: "GET", - headers, + headers: oAuthHeaders, onError(context) { expect(context.response.status).toBe(302); }, diff --git a/packages/better-auth/src/plugins/admin/admin.test.ts b/packages/better-auth/src/plugins/admin/admin.test.ts index ee32a7c8..aedf0cec 100644 --- a/packages/better-auth/src/plugins/admin/admin.test.ts +++ b/packages/better-auth/src/plugins/admin/admin.test.ts @@ -461,12 +461,14 @@ describe("Admin plugin", async () => { }); it("should not allow banned user to sign in with social provider", async () => { + const headers = new Headers(); const res = await client.signIn.social( { provider: "google", }, { throw: true, + onSuccess: cookieSetter(headers), }, ); const state = new URL(res.url!).searchParams.get("state"); @@ -476,6 +478,7 @@ describe("Admin plugin", async () => { state, code: "test", }, + headers, method: "GET", onError(context) { expect(context.response.status).toBe(302); diff --git a/packages/better-auth/src/plugins/anonymous/anon.test.ts b/packages/better-auth/src/plugins/anonymous/anon.test.ts index b5630ee5..00945a7e 100644 --- a/packages/better-auth/src/plugins/anonymous/anon.test.ts +++ b/packages/better-auth/src/plugins/anonymous/anon.test.ts @@ -45,7 +45,7 @@ vi.mock("../../oauth2", async (importOriginal) => { describe("anonymous", async () => { const linkAccountFn = vi.fn(); - const { customFetchImpl, auth, sessionSetter, testUser } = + const { customFetchImpl, auth, sessionSetter, testUser, cookieSetter } = await getTestInstance({ plugins: [ anonymous({ @@ -114,9 +114,13 @@ describe("anonymous", async () => { headers, }, }); + const singInRes = await client.signIn.social({ provider: "google", callbackURL: "/dashboard", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); const state = new URL(singInRes.data?.url || "").searchParams.get("state"); await client.$fetch("/callback/google", { diff --git a/packages/better-auth/src/plugins/email-otp/email-otp.test.ts b/packages/better-auth/src/plugins/email-otp/email-otp.test.ts index 0457cac7..70e39824 100644 --- a/packages/better-auth/src/plugins/email-otp/email-otp.test.ts +++ b/packages/better-auth/src/plugins/email-otp/email-otp.test.ts @@ -225,7 +225,7 @@ describe("email-otp", async () => { type: "email-verification", }); vi.useFakeTimers(); - await vi.advanceTimersByTimeAsync(1000 * 60 * 5); + await vi.advanceTimersByTimeAsync(1000 * 60 * 6); const res = await client.emailOtp.verifyEmail({ email: testUser.email, otp, diff --git a/packages/better-auth/src/plugins/generic-oauth/generic-oauth.test.ts b/packages/better-auth/src/plugins/generic-oauth/generic-oauth.test.ts index 14b659dc..72aa8bf8 100644 --- a/packages/better-auth/src/plugins/generic-oauth/generic-oauth.test.ts +++ b/packages/better-auth/src/plugins/generic-oauth/generic-oauth.test.ts @@ -20,7 +20,7 @@ describe("oauth2", async () => { await server.stop(); }); - const { customFetchImpl, auth } = await getTestInstance({ + const { customFetchImpl, auth, cookieSetter } = await getTestInstance({ plugins: [ genericOAuth({ config: [ @@ -88,10 +88,7 @@ describe("oauth2", async () => { headers, onError(context) { callbackURL = context.response.headers.get("location") || ""; - newHeaders.set( - "cookie", - context.response.headers.get("Set-Cookie") || "", - ); + cookieSetter(newHeaders)(context); }, }); @@ -104,6 +101,9 @@ describe("oauth2", async () => { providerId: "test", callbackURL: "http://localhost:3000/dashboard", newUserCallbackURL: "http://localhost:3000/new_user", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(signInRes.data).toMatchObject({ url: expect.stringContaining(`http://localhost:${port}/authorize`), @@ -133,6 +133,9 @@ describe("oauth2", async () => { providerId: "test", callbackURL: "http://localhost:3000/dashboard", newUserCallbackURL: "http://localhost:3000/new_user", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(signInRes.data).toMatchObject({ url: expect.stringContaining(`http://localhost:${port}/authorize`), @@ -148,7 +151,7 @@ describe("oauth2", async () => { headers: newHeaders, }, }); - + console.log(session.data, newHeaders); const ctx = await auth.$context; const accounts = await ctx.internalAdapter.findAccounts( session.data?.user.id!, @@ -173,6 +176,9 @@ describe("oauth2", async () => { providerId: "test", callbackURL: "http://localhost:3000/dashboard", newUserCallbackURL: "http://localhost:3000/new_user", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); const { callbackURL } = await simulateOAuthFlow( res.data?.url || "", @@ -250,12 +256,13 @@ describe("oauth2", async () => { }), ], }); - + const headers = new Headers(); const authClient = createAuthClient({ plugins: [genericOAuthClient()], baseURL: "http://localhost:3000", fetchOptions: { customFetchImpl, + onSuccess: cookieSetter(headers), }, }); @@ -263,9 +270,11 @@ describe("oauth2", async () => { providerId: "test2", callbackURL: "http://localhost:3000/dashboard", newUserCallbackURL: "http://localhost:3000/new_user", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(res.data?.url).toContain(`http://localhost:${port}/authorize`); - const headers = new Headers(); const { callbackURL } = await simulateOAuthFlow( res.data?.url || "", headers, @@ -286,7 +295,7 @@ describe("oauth2", async () => { userInfoResponse.statusCode = 200; }); - const { customFetchImpl } = await getTestInstance({ + const { customFetchImpl, cookieSetter } = await getTestInstance({ plugins: [ genericOAuth({ config: [ @@ -302,7 +311,6 @@ describe("oauth2", async () => { }), ], }); - const authClient = createAuthClient({ plugins: [genericOAuthClient()], baseURL: "http://localhost:3000", @@ -310,14 +318,16 @@ describe("oauth2", async () => { customFetchImpl, }, }); - + const headers = new Headers(); const res = await authClient.signIn.oauth2({ providerId: "test2", callbackURL: "http://localhost:3000/dashboard", errorCallbackURL: "http://localhost:3000/error", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(res.data?.url).toContain(`http://localhost:${port}/authorize`); - const headers = new Headers(); const { callbackURL } = await simulateOAuthFlow( res.data?.url || "", headers, @@ -340,7 +350,7 @@ describe("oauth2", async () => { userInfoResponse.statusCode = 200; }); - const { customFetchImpl } = await getTestInstance({ + const { customFetchImpl, cookieSetter } = await getTestInstance({ plugins: [ genericOAuth({ config: [ @@ -364,15 +374,17 @@ describe("oauth2", async () => { customFetchImpl, }, }); - + const headers = new Headers(); const res = await authClient.signIn.oauth2({ providerId: "test2", callbackURL: "http://localhost:3000/dashboard", errorCallbackURL: "http://localhost:3000/error", requestSignUp: true, + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(res.data?.url).toContain(`http://localhost:${port}/authorize`); - const headers = new Headers(); const { callbackURL } = await simulateOAuthFlow( res.data?.url || "", headers, @@ -391,7 +403,7 @@ describe("oauth2", async () => { receivedHeaders = req.headers as Record; }); - const { customFetchImpl } = await getTestInstance({ + const { customFetchImpl, cookieSetter } = await getTestInstance({ plugins: [ genericOAuth({ config: [ @@ -407,12 +419,13 @@ describe("oauth2", async () => { }), ], }); - + const headers = new Headers(); const authClient = createAuthClient({ plugins: [genericOAuthClient()], baseURL: "http://localhost:3000", fetchOptions: { customFetchImpl, + onSuccess: cookieSetter(headers), }, }); @@ -420,10 +433,12 @@ describe("oauth2", async () => { providerId: "test3", callbackURL: "http://localhost:3000/dashboard", newUserCallbackURL: "http://localhost:3000/new_user", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(res.data?.url).toContain(`http://localhost:${port}/authorize`); - const headers = new Headers(); await simulateOAuthFlow(res.data?.url || "", headers, customFetchImpl); expect(receivedHeaders).toHaveProperty("x-custom-header"); @@ -432,7 +447,7 @@ describe("oauth2", async () => { it("should delete oauth user with verification flow without password", async () => { let token = ""; - const { customFetchImpl } = await getTestInstance({ + const { customFetchImpl, cookieSetter } = await getTestInstance({ user: { deleteUser: { enabled: true, @@ -454,18 +469,22 @@ describe("oauth2", async () => { }), ], }); - + const headers = new Headers(); const client = createAuthClient({ plugins: [genericOAuthClient()], baseURL: "http://localhost:3000", fetchOptions: { customFetchImpl, + onSuccess: cookieSetter(headers), }, }); const signInRes = await client.signIn.oauth2({ providerId: "test", callbackURL: "http://localhost:3000/dashboard", newUserCallbackURL: "http://localhost:3000/new_user", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(signInRes.data).toMatchObject({ @@ -473,22 +492,22 @@ describe("oauth2", async () => { redirect: true, }); - const { headers } = await simulateOAuthFlow( + const { headers: newHeaders } = await simulateOAuthFlow( signInRes.data?.url || "", - new Headers(), + headers, customFetchImpl, ); const session = await client.getSession({ fetchOptions: { - headers, + headers: newHeaders, }, }); expect(session.data).not.toBeNull(); const deleteRes = await client.deleteUser({ fetchOptions: { - headers, + headers: newHeaders, }, }); @@ -501,7 +520,7 @@ describe("oauth2", async () => { const deleteCallbackRes = await client.deleteUser({ token, fetchOptions: { - headers, + headers: newHeaders, }, }); expect(deleteCallbackRes.data).toMatchObject({ @@ -530,7 +549,7 @@ describe("oauth2", async () => { userInfoResponse.statusCode = 200; }); - const { customFetchImpl, auth } = await getTestInstance({ + const { customFetchImpl, auth, cookieSetter } = await getTestInstance({ plugins: [ genericOAuth({ config: [ @@ -545,12 +564,13 @@ describe("oauth2", async () => { }), ], }); - + const headers = new Headers(); const authClient = createAuthClient({ plugins: [genericOAuthClient()], baseURL: "http://localhost:3000", fetchOptions: { customFetchImpl, + onSuccess: cookieSetter(headers), }, }); @@ -563,7 +583,7 @@ describe("oauth2", async () => { const { callbackURL: firstCallbackURL, headers: firstHeaders } = await simulateOAuthFlow( firstSignIn.data?.url || "", - new Headers(), + headers, customFetchImpl, ); @@ -606,7 +626,7 @@ describe("oauth2", async () => { const { callbackURL: secondCallbackURL, headers: secondHeaders } = await simulateOAuthFlow( secondSignIn.data?.url || "", - new Headers(), + headers, customFetchImpl, ); @@ -629,7 +649,7 @@ describe("oauth2", async () => { it("should handle custom getUserInfo returning numeric ID", async () => { const numericId = 987654321; - const { customFetchImpl, auth } = await getTestInstance({ + const { customFetchImpl, auth, cookieSetter } = await getTestInstance({ plugins: [ genericOAuth({ config: [ @@ -654,12 +674,13 @@ describe("oauth2", async () => { }), ], }); - + const headers = new Headers(); const authClient = createAuthClient({ plugins: [genericOAuthClient()], baseURL: "http://localhost:3000", fetchOptions: { customFetchImpl, + onSuccess: cookieSetter(headers), }, }); @@ -669,9 +690,9 @@ describe("oauth2", async () => { newUserCallbackURL: "http://localhost:3000/new_user", }); - const { callbackURL, headers } = await simulateOAuthFlow( + const { callbackURL, headers: newHeaders } = await simulateOAuthFlow( signInRes.data?.url || "", - new Headers(), + headers, customFetchImpl, ); @@ -679,7 +700,7 @@ describe("oauth2", async () => { const session = await authClient.getSession({ fetchOptions: { - headers, + headers: newHeaders, }, }); @@ -706,7 +727,7 @@ describe("oauth2", async () => { userInfoResponse.statusCode = 200; }); - const { customFetchImpl, auth } = await getTestInstance({ + const { customFetchImpl, auth, cookieSetter } = await getTestInstance({ plugins: [ genericOAuth({ config: [ @@ -729,12 +750,13 @@ describe("oauth2", async () => { }), ], }); - + const headers = new Headers(); const authClient = createAuthClient({ plugins: [genericOAuthClient()], baseURL: "http://localhost:3000", fetchOptions: { customFetchImpl, + onSuccess: cookieSetter(headers), }, }); @@ -744,9 +766,9 @@ describe("oauth2", async () => { newUserCallbackURL: "http://localhost:3000/new_user", }); - const { callbackURL, headers } = await simulateOAuthFlow( + const { callbackURL, headers: newHeaders } = await simulateOAuthFlow( signInRes.data?.url || "", - new Headers(), + headers, customFetchImpl, ); @@ -754,7 +776,7 @@ describe("oauth2", async () => { const session = await authClient.getSession({ fetchOptions: { - headers, + headers: newHeaders, }, }); @@ -781,7 +803,7 @@ describe("oauth2", async () => { userInfoResponse.statusCode = 200; }); - const { customFetchImpl, auth } = await getTestInstance({ + const { customFetchImpl, auth, cookieSetter } = await getTestInstance({ plugins: [ genericOAuth({ config: [ @@ -809,12 +831,13 @@ describe("oauth2", async () => { }), ], }); - + const headers = new Headers(); const authClient = createAuthClient({ plugins: [genericOAuthClient()], baseURL: "http://localhost:3000", fetchOptions: { customFetchImpl, + onSuccess: cookieSetter(headers), }, }); @@ -828,9 +851,9 @@ describe("oauth2", async () => { // we missed the `activity:read_all` expect(signInRes.data?.url).toContain("scope=read+activity"); - const { callbackURL, headers } = await simulateOAuthFlow( + const { callbackURL, headers: newHeaders } = await simulateOAuthFlow( signInRes.data?.url || "", - new Headers(), + headers, customFetchImpl, ); @@ -838,7 +861,7 @@ describe("oauth2", async () => { const session = await authClient.getSession({ fetchOptions: { - headers, + headers: newHeaders, }, }); diff --git a/packages/better-auth/src/plugins/last-login-method/last-login-method.test.ts b/packages/better-auth/src/plugins/last-login-method/last-login-method.test.ts index 61ea9ef6..11298fe9 100644 --- a/packages/better-auth/src/plugins/last-login-method/last-login-method.test.ts +++ b/packages/better-auth/src/plugins/last-login-method/last-login-method.test.ts @@ -179,7 +179,7 @@ describe("lastLoginMethod", async () => { }); it("should update the last login method in the database on subsequent logins with email and OAuth", async () => { - const { client, auth } = await getTestInstance({ + const { client, auth, cookieSetter } = await getTestInstance({ plugins: [lastLoginMethod({ storeInDatabase: true })], account: { accountLinking: { @@ -216,9 +216,13 @@ describe("lastLoginMethod", async () => { await client.signOut(); + const oAuthHeaders = new Headers(); const signInRes = await client.signIn.social({ provider: "google", callbackURL: "/callback", + fetchOptions: { + onSuccess: cookieSetter(oAuthHeaders), + }, }); expect(signInRes.data).toMatchObject({ url: expect.stringContaining("google.com"), @@ -232,6 +236,7 @@ describe("lastLoginMethod", async () => { state, code: "test", }, + headers: oAuthHeaders, method: "GET", onError(context) { expect(context.response.status).toBe(302); diff --git a/packages/better-auth/src/plugins/mcp/mcp.test.ts b/packages/better-auth/src/plugins/mcp/mcp.test.ts index b372a006..e319cefd 100644 --- a/packages/better-auth/src/plugins/mcp/mcp.test.ts +++ b/packages/better-auth/src/plugins/mcp/mcp.test.ts @@ -21,7 +21,7 @@ describe("mcp", async () => { const baseURL = `http://localhost:${port}`; await tempServer.close(); - const { auth, signInWithTestUser, customFetchImpl, testUser } = + const { auth, signInWithTestUser, customFetchImpl, testUser, cookieSetter } = await getTestInstance({ baseURL, plugins: [ @@ -161,28 +161,29 @@ describe("mcp", async () => { }); it("should authenticate public client with PKCE only", async ({ expect }) => { - const { customFetchImpl: customFetchImplRP } = await getTestInstance({ - account: { - accountLinking: { - trustedProviders: ["test-public"], + const { customFetchImpl: customFetchImplRP, cookieSetter } = + await getTestInstance({ + account: { + accountLinking: { + trustedProviders: ["test-public"], + }, }, - }, - plugins: [ - genericOAuth({ - config: [ - { - providerId: "test-public", - clientId: publicClient.clientId, - clientSecret: "", // Public client has no secret - authorizationUrl: `${baseURL}/api/auth/mcp/authorize`, - tokenUrl: `${baseURL}/api/auth/mcp/token`, - scopes: ["openid", "profile", "email"], - pkce: true, - }, - ], - }), - ], - }); + plugins: [ + genericOAuth({ + config: [ + { + providerId: "test-public", + clientId: publicClient.clientId, + clientSecret: "", // Public client has no secret + authorizationUrl: `${baseURL}/api/auth/mcp/authorize`, + tokenUrl: `${baseURL}/api/auth/mcp/token`, + scopes: ["openid", "profile", "email"], + pkce: true, + }, + ], + }), + ], + }); const client = createAuthClient({ plugins: [genericOAuthClient()], @@ -191,7 +192,7 @@ describe("mcp", async () => { customFetchImpl: customFetchImplRP, }, }); - + const oAuthHeaders = new Headers(); const data = await client.signIn.oauth2( { providerId: "test-public", @@ -199,6 +200,7 @@ describe("mcp", async () => { }, { throw: true, + onSuccess: cookieSetter(oAuthHeaders), }, ); @@ -220,6 +222,7 @@ describe("mcp", async () => { let callbackURL = ""; await client.$fetch(redirectURI, { + headers: oAuthHeaders, onError(context: any) { callbackURL = context.response.headers.get("Location") || ""; }, @@ -254,29 +257,30 @@ describe("mcp", async () => { it("should still support confidential clients in MCP context", async ({ expect, }) => { - const { customFetchImpl: customFetchImplRP } = await getTestInstance({ - account: { - accountLinking: { - trustedProviders: ["test-confidential"], + const { customFetchImpl: customFetchImplRP, cookieSetter } = + await getTestInstance({ + account: { + accountLinking: { + trustedProviders: ["test-confidential"], + }, }, - }, - plugins: [ - genericOAuth({ - config: [ - { - providerId: "test-confidential", - clientId: confidentialClient.clientId, - clientSecret: confidentialClient.clientSecret || "", - authorizationUrl: `${baseURL}/api/auth/mcp/authorize`, - tokenUrl: `${baseURL}/api/auth/mcp/token`, - scopes: ["openid", "profile", "email"], - pkce: true, - }, - ], - }), - ], - }); - + plugins: [ + genericOAuth({ + config: [ + { + providerId: "test-confidential", + clientId: confidentialClient.clientId, + clientSecret: confidentialClient.clientSecret || "", + authorizationUrl: `${baseURL}/api/auth/mcp/authorize`, + tokenUrl: `${baseURL}/api/auth/mcp/token`, + scopes: ["openid", "profile", "email"], + pkce: true, + }, + ], + }), + ], + }); + const oAuthHeaders = new Headers(); const client = createAuthClient({ plugins: [genericOAuthClient()], baseURL: "http://localhost:5001", @@ -292,6 +296,7 @@ describe("mcp", async () => { }, { throw: true, + onSuccess: cookieSetter(oAuthHeaders), }, ); @@ -311,6 +316,7 @@ describe("mcp", async () => { let callbackURL = ""; await client.$fetch(redirectURI, { + headers: oAuthHeaders, onError(context: any) { callbackURL = context.response.headers.get("Location") || ""; }, diff --git a/packages/better-auth/src/plugins/oauth-proxy/oauth-proxy.test.ts b/packages/better-auth/src/plugins/oauth-proxy/oauth-proxy.test.ts index 427bcccb..3480916d 100644 --- a/packages/better-auth/src/plugins/oauth-proxy/oauth-proxy.test.ts +++ b/packages/better-auth/src/plugins/oauth-proxy/oauth-proxy.test.ts @@ -42,7 +42,7 @@ vi.mock("../../oauth2", async (importOriginal) => { }); describe("oauth-proxy", async () => { - const { client } = await getTestInstance({ + const { client, cookieSetter } = await getTestInstance({ plugins: [ oAuthProxy({ currentURL: "http://preview-localhost:3000", @@ -57,6 +57,7 @@ describe("oauth-proxy", async () => { }); it("should redirect to proxy url", async () => { + const headers = new Headers(); const res = await client.signIn.social( { provider: "google", @@ -64,10 +65,12 @@ describe("oauth-proxy", async () => { }, { throw: true, + onSuccess: cookieSetter(headers), }, ); const state = new URL(res.url!).searchParams.get("state"); await client.$fetch(`/callback/google?code=test&state=${state}`, { + headers, onError(context) { const location = context.response.headers.get("location") ?? ""; if (!location) { @@ -83,7 +86,7 @@ describe("oauth-proxy", async () => { }); it("shouldn't redirect to proxy url on same origin", async () => { - const { client } = await getTestInstance({ + const { client, cookieSetter } = await getTestInstance({ plugins: [oAuthProxy()], socialProviders: { google: { @@ -92,6 +95,7 @@ describe("oauth-proxy", async () => { }, }, }); + const headers = new Headers(); const res = await client.signIn.social( { provider: "google", @@ -99,10 +103,12 @@ describe("oauth-proxy", async () => { }, { throw: true, + onSuccess: cookieSetter(headers), }, ); const state = new URL(res.url!).searchParams.get("state"); await client.$fetch(`/callback/google?code=test&state=${state}`, { + headers, onError(context) { const location = context.response.headers.get("location"); if (!location) { @@ -115,7 +121,7 @@ describe("oauth-proxy", async () => { }); it("should proxy to the original request url", async () => { - const { client } = await getTestInstance({ + const { client, cookieSetter } = await getTestInstance({ baseURL: "https://myapp.com", plugins: [ oAuthProxy({ @@ -129,6 +135,7 @@ describe("oauth-proxy", async () => { }, }, }); + const headers = new Headers(); const res = await client.signIn.social( { provider: "google", @@ -136,10 +143,12 @@ describe("oauth-proxy", async () => { }, { throw: true, + onSuccess: cookieSetter(headers), }, ); const state = new URL(res.url!).searchParams.get("state"); await client.$fetch(`/callback/google?code=test&state=${state}`, { + headers, onError(context) { const location = context.response.headers.get("location"); if (!location) { @@ -155,7 +164,7 @@ describe("oauth-proxy", async () => { }); it("shouldn't redirect to proxy url on same origin", async () => { - const { client } = await getTestInstance({ + const { client, cookieSetter } = await getTestInstance({ baseURL: "https://myapp.com", plugins: [oAuthProxy()], socialProviders: { @@ -165,6 +174,7 @@ describe("oauth-proxy", async () => { }, }, }); + const headers = new Headers(); const res = await client.signIn.social( { provider: "google", @@ -172,10 +182,12 @@ describe("oauth-proxy", async () => { }, { throw: true, + onSuccess: cookieSetter(headers), }, ); const state = new URL(res.url!).searchParams.get("state"); await client.$fetch(`/callback/google?code=test&state=${state}`, { + headers, onError(context) { const location = context.response.headers.get("location"); if (!location) { diff --git a/packages/better-auth/src/plugins/oidc-provider/oidc.test.ts b/packages/better-auth/src/plugins/oidc-provider/oidc.test.ts index 95d69c8e..c57d9c68 100644 --- a/packages/better-auth/src/plugins/oidc-provider/oidc.test.ts +++ b/packages/better-auth/src/plugins/oidc-provider/oidc.test.ts @@ -24,6 +24,7 @@ describe("oidc", async () => { auth: authorizationServer, signInWithTestUser, customFetchImpl, + cookieSetter, testUser, } = await getTestInstance({ baseURL: "http://localhost:3000", @@ -140,6 +141,7 @@ describe("oidc", async () => { customFetchImpl: customFetchImplRP, }, }); + const headers = new Headers(); const data = await client.signIn.oauth2( { providerId: "test", @@ -147,6 +149,7 @@ describe("oidc", async () => { }, { throw: true, + onSuccess: cookieSetter(headers), }, ); expect(data.url).toContain( @@ -167,6 +170,7 @@ describe("oidc", async () => { let callbackURL = ""; await client.$fetch(redirectURI, { + headers, onError(context) { callbackURL = context.response.headers.get("Location") || ""; }, @@ -209,6 +213,7 @@ describe("oidc", async () => { customFetchImpl: customFetchImplRP, }, }); + const oAuthHeaders = new Headers(); const data = await client.signIn.oauth2( { providerId: "test", @@ -216,6 +221,7 @@ describe("oidc", async () => { }, { throw: true, + onSuccess: cookieSetter(oAuthHeaders), }, ); expect(data.url).toContain( @@ -236,6 +242,8 @@ describe("oidc", async () => { expect(redirectURI).toContain("/oauth2/authorize?"); expect(redirectURI).toContain("consent_code="); expect(redirectURI).toContain("client_id="); + + console.log({ newHeaders }); const res = await serverClient.oauth2.consent( { accept: true, @@ -251,6 +259,7 @@ describe("oidc", async () => { let callbackURL = ""; await client.$fetch(res.redirectURI, { + headers: oAuthHeaders, onError(context) { callbackURL = context.response.headers.get("Location") || ""; }, @@ -293,6 +302,7 @@ describe("oidc", async () => { customFetchImpl: customFetchImplRP, }, }); + const oAuthHeaders = new Headers(); const data = await client.signIn.oauth2( { providerId: "test", @@ -300,6 +310,7 @@ describe("oidc", async () => { }, { throw: true, + onSuccess: cookieSetter(oAuthHeaders), }, ); expect(data.url).toContain( @@ -338,6 +349,7 @@ describe("oidc", async () => { ); let callbackURL = ""; await client.$fetch(redirectURI, { + headers: oAuthHeaders, onError(context) { callbackURL = context.response.headers.get("Location") || ""; }, @@ -443,29 +455,30 @@ describe("oidc storage", async () => { }; } // The RP (Relying Party) - the client application - const { customFetchImpl: customFetchImplRP } = await getTestInstance({ - account: { - accountLinking: { - trustedProviders: ["test"], + const { customFetchImpl: customFetchImplRP, cookieSetter } = + await getTestInstance({ + account: { + accountLinking: { + trustedProviders: ["test"], + }, }, - }, - plugins: [ - genericOAuth({ - config: [ - { - providerId: "test", - clientId: application.clientId, - clientSecret: application.clientSecret || "", - authorizationUrl: - "http://localhost:3000/api/auth/oauth2/authorize", - tokenUrl: "http://localhost:3000/api/auth/oauth2/token", - scopes: ["openid", "profile", "email"], - pkce: true, - }, - ], - }), - ], - }); + plugins: [ + genericOAuth({ + config: [ + { + providerId: "test", + clientId: application.clientId, + clientSecret: application.clientSecret || "", + authorizationUrl: + "http://localhost:3000/api/auth/oauth2/authorize", + tokenUrl: "http://localhost:3000/api/auth/oauth2/token", + scopes: ["openid", "profile", "email"], + pkce: true, + }, + ], + }), + ], + }); const client = createAuthClient({ plugins: [genericOAuthClient()], @@ -474,6 +487,7 @@ describe("oidc storage", async () => { customFetchImpl: customFetchImplRP, }, }); + const oAuthHeaders = new Headers(); const data = await client.signIn.oauth2( { providerId: "test", @@ -481,6 +495,7 @@ describe("oidc storage", async () => { }, { throw: true, + onSuccess: cookieSetter(oAuthHeaders), }, ); expect(data.url).toContain( @@ -501,6 +516,7 @@ describe("oidc storage", async () => { let callbackURL = ""; await client.$fetch(redirectURI, { + headers: oAuthHeaders, onError(context) { callbackURL = context.response.headers.get("Location") || ""; }, @@ -601,29 +617,30 @@ describe("oidc-jwt", async () => { } // The RP (Relying Party) - the client application - const { customFetchImpl: customFetchImplRP } = await getTestInstance({ - account: { - accountLinking: { - trustedProviders: ["test"], + const { customFetchImpl: customFetchImplRP, cookieSetter } = + await getTestInstance({ + account: { + accountLinking: { + trustedProviders: ["test"], + }, }, - }, - plugins: [ - genericOAuth({ - config: [ - { - providerId: "test", - clientId: application.clientId, - clientSecret: application.clientSecret || "", - authorizationUrl: - "http://localhost:3000/api/auth/oauth2/authorize", - tokenUrl: "http://localhost:3000/api/auth/oauth2/token", - scopes: ["openid", "profile", "email"], - pkce: true, - }, - ], - }), - ], - }); + plugins: [ + genericOAuth({ + config: [ + { + providerId: "test", + clientId: application.clientId, + clientSecret: application.clientSecret || "", + authorizationUrl: + "http://localhost:3000/api/auth/oauth2/authorize", + tokenUrl: "http://localhost:3000/api/auth/oauth2/token", + scopes: ["openid", "profile", "email"], + pkce: true, + }, + ], + }), + ], + }); const client = createAuthClient({ plugins: [genericOAuthClient()], @@ -632,6 +649,7 @@ describe("oidc-jwt", async () => { customFetchImpl: customFetchImplRP, }, }); + const oAuthHeaders = new Headers(); const data = await client.signIn.oauth2( { providerId: "test", @@ -639,6 +657,7 @@ describe("oidc-jwt", async () => { }, { throw: true, + onSuccess: cookieSetter(oAuthHeaders), }, ); expect(data.url).toContain( @@ -659,6 +678,7 @@ describe("oidc-jwt", async () => { let authToken = undefined; let callbackURL = ""; await client.$fetch(redirectURI, { + headers: oAuthHeaders, onError(context) { callbackURL = context.response.headers.get("Location") || ""; authToken = context.response.headers.get("set-auth-token")!; diff --git a/packages/better-auth/src/plugins/sso/sso.test.ts b/packages/better-auth/src/plugins/sso/sso.test.ts index 9c675e56..5e98a81a 100644 --- a/packages/better-auth/src/plugins/sso/sso.test.ts +++ b/packages/better-auth/src/plugins/sso/sso.test.ts @@ -4,12 +4,23 @@ import { sso } from "."; import { OAuth2Server } from "oauth2-mock-server"; import { betterFetch } from "@better-fetch/fetch"; import { organization } from "../organization"; +import { createAuthClient } from "../../client"; +import { ssoClient } from "./client"; let server = new OAuth2Server(); describe("SSO", async () => { - const { auth, signInWithTestUser, customFetchImpl } = await getTestInstance({ - plugins: [sso(), organization()], + const { auth, signInWithTestUser, customFetchImpl, cookieSetter } = + await getTestInstance({ + plugins: [sso(), organization()], + }); + + const authClient = createAuthClient({ + plugins: [ssoClient()], + baseURL: "http://localhost:3000", + fetchOptions: { + customFetchImpl, + }, }); beforeAll(async () => { @@ -56,7 +67,7 @@ describe("SSO", async () => { }); if (!location) throw new Error("No redirect location found"); - + const newHeaders = new Headers(); let callbackURL = ""; await betterFetch(location, { method: "GET", @@ -64,10 +75,11 @@ describe("SSO", async () => { headers, onError(context) { callbackURL = context.response.headers.get("location") || ""; + cookieSetter(newHeaders)(context); }, }); - return callbackURL; + return { callbackURL, headers: newHeaders }; } it("should register a new SSO provider", async () => { @@ -141,58 +153,74 @@ describe("SSO", async () => { }); it("should sign in with SSO provider with email matching", async () => { - const res = await auth.api.signInSSO({ - body: { - email: "my-email@localhost.com", - callbackURL: "/dashboard", + const headers = new Headers(); + const res = await authClient.signIn.sso({ + email: "my-email@localhost.com", + callbackURL: "/dashboard", + fetchOptions: { + throw: true, + onSuccess: cookieSetter(headers), }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const headers = new Headers(); - const callbackURL = await simulateOAuthFlow(res.url, headers); + const { callbackURL } = await simulateOAuthFlow(res.url, headers); expect(callbackURL).toContain("/dashboard"); }); it("should sign in with SSO provider with domain", async () => { - const res = await auth.api.signInSSO({ - body: { - email: "my-email@test.com", - domain: "localhost.com", - callbackURL: "/dashboard", + const headers = new Headers(); + const res = await authClient.signIn.sso({ + email: "my-email@test.com", + domain: "localhost.com", + callbackURL: "/dashboard", + fetchOptions: { + throw: true, + onSuccess: cookieSetter(headers), }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const headers = new Headers(); - const callbackURL = await simulateOAuthFlow(res.url, headers); + const { callbackURL } = await simulateOAuthFlow(res.url, headers); expect(callbackURL).toContain("/dashboard"); }); it("should sign in with SSO provider with providerId", async () => { - const res = await auth.api.signInSSO({ - body: { - providerId: "test", - callbackURL: "/dashboard", + const headers = new Headers(); + const res = await authClient.signIn.sso({ + providerId: "test", + callbackURL: "/dashboard", + fetchOptions: { + throw: true, + onSuccess: cookieSetter(headers), }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const headers = new Headers(); - const callbackURL = await simulateOAuthFlow(res.url, headers); + + const { callbackURL } = await simulateOAuthFlow(res.url, headers); expect(callbackURL).toContain("/dashboard"); }); }); describe("SSO disable implicit sign in", async () => { - const { auth, signInWithTestUser, customFetchImpl } = await getTestInstance({ - plugins: [sso({ disableImplicitSignUp: true }), organization()], + const { auth, signInWithTestUser, customFetchImpl, cookieSetter } = + await getTestInstance({ + plugins: [sso({ disableImplicitSignUp: true }), organization()], + }); + + const authClient = createAuthClient({ + plugins: [ssoClient()], + baseURL: "http://localhost:3000", + fetchOptions: { + customFetchImpl, + }, }); beforeAll(async () => { @@ -239,7 +267,7 @@ describe("SSO disable implicit sign in", async () => { }); if (!location) throw new Error("No redirect location found"); - + const newHeaders = new Headers(headers); let callbackURL = ""; await betterFetch(location, { method: "GET", @@ -247,10 +275,11 @@ describe("SSO disable implicit sign in", async () => { headers, onError(context) { callbackURL = context.response.headers.get("location") || ""; + cookieSetter(newHeaders)(context); }, }); - return callbackURL; + return { callbackURL, headers: newHeaders }; } it("should register a new SSO provider", async () => { @@ -300,44 +329,57 @@ describe("SSO disable implicit sign in", async () => { }); it("should not create user with SSO provider when sign ups are disabled", async () => { - const res = await auth.api.signInSSO({ - body: { - email: "my-email@localhost.com", - callbackURL: "/dashboard", + const headers = new Headers(); + const res = await authClient.signIn.sso({ + email: "my-email@localhost.com", + callbackURL: "/dashboard", + fetchOptions: { + throw: true, + onSuccess: cookieSetter(headers), }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const headers = new Headers(); - const callbackURL = await simulateOAuthFlow(res.url, headers); + const { callbackURL } = await simulateOAuthFlow(res.url, headers); expect(callbackURL).toContain( "/api/auth/error/error?error=signup disabled", ); }); it("should create user with SSO provider when sign ups are disabled but sign up is requested", async () => { - const res = await auth.api.signInSSO({ - body: { - email: "my-email@localhost.com", - callbackURL: "/dashboard", - requestSignUp: true, + const headers = new Headers(); + const res = await authClient.signIn.sso({ + email: "my-email@localhost.com", + callbackURL: "/dashboard", + requestSignUp: true, + fetchOptions: { + throw: true, + onSuccess: cookieSetter(headers), }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const headers = new Headers(); - const callbackURL = await simulateOAuthFlow(res.url, headers); + const { callbackURL } = await simulateOAuthFlow(res.url, headers); expect(callbackURL).toContain("/dashboard"); }); }); describe("provisioning", async (ctx) => { - const { auth, signInWithTestUser, customFetchImpl } = await getTestInstance({ - plugins: [sso(), organization()], + const { auth, signInWithTestUser, customFetchImpl, cookieSetter } = + await getTestInstance({ + plugins: [sso(), organization()], + }); + + const authClient = createAuthClient({ + plugins: [ssoClient()], + baseURL: "http://localhost:3000", + fetchOptions: { + customFetchImpl, + }, }); beforeAll(async () => { @@ -367,12 +409,14 @@ describe("provisioning", async (ctx) => { if (!location) throw new Error("No redirect location found"); let callbackURL = ""; + const newHeaders = new Headers(); await betterFetch(location, { method: "GET", customFetchImpl: fetchImpl || customFetchImpl, headers, onError(context) { callbackURL = context.response.headers.get("location") || ""; + cookieSetter(newHeaders)(context); }, }); @@ -429,18 +473,20 @@ describe("provisioning", async (ctx) => { expect(provider).toMatchObject({ organizationId: organization?.id, }); - - const res = await auth.api.signInSSO({ - body: { - email: "my-email@localhost.com", - callbackURL: "/dashboard", + const newHeaders = new Headers(); + const res = await authClient.signIn.sso({ + email: "my-email@localhost.com", + callbackURL: "/dashboard", + fetchOptions: { + onSuccess: cookieSetter(newHeaders), + throw: true, }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const newHeaders = new Headers(); + const callbackURL = await simulateOAuthFlow(res.url, newHeaders); expect(callbackURL).toContain("/dashboard"); const org = await auth.api.getFullOrganization({ diff --git a/packages/better-auth/src/social-providers/social.test.ts b/packages/better-auth/src/social-providers/social.test.ts index 47eab250..44eb5420 100644 --- a/packages/better-auth/src/social-providers/social.test.ts +++ b/packages/better-auth/src/social-providers/social.test.ts @@ -181,216 +181,235 @@ describe("Social Providers", async (c) => { token.payload.name = "Test User"; token.payload.picture = "https://test.com/picture.png"; }); - let state = ""; const headers = new Headers(); - describe("signin", async () => { - async function simulateOAuthFlowRefresh( - authUrl: string, - headers: Headers, - fetchImpl?: (...args: any) => any, - ) { - let location: string | null = null; - await betterFetch(authUrl, { - method: "GET", - redirect: "manual", - onError(context) { - location = context.response.headers.get("location"); - }, - }); - if (!location) throw new Error("No redirect location found"); + async function simulateOAuthFlowRefresh( + authUrl: string, + headers: Headers, + fetchImpl?: (...args: any) => any, + ) { + let location: string | null = null; + await betterFetch(authUrl, { + method: "GET", + redirect: "manual", + onError(context) { + location = context.response.headers.get("location"); + }, + }); + if (!location) throw new Error("No redirect location found"); - const tokens = await refreshAccessToken({ - refreshToken: "mock-refresh-token", - options: { - clientId: "test-client-id", - clientKey: "test-client-key", - clientSecret: "test-client-secret", - }, - tokenEndpoint: `http://localhost:${port}/token`, - }); - return tokens; - } - it("should be able to add social providers", async () => { - const signInRes = await client.signIn.social({ - provider: "google", - callbackURL: "/callback", - newUserCallbackURL: "/welcome", - }); - expect(signInRes.data).toMatchObject({ - url: expect.stringContaining("google.com"), - redirect: true, - }); - state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; + const tokens = await refreshAccessToken({ + refreshToken: "mock-refresh-token", + options: { + clientId: "test-client-id", + clientKey: "test-client-key", + clientSecret: "test-client-secret", + }, + tokenEndpoint: `http://localhost:${port}/token`, + }); + return tokens; + } + it("should be able to add social providers", async () => { + const signInRes = await client.signIn.social({ + provider: "google", + callbackURL: "/callback", + newUserCallbackURL: "/welcome", + }); + expect(signInRes.data).toMatchObject({ + url: expect.stringContaining("google.com"), + redirect: true, + }); + }); + + it("should be able to sign in with social providers", async () => { + const headers = new Headers(); + const signInRes = await client.signIn.social({ + provider: "google", + callbackURL: "/callback", + newUserCallbackURL: "/welcome", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, + }); + const state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; + await client.$fetch("/callback/google", { + query: { + state, + code: "test", + }, + headers, + method: "GET", + onError(context) { + expect(context.response.status).toBe(302); + const location = context.response.headers.get("location"); + expect(location).toBeDefined(); + expect(location).toContain("/welcome"); + const cookies = parseSetCookieHeader( + context.response.headers.get("set-cookie") || "", + ); + expect(cookies.get("better-auth.session_token")?.value).toBeDefined(); + }, + }); + }); + + it("Should use callback URL if the user is already registered", async () => { + const headers = new Headers(); + const signInRes = await client.signIn.social({ + provider: "google", + callbackURL: "/callback", + newUserCallbackURL: "/welcome", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, + }); + const state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; + expect(signInRes.data).toMatchObject({ + url: expect.stringContaining("google.com"), + redirect: true, }); - it("should be able to sign in with social providers", async () => { - await client.$fetch("/callback/google", { - query: { - state, - code: "test", - }, - method: "GET", - onError(context) { - expect(context.response.status).toBe(302); - const location = context.response.headers.get("location"); - expect(location).toBeDefined(); - expect(location).toContain("/welcome"); - const cookies = parseSetCookieHeader( - context.response.headers.get("set-cookie") || "", - ); - expect(cookies.get("better-auth.session_token")?.value).toBeDefined(); - }, - }); + await client.$fetch("/callback/google", { + query: { + state, + code: "test", + }, + headers, + method: "GET", + onError(context) { + expect(context.response.status).toBe(302); + const location = context.response.headers.get("location"); + expect(location).toBeDefined(); + expect(location).toContain("/callback"); + const cookies = parseSetCookieHeader( + context.response.headers.get("set-cookie") || "", + ); + expect(cookies.get("better-auth.session_token")?.value).toBeDefined(); + }, }); + }); - it("Should use callback URL if the user is already registered", async () => { - const signInRes = await client.signIn.social({ - provider: "google", - callbackURL: "/callback", - newUserCallbackURL: "/welcome", - }); - expect(signInRes.data).toMatchObject({ - url: expect.stringContaining("google.com"), - redirect: true, - }); - state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; - - await client.$fetch("/callback/google", { - query: { - state, - code: "test", - }, - method: "GET", - onError(context) { - expect(context.response.status).toBe(302); - const location = context.response.headers.get("location"); - expect(location).toBeDefined(); - expect(location).toContain("/callback"); - const cookies = parseSetCookieHeader( - context.response.headers.get("set-cookie") || "", - ); - expect(cookies.get("better-auth.session_token")?.value).toBeDefined(); - }, - }); + it("should be able to map profile to user", async () => { + const headers = new Headers(); + const signInRes = await client.signIn.social({ + provider: "google", + callbackURL: "/callback", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); - - it("should be able to map profile to user", async () => { - const signInRes = await client.signIn.social({ - provider: "google", - callbackURL: "/callback", - }); - expect(signInRes.data).toMatchObject({ - url: expect.stringContaining("google.com"), - redirect: true, - }); - state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; - - const headers = new Headers(); - - const profile = await client.$fetch("/callback/google", { - query: { - state, - code: "test", - }, - method: "GET", - onError: (c) => { - //TODO: fix this - cookieSetter(headers)(c as any); - }, - }); - const session = await client.getSession({ - fetchOptions: { - headers, - }, - }); - expect(session.data?.user).toMatchObject({ - isOAuth: true, - firstName: "First", - lastName: "Last", - }); + expect(signInRes.data).toMatchObject({ + url: expect.stringContaining("google.com"), + redirect: true, }); - - it("should be protected from callback URL attacks", async () => { - const signInRes = await client.signIn.social( - { - provider: "google", - callbackURL: "https://evil.com/callback", - }, - { - onSuccess(context) { - const cookies = parseSetCookieHeader( - context.response.headers.get("set-cookie") || "", - ); - headers.set( - "cookie", - `better-auth.state=${cookies.get("better-auth.state")?.value}`, - ); - }, - }, - ); - - expect(signInRes.error?.status).toBe(403); - expect(signInRes.error?.message).toBe("Invalid callbackURL"); + const state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; + await client.$fetch("/callback/google", { + query: { + state, + code: "test", + }, + headers, + method: "GET", + onError: (c) => { + //TODO: fix this + cookieSetter(headers)(c as any); + }, }); - - it("should refresh the access token", async () => { - const signInRes = await client.signIn.social({ - provider: "google", - callbackURL: "/callback", - newUserCallbackURL: "/welcome", - }); - const headers = new Headers(); - expect(signInRes.data).toMatchObject({ - url: expect.stringContaining("google.com"), - redirect: true, - }); - state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; - await client.$fetch("/callback/google", { - query: { - state, - code: "test", - }, - method: "GET", - onError(context) { - expect(context.response.status).toBe(302); - const location = context.response.headers.get("location"); - expect(location).toBeDefined(); - expect(location).toContain("/callback"); - const cookies = parseSetCookieHeader( - context.response.headers.get("set-cookie") || "", - ); - cookieSetter(headers)(context as any); - expect(cookies.get("better-auth.session_token")?.value).toBeDefined(); - }, - }); - const accounts = await client.listAccounts({ - fetchOptions: { headers }, - }); - await client.$fetch("/refresh-token", { - body: { - accountId: "test-id", - providerId: "google", - }, + const session = await client.getSession({ + fetchOptions: { headers, - method: "POST", - onError(context) { - cookieSetter(headers)(context as any); - }, - }); + }, + }); + expect(session.data?.user).toMatchObject({ + isOAuth: true, + firstName: "First", + lastName: "Last", + }); + }); - const authUrl = signInRes.data?.url; - if (!authUrl) throw new Error("No auth url found"); - const mockEndpoint = authUrl.replace( - "https://accounts.google.com/o/oauth2/auth", - `http://localhost:${port}/authorize`, - ); - const result = await simulateOAuthFlowRefresh(mockEndpoint, headers); - const { accessToken, refreshToken } = result; - expect({ accessToken, refreshToken }).toEqual({ - accessToken: "new-access-token", - refreshToken: "new-refresh-token", - }); + it("should be protected from callback URL attacks", async () => { + const signInRes = await client.signIn.social( + { + provider: "google", + callbackURL: "https://evil.com/callback", + }, + { + onSuccess(context) { + const cookies = parseSetCookieHeader( + context.response.headers.get("set-cookie") || "", + ); + headers.set( + "cookie", + `better-auth.state=${cookies.get("better-auth.state")?.value}`, + ); + }, + }, + ); + + expect(signInRes.error?.status).toBe(403); + expect(signInRes.error?.message).toBe("Invalid callbackURL"); + }); + + it("should refresh the access token", async () => { + const headers = new Headers(); + const signInRes = await client.signIn.social({ + provider: "google", + callbackURL: "/callback", + newUserCallbackURL: "/welcome", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, + }); + + expect(signInRes.data).toMatchObject({ + url: expect.stringContaining("google.com"), + redirect: true, + }); + const state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; + await client.$fetch("/callback/google", { + query: { + state, + code: "test", + }, + headers, + method: "GET", + onError(context) { + expect(context.response.status).toBe(302); + const location = context.response.headers.get("location"); + expect(location).toBeDefined(); + expect(location).toContain("/callback"); + const cookies = parseSetCookieHeader( + context.response.headers.get("set-cookie") || "", + ); + cookieSetter(headers)(context as any); + expect(cookies.get("better-auth.session_token")?.value).toBeDefined(); + }, + }); + const accounts = await client.listAccounts({ + fetchOptions: { headers }, + }); + await client.$fetch("/refresh-token", { + body: { + accountId: "test-id", + providerId: "google", + }, + headers, + method: "POST", + onError(context) { + cookieSetter(headers)(context as any); + }, + }); + + const authUrl = signInRes.data?.url; + if (!authUrl) throw new Error("No auth url found"); + const mockEndpoint = authUrl.replace( + "https://accounts.google.com/o/oauth2/auth", + `http://localhost:${port}/authorize`, + ); + const result = await simulateOAuthFlowRefresh(mockEndpoint, headers); + const { accessToken, refreshToken } = result; + expect({ accessToken, refreshToken }).toEqual({ + accessToken: "new-access-token", + refreshToken: "new-refresh-token", }); }); }); @@ -454,7 +473,7 @@ describe("Redirect URI", async () => { describe("Disable implicit signup", async () => { it("Should not create user when implicit sign up is disabled", async () => { - const { client } = await getTestInstance({ + const { client, cookieSetter } = await getTestInstance({ socialProviders: { google: { clientId: "test", @@ -464,11 +483,14 @@ describe("Disable implicit signup", async () => { }, }, }); - + const headers = new Headers(); const signInRes = await client.signIn.social({ provider: "google", callbackURL: "/callback", newUserCallbackURL: "/welcome", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(signInRes.data).toMatchObject({ url: expect.stringContaining("google.com"), @@ -481,6 +503,7 @@ describe("Disable implicit signup", async () => { state, code: "test", }, + headers, method: "GET", onError(context) { expect(context.response.status).toBe(302); @@ -494,7 +517,7 @@ describe("Disable implicit signup", async () => { }); it("Should create user when implicit sign up is disabled but it is requested", async () => { - const { client } = await getTestInstance({ + const { client, cookieSetter } = await getTestInstance({ socialProviders: { google: { clientId: "test", @@ -505,11 +528,15 @@ describe("Disable implicit signup", async () => { }, }); + const headers = new Headers(); const signInRes = await client.signIn.social({ provider: "google", callbackURL: "/callback", newUserCallbackURL: "/welcome", requestSignUp: true, + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(signInRes.data).toMatchObject({ url: expect.stringContaining("google.com"), @@ -522,6 +549,7 @@ describe("Disable implicit signup", async () => { state, code: "test", }, + headers, method: "GET", onError(context) { expect(context.response.status).toBe(302); @@ -539,7 +567,8 @@ describe("Disable implicit signup", async () => { describe("Disable signup", async () => { it("Should not create user when sign up is disabled", async () => { - const { client } = await getTestInstance({ + const headers = new Headers(); + const { client, cookieSetter } = await getTestInstance({ socialProviders: { google: { clientId: "test", @@ -554,6 +583,9 @@ describe("Disable signup", async () => { provider: "google", callbackURL: "/callback", newUserCallbackURL: "/welcome", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(signInRes.data).toMatchObject({ url: expect.stringContaining("google.com"), @@ -566,6 +598,7 @@ describe("Disable signup", async () => { state, code: "test", }, + headers, method: "GET", onError(context) { expect(context.response.status).toBe(302); @@ -590,6 +623,7 @@ describe("signin", async () => { }); it("should allow user info override during sign in", async () => { let state = ""; + const headers = new Headers(); const { client, cookieSetter } = await getTestInstance({ database, socialProviders: { @@ -603,6 +637,9 @@ describe("signin", async () => { const signInRes = await client.signIn.social({ provider: "google", callbackURL: "/callback", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(signInRes.data).toMatchObject({ url: expect.stringContaining("google.com"), @@ -610,13 +647,12 @@ describe("signin", async () => { }); state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; - const headers = new Headers(); - await client.$fetch("/callback/google", { query: { state, code: "test", }, + headers, method: "GET", onError: (c) => { cookieSetter(headers)(c as any); @@ -634,6 +670,7 @@ describe("signin", async () => { }); it("should allow user info override during sign in", async () => { + const headers = new Headers(); let state = ""; const { client, cookieSetter } = await getTestInstance( { @@ -654,6 +691,9 @@ describe("signin", async () => { const signInRes = await client.signIn.social({ provider: "google", callbackURL: "/callback", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(signInRes.data).toMatchObject({ url: expect.stringContaining("google.com"), @@ -661,13 +701,12 @@ describe("signin", async () => { }); state = new URL(signInRes.data!.url!).searchParams.get("state") || ""; - const headers = new Headers(); - await client.$fetch("/callback/google", { query: { state, code: "test", }, + headers, method: "GET", onError: (c) => { cookieSetter(headers)(c as any); @@ -697,6 +736,9 @@ describe("updateAccountOnSignIn", async () => { const signInRes = await client.signIn.social({ provider: "google", callbackURL: "/callback", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(signInRes.data).toMatchObject({ url: expect.stringContaining("google.com"), @@ -710,6 +752,7 @@ describe("updateAccountOnSignIn", async () => { code: "test", }, method: "GET", + headers, onError(context) { cookieSetter(headers)(context as any); }, @@ -730,6 +773,9 @@ describe("updateAccountOnSignIn", async () => { const signInRes2 = await client.signIn.social({ provider: "google", callbackURL: "/callback", + fetchOptions: { + onSuccess: cookieSetter(headers), + }, }); expect(signInRes2.data).toMatchObject({ url: expect.stringContaining("google.com"), @@ -743,6 +789,7 @@ describe("updateAccountOnSignIn", async () => { state: state2, code: "test", }, + headers, method: "GET", onError(context) { cookieSetter(headers)(context as any); diff --git a/packages/better-auth/tsconfig.json b/packages/better-auth/tsconfig.json index 956d4856..a033d8b7 100644 --- a/packages/better-auth/tsconfig.json +++ b/packages/better-auth/tsconfig.json @@ -1,5 +1,4 @@ { - "extends": "../../tsconfig.json", "extends": "../../tsconfig.json", "compilerOptions": { "rootDir": "./src", @@ -7,6 +6,5 @@ "lib": ["esnext", "dom", "dom.iterable"], "types": ["node", "bun"] }, - "include": ["src"], - "references": [{ "path": "../core" }] + "include": ["src"] } diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index b479cf75..85e87006 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -5,10 +5,5 @@ "outDir": "./dist", "lib": ["esnext", "dom", "dom.iterable"] }, - "references": [ - { - "path": "../better-auth/tsconfig.json" - } - ], "include": ["src"] } diff --git a/packages/expo/tsconfig.json b/packages/expo/tsconfig.json index b479cf75..85e87006 100644 --- a/packages/expo/tsconfig.json +++ b/packages/expo/tsconfig.json @@ -5,10 +5,5 @@ "outDir": "./dist", "lib": ["esnext", "dom", "dom.iterable"] }, - "references": [ - { - "path": "../better-auth/tsconfig.json" - } - ], "include": ["src"] } diff --git a/packages/sso/src/oidc.test.ts b/packages/sso/src/oidc.test.ts index be693945..f4bd65b9 100644 --- a/packages/sso/src/oidc.test.ts +++ b/packages/sso/src/oidc.test.ts @@ -1,18 +1,28 @@ import { afterAll, beforeAll, describe, expect, it } from "vitest"; +import { getTestInstanceMemory as getTestInstance } from "better-auth/test"; import { sso } from "."; import { OAuth2Server } from "oauth2-mock-server"; import { betterFetch } from "@better-fetch/fetch"; -import { organization } from "better-auth/plugins/organization"; -import { getTestInstanceMemory } from "better-auth/test"; +import { organization } from "better-auth/plugins"; +import { createAuthClient } from "better-auth/client"; +import { ssoClient } from "./client"; let server = new OAuth2Server(); describe("SSO", async () => { - const { auth, signInWithTestUser, customFetchImpl } = - await getTestInstanceMemory({ + const { auth, signInWithTestUser, customFetchImpl, cookieSetter } = + await getTestInstance({ plugins: [sso(), organization()], }); + const authClient = createAuthClient({ + plugins: [ssoClient()], + baseURL: "http://localhost:3000", + fetchOptions: { + customFetchImpl, + }, + }); + beforeAll(async () => { await server.issuer.keys.generate("RS256"); server.issuer.on; @@ -57,7 +67,7 @@ describe("SSO", async () => { }); if (!location) throw new Error("No redirect location found"); - + const newHeaders = new Headers(); let callbackURL = ""; await betterFetch(location, { method: "GET", @@ -65,10 +75,11 @@ describe("SSO", async () => { headers, onError(context) { callbackURL = context.response.headers.get("location") || ""; + cookieSetter(newHeaders)(context); }, }); - return callbackURL; + return { callbackURL, headers: newHeaders }; } it("should register a new SSO provider", async () => { @@ -147,122 +158,76 @@ describe("SSO", async () => { }); it("should sign in with SSO provider with email matching", async () => { - const res = await auth.api.signInSSO({ - body: { - email: "my-email@localhost.com", - callbackURL: "/dashboard", + const headers = new Headers(); + const res = await authClient.signIn.sso({ + email: "my-email@localhost.com", + callbackURL: "/dashboard", + fetchOptions: { + throw: true, + onSuccess: cookieSetter(headers), }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const headers = new Headers(); - const callbackURL = await simulateOAuthFlow(res.url, headers); + const { callbackURL } = await simulateOAuthFlow(res.url, headers); expect(callbackURL).toContain("/dashboard"); }); it("should sign in with SSO provider with domain", async () => { - const res = await auth.api.signInSSO({ - body: { - email: "my-email@test.com", - domain: "localhost.com", - callbackURL: "/dashboard", + const headers = new Headers(); + const res = await authClient.signIn.sso({ + email: "my-email@test.com", + domain: "localhost.com", + callbackURL: "/dashboard", + fetchOptions: { + throw: true, + onSuccess: cookieSetter(headers), }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const headers = new Headers(); - const callbackURL = await simulateOAuthFlow(res.url, headers); + const { callbackURL } = await simulateOAuthFlow(res.url, headers); expect(callbackURL).toContain("/dashboard"); }); it("should sign in with SSO provider with providerId", async () => { - const res = await auth.api.signInSSO({ - body: { - providerId: "test", - callbackURL: "/dashboard", + const headers = new Headers(); + const res = await authClient.signIn.sso({ + providerId: "test", + callbackURL: "/dashboard", + fetchOptions: { + throw: true, + onSuccess: cookieSetter(headers), }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const headers = new Headers(); - const callbackURL = await simulateOAuthFlow(res.url, headers); + + const { callbackURL } = await simulateOAuthFlow(res.url, headers); expect(callbackURL).toContain("/dashboard"); }); }); -describe("SSO with defaultSSO array", async () => { - const { auth, signInWithTestUser, customFetchImpl } = - await getTestInstanceMemory({ - plugins: [ - sso({ - defaultSSO: [ - { - domain: "localhost.com", - providerId: "default-test", - oidcConfig: { - issuer: "http://localhost:8080", - clientId: "test", - clientSecret: "test", - authorizationEndpoint: "http://localhost:8080/authorize", - tokenEndpoint: "http://localhost:8080/token", - jwksEndpoint: "http://localhost:8080/jwks", - discoveryEndpoint: - "http://localhost:8080/.well-known/openid-configuration", - pkce: true, - mapping: { - id: "sub", - email: "email", - emailVerified: "email_verified", - name: "name", - image: "picture", - }, - }, - }, - ], - }), - organization(), - ], - }); - - it("should use default SSO provider from array when no provider found in database using providerId", async () => { - const res = await auth.api.signInSSO({ - body: { - providerId: "default-test", - callbackURL: "/dashboard", - }, - }); - expect(res.url).toContain("http://localhost:8080/authorize"); - expect(res.url).toContain( - "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Fdefault-test", - ); - }); - - it("should use default SSO provider from array when no provider found in database using domain fallback", async () => { - const res = await auth.api.signInSSO({ - body: { - email: "test@localhost.com", - callbackURL: "/dashboard", - }, - }); - expect(res.url).toContain("http://localhost:8080/authorize"); - expect(res.url).toContain( - "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Fdefault-test", - ); - }); -}); - describe("SSO disable implicit sign in", async () => { - const { auth, signInWithTestUser, customFetchImpl } = - await getTestInstanceMemory({ + const { auth, signInWithTestUser, customFetchImpl, cookieSetter } = + await getTestInstance({ plugins: [sso({ disableImplicitSignUp: true }), organization()], }); + const authClient = createAuthClient({ + plugins: [ssoClient()], + baseURL: "http://localhost:3000", + fetchOptions: { + customFetchImpl, + }, + }); + beforeAll(async () => { await server.issuer.keys.generate("RS256"); server.issuer.on; @@ -307,7 +272,7 @@ describe("SSO disable implicit sign in", async () => { }); if (!location) throw new Error("No redirect location found"); - + const newHeaders = new Headers(headers); let callbackURL = ""; await betterFetch(location, { method: "GET", @@ -315,10 +280,11 @@ describe("SSO disable implicit sign in", async () => { headers, onError(context) { callbackURL = context.response.headers.get("location") || ""; + cookieSetter(newHeaders)(context); }, }); - return callbackURL; + return { callbackURL, headers: newHeaders }; } it("should register a new SSO provider", async () => { @@ -369,150 +335,61 @@ describe("SSO disable implicit sign in", async () => { userId: expect.any(String), }); }); - it("should not allow creating a provider if limit is set to 0", async () => { - const { auth, signInWithTestUser } = await getTestInstanceMemory({ - plugins: [sso({ providersLimit: 0 })], - }); - const { headers } = await signInWithTestUser(); - await expect( - auth.api.registerSSOProvider({ - body: { - issuer: server.issuer.url!, - domain: "localhost.com", - oidcConfig: { - clientId: "test", - clientSecret: "test", - }, - providerId: "test", - }, - headers, - }), - ).rejects.toMatchObject({ - status: "FORBIDDEN", - body: { message: "SSO provider registration is disabled" }, - }); - }); - it("should not allow creating a provider if limit is reached", async () => { - const { auth, signInWithTestUser } = await getTestInstanceMemory({ - plugins: [sso({ providersLimit: 1 })], - }); - const { headers } = await signInWithTestUser(); - await auth.api.registerSSOProvider({ - body: { - issuer: server.issuer.url!, - domain: "localhost.com", - oidcConfig: { - clientId: "test", - clientSecret: "test", - }, - providerId: "test-1", - }, - headers, - }); - - await expect( - auth.api.registerSSOProvider({ - body: { - issuer: server.issuer.url!, - domain: "localhost.com", - oidcConfig: { - clientId: "test", - clientSecret: "test", - }, - providerId: "test-2", - }, - headers, - }), - ).rejects.toMatchObject({ - status: "FORBIDDEN", - body: { - message: "You have reached the maximum number of SSO providers", - }, - }); - }); - - it("should not allow creating a provider if limit from function is reached", async () => { - const { auth, signInWithTestUser } = await getTestInstanceMemory({ - plugins: [sso({ providersLimit: async () => 1 })], - }); - const { headers } = await signInWithTestUser(); - - await auth.api.registerSSOProvider({ - body: { - issuer: server.issuer.url!, - domain: "localhost.com", - oidcConfig: { - clientId: "test", - clientSecret: "test", - }, - providerId: "test-1", - }, - headers, - }); - - await expect( - auth.api.registerSSOProvider({ - body: { - issuer: server.issuer.url!, - domain: "localhost.com", - oidcConfig: { - clientId: "test", - clientSecret: "test", - }, - providerId: "test-2", - }, - headers, - }), - ).rejects.toMatchObject({ - status: "FORBIDDEN", - body: { - message: "You have reached the maximum number of SSO providers", - }, - }); - }); it("should not create user with SSO provider when sign ups are disabled", async () => { - const res = await auth.api.signInSSO({ - body: { - email: "my-email@localhost.com", - callbackURL: "/dashboard", + const headers = new Headers(); + const res = await authClient.signIn.sso({ + email: "my-email@localhost.com", + callbackURL: "/dashboard", + fetchOptions: { + throw: true, + onSuccess: cookieSetter(headers), }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const headers = new Headers(); - const callbackURL = await simulateOAuthFlow(res.url, headers); + const { callbackURL } = await simulateOAuthFlow(res.url, headers); expect(callbackURL).toContain( "/api/auth/error/error?error=signup disabled", ); }); it("should create user with SSO provider when sign ups are disabled but sign up is requested", async () => { - const res = await auth.api.signInSSO({ - body: { - email: "my-email@localhost.com", - callbackURL: "/dashboard", - requestSignUp: true, + const headers = new Headers(); + const res = await authClient.signIn.sso({ + email: "my-email@localhost.com", + callbackURL: "/dashboard", + requestSignUp: true, + fetchOptions: { + throw: true, + onSuccess: cookieSetter(headers), }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const headers = new Headers(); - const callbackURL = await simulateOAuthFlow(res.url, headers); + const { callbackURL } = await simulateOAuthFlow(res.url, headers); expect(callbackURL).toContain("/dashboard"); }); }); describe("provisioning", async (ctx) => { - const { auth, signInWithTestUser, customFetchImpl } = - await getTestInstanceMemory({ + const { auth, signInWithTestUser, customFetchImpl, cookieSetter } = + await getTestInstance({ plugins: [sso(), organization()], }); + const authClient = createAuthClient({ + plugins: [ssoClient()], + baseURL: "http://localhost:3000", + fetchOptions: { + customFetchImpl, + }, + }); + beforeAll(async () => { await server.issuer.keys.generate("RS256"); server.issuer.on; @@ -540,12 +417,14 @@ describe("provisioning", async (ctx) => { if (!location) throw new Error("No redirect location found"); let callbackURL = ""; + const newHeaders = new Headers(); await betterFetch(location, { method: "GET", customFetchImpl: fetchImpl || customFetchImpl, headers, onError(context) { callbackURL = context.response.headers.get("location") || ""; + cookieSetter(newHeaders)(context); }, }); @@ -605,18 +484,20 @@ describe("provisioning", async (ctx) => { expect(provider).toMatchObject({ organizationId: organization?.id, }); - - const res = await auth.api.signInSSO({ - body: { - email: "my-email@localhost.com", - callbackURL: "/dashboard", + const newHeaders = new Headers(); + const res = await authClient.signIn.sso({ + email: "my-email@localhost.com", + callbackURL: "/dashboard", + fetchOptions: { + onSuccess: cookieSetter(newHeaders), + throw: true, }, }); expect(res.url).toContain("http://localhost:8080/authorize"); expect(res.url).toContain( "redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fauth%2Fsso%2Fcallback%2Ftest", ); - const newHeaders = new Headers(); + const callbackURL = await simulateOAuthFlow(res.url, newHeaders); expect(callbackURL).toContain("/dashboard"); const org = await auth.api.getFullOrganization({ diff --git a/packages/sso/tsconfig.json b/packages/sso/tsconfig.json index b479cf75..85e87006 100644 --- a/packages/sso/tsconfig.json +++ b/packages/sso/tsconfig.json @@ -5,10 +5,5 @@ "outDir": "./dist", "lib": ["esnext", "dom", "dom.iterable"] }, - "references": [ - { - "path": "../better-auth/tsconfig.json" - } - ], "include": ["src"] } diff --git a/packages/stripe/tsconfig.json b/packages/stripe/tsconfig.json index b479cf75..85e87006 100644 --- a/packages/stripe/tsconfig.json +++ b/packages/stripe/tsconfig.json @@ -5,10 +5,5 @@ "outDir": "./dist", "lib": ["esnext", "dom", "dom.iterable"] }, - "references": [ - { - "path": "../better-auth/tsconfig.json" - } - ], "include": ["src"] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 457351c6..ebc34a14 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,8 +32,12 @@ importers: .: devDependencies: '@biomejs/biome': + specifier: 2.2.4 version: 2.2.4 + '@types/bun': + specifier: ^1.2.20 + version: 1.2.20(@types/react@19.1.12) '@types/node': specifier: ^24.4.0 version: 24.4.0 @@ -49,10 +53,160 @@ importers: typescript: specifier: 'catalog:' version: 5.9.2 + unbuild: + specifier: 'catalog:' + version: 3.6.1(sass@1.90.0)(typescript@5.9.2)(vue@3.5.19(typescript@5.9.2)) vitest: specifier: 'catalog:' version: 3.2.4(@types/debug@4.1.12)(@types/node@24.4.0)(happy-dom@18.0.1)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.4.0)(happy-dom@18.0.1)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + + demo/expo-example: + dependencies: + '@better-auth/expo': + specifier: workspace:* + version: link:../../packages/expo + '@expo/metro-runtime': + specifier: ^6.1.2 + version: 6.1.2(expo@54.0.10)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@expo/vector-icons': + specifier: ^15.0.2 + version: 15.0.2(expo-font@14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@nanostores/react': + specifier: ^0.8.4 + version: 0.8.4(nanostores@0.11.4)(react@19.1.0) + '@react-native-async-storage/async-storage': + specifier: 2.2.0 + version: 2.2.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0)) + '@react-navigation/native': + specifier: ^7.1.17 + version: 7.1.17(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@rn-primitives/avatar': + specifier: ^1.1.0 + version: 1.2.0(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@rn-primitives/separator': + specifier: ^1.1.0 + version: 1.2.0(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.0(react@19.1.0))(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@rn-primitives/slot': + specifier: ^1.1.0 + version: 1.2.0(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@rn-primitives/types': + specifier: ^1.1.0 + version: 1.2.0(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@types/better-sqlite3': + specifier: ^7.6.12 + version: 7.6.13 + babel-plugin-transform-import-meta: + specifier: ^2.2.1 + version: 2.3.3(@babel/core@7.28.4) + better-auth: + specifier: workspace:* + version: link:../../packages/better-auth + better-sqlite3: + specifier: ^11.6.0 + version: 11.10.0 + expo: + specifier: ~54.0.10 + version: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-constants: + specifier: ~18.0.9 + version: 18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0)) + expo-crypto: + specifier: ^15.0.7 + version: 15.0.7(expo@54.0.10) + expo-font: + specifier: ~14.0.8 + version: 14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-linking: + specifier: ~8.0.8 + version: 8.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-router: + specifier: ~6.0.8 + version: 6.0.8(e70a043d30323b1c09f8b80fafc503e8) + expo-secure-store: + specifier: ~15.0.7 + version: 15.0.7(expo@54.0.10) + expo-splash-screen: + specifier: ~31.0.10 + version: 31.0.10(expo@54.0.10) + expo-status-bar: + specifier: ~3.0.8 + version: 3.0.8(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-system-ui: + specifier: ~6.0.7 + version: 6.0.7(expo@54.0.10)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0)) + expo-web-browser: + specifier: ~15.0.7 + version: 15.0.7(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0)) + nanostores: + specifier: ^0.11.3 + version: 0.11.4 + nativewind: + specifier: ^4.1.23 + version: 4.2.1(fe0725e5c3570bb5436479ebd0cb613b) + pg: + specifier: ^8.13.1 + version: 8.16.3 + react: + specifier: ^19.1.0 + version: 19.1.0 + react-dom: + specifier: ^19.1.0 + version: 19.1.0(react@19.1.0) + react-native: + specifier: ~0.81.4 + version: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + react-native-css-interop: + specifier: ^0.2.1 + version: 0.2.1(fe0725e5c3570bb5436479ebd0cb613b) + react-native-gesture-handler: + specifier: ~2.28.0 + version: 2.28.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native-reanimated: + specifier: ~4.1.2 + version: 4.1.2(@babel/core@7.28.4)(react-native-worklets@0.5.1(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native-safe-area-context: + specifier: 5.6.1 + version: 5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native-screens: + specifier: 4.16.0 + version: 4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native-svg: + specifier: ^15.12.1 + version: 15.12.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native-web: + specifier: ~0.21.1 + version: 0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react-native-worklets: + specifier: ^0.5.1 + version: 0.5.1(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + tailwindcss: + specifier: ^3.4.16 + version: 3.4.17 + devDependencies: + '@babel/core': + specifier: ^7.26.0 + version: 7.28.4 + '@babel/preset-env': + specifier: ^7.26.0 + version: 7.28.3(@babel/core@7.28.4) + '@babel/runtime': + specifier: ^7.26.0 + version: 7.28.4 + '@types/babel__core': + specifier: ^7.20.5 + version: 7.20.5 + '@types/jest': + specifier: ^29.5.14 + version: 29.5.14 + '@types/react': + specifier: ^19.1.12 + version: 19.1.12 + '@types/react-test-renderer': + specifier: ^18.3.1 + version: 18.3.1 + typescript: + specifier: ^5.7.2 + version: 5.9.2 demo/nextjs: dependencies: @@ -172,8 +326,7 @@ importers: version: 0.5.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@react-three/fiber': specifier: ^8.18.0 - version: 8.18.0(1a7d56a84bc02e5ad1bde2480f0aeeca) - version: 8.18.0(1a7d56a84bc02e5ad1bde2480f0aeeca) + version: 8.18.0(@types/react@19.1.12)(expo-asset@12.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(expo-file-system@19.0.15(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1)))(expo@54.0.10)(react-dom@19.1.1(react@19.1.1))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)(three@0.180.0) '@tanstack/react-query': specifier: ^5.85.9 version: 5.85.9(react@19.1.1) @@ -276,9 +429,6 @@ importers: tailwind-merge: specifier: ^3.3.1 version: 3.3.1 - tailwindcss-animate: - specifier: ^1.0.7 - version: 1.0.7(tailwindcss@4.1.13) three: specifier: ^0.180.0 version: 0.180.0 @@ -316,6 +466,9 @@ importers: tailwindcss: specifier: ^4.1.13 version: 4.1.13 + tw-animate-css: + specifier: ^1.3.8 + version: 1.3.8 docs: dependencies: @@ -415,7 +568,6 @@ importers: '@vercel/analytics': specifier: ^1.5.0 version: 1.5.0(@remix-run/react@2.17.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@sveltejs/kit@2.37.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(svelte@5.38.2)(vue-router@4.5.1(vue@3.5.19(typescript@5.9.2)))(vue@3.5.19(typescript@5.9.2)) - version: 1.5.0(@remix-run/react@2.17.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@sveltejs/kit@2.37.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(svelte@5.38.2)(vue-router@4.5.1(vue@3.5.19(typescript@5.9.2)))(vue@3.5.19(typescript@5.9.2)) '@vercel/og': specifier: ^0.8.5 version: 0.8.5 @@ -452,7 +604,6 @@ importers: fumadocs-mdx: specifier: 11.8.3 version: 11.8.3(fumadocs-core@15.7.8(@oramacloud/client@2.1.4)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@types/react@19.1.12)(algoliasearch@5.36.0)(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - version: 11.8.3(fumadocs-core@15.7.8(@oramacloud/client@2.1.4)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@types/react@19.1.12)(algoliasearch@5.36.0)(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) fumadocs-typescript: specifier: ^4.0.6 version: 4.0.6(@types/react@19.1.12)(typescript@5.9.2) @@ -471,7 +622,6 @@ importers: jotai: specifier: ^2.13.1 version: 2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1) - version: 2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1) js-beautify: specifier: ^1.15.4 version: 1.15.4 @@ -581,7 +731,7 @@ importers: version: 0.15.3(solid-js@1.9.9) '@solidjs/start': specifier: ^1.1.7 - version: 1.1.7(46fc81c82030c1e0a82ad4eb0ca040d1) + version: 1.1.7(bb63ae43a873c57816c68cad9f1df353) better-auth: specifier: workspace:* version: link:../../../packages/better-auth @@ -593,7 +743,7 @@ importers: version: 1.9.9 vinxi: specifier: ^0.5.8 - version: 0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + version: 0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) devDependencies: '@better-auth/test-utils': specifier: workspace:* @@ -629,7 +779,6 @@ importers: vite: specifier: ^7.1.5 version: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - version: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) e2e/smoke: dependencies: @@ -652,7 +801,6 @@ importers: '@cloudflare/vitest-pool-workers': specifier: ^0.8.69 version: 0.8.69(@cloudflare/workers-types@4.20250903.0)(@vitest/runner@3.2.4)(@vitest/snapshot@3.2.4)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.4.0)(happy-dom@18.0.1)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - version: 0.8.69(@cloudflare/workers-types@4.20250903.0)(@vitest/runner@3.2.4)(@vitest/snapshot@3.2.4)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.4.0)(happy-dom@18.0.1)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@cloudflare/workers-types': specifier: ^4.20250903.0 version: 4.20250903.0 @@ -724,10 +872,9 @@ importers: '@sveltejs/kit': specifier: ^2.37.1 version: 2.37.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - version: 2.37.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@tanstack/react-start': specifier: ^1.131.3 - version: 1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + version: 1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@tanstack/start-server-core': specifier: ^1.131.36 version: 1.131.36 @@ -875,9 +1022,6 @@ importers: jiti: specifier: ^2.6.0 version: 2.6.0 - jiti: - specifier: ^2.6.0 - version: 2.6.0 open: specifier: ^10.2.0 version: 10.2.0 @@ -903,9 +1047,6 @@ importers: specifier: ^4.1.5 version: 4.1.5 devDependencies: - '@types/semver': - specifier: ^7.7.1 - version: 7.7.1 '@types/semver': specifier: ^7.7.1 version: 7.7.1 @@ -941,9 +1082,6 @@ importers: specifier: ^4.1.5 version: 4.1.5 devDependencies: - '@types/better-sqlite3': - specifier: ^7.6.13 - version: 7.6.13 '@types/better-sqlite3': specifier: ^7.6.13 version: 7.6.13 @@ -955,27 +1093,19 @@ importers: version: 12.2.0 expo-constants: specifier: ~17.1.7 - version: 17.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) - version: 17.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) + version: 17.1.7(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) expo-crypto: specifier: ^13.0.2 - version: 13.0.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)) - version: 13.0.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)) + version: 13.0.2(expo@54.0.10) expo-linking: specifier: ~7.1.7 - version: 7.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - version: 7.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + version: 7.1.7(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) expo-secure-store: specifier: ~14.2.3 - version: 14.2.3(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)) - version: 14.2.3(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)) + version: 14.2.3(expo@54.0.10) expo-web-browser: specifier: ~14.2.0 - version: 14.2.0(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) - react-native: - specifier: ~0.80.2 - version: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - version: 14.2.0(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) + version: 14.2.0(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) react-native: specifier: ~0.80.2 version: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) @@ -1876,6 +2006,10 @@ packages: resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.3': + resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.4': resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} @@ -1884,6 +2018,10 @@ packages: resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.28.4': resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} @@ -5733,9 +5871,6 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/semver@7.7.1': - resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/send@0.17.5': resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} @@ -5769,9 +5904,6 @@ packages: '@types/webidl-conversions@7.0.3': resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} - '@types/webxr@0.5.22': - resolution: {integrity: sha512-Vr6Stjv5jPRqH690f5I5GLjVk8GSsoQSYJ2FVd/3jJF7KaqfwPi3ehfBS96mlQ2kPCwZaX6U0rG2+NGHBKkA/A==} - '@types/webxr@0.5.23': resolution: {integrity: sha512-GPe4AsfOSpqWd3xA/0gwoKod13ChcfV67trvxaW2krUbgb9gxQjnCx8zGshzMl8LSHZlNH5gQ8LNScsDuc7nGQ==} @@ -8924,10 +9056,6 @@ packages: resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} hasBin: true - jiti@2.6.0: - resolution: {integrity: sha512-VXe6RjJkBPj0ohtqaO8vSWP3ZhAKo66fKrFNCll4BTcwljPLz03pCbaNKfzGP5MbrCYcbJ7v0nOYYwUzTEIdXQ==} - hasBin: true - joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} @@ -8937,8 +9065,6 @@ packages: jose@6.1.0: resolution: {integrity: sha512-TTQJyoEoKcC1lscpVDCSsVgYzUDg/0Bt3WE//WiTPK6uOCQC2KZS4MpugbMWt/zyjkopgZoXhZuCi00gLudfUA==} - jotai@2.14.0: - resolution: {integrity: sha512-JQkNkTnqjk1BlSUjHfXi+pGG/573bVN104gp6CymhrWDseZGDReTNniWrLhJ+zXbM6pH+82+UNJ2vwYQUkQMWQ==} jotai@2.14.0: resolution: {integrity: sha512-JQkNkTnqjk1BlSUjHfXi+pGG/573bVN104gp6CymhrWDseZGDReTNniWrLhJ+zXbM6pH+82+UNJ2vwYQUkQMWQ==} engines: {node: '>=12.20.0'} @@ -13327,7 +13453,7 @@ snapshots: '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.28.4 + '@babel/types': 7.28.2 '@babel/helper-compilation-targets@7.27.2': dependencies: @@ -13384,7 +13510,7 @@ snapshots: '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -13932,7 +14058,7 @@ snapshots: '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/types': 7.28.4 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -14146,6 +14272,18 @@ snapshots: '@babel/parser': 7.28.4 '@babel/types': 7.28.4 + '@babel/traverse@7.28.3': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + '@babel/traverse@7.28.4': dependencies: '@babel/code-frame': 7.27.1 @@ -14163,6 +14301,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.2': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -14243,7 +14386,6 @@ snapshots: optionalDependencies: workerd: 1.20250829.0 - '@cloudflare/vitest-pool-workers@0.8.69(@cloudflare/workers-types@4.20250903.0)(@vitest/runner@3.2.4)(@vitest/snapshot@3.2.4)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.4.0)(happy-dom@18.0.1)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@cloudflare/vitest-pool-workers@0.8.69(@cloudflare/workers-types@4.20250903.0)(@vitest/runner@3.2.4)(@vitest/snapshot@3.2.4)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.4.0)(happy-dom@18.0.1)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@vitest/runner': 3.2.4 @@ -14254,7 +14396,6 @@ snapshots: miniflare: 4.20250829.0 semver: 7.7.2 vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.4.0)(happy-dom@18.0.1)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.4.0)(happy-dom@18.0.1)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) wrangler: 4.33.2(@cloudflare/workers-types@4.20250903.0) zod: 4.1.5 transitivePeerDependencies: @@ -15076,18 +15217,13 @@ snapshots: postcss: 8.4.49 resolve-from: 5.0.0 optionalDependencies: - expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - '@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))': - dependencies: - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - optional: true - - '@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))': + '@expo/metro-runtime@6.1.2(expo@54.0.10)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)': dependencies: anser: 1.4.10 expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) @@ -15179,7 +15315,7 @@ snapshots: '@expo/json-file': 10.0.7 '@react-native/normalize-colors': 0.81.4 debug: 4.4.1 - expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) resolve-from: 5.0.0 semver: 7.7.2 xml2js: 0.6.0 @@ -15203,24 +15339,23 @@ snapshots: '@expo/sudo-prompt@9.3.2': {} - '@expo/vector-icons@14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)': - dependencies: - expo-font: 13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1) - react: 19.1.1 - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - - '@expo/vector-icons@14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)': - dependencies: - expo-font: 13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1) - react: 19.1.1 - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - - '@expo/vector-icons@14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1))(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)': + '@expo/vector-icons@15.0.2(expo-font@14.0.8(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)': dependencies: expo-font: 14.0.8(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) react: 19.1.1 - react-native: 0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) - optional: true + react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) + + '@expo/vector-icons@15.0.2(expo-font@14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)': + dependencies: + expo-font: 14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + + '@expo/vector-icons@15.0.2(expo-font@14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)': + dependencies: + expo-font: 14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react: 19.1.1 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) optional: true '@expo/ws-tunnel@1.0.6': {} @@ -17302,10 +17437,7 @@ snapshots: '@react-native/assets-registry@0.80.2': {} - '@react-native/assets-registry@0.81.0': - optional: true - '@react-native/assets-registry@0.81.0': - optional: true + '@react-native/assets-registry@0.81.4': {} '@react-native/babel-plugin-codegen@0.81.0(@babel/core@7.28.4)': dependencies: @@ -17323,8 +17455,6 @@ snapshots: transitivePeerDependencies: - '@babel/core' - supports-color - optional: true - optional: true '@react-native/babel-preset@0.81.0(@babel/core@7.28.4)': dependencies: @@ -17426,8 +17556,6 @@ snapshots: react-refresh: 0.14.2 transitivePeerDependencies: - supports-color - optional: true - optional: true '@react-native/codegen@0.80.2(@babel/core@7.28.4)': dependencies: @@ -17457,8 +17585,6 @@ snapshots: invariant: 2.2.4 nullthrows: 1.1.1 yargs: 17.7.2 - optional: true - optional: true '@react-native/community-cli-plugin@0.80.2(@react-native-community/cli@20.0.1(typescript@5.9.2))': dependencies: @@ -17493,35 +17619,10 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true - optional: true - - '@react-native/debugger-frontend@0.79.5': {} '@react-native/debugger-frontend@0.80.2': {} - '@react-native/debugger-frontend@0.81.0': - optional: true - '@react-native/debugger-frontend@0.81.0': - optional: true - - '@react-native/dev-middleware@0.79.5': - dependencies: - '@isaacs/ttlcache': 1.4.1 - '@react-native/debugger-frontend': 0.79.5 - chrome-launcher: 0.15.2 - chromium-edge-launcher: 0.2.0 - connect: 3.7.0 - debug: 2.6.9 - invariant: 2.2.4 - nullthrows: 1.1.1 - open: 7.4.2 - serve-static: 1.16.2 - ws: 6.2.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + '@react-native/debugger-frontend@0.81.4': {} '@react-native/dev-middleware@0.80.2': dependencies: @@ -17558,22 +17659,13 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true - optional: true '@react-native/gradle-plugin@0.80.2': {} - '@react-native/gradle-plugin@0.81.0': - optional: true - '@react-native/gradle-plugin@0.81.0': - optional: true + '@react-native/gradle-plugin@0.81.4': {} '@react-native/js-polyfills@0.80.2': {} - '@react-native/js-polyfills@0.81.0': - optional: true - '@react-native/js-polyfills@0.81.0': - optional: true '@react-native/js-polyfills@0.81.0': optional: true @@ -17588,7 +17680,6 @@ snapshots: transitivePeerDependencies: - supports-color optional: true - optional: true '@react-native/metro-config@0.81.0(@babel/core@7.28.4)': dependencies: @@ -17607,10 +17698,7 @@ snapshots: '@react-native/normalize-colors@0.80.2': {} - '@react-native/normalize-colors@0.81.0': - optional: true - '@react-native/normalize-colors@0.81.0': - optional: true + '@react-native/normalize-colors@0.81.4': {} '@react-native/virtualized-lists@0.80.2(@types/react@18.3.23)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@18.3.23)(react@19.1.1))(react@19.1.1)': dependencies: @@ -17630,28 +17718,26 @@ snapshots: optionalDependencies: '@types/react': 19.1.12 - '@react-native/virtualized-lists@0.80.2(@types/react@19.1.12)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)': + '@react-native/virtualized-lists@0.81.4(@types/react@19.1.12)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0)': + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + optionalDependencies: + '@types/react': 19.1.12 + + '@react-native/virtualized-lists@0.81.4(@types/react@19.1.12)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 19.1.1 - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - optionalDependencies: - '@types/react': 19.1.12 - - '@react-native/virtualized-lists@0.81.0(@types/react@19.1.12)(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)': - dependencies: - invariant: 2.2.4 - nullthrows: 1.1.1 - react: 19.1.1 - react-native: 0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) optionalDependencies: '@types/react': 19.1.12 optional: true - optional: true - '@react-three/fiber@8.18.0(1a7d56a84bc02e5ad1bde2480f0aeeca)': - '@react-three/fiber@8.18.0(1a7d56a84bc02e5ad1bde2480f0aeeca)': + '@react-navigation/bottom-tabs@7.4.7(@react-navigation/native@7.1.17(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-safe-area-context@5.6.1(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-screens@4.16.0(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)': dependencies: '@react-navigation/elements': 2.6.4(@react-navigation/native@7.1.17(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-safe-area-context@5.6.1(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) '@react-navigation/native': 7.1.17(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) @@ -17822,7 +17908,7 @@ snapshots: dependencies: '@babel/runtime': 7.28.4 '@types/react-reconciler': 0.26.7 - '@types/webxr': 0.5.22 + '@types/webxr': 0.5.23 base64-js: 1.5.1 buffer: 6.0.3 its-fine: 1.2.5(@types/react@19.1.12)(react@19.1.1) @@ -18317,11 +18403,11 @@ snapshots: dependencies: solid-js: 1.9.9 - '@solidjs/start@1.1.7(46fc81c82030c1e0a82ad4eb0ca040d1)': + '@solidjs/start@1.1.7(bb63ae43a873c57816c68cad9f1df353)': dependencies: '@tanstack/server-functions-plugin': 1.121.21(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@vinxi/server-components': 0.5.1(vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@vinxi/server-components': 0.5.1(vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) defu: 6.1.4 error-stack-parser: 2.1.4 html-to-image: 1.11.13 @@ -18332,7 +18418,7 @@ snapshots: source-map-js: 1.2.1 terracotta: 1.0.6(solid-js@1.9.9) tinyglobby: 0.2.14 - vinxi: 0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vinxi: 0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) vite-plugin-solid: 2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) transitivePeerDependencies: - '@testing-library/jest-dom' @@ -18350,13 +18436,11 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/kit@2.37.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@sveltejs/kit@2.37.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@standard-schema/spec': 1.0.0 '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -18370,24 +18454,18 @@ snapshots: sirv: 3.0.2 svelte: 5.38.2 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) debug: 4.4.1 svelte: 5.38.2 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) debug: 4.4.1 deepmerge: 4.3.1 @@ -18396,8 +18474,6 @@ snapshots: svelte: 5.38.2 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) vitefu: 1.1.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vitefu: 1.1.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) transitivePeerDependencies: - supports-color @@ -18477,22 +18553,19 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.13 - '@tanstack/directive-functions-plugin@1.121.21(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@tanstack/directive-functions-plugin@1.121.21(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.28.4 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.3 '@babel/types': 7.28.4 '@tanstack/router-utils': 1.131.2 babel-dead-code-elimination: 1.0.10 tiny-invariant: 1.3.3 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@tanstack/directive-functions-plugin@1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@tanstack/directive-functions-plugin@1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@babel/code-frame': 7.27.1 @@ -18503,7 +18576,6 @@ snapshots: babel-dead-code-elimination: 1.0.10 tiny-invariant: 1.3.3 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -18538,13 +18610,12 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/react-start-plugin@1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@tanstack/react-start-plugin@1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - '@tanstack/start-plugin-core': 1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@tanstack/start-plugin-core': 1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@vitejs/plugin-react': 5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) pathe: 2.0.3 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) zod: 4.1.5 transitivePeerDependencies: - '@azure/app-configuration' @@ -18590,21 +18661,17 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@tanstack/react-start@1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@tanstack/react-start@1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@tanstack/react-start-client': 1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@tanstack/react-start-plugin': 1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@tanstack/react-start-plugin': 1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@vitejs/plugin-react@5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@tanstack/react-start-server': 1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@tanstack/start-server-functions-client': 1.131.27(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@tanstack/start-server-functions-server': 1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@vitejs/plugin-react': 5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@tanstack/start-server-functions-client': 1.131.27(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@tanstack/start-server-functions-server': 1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@vitejs/plugin-react': 5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -18677,7 +18744,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.131.27(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@tanstack/router-plugin@1.131.27(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 @@ -18698,8 +18764,6 @@ snapshots: '@tanstack/react-router': 1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1) vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) vite-plugin-solid: 2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite-plugin-solid: 2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) transitivePeerDependencies: - supports-color @@ -18714,7 +18778,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/server-functions-plugin@1.121.21(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@tanstack/server-functions-plugin@1.121.21(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@babel/code-frame': 7.26.2 @@ -18725,14 +18788,12 @@ snapshots: '@babel/traverse': 7.28.3 '@babel/types': 7.28.2 '@tanstack/directive-functions-plugin': 1.121.21(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@tanstack/directive-functions-plugin': 1.121.21(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) babel-dead-code-elimination: 1.0.10 tiny-invariant: 1.3.3 transitivePeerDependencies: - supports-color - vite - '@tanstack/server-functions-plugin@1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@tanstack/server-functions-plugin@1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@babel/code-frame': 7.27.1 @@ -18743,7 +18804,6 @@ snapshots: '@babel/traverse': 7.28.4 '@babel/types': 7.28.4 '@tanstack/directive-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@tanstack/directive-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) babel-dead-code-elimination: 1.0.10 tiny-invariant: 1.3.3 transitivePeerDependencies: @@ -18766,7 +18826,7 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - '@tanstack/start-plugin-core@1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@tanstack/start-plugin-core@1.131.27(@libsql/client@0.15.14)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(better-sqlite3@12.2.0)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(@types/react@18.3.23)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@18.3.23))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0)(react@19.1.1))(mysql2@3.14.4)(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@babel/code-frame': 7.26.2 '@babel/core': 7.28.4 @@ -18774,10 +18834,8 @@ snapshots: '@tanstack/router-core': 1.131.27 '@tanstack/router-generator': 1.131.27 '@tanstack/router-plugin': 1.131.27(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@tanstack/router-plugin': 1.131.27(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@tanstack/router-utils': 1.131.2 '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@tanstack/start-server-core': 1.131.27 '@types/babel__code-frame': 7.0.6 '@types/babel__core': 7.20.5 @@ -18789,8 +18847,6 @@ snapshots: ufo: 1.6.1 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) vitefu: 1.1.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vitefu: 1.1.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) xmlbuilder2: 3.1.1 zod: 4.1.5 transitivePeerDependencies: @@ -18849,10 +18905,8 @@ snapshots: tiny-warning: 1.0.3 unctx: 2.4.1 - '@tanstack/start-server-functions-client@1.131.27(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@tanstack/start-server-functions-client@1.131.27(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@tanstack/start-server-functions-fetcher': 1.131.27 transitivePeerDependencies: @@ -18864,10 +18918,8 @@ snapshots: '@tanstack/router-core': 1.131.27 '@tanstack/start-client-core': 1.131.27 - '@tanstack/start-server-functions-server@1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@tanstack/start-server-functions-server@1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@tanstack/server-functions-plugin': 1.131.2(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) tiny-invariant: 1.3.3 transitivePeerDependencies: @@ -18941,6 +18993,12 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@types/bun@1.2.20(@types/react@19.1.12)': + dependencies: + bun-types: 1.2.20(@types/react@19.1.12) + transitivePeerDependencies: + - '@types/react' + '@types/canvas-confetti@1.9.0': {} '@types/chai@5.2.2': @@ -19093,7 +19151,7 @@ snapshots: '@types/react-reconciler@0.26.7': dependencies: - '@types/react': 18.3.23 + '@types/react': 19.1.12 '@types/react-reconciler@0.28.9(@types/react@19.1.12)': dependencies: @@ -19120,8 +19178,6 @@ snapshots: '@types/semver@7.7.1': {} - '@types/semver@7.7.1': {} - '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 @@ -19159,8 +19215,6 @@ snapshots: '@types/webidl-conversions@7.0.3': {} - '@types/webxr@0.5.22': {} - '@types/webxr@0.5.23': {} '@types/whatwg-mimetype@3.0.2': {} @@ -19242,12 +19296,10 @@ snapshots: '@urql/core': 5.2.0(graphql@16.11.0) wonka: 6.3.5 - '@vercel/analytics@1.5.0(@remix-run/react@2.17.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@sveltejs/kit@2.37.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(svelte@5.38.2)(vue-router@4.5.1(vue@3.5.19(typescript@5.9.2)))(vue@3.5.19(typescript@5.9.2))': '@vercel/analytics@1.5.0(@remix-run/react@2.17.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2))(@sveltejs/kit@2.37.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(svelte@5.38.2)(vue-router@4.5.1(vue@3.5.19(typescript@5.9.2)))(vue@3.5.19(typescript@5.9.2))': optionalDependencies: '@remix-run/react': 2.17.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(typescript@5.9.2) '@sveltejs/kit': 2.37.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@sveltejs/kit': 2.37.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)))(svelte@5.38.2)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) next: 15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0) react: 19.1.1 svelte: 5.38.2 @@ -19298,7 +19350,7 @@ snapshots: untun: 0.1.3 uqr: 0.1.2 - '@vinxi/plugin-directives@0.5.1(vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vinxi/plugin-directives@0.5.1(vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@babel/parser': 7.28.3 acorn: 8.15.0 @@ -19309,20 +19361,19 @@ snapshots: magicast: 0.2.11 recast: 0.23.11 tslib: 2.8.1 - vinxi: 0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vinxi: 0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - '@vinxi/server-components@0.5.1(vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': + '@vinxi/server-components@0.5.1(vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) acorn: 8.15.0 acorn-loose: 8.5.2 acorn-typescript: 1.4.13(acorn@8.15.0) astring: 1.9.0 magicast: 0.2.11 recast: 0.23.11 - vinxi: 0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) + vinxi: 0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - '@vitejs/plugin-react@5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@vitejs/plugin-react@5.0.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 @@ -19332,7 +19383,6 @@ snapshots: '@types/babel__core': 7.20.5 react-refresh: 0.17.0 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -19344,7 +19394,6 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': '@vitest/mocker@3.2.4(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 @@ -19352,7 +19401,6 @@ snapshots: magic-string: 0.30.19 optionalDependencies: vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -19385,7 +19433,6 @@ snapshots: '@vue/compiler-core@3.5.19': dependencies: - '@babel/parser': 7.28.4 '@babel/parser': 7.28.4 '@vue/shared': 3.5.19 entities: 4.5.0 @@ -19399,7 +19446,6 @@ snapshots: '@vue/compiler-sfc@3.5.19': dependencies: - '@babel/parser': 7.28.4 '@babel/parser': 7.28.4 '@vue/compiler-core': 3.5.19 '@vue/compiler-dom': 3.5.19 @@ -19674,7 +19720,6 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.26.0 browserslist: 4.26.0 caniuse-lite: 1.0.30001741 fraction.js: 4.3.7 @@ -19693,7 +19738,7 @@ snapshots: dependencies: '@babel/core': 7.28.4 '@babel/parser': 7.28.4 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.3 '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color @@ -19775,8 +19820,6 @@ snapshots: babel-plugin-syntax-hermes-parser@0.29.1: dependencies: hermes-parser: 0.29.1 - optional: true - optional: true babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.28.4): dependencies: @@ -19836,7 +19879,7 @@ snapshots: resolve-from: 5.0.0 optionalDependencies: '@babel/runtime': 7.28.4 - expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) transitivePeerDependencies: - '@babel/core' - supports-color @@ -20042,6 +20085,11 @@ snapshots: '@types/node': 24.4.0 '@types/react': 18.3.23 + bun-types@1.2.20(@types/react@19.1.12): + dependencies: + '@types/node': 24.4.0 + '@types/react': 19.1.12 + bun-types@1.2.21(@types/react@18.3.23): dependencies: '@types/node': 24.4.0 @@ -20069,7 +20117,6 @@ snapshots: exsolve: 1.0.7 giget: 2.0.0 jiti: 2.6.0 - jiti: 2.6.0 ohash: 2.0.11 pathe: 2.0.3 perfect-debounce: 1.0.0 @@ -20117,7 +20164,6 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.26.0 browserslist: 4.26.0 caniuse-lite: 1.0.30001741 lodash.memoize: 4.1.2 @@ -20582,7 +20628,6 @@ snapshots: cssnano-preset-default@7.0.7(postcss@8.5.6): dependencies: - browserslist: 4.26.0 browserslist: 4.26.0 css-declaration-sorter: 7.2.0(postcss@8.5.6) cssnano-utils: 5.0.1(postcss@8.5.6) @@ -21314,17 +21359,7 @@ snapshots: expect-type@1.2.1: {} - expo-asset@11.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): - dependencies: - '@expo/image-utils': 0.7.6 - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - expo-constants: 17.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) - react: 19.1.1 - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - transitivePeerDependencies: - - supports-color - - expo-asset@11.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 jest-get-type: 29.6.3 @@ -21341,43 +21376,56 @@ snapshots: react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) transitivePeerDependencies: - supports-color - optional: true - expo-constants@17.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): + expo-asset@12.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): dependencies: - '@expo/config': 11.0.13 - '@expo/env': 1.0.7 - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) + '@expo/image-utils': 0.8.7 + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-constants: 18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0)) + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + transitivePeerDependencies: + - supports-color + + expo-asset@12.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + '@expo/image-utils': 0.8.7 + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + expo-constants: 18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1)) + react: 19.1.1 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) transitivePeerDependencies: - supports-color optional: true - expo-constants@17.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): + expo-constants@17.1.7(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): dependencies: '@expo/config': 11.0.13 '@expo/env': 1.0.7 - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) transitivePeerDependencies: - supports-color - expo-constants@17.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1)): + expo-constants@18.0.9(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): dependencies: - '@expo/config': 11.0.13 - '@expo/env': 1.0.7 - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - react-native: 0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + '@expo/config': 12.0.9 + '@expo/env': 2.0.7 + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) transitivePeerDependencies: - supports-color - optional: true - expo-crypto@13.0.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)): + expo-constants@18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0)): dependencies: - base64-js: 1.5.1 - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + '@expo/config': 12.0.9 + '@expo/env': 2.0.7 + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + transitivePeerDependencies: + - supports-color - expo-file-system@18.1.11(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): + expo-constants@18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1)): dependencies: '@expo/config': 12.0.9 '@expo/env': 2.0.7 @@ -21386,26 +21434,16 @@ snapshots: transitivePeerDependencies: - supports-color optional: true - optional: true - expo-crypto@13.0.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)): - expo-crypto@13.0.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)): + expo-crypto@13.0.2(expo@54.0.10): dependencies: - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - react-native: 0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) - optional: true + base64-js: 1.5.1 + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - expo-file-system@18.1.11(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): + expo-crypto@15.0.7(expo@54.0.10): dependencies: - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - - expo-file-system@18.1.11(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): - dependencies: - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - fontfaceobserver: 2.3.0 - react: 19.1.1 + base64-js: 1.5.1 + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) expo-file-system@19.0.15(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): dependencies: @@ -21423,24 +21461,12 @@ snapshots: react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) optional: true - expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1): - dependencies: - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - fontfaceobserver: 2.3.0 - react: 19.1.1 - optional: true - - expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1): + expo-font@14.0.8(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): dependencies: expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) fontfaceobserver: 2.3.0 react: 19.1.1 - optional: true - - expo-keep-awake@14.1.4(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1): - dependencies: - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - react: 19.1.1 + react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) expo-font@14.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): dependencies: @@ -21454,15 +21480,10 @@ snapshots: expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) fontfaceobserver: 2.3.0 react: 19.1.1 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) optional: true - expo-keep-awake@14.1.4(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1): - dependencies: - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - react: 19.1.1 - optional: true - - expo-keep-awake@14.1.4(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1): + expo-keep-awake@15.0.7(expo@54.0.10)(react@19.1.0): dependencies: expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) react: 19.1.0 @@ -21471,18 +21492,13 @@ snapshots: dependencies: expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) react: 19.1.1 - optional: true - optional: true - expo-linking@7.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): - expo-linking@7.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + expo-linking@7.1.7(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): dependencies: - expo-constants: 17.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) - expo-constants: 17.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) + expo-constants: 17.1.7(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) invariant: 2.2.4 react: 19.1.1 react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) transitivePeerDependencies: - expo - supports-color @@ -21523,72 +21539,193 @@ snapshots: react: 19.1.1 react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - expo-secure-store@14.2.3(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)): - expo-secure-store@14.2.3(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1)): + expo-modules-core@3.0.18(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): dependencies: - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + invariant: 2.2.4 + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) - expo-web-browser@14.2.0(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): - expo-web-browser@14.2.0(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): + expo-modules-core@3.0.18(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): dependencies: - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - - expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): - dependencies: - '@babel/runtime': 7.28.4 - '@expo/cli': 0.24.20(graphql@16.11.0) - '@expo/config': 11.0.13 - '@expo/config-plugins': 10.1.2 - '@expo/fingerprint': 0.13.4 - '@expo/metro-config': 0.20.17 - '@expo/vector-icons': 14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - babel-preset-expo: 13.2.4(@babel/core@7.28.4) - expo-asset: 11.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - expo-constants: 17.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) - expo-file-system: 18.1.11(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) - expo-font: 13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1) - expo-keep-awake: 14.1.4(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1) - expo-modules-autolinking: 2.1.14 - expo-modules-core: 2.5.0 + invariant: 2.2.4 react: 19.1.1 - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + optional: true - expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + expo-router@6.0.8(6493cf4eb129bb0efe12db5814cb95cc): dependencies: - '@babel/runtime': 7.28.4 - '@expo/cli': 0.24.20(graphql@16.11.0) - '@expo/config': 11.0.13 - '@expo/config-plugins': 10.1.2 - '@expo/fingerprint': 0.13.4 - '@expo/metro-config': 0.20.17 - '@expo/vector-icons': 14.1.0(expo-font@13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - babel-preset-expo: 13.2.4(@babel/core@7.28.4) - expo-asset: 11.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - expo-constants: 17.1.7(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) - expo-file-system: 18.1.11(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) - expo-font: 13.3.2(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1) - expo-keep-awake: 14.1.4(expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react@19.1.1) - expo-modules-autolinking: 2.1.14 - expo-modules-core: 2.5.0 + '@expo/metro-runtime': 6.1.2(expo@54.0.10)(react-dom@19.1.1(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + '@expo/schema-utils': 0.1.7 + '@expo/server': 0.7.5 + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-navigation/bottom-tabs': 7.4.7(@react-navigation/native@7.1.17(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-safe-area-context@5.6.1(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-screens@4.16.0(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + '@react-navigation/native': 7.1.17(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + '@react-navigation/native-stack': 7.3.26(@react-navigation/native@7.1.17(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-safe-area-context@5.6.1(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-screens@4.16.0(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + client-only: 0.0.1 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + expo-constants: 17.1.7(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) + expo-linking: 7.1.7(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + fast-deep-equal: 3.1.3 + invariant: 2.2.4 + nanoid: 3.3.11 + query-string: 7.1.3 react: 19.1.1 + react-fast-compare: 3.2.2 react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - react-native-edge-to-edge: 1.6.0(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - whatwg-url-without-unicode: 8.0.0-3 + react-native-is-edge-to-edge: 1.2.1(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native-safe-area-context: 5.6.1(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native-screens: 4.16.0(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + semver: 7.6.3 + server-only: 0.0.1 + sf-symbols-typescript: 2.1.0 + shallowequal: 1.1.0 + use-latest-callback: 0.2.4(react@19.1.1) + vaul: 1.1.2(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) optionalDependencies: - '@expo/metro-runtime': 5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) + react-dom: 19.1.1(react@19.1.1) + react-native-gesture-handler: 2.28.0(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native-reanimated: 4.1.2(@babel/core@7.28.4)(react-native-worklets@0.6.0(@babel/core@7.28.4)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native-web: 0.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) transitivePeerDependencies: - - '@babel/core' - - babel-plugin-react-compiler - - bufferutil - - graphql + - '@react-native-masked-view/masked-view' + - '@types/react' + - '@types/react-dom' - supports-color - - utf-8-validate - expo: 53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + optional: true + + expo-router@6.0.8(b6c171666c32adf37b0749411192e587): + dependencies: + '@expo/metro-runtime': 6.1.2(expo@54.0.10)(react-dom@19.1.1(react@19.1.1))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + '@expo/schema-utils': 0.1.7 + '@expo/server': 0.7.5 + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.12)(react@19.1.1) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + '@react-navigation/bottom-tabs': 7.4.7(@react-navigation/native@7.1.17(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + '@react-navigation/native': 7.1.17(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + '@react-navigation/native-stack': 7.3.26(@react-navigation/native@7.1.17(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + client-only: 0.0.1 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + expo-constants: 18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1)) + expo-linking: 8.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + fast-deep-equal: 3.1.3 + invariant: 2.2.4 + nanoid: 3.3.11 + query-string: 7.1.3 + react: 19.1.1 + react-fast-compare: 3.2.2 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native-safe-area-context: 5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native-screens: 4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + semver: 7.6.3 + server-only: 0.0.1 + sf-symbols-typescript: 2.1.0 + shallowequal: 1.1.0 + use-latest-callback: 0.2.4(react@19.1.1) + vaul: 1.1.2(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + optionalDependencies: + react-dom: 19.1.1(react@19.1.1) + react-native-gesture-handler: 2.28.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native-reanimated: 4.1.2(@babel/core@7.28.4)(react-native-worklets@0.6.0(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native-web: 0.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' + - '@types/react' + - '@types/react-dom' + - supports-color + optional: true + + expo-router@6.0.8(e70a043d30323b1c09f8b80fafc503e8): + dependencies: + '@expo/metro-runtime': 6.1.2(expo@54.0.10)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@expo/schema-utils': 0.1.7 + '@expo/server': 0.7.5 + '@radix-ui/react-slot': 1.2.0(@types/react@19.1.12)(react@19.1.0) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@react-navigation/bottom-tabs': 7.4.7(@react-navigation/native@7.1.17(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@react-navigation/native': 7.1.17(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + '@react-navigation/native-stack': 7.3.26(@react-navigation/native@7.1.17(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + client-only: 0.0.1 + debug: 4.4.1 + escape-string-regexp: 4.0.0 + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + expo-constants: 18.0.9(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0)) + expo-linking: 8.0.8(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + fast-deep-equal: 3.1.3 + invariant: 2.2.4 + nanoid: 3.3.11 + query-string: 7.1.3 + react: 19.1.0 + react-fast-compare: 3.2.2 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native-safe-area-context: 5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native-screens: 4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + semver: 7.6.3 + server-only: 0.0.1 + sf-symbols-typescript: 2.1.0 + shallowequal: 1.1.0 + use-latest-callback: 0.2.4(react@19.1.0) + vaul: 1.1.2(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + optionalDependencies: + react-dom: 19.1.0(react@19.1.0) + react-native-gesture-handler: 2.28.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native-reanimated: 4.1.2(@babel/core@7.28.4)(react-native-worklets@0.5.1(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native-web: 0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + transitivePeerDependencies: + - '@react-native-masked-view/masked-view' + - '@types/react' + - '@types/react-dom' + - supports-color + + expo-secure-store@14.2.3(expo@54.0.10): + dependencies: + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + + expo-secure-store@15.0.7(expo@54.0.10): + dependencies: + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + + expo-splash-screen@31.0.10(expo@54.0.10): + dependencies: + '@expo/prebuild-config': 54.0.3(expo@54.0.10) + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + transitivePeerDependencies: + - supports-color + + expo-status-bar@3.0.8(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + + expo-system-ui@6.0.7(expo@54.0.10)(react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0)): + dependencies: + '@react-native/normalize-colors': 0.81.4 + debug: 4.4.1 + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + optionalDependencies: + react-native-web: 0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + transitivePeerDependencies: + - supports-color + + expo-web-browser@14.2.0(expo@54.0.10)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)): + dependencies: + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - expo@53.0.20(@babel/core@7.28.4)(@expo/metro-runtime@5.0.4(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)))(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + expo-web-browser@15.0.7(expo@54.0.10)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0)): + dependencies: + expo: 54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + + expo@54.0.10(@babel/core@7.28.4)(@expo/metro-runtime@6.1.2)(expo-router@6.0.8)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): dependencies: '@babel/runtime': 7.28.4 '@expo/cli': 54.0.8(expo-router@6.0.8)(expo@54.0.10)(graphql@16.11.0)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1)) @@ -21696,7 +21833,6 @@ snapshots: - supports-color - utf-8-validate optional: true - optional: true exponential-backoff@3.1.2: {} @@ -22030,7 +22166,6 @@ snapshots: unist-util-visit: 5.0.0 zod: 4.1.5 - fumadocs-mdx@11.8.3(fumadocs-core@15.7.8(@oramacloud/client@2.1.4)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@types/react@19.1.12)(algoliasearch@5.36.0)(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): fumadocs-mdx@11.8.3(fumadocs-core@15.7.8(@oramacloud/client@2.1.4)(@tanstack/react-router@1.131.27(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(@types/react@19.1.12)(algoliasearch@5.36.0)(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(next@15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0))(react@19.1.1)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): dependencies: '@mdx-js/mdx': 3.1.1 @@ -22053,7 +22188,6 @@ snapshots: next: 15.5.2(@babel/core@7.28.4)(@playwright/test@1.55.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(sass@1.90.0) react: 19.1.1 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -22808,8 +22942,6 @@ snapshots: jiti@2.6.0: {} - jiti@2.6.0: {} - joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 @@ -22823,7 +22955,6 @@ snapshots: jose@6.1.0: {} - jotai@2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1): jotai@2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1): optionalDependencies: '@babel/core': 7.28.4 @@ -23501,8 +23632,6 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - optional: true - optional: true metro-cache-key@0.82.5: dependencies: @@ -23511,8 +23640,6 @@ snapshots: metro-cache-key@0.83.1: dependencies: flow-enums-runtime: 0.0.6 - optional: true - optional: true metro-cache@0.82.5: dependencies: @@ -23531,8 +23658,6 @@ snapshots: metro-core: 0.83.1 transitivePeerDependencies: - supports-color - optional: true - optional: true metro-config@0.82.5: dependencies: @@ -23563,8 +23688,6 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true - optional: true metro-core@0.82.5: dependencies: @@ -23577,8 +23700,6 @@ snapshots: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 metro-resolver: 0.83.1 - optional: true - optional: true metro-file-map@0.82.5: dependencies: @@ -23607,21 +23728,16 @@ snapshots: walker: 1.0.8 transitivePeerDependencies: - supports-color - optional: true - optional: true metro-minify-terser@0.82.5: dependencies: flow-enums-runtime: 0.0.6 terser: 5.44.0 - terser: 5.44.0 metro-minify-terser@0.83.1: dependencies: flow-enums-runtime: 0.0.6 terser: 5.44.0 - optional: true - optional: true metro-resolver@0.82.5: dependencies: @@ -23630,12 +23746,9 @@ snapshots: metro-resolver@0.83.1: dependencies: flow-enums-runtime: 0.0.6 - optional: true - optional: true metro-runtime@0.82.5: dependencies: - '@babel/runtime': 7.28.4 '@babel/runtime': 7.28.4 flow-enums-runtime: 0.0.6 @@ -23643,16 +23756,12 @@ snapshots: dependencies: '@babel/runtime': 7.28.4 flow-enums-runtime: 0.0.6 - optional: true - optional: true metro-source-map@0.82.5: dependencies: - '@babel/traverse': 7.28.4 '@babel/traverse': 7.28.4 '@babel/traverse--for-generate-function-map': '@babel/traverse@7.28.4' '@babel/types': 7.28.4 - '@babel/types': 7.28.4 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.82.5 @@ -23677,8 +23786,6 @@ snapshots: vlq: 1.0.1 transitivePeerDependencies: - supports-color - optional: true - optional: true metro-symbolicate@0.82.5: dependencies: @@ -23701,8 +23808,6 @@ snapshots: vlq: 1.0.1 transitivePeerDependencies: - supports-color - optional: true - optional: true metro-transform-plugins@0.82.5: dependencies: @@ -23725,8 +23830,6 @@ snapshots: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - optional: true - optional: true metro-transform-worker@0.82.5: dependencies: @@ -23767,8 +23870,6 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true - optional: true metro@0.82.5: dependencies: @@ -23863,8 +23964,6 @@ snapshots: - bufferutil - supports-color - utf-8-validate - optional: true - optional: true micro-api-client@3.3.0: {} @@ -24708,8 +24807,6 @@ snapshots: ob1@0.83.1: dependencies: flow-enums-runtime: 0.0.6 - optional: true - optional: true object-assign@4.1.1: {} @@ -25078,7 +25175,6 @@ snapshots: postcss-colormin@7.0.3(postcss@8.5.6): dependencies: - browserslist: 4.26.0 browserslist: 4.26.0 caniuse-api: 3.0.0 colord: 2.9.3 @@ -25087,7 +25183,6 @@ snapshots: postcss-convert-values@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.26.0 browserslist: 4.26.0 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -25136,7 +25231,6 @@ snapshots: postcss-merge-rules@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.26.0 browserslist: 4.26.0 caniuse-api: 3.0.0 cssnano-utils: 5.0.1(postcss@8.5.6) @@ -25157,7 +25251,6 @@ snapshots: postcss-minify-params@7.0.3(postcss@8.5.6): dependencies: - browserslist: 4.26.0 browserslist: 4.26.0 cssnano-utils: 5.0.1(postcss@8.5.6) postcss: 8.5.6 @@ -25210,7 +25303,6 @@ snapshots: postcss-normalize-unicode@7.0.3(postcss@8.5.6): dependencies: - browserslist: 4.26.0 browserslist: 4.26.0 postcss: 8.5.6 postcss-value-parser: 4.2.0 @@ -25233,7 +25325,6 @@ snapshots: postcss-reduce-initial@7.0.3(postcss@8.5.6): dependencies: - browserslist: 4.26.0 browserslist: 4.26.0 caniuse-api: 3.0.0 postcss: 8.5.6 @@ -25556,12 +25647,7 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - react-native-edge-to-edge@1.6.0(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): - dependencies: - react: 19.1.1 - react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) - - react-native-edge-to-edge@1.6.0(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + react-native-css-interop@0.2.1(fe0725e5c3570bb5436479ebd0cb613b): dependencies: '@babel/helper-module-imports': 7.27.1 '@babel/traverse': 7.28.4 @@ -25585,7 +25671,211 @@ snapshots: hoist-non-react-statics: 3.3.2 invariant: 2.2.4 react: 19.1.1 - react-native: 0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) + optional: true + + react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + dependencies: + '@egjs/hammerjs': 2.0.17 + hoist-non-react-statics: 3.3.2 + invariant: 2.2.4 + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + + react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + '@egjs/hammerjs': 2.0.17 + hoist-non-react-statics: 3.3.2 + invariant: 2.2.4 + react: 19.1.1 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + optional: true + + react-native-is-edge-to-edge@1.2.1(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) + optional: true + + react-native-is-edge-to-edge@1.2.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + + react-native-is-edge-to-edge@1.2.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + optional: true + + react-native-reanimated@4.1.2(@babel/core@7.28.4)(react-native-worklets@0.5.1(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + dependencies: + '@babel/core': 7.28.4 + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + react-native-worklets: 0.5.1(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + semver: 7.7.2 + + react-native-reanimated@4.1.2(@babel/core@7.28.4)(react-native-worklets@0.6.0(@babel/core@7.28.4)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + '@babel/core': 7.28.4 + react: 19.1.1 + react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) + react-native-is-edge-to-edge: 1.2.1(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native-worklets: 0.6.0(@babel/core@7.28.4)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + semver: 7.7.2 + optional: true + + react-native-reanimated@4.1.2(@babel/core@7.28.4)(react-native-worklets@0.6.0(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1))(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + '@babel/core': 7.28.4 + react: 19.1.1 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + react-native-worklets: 0.6.0(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + semver: 7.7.2 + optional: true + + react-native-safe-area-context@5.6.1(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) + optional: true + + react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + + react-native-safe-area-context@5.6.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + optional: true + + react-native-screens@4.16.0(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + react-freeze: 1.0.4(react@19.1.1) + react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) + react-native-is-edge-to-edge: 1.2.1(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + warn-once: 0.1.1 + optional: true + + react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + dependencies: + react: 19.1.0 + react-freeze: 1.0.4(react@19.1.0) + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + warn-once: 0.1.1 + + react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + react: 19.1.1 + react-freeze: 1.0.4(react@19.1.1) + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + warn-once: 0.1.1 + optional: true + + react-native-svg@15.12.1(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + dependencies: + css-select: 5.2.2 + css-tree: 1.1.3 + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + warn-once: 0.1.1 + + react-native-web@0.21.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + '@babel/runtime': 7.28.4 + '@react-native/normalize-colors': 0.74.89 + fbjs: 3.0.5 + inline-style-prefixer: 7.0.1 + memoize-one: 6.0.0 + nullthrows: 1.1.1 + postcss-value-parser: 4.2.0 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + styleq: 0.1.3 + transitivePeerDependencies: + - encoding + + react-native-web@0.21.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + dependencies: + '@babel/runtime': 7.28.4 + '@react-native/normalize-colors': 0.74.89 + fbjs: 3.0.5 + inline-style-prefixer: 7.0.1 + memoize-one: 6.0.0 + nullthrows: 1.1.1 + postcss-value-parser: 4.2.0 + react: 19.1.1 + react-dom: 19.1.1(react@19.1.1) + styleq: 0.1.3 + transitivePeerDependencies: + - encoding + optional: true + + react-native-worklets@0.5.1(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0): + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + convert-source-map: 2.0.0 + react: 19.1.0 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + + react-native-worklets@0.6.0(@babel/core@7.28.4)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + convert-source-map: 2.0.0 + react: 19.1.1 + react-native: 0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1) + semver: 7.7.2 + transitivePeerDependencies: + - supports-color + optional: true + + react-native-worklets@0.6.0(@babel/core@7.28.4)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + convert-source-map: 2.0.0 + react: 19.1.1 + react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) + semver: 7.7.2 + transitivePeerDependencies: + - supports-color optional: true react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@18.3.23)(react@19.1.1): @@ -25609,40 +25899,6 @@ snapshots: flow-enums-runtime: 0.0.6 glob: 7.2.3 invariant: 2.2.4 - react: 19.1.0 - react-native: 0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0) - - react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1): - dependencies: - '@egjs/hammerjs': 2.0.17 - hoist-non-react-statics: 3.3.2 - invariant: 2.2.4 - react: 19.1.1 - react-native: 0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1) - optional: true - optional: true - - react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@18.3.23)(react@19.1.1): - dependencies: - '@jest/create-cache-key-function': 29.7.0 - '@react-native/assets-registry': 0.80.2 - '@react-native/codegen': 0.80.2(@babel/core@7.28.4) - '@react-native/community-cli-plugin': 0.80.2(@react-native-community/cli@20.0.1(typescript@5.9.2)) - '@react-native/gradle-plugin': 0.80.2 - '@react-native/js-polyfills': 0.80.2 - '@react-native/normalize-colors': 0.80.2 - '@react-native/virtualized-lists': 0.80.2(@types/react@19.1.12)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - abort-controller: 3.0.0 - anser: 1.4.10 - ansi-regex: 5.0.1 - babel-jest: 29.7.0(@babel/core@7.28.4) - babel-plugin-syntax-hermes-parser: 0.28.1 - base64-js: 1.5.1 - chalk: 4.1.2 - commander: 12.1.0 - flow-enums-runtime: 0.0.6 - glob: 7.2.3 - invariant: 2.2.4 jest-environment-node: 29.7.0 memoize-one: 5.2.1 metro-runtime: 0.82.5 @@ -25661,54 +25917,7 @@ snapshots: ws: 6.2.3 yargs: 17.7.2 optionalDependencies: - '@types/react': 19.1.12 - transitivePeerDependencies: - - '@babel/core' - - '@react-native-community/cli' - - bufferutil - - supports-color - - utf-8-validate - - react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1): - dependencies: - '@jest/create-cache-key-function': 29.7.0 - '@react-native/assets-registry': 0.80.2 - '@react-native/codegen': 0.80.2(@babel/core@7.28.4) - '@react-native/community-cli-plugin': 0.80.2(@react-native-community/cli@20.0.1(typescript@5.9.2)) - '@react-native/gradle-plugin': 0.80.2 - '@react-native/js-polyfills': 0.80.2 - '@react-native/normalize-colors': 0.80.2 - '@react-native/virtualized-lists': 0.80.2(@types/react@19.1.12)(react-native@0.80.2(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) - abort-controller: 3.0.0 - anser: 1.4.10 - ansi-regex: 5.0.1 - babel-jest: 29.7.0(@babel/core@7.28.4) - babel-plugin-syntax-hermes-parser: 0.28.1 - base64-js: 1.5.1 - chalk: 4.1.2 - commander: 12.1.0 - flow-enums-runtime: 0.0.6 - glob: 7.2.3 - invariant: 2.2.4 - jest-environment-node: 29.7.0 - memoize-one: 5.2.1 - metro-runtime: 0.82.5 - metro-source-map: 0.82.5 - nullthrows: 1.1.1 - pretty-format: 29.7.0 - promise: 8.3.0 - react: 19.1.1 - react-devtools-core: 6.1.5 - react-refresh: 0.14.2 - regenerator-runtime: 0.13.11 - scheduler: 0.26.0 - semver: 7.7.2 - stacktrace-parser: 0.1.11 - whatwg-fetch: 3.6.20 - ws: 6.2.3 - yargs: 17.7.2 - optionalDependencies: - '@types/react': 19.1.12 + '@types/react': 18.3.23 transitivePeerDependencies: - '@babel/core' - '@react-native-community/cli' @@ -25763,16 +25972,63 @@ snapshots: - supports-color - utf-8-validate - react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1): + react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0): dependencies: '@jest/create-cache-key-function': 29.7.0 - '@react-native/assets-registry': 0.81.0 - '@react-native/codegen': 0.81.0(@babel/core@7.28.4) - '@react-native/community-cli-plugin': 0.81.0(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4)) - '@react-native/gradle-plugin': 0.81.0 - '@react-native/js-polyfills': 0.81.0 - '@react-native/normalize-colors': 0.81.0 - '@react-native/virtualized-lists': 0.81.0(@types/react@19.1.12)(react-native@0.81.0(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) + '@react-native/assets-registry': 0.81.4 + '@react-native/codegen': 0.81.4(@babel/core@7.28.4) + '@react-native/community-cli-plugin': 0.81.4(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4)) + '@react-native/gradle-plugin': 0.81.4 + '@react-native/js-polyfills': 0.81.4 + '@react-native/normalize-colors': 0.81.4 + '@react-native/virtualized-lists': 0.81.4(@types/react@19.1.12)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.0))(react@19.1.0) + abort-controller: 3.0.0 + anser: 1.4.10 + ansi-regex: 5.0.1 + babel-jest: 29.7.0(@babel/core@7.28.4) + babel-plugin-syntax-hermes-parser: 0.29.1 + base64-js: 1.5.1 + commander: 12.1.0 + flow-enums-runtime: 0.0.6 + glob: 7.2.3 + invariant: 2.2.4 + jest-environment-node: 29.7.0 + memoize-one: 5.2.1 + metro-runtime: 0.83.1 + metro-source-map: 0.83.1 + nullthrows: 1.1.1 + pretty-format: 29.7.0 + promise: 8.3.0 + react: 19.1.0 + react-devtools-core: 6.1.5 + react-refresh: 0.14.2 + regenerator-runtime: 0.13.11 + scheduler: 0.26.0 + semver: 7.7.2 + stacktrace-parser: 0.1.11 + whatwg-fetch: 3.6.20 + ws: 6.2.3 + yargs: 17.7.2 + optionalDependencies: + '@types/react': 19.1.12 + transitivePeerDependencies: + - '@babel/core' + - '@react-native-community/cli' + - '@react-native/metro-config' + - bufferutil + - supports-color + - utf-8-validate + + react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1): + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@react-native/assets-registry': 0.81.4 + '@react-native/codegen': 0.81.4(@babel/core@7.28.4) + '@react-native/community-cli-plugin': 0.81.4(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4)) + '@react-native/gradle-plugin': 0.81.4 + '@react-native/js-polyfills': 0.81.4 + '@react-native/normalize-colors': 0.81.4 + '@react-native/virtualized-lists': 0.81.4(@types/react@19.1.12)(react-native@0.81.4(@babel/core@7.28.4)(@react-native-community/cli@20.0.1(typescript@5.9.2))(@react-native/metro-config@0.81.0(@babel/core@7.28.4))(@types/react@19.1.12)(react@19.1.1))(react@19.1.1) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -25810,7 +26066,6 @@ snapshots: - supports-color - utf-8-validate optional: true - optional: true react-promise-suspense@0.3.4: dependencies: @@ -26869,7 +27124,6 @@ snapshots: stylehacks@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.26.0 browserslist: 4.26.0 postcss: 8.5.6 postcss-selector-parser: 7.1.0 @@ -27250,7 +27504,6 @@ snapshots: fix-dts-default-cjs-exports: 1.0.1 hookable: 5.5.3 jiti: 2.6.0 - jiti: 2.6.0 magic-string: 0.30.19 mkdist: 2.3.0(sass@1.90.0)(typescript@5.9.2)(vue@3.5.19(typescript@5.9.2)) mlly: 1.7.4 @@ -27452,7 +27705,6 @@ snapshots: citty: 0.1.6 defu: 6.1.4 jiti: 2.6.0 - jiti: 2.6.0 knitwork: 1.2.0 scule: 1.3.0 @@ -27590,7 +27842,7 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): + vinxi@0.5.8(@azure/identity@4.11.1)(@libsql/client@0.15.14)(@netlify/blobs@10.0.8)(@types/node@24.4.0)(better-sqlite3@12.2.0)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(ioredis@5.7.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(mysql2@3.14.4)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: '@babel/core': 7.28.4 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) @@ -27623,7 +27875,7 @@ snapshots: ufo: 1.6.1 unctx: 2.4.1 unenv: 1.10.0 - unstorage: 1.16.1(@azure/identity@4.11.1)(@netlify/blobs@10.0.8)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(prisma@5.22.0))(mysql2@3.14.4))(ioredis@5.7.0) + unstorage: 1.16.1(@azure/identity@4.11.1)(@netlify/blobs@10.0.8)(db0@0.3.2(@libsql/client@0.15.14)(better-sqlite3@12.2.0)(drizzle-orm@0.44.5(@cloudflare/workers-types@4.20250903.0)(@libsql/client@0.15.14)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.13)(@types/pg@8.15.5)(better-sqlite3@12.2.0)(bun-types@1.2.21(@types/react@19.1.12))(kysely@0.28.5)(mysql2@3.14.4)(pg@8.16.3)(postgres@3.4.7)(prisma@5.22.0))(mysql2@3.14.4))(ioredis@5.7.0) vite: 6.3.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) zod: 3.25.76 transitivePeerDependencies: @@ -27668,7 +27920,6 @@ snapshots: - xml2js - yaml - vite-node@3.2.4(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): vite-node@3.2.4(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: cac: 6.7.14 @@ -27676,7 +27927,6 @@ snapshots: es-module-lexer: 1.7.0 pathe: 2.0.3 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -27691,7 +27941,6 @@ snapshots: - tsx - yaml - vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): vite-plugin-solid@2.11.8(solid-js@1.9.9)(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): dependencies: '@babel/core': 7.28.4 @@ -27702,12 +27951,9 @@ snapshots: solid-refresh: 0.6.3(solid-js@1.9.9) vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) vitefu: 1.1.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vitefu: 1.1.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) transitivePeerDependencies: - supports-color - vite@6.3.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): vite@6.3.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.9 @@ -27720,7 +27966,6 @@ snapshots: '@types/node': 24.4.0 fsevents: 2.3.3 jiti: 2.6.0 - jiti: 2.6.0 less: 4.4.1 lightningcss: 1.30.1 sass: 1.90.0 @@ -27728,7 +27973,6 @@ snapshots: tsx: 4.20.5 yaml: 2.8.1 - vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: esbuild: 0.25.9 @@ -27741,7 +27985,6 @@ snapshots: '@types/node': 24.4.0 fsevents: 2.3.3 jiti: 2.6.0 - jiti: 2.6.0 less: 4.4.1 lightningcss: 1.30.1 sass: 1.90.0 @@ -27749,19 +27992,15 @@ snapshots: tsx: 4.20.5 yaml: 2.8.1 - vitefu@1.1.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): vitefu@1.1.1(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)): optionalDependencies: vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.4.0)(happy-dom@18.0.1)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.4.0)(happy-dom@18.0.1)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) - '@vitest/mocker': 3.2.4(vite@7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -27771,7 +28010,6 @@ snapshots: debug: 4.4.1 expect-type: 1.2.1 magic-string: 0.30.19 - magic-string: 0.30.19 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.9.0 @@ -27782,8 +28020,6 @@ snapshots: tinyrainbow: 2.0.0 vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) vite-node: 3.2.4(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite: 7.1.5(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@24.4.0)(jiti@2.6.0)(less@4.4.1)(lightningcss@1.30.1)(sass@1.90.0)(terser@5.44.0)(tsx@4.20.5)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 diff --git a/tsconfig.json b/tsconfig.json index f0978138..e6050b66 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,83 +2,18 @@ "compilerOptions": { "strict": true, "target": "esnext", + "module": "esnext", + "moduleResolution": "bundler", "downlevelIteration": true, "baseUrl": ".", - "strict": true, - "target": "esnext", - "downlevelIteration": true, "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "module": "esnext", - "moduleResolution": "bundler", "skipLibCheck": true, "verbatimModuleSyntax": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noUnusedLocals": false, - "noUnusedParameters": false, "noUncheckedIndexedAccess": true, "exactOptionalPropertyTypes": false, - "declaration": true, - "emitDeclarationOnly": true, - "composite": true, "incremental": true, "noErrorTruncation": true, - "types": ["node"] + "types": ["node", "bun"] }, - "references": [ - { - "path": "./packages/better-auth" - }, - { - "path": "./packages/cli" - }, - { - "path": "./packages/expo" - }, - { - "path": "./packages/sso" - }, - { - "path": "./packages/stripe" - } - ], - "files": [], - "include": [], - "exactOptionalPropertyTypes": false, - "declaration": true, - "emitDeclarationOnly": true, - "composite": true, - "incremental": true, - "noErrorTruncation": true, - "types": ["node"], - "paths": { - "better-auth": ["./packages/better-auth/src"], - "better-auth/*": ["./packages/better-auth/src/*"] - } - }, - "references": [ - { - "path": "./packages/better-auth" - }, - { - "path": "./packages/cli" - }, - { - "path": "./packages/cli/tsconfig.test.json" - }, - { - "path": "./packages/expo" - }, - { - "path": "./packages/sso" - }, - { - "path": "./packages/stripe" - } - ], - "files": [], - "include": [], - "exclude": ["**/dist/**", "**/node_modules/**", "**/examples/**"] + "exclude": ["**/dist/**", "**/node_modules/**"] }