diff --git a/README.md b/README.md index 945d10b2..f0a48236 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,6 @@ ---- -title: Introduction -description: Introduction to Better Auth. ---- +# Better Auth -Better Auth is a type-safe, framework-agnostic authentication library for TypeScript. It provides a comprehensive set of features out of the box and includes a plugin ecosystem that simplifies adding advanced functionalities with minimal code. Whether you need 2FA, multi-tenant support, or other complex features. It lets you focus on building your app instead of reinventing the wheel. +Framework-agnostic, Comprehensive, extensible authentication library for TypeScript. ## Getting Started diff --git a/examples/next-js/src/app/api/[...auth]/route.ts b/examples/next-js/src/app/api/[...auth]/route.ts index 7cbe91bb..0227d000 100644 --- a/examples/next-js/src/app/api/[...auth]/route.ts +++ b/examples/next-js/src/app/api/[...auth]/route.ts @@ -1,4 +1,4 @@ -import { auth } from "@/lib/auth"; +import { auth } from "@/lib/_auth"; import { toNextJsHandler } from "better-auth/next-js"; export const { POST, GET } = toNextJsHandler(auth); diff --git a/examples/next-js/src/app/page.tsx b/examples/next-js/src/app/page.tsx index 267d1bf2..3b9e93d2 100644 --- a/examples/next-js/src/app/page.tsx +++ b/examples/next-js/src/app/page.tsx @@ -1,6 +1,6 @@ import { Organization } from "@/components/organization"; import UserCard from "@/components/user-card"; -import { auth } from "@/lib/auth"; +import { auth } from "@/lib/_auth"; import { headers } from "next/headers"; export default async function TypewriterEffectSmoothDemo() { diff --git a/examples/next-js/src/lib/auth.ts b/examples/next-js/src/lib/_auth.ts similarity index 85% rename from examples/next-js/src/lib/auth.ts rename to examples/next-js/src/lib/_auth.ts index 67653c76..30f1dfe1 100644 --- a/examples/next-js/src/lib/auth.ts +++ b/examples/next-js/src/lib/_auth.ts @@ -1,6 +1,12 @@ import { betterAuth } from "better-auth"; -import { organization, passkey, twoFactor } from "better-auth/plugins"; +import { + organization, + passkey, + twoFactor, + username, +} from "better-auth/plugins"; import { github, google } from "better-auth/social-providers"; +import { ac, admin } from "./permissions"; export const auth = betterAuth({ basePath: "/api/auth", @@ -30,6 +36,10 @@ export const auth = betterAuth({ async sendInvitationEmail(invitation, email) { console.log({ invitation, email }); }, + ac: ac, + roles: { + admin: admin, + }, }), twoFactor({ issuer: "BetterAuth", @@ -44,5 +54,6 @@ export const auth = betterAuth({ rpName: "BetterAuth", origin: "http://localhost:3000", }), + username(), ], }); diff --git a/examples/next-js/src/lib/auth-client.ts b/examples/next-js/src/lib/auth-client.ts index 22b18320..1a08c501 100644 --- a/examples/next-js/src/lib/auth-client.ts +++ b/examples/next-js/src/lib/auth-client.ts @@ -3,17 +3,22 @@ import { organizationClient, twoFactorClient, passkeyClient, + usernameClient, } from "better-auth/client/plugins"; +import { ac } from "./permissions"; export const authClient = createAuthClient({ fetchOptions: { baseURL: "http://localhost:3000/api/auth", }, plugins: [ - organizationClient(), + organizationClient({ + ac: ac, + }), twoFactorClient({ twoFactorPage: "/two-factor", }), passkeyClient(), + usernameClient(), ], }); diff --git a/examples/next-js/src/lib/auth.config.ts b/examples/next-js/src/lib/auth.config.ts new file mode 100644 index 00000000..9cc78848 --- /dev/null +++ b/examples/next-js/src/lib/auth.config.ts @@ -0,0 +1,20 @@ +import { betterAuth } from "better-auth"; +import { twoFactor, organization, passkey } from "better-auth/plugins"; + +export const auth = betterAuth({ + database: { + provider: "sqlite", + url: "./prisma/sqlite.db", + }, + plugins: [ + twoFactor({ + issuer: "my app", + }), + organization(), + passkey({ + rpID: "localhost", + rpName: "BetterAuth", + origin: "http://localhost:3000", + }), + ], +}); diff --git a/examples/next-js/src/lib/permissions.ts b/examples/next-js/src/lib/permissions.ts index ea3fcaa4..34bf82ca 100644 --- a/examples/next-js/src/lib/permissions.ts +++ b/examples/next-js/src/lib/permissions.ts @@ -1,29 +1,19 @@ -import { organization } from "better-auth/plugins"; -import { createAccessControl, AccessControl } from "better-auth/plugins/access"; +import { createAccessControl } from "better-auth/plugins/access"; const statement = { - project: ["create"], -}; + project: ["create", "share", "delete"], +} as const; -const ac = createAccessControl(statement); +export const ac = createAccessControl(statement); -const member = ac.newRole({ +export const member = ac.newRole({ project: ["create"], }); -const owner = ac.newRole({ +export const owner = ac.newRole({ project: ["create", "share", "delete"], }); -const admin = ac.newRole({ - project: ["create", "share", "delete"], -}); - -organization({ - ac, - roles: { - member, - owner, - admin, - }, +export const admin = ac.newRole({ + project: ["create", "share"], }); diff --git a/examples/next-js/src/lib/types.ts b/examples/next-js/src/lib/types.ts index d769534a..6b2ea06a 100644 --- a/examples/next-js/src/lib/types.ts +++ b/examples/next-js/src/lib/types.ts @@ -1,5 +1,5 @@ import type { InferSession, InferUser } from "better-auth/types"; -import type { auth } from "./auth"; +import type { auth } from "./_auth"; export type User = InferUser; export type Session = InferSession; diff --git a/packages/better-auth/package.json b/packages/better-auth/package.json index c3039bc6..50656096 100644 --- a/packages/better-auth/package.json +++ b/packages/better-auth/package.json @@ -53,6 +53,7 @@ "happy-dom": "^15.7.3", "hono": "^4.5.4", "listhen": "^1.7.2", + "next": "^14.2.8", "react": "^18.3.1", "solid-js": "^1.8.18", "swr": "^2.2.5", diff --git a/packages/better-auth/src/__snapshots__/init.test.ts.snap b/packages/better-auth/src/__snapshots__/init.test.ts.snap index d0b7c6dd..79935205 100644 --- a/packages/better-auth/src/__snapshots__/init.test.ts.snap +++ b/packages/better-auth/src/__snapshots__/init.test.ts.snap @@ -97,12 +97,17 @@ exports[`init > should match config 1`] = ` "warn": [Function], }, "options": { + "basePath": "/api/auth", "baseURL": "", "database": { "provider": "sqlite", "url": ":memory:", }, }, + "password": { + "hash": [Function], + "verify": [Function], + }, "secret": "better-auth-secret-123456789", "session": { "expiresIn": 604800, diff --git a/packages/better-auth/src/api/index.ts b/packages/better-auth/src/api/index.ts index 69ab6698..b4f096b1 100644 --- a/packages/better-auth/src/api/index.ts +++ b/packages/better-auth/src/api/index.ts @@ -173,7 +173,7 @@ export const router = ( const { api, middlewares } = getEndpoints(ctx, _options); const basePath = new URL(ctx.baseURL).pathname; - return createRouter(api, { + return createRouter(api as Omit, { extraContext: ctx, basePath, routerMiddleware: [ @@ -183,5 +183,8 @@ export const router = ( }, ...middlewares, ], + onError(e) { + console.log(e); + }, }); }; diff --git a/packages/better-auth/src/api/routes/forget-password.ts b/packages/better-auth/src/api/routes/forget-password.ts index 9884b2f9..29e81af2 100644 --- a/packages/better-auth/src/api/routes/forget-password.ts +++ b/packages/better-auth/src/api/routes/forget-password.ts @@ -3,7 +3,6 @@ import { createJWT } from "oslo/jwt"; import { validateJWT } from "oslo/jwt"; import { z } from "zod"; import { createAuthEndpoint } from "../call"; -import { hashPassword } from "../../crypto/password"; export const forgetPassword = createAuthEndpoint( "/forget-password", diff --git a/packages/better-auth/src/api/routes/session.ts b/packages/better-auth/src/api/routes/session.ts index f294a4ee..d2c4102d 100644 --- a/packages/better-auth/src/api/routes/session.ts +++ b/packages/better-auth/src/api/routes/session.ts @@ -2,14 +2,12 @@ import type { Context } from "better-call"; import { createAuthEndpoint } from "../call"; import { getDate } from "../../utils/date"; import { deleteSessionCookie, setSessionCookie } from "../../utils/cookies"; -import { HIDE_ON_CLIENT_METADATA } from "../../client/client-utils"; export const getSession = createAuthEndpoint( "/session", { method: "GET", requireHeaders: true, - metadata: HIDE_ON_CLIENT_METADATA, }, async (ctx) => { try { diff --git a/packages/better-auth/src/api/routes/sign-up.ts b/packages/better-auth/src/api/routes/sign-up.ts index 0a59e6e1..606f9aa7 100644 --- a/packages/better-auth/src/api/routes/sign-up.ts +++ b/packages/better-auth/src/api/routes/sign-up.ts @@ -2,7 +2,6 @@ import { alphabet, generateRandomString } from "oslo/crypto"; import { z } from "zod"; import { createAuthEndpoint } from "../call"; import { createEmailVerificationToken } from "./verify-email"; -import { hashPassword } from "../../crypto/password"; export const signUpEmail = createAuthEndpoint( "/sign-up/email", diff --git a/packages/better-auth/src/auth.ts b/packages/better-auth/src/auth.ts index c5bb9ebe..fb9678bf 100644 --- a/packages/better-auth/src/auth.ts +++ b/packages/better-auth/src/auth.ts @@ -16,7 +16,7 @@ export const betterAuth = (options: O) => { return handler(request); }, api, - options, + options: authContext.options, }; }; diff --git a/packages/better-auth/src/client/client.test.ts b/packages/better-auth/src/client/client.test.ts index 9db0be1e..3e8ce441 100644 --- a/packages/better-auth/src/client/client.test.ts +++ b/packages/better-auth/src/client/client.test.ts @@ -39,7 +39,10 @@ describe("run time proxy", async () => { const res = client.useComputedAtom(); expect(res()).toBe(0); await client.test(); - expect(res()).toBe(1); + vi.useFakeTimers(); + setTimeout(() => { + expect(res()).toBe(1); + }, 2); }); it("should call useSession", async () => { @@ -130,9 +133,7 @@ describe("type", () => { const client = createSvelteClient({ plugins: [testClientPlugin()], }); - expectTypeOf(client.useComputedAtom).toEqualTypeOf< - () => ReadableAtom - >(); + expectTypeOf(client.useComputedAtom).toEqualTypeOf>(); }); it("should infer from multiple plugins", () => { diff --git a/packages/better-auth/src/crypto/password.ts b/packages/better-auth/src/crypto/password.ts index 8106fbfc..1f2f35a6 100644 --- a/packages/better-auth/src/crypto/password.ts +++ b/packages/better-auth/src/crypto/password.ts @@ -1,4 +1,4 @@ -import { Scrypt } from "oslo/password"; +import argon2 from "argon2"; -const password = new Scrypt(); -export const { hash: hashPassword, verify: verifyPassword } = password; +export const hashPassword = argon2.hash; +export const verifyPassword = argon2.verify; diff --git a/packages/better-auth/src/init.ts b/packages/better-auth/src/init.ts index 59208c4f..10feffb8 100644 --- a/packages/better-auth/src/init.ts +++ b/packages/better-auth/src/init.ts @@ -20,6 +20,7 @@ export const init = (options: BetterAuthOptions) => { options: { ...options, baseURL: baseURL ? new URL(baseURL).origin : "", + basePath: options.basePath || "/api/auth", }, baseURL: baseURL || "", session: { diff --git a/packages/better-auth/src/integrations/next-js.ts b/packages/better-auth/src/integrations/next-js.ts index 1eb08855..58f002c1 100644 --- a/packages/better-auth/src/integrations/next-js.ts +++ b/packages/better-auth/src/integrations/next-js.ts @@ -1,4 +1,7 @@ +import { betterFetch } from "@better-fetch/fetch"; import type { Auth } from "../auth"; +import type { Session } from "../adapters/schema"; +import { NextRequest, NextResponse } from "next/server"; export function toNextJsHandler(auth: Auth | Auth["handler"]) { const handler = async (request: Request) => { @@ -9,3 +12,57 @@ export function toNextJsHandler(auth: Auth | Auth["handler"]) { POST: handler, }; } + +/** + * Middleware that checks if the user is authenticated. + * If not, it redirects to the redirectTo URL. + */ +export async function authMiddleware( + auth: T, + options: { + matcher: (request: NextRequest) => + | Array<{ + redirectTo: string; + shouldRedirect: boolean; + }> + | Promise< + Array<{ + redirectTo: string; + shouldRedirect: boolean; + }> + > + | { + redirectTo: string; + shouldRedirect: boolean; + } + | Promise<{ + redirectTo: string; + shouldRedirect: boolean; + }>; + }, +) { + return async (request: NextRequest) => { + let redirection = await options.matcher(request); + if (!Array.isArray(redirection)) { + redirection = [redirection]; + } + for (const { shouldRedirect, redirectTo } of redirection) { + console.log({ shouldRedirect, redirectTo }); + if (shouldRedirect) { + const url = new URL(request.url).origin; + const basePath = auth.options.basePath || "/api/auth"; + const fullURL = `${url}${basePath}/session`; + const res = await betterFetch<{ + session: Session; + }>(fullURL, { + headers: request.headers, + }); + + if (!res.data?.session) { + return NextResponse.redirect(new URL(redirectTo, request.url)); + } + } + } + return NextResponse.next(); + }; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cf2cbf39..26c7558b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -41,7 +41,7 @@ importers: version: 1.12.2(hono@4.5.9) better-auth: specifier: ^0.0.4 - version: 0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.6.0-beta)(vue@3.5.2(typescript@5.6.0-beta)) + version: 0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.6.0-beta)(vue@3.5.3(typescript@5.6.0-beta)) dotenv: specifier: ^16.4.5 version: 16.4.5 @@ -424,13 +424,13 @@ importers: dependencies: better-auth: specifier: ^0.0.4 - version: 0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.6.0-beta)(vue@3.5.2(typescript@5.6.0-beta)) + version: 0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.6.0-beta)(vue@3.5.3(typescript@5.6.0-beta)) nuxt: specifier: ^3.13.0 version: 3.13.0(@biomejs/biome@1.7.3)(@parcel/watcher@2.4.1)(@types/node@22.3.0)(eslint@9.9.1)(ioredis@5.4.1)(lightningcss@1.22.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.21.2)(terser@5.31.6)(typescript@5.6.0-beta)(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6)) vue: specifier: latest - version: 3.5.2(typescript@5.6.0-beta) + version: 3.5.3(typescript@5.6.0-beta) dev/solidjs: dependencies: @@ -445,7 +445,7 @@ importers: version: 10.4.20(postcss@8.4.41) better-auth: specifier: ^0.0.4 - version: 0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.6.0-beta)(vue@3.5.2(typescript@5.6.0-beta)) + version: 0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.6.0-beta)(vue@3.5.3(typescript@5.6.0-beta)) postcss: specifier: ^8.4.38 version: 8.4.41 @@ -463,7 +463,7 @@ importers: dependencies: better-auth: specifier: ^0.0.4 - version: 0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.5.4)(vue@3.5.2(typescript@5.5.4)) + version: 0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.5.4)(vue@3.5.3(typescript@5.5.4)) devDependencies: '@sveltejs/adapter-auto': specifier: ^3.0.0 @@ -960,6 +960,9 @@ importers: '@types/react': specifier: ^18.3.3 version: 18.3.3 + dev: + specifier: ^0.1.3 + version: 0.1.3 h3: specifier: ^1.12.0 version: 1.12.0 @@ -972,6 +975,9 @@ importers: listhen: specifier: ^1.7.2 version: 1.7.2 + next: + specifier: ^14.2.8 + version: 14.2.8(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 @@ -3024,60 +3030,117 @@ packages: '@next/env@14.2.5': resolution: {integrity: sha512-/zZGkrTOsraVfYjGP8uM0p6r0BDT6xWpkjdVbcz66PJVSpwXX3yNiRycxAuDfBKGWBrZBXRuK/YVlkNgxHGwmA==} + '@next/env@14.2.8': + resolution: {integrity: sha512-L44a+ynqkolyNBnYfF8VoCiSrjSZWgEHYKkKLGcs/a80qh7AkfVUD/MduVPgdsWZ31tgROR+yJRA0PZjSVBXWQ==} + '@next/swc-darwin-arm64@14.2.5': resolution: {integrity: sha512-/9zVxJ+K9lrzSGli1///ujyRfon/ZneeZ+v4ptpiPoOU+GKZnm8Wj8ELWU1Pm7GHltYRBklmXMTUqM/DqQ99FQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] + '@next/swc-darwin-arm64@14.2.8': + resolution: {integrity: sha512-1VrQlG8OzdyvvGZhGJFnaNE2P10Jjy/2FopnqbY0nSa/gr8If3iINxvOEW3cmVeoAYkmW0RsBazQecA2dBFOSw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + '@next/swc-darwin-x64@14.2.5': resolution: {integrity: sha512-vXHOPCwfDe9qLDuq7U1OYM2wUY+KQ4Ex6ozwsKxp26BlJ6XXbHleOUldenM67JRyBfVjv371oneEvYd3H2gNSA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] + '@next/swc-darwin-x64@14.2.8': + resolution: {integrity: sha512-87t3I86rNRSOJB1gXIUzaQWWSWrkWPDyZGsR0Z7JAPtLeX3uUOW2fHxl7dNWD2BZvbvftctTQjgtfpp7nMtmWg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + '@next/swc-linux-arm64-gnu@14.2.5': resolution: {integrity: sha512-vlhB8wI+lj8q1ExFW8lbWutA4M2ZazQNvMWuEDqZcuJJc78iUnLdPPunBPX8rC4IgT6lIx/adB+Cwrl99MzNaA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-gnu@14.2.8': + resolution: {integrity: sha512-ta2sfVzbOpTbgBrF9HM5m+U58dv6QPuwU4n5EX4LLyCJGKc433Z0D9h9gay/HSOjLEXJ2fJYrMP5JYYbHdxhtw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-arm64-musl@14.2.5': resolution: {integrity: sha512-NpDB9NUR2t0hXzJJwQSGu1IAOYybsfeB+LxpGsXrRIb7QOrYmidJz3shzY8cM6+rO4Aojuef0N/PEaX18pi9OA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + '@next/swc-linux-arm64-musl@14.2.8': + resolution: {integrity: sha512-+IoLTPK6Z5uIgDhgeWnQF5/o5GBN7+zyUNrs4Bes1W3g9++YELb8y0unFybS8s87ntAKMDl6jeQ+mD7oNwp/Ng==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + '@next/swc-linux-x64-gnu@14.2.5': resolution: {integrity: sha512-8XFikMSxWleYNryWIjiCX+gU201YS+erTUidKdyOVYi5qUQo/gRxv/3N1oZFCgqpesN6FPeqGM72Zve+nReVXQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-linux-x64-gnu@14.2.8': + resolution: {integrity: sha512-pO+hVXC+mvzUOQJJRG4RX4wJsRJ5BkURSf6dD6EjUXAX4Ml9es1WsEfkaZ4lcpmFzFvY47IkDaffks/GdCn9ag==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-linux-x64-musl@14.2.5': resolution: {integrity: sha512-6QLwi7RaYiQDcRDSU/os40r5o06b5ue7Jsk5JgdRBGGp8l37RZEh9JsLSM8QF0YDsgcosSeHjglgqi25+m04IQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + '@next/swc-linux-x64-musl@14.2.8': + resolution: {integrity: sha512-bCat9izctychCtf3uL1nqHq31N5e1VxvdyNcBQflkudPMLbxVnlrw45Vi87K+lt1CwrtVayHqzo4ie0Szcpwzg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + '@next/swc-win32-arm64-msvc@14.2.5': resolution: {integrity: sha512-1GpG2VhbspO+aYoMOQPQiqc/tG3LzmsdBH0LhnDS3JrtDx2QmzXe0B6mSZZiN3Bq7IOMXxv1nlsjzoS1+9mzZw==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] + '@next/swc-win32-arm64-msvc@14.2.8': + resolution: {integrity: sha512-gbxfUaSPV7EyUobpavida2Hwi62GhSJaSg7iBjmBWoxkxlmETOD7U4tWt763cGIsyE6jM7IoNavq0BXqwdW2QA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + '@next/swc-win32-ia32-msvc@14.2.5': resolution: {integrity: sha512-Igh9ZlxwvCDsu6438FXlQTHlRno4gFpJzqPjSIBZooD22tKeI4fE/YMRoHVJHmrQ2P5YL1DoZ0qaOKkbeFWeMg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] + '@next/swc-win32-ia32-msvc@14.2.8': + resolution: {integrity: sha512-PUXzEzjTTlUh3b5VAn1nlpwvujTnuCMMwbiCnaTazoVlN1nA3kWjlmp42IfURA2N/nyrlVEw7pURa/o4Qxj1cw==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + '@next/swc-win32-x64-msvc@14.2.5': resolution: {integrity: sha512-tEQ7oinq1/CjSG9uSTerca3v4AZ+dFa+4Yu6ihaG8Ud8ddqLQgFGcnwYls13H5X5CPDPZJdYxyeMui6muOLd4g==} engines: {node: '>= 10'} cpu: [x64] os: [win32] + '@next/swc-win32-x64-msvc@14.2.8': + resolution: {integrity: sha512-EnPKv0ttq02E9/1KZ/8Dn7kuutv6hy1CKc0HlNcvzOQcm4/SQtvfws5gY0zrG9tuupd3HfC2L/zcTrnBhpjTuQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@noble/ciphers@0.6.0': resolution: {integrity: sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ==} @@ -5194,6 +5257,9 @@ packages: '@vue/compiler-core@3.5.2': resolution: {integrity: sha512-1aP7FL2GkqfcskHWGg3lfWQpJnrmewKc+rNJ/hq9WNaAw4BEyJ5QbNChnqmbw+tJ409zdy1XWmUeXXMrCKJcQQ==} + '@vue/compiler-core@3.5.3': + resolution: {integrity: sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==} + '@vue/compiler-dom@3.5.0': resolution: {integrity: sha512-xYjUybWZXl+1R/toDy815i4PbeehL2hThiSGkcpmIOCy2HoYyeeC/gAWK/Y/xsoK+GSw198/T5O31bYuQx5uvQ==} @@ -5203,6 +5269,9 @@ packages: '@vue/compiler-dom@3.5.2': resolution: {integrity: sha512-QY4DpT8ZIUyu/ZA5gErpSEDocGNEbHmpkZIC/d5jbp/rUF0iOJNigAy3HCCKc0PMMhDlrcysO3ufQ6Ab4MpEcQ==} + '@vue/compiler-dom@3.5.3': + resolution: {integrity: sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==} + '@vue/compiler-sfc@3.5.0': resolution: {integrity: sha512-B9DgLtrqok2GLuaFjLlSL15ZG3ZDBiitUH1ecex9guh/ZcA5MCdwuVE6nsfQxktuZY/QY0awJ35/ripIviCQTQ==} @@ -5212,6 +5281,9 @@ packages: '@vue/compiler-sfc@3.5.2': resolution: {integrity: sha512-vErEtybSU290LbMW+ChYllI9tNJEdTW1oU+8cZWINZyjlWeTSa9YqDl4/pZJSnozOI+HmcaC1Vz2eFKmXNSXZA==} + '@vue/compiler-sfc@3.5.3': + resolution: {integrity: sha512-P3uATLny2tfyvMB04OQFe7Sczteno7SLFxwrOA/dw01pBWQHB5HL15a8PosoNX2aG/EAMGqnXTu+1LnmzFhpTQ==} + '@vue/compiler-ssr@3.5.0': resolution: {integrity: sha512-E263QZmA1dqRd7c3u/sWTLRMpQOT0aZ8av/L9SoD/v/BVMZaWFHPUUBswS+bzrfvG2suJF8vSLKx6k6ba5SUdA==} @@ -5221,6 +5293,9 @@ packages: '@vue/compiler-ssr@3.5.2': resolution: {integrity: sha512-vMtA4tQK/AM3UAYJsmouQzQpgG+h9TKiD5BV+Zt+ZyAMdicxzSEEFGWf/CykRnDpqj9fMfIHPhOezJVNxiXe2A==} + '@vue/compiler-ssr@3.5.3': + resolution: {integrity: sha512-F/5f+r2WzL/2YAPl7UlKcJWHrvoZN8XwEBLnT7S4BXwncH25iDOabhO2M2DWioyTguJAGavDOawejkFXj8EM1w==} + '@vue/devtools-api@6.6.3': resolution: {integrity: sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==} @@ -5236,30 +5311,30 @@ packages: '@vue/reactivity@3.5.0': resolution: {integrity: sha512-Ew3F5riP3B3ZDGjD3ZKb9uZylTTPSqt8hAf4sGbvbjrjDjrFb3Jm15Tk1/w7WwTE5GbQ2Qhwxx1moc9hr8A/OQ==} - '@vue/reactivity@3.5.2': - resolution: {integrity: sha512-lJwWL5bNht+2vIwU/+lnGdH+FKFxzz6z8WkoIJityPLiasWU+HDUvEsC7gm3JFwbTf7Kk+Nr9kJMaPy0HXwwxQ==} + '@vue/reactivity@3.5.3': + resolution: {integrity: sha512-2w61UnRWTP7+rj1H/j6FH706gRBHdFVpIqEkSDAyIpafBXYH8xt4gttstbbCWdU3OlcSWO8/3mbKl/93/HSMpw==} '@vue/runtime-core@3.5.0': resolution: {integrity: sha512-mQyW0F9FaNRdt8ghkAs+BMG3iQ7LGgWKOpkzUzR5AI5swPNydHGL5hvVTqFaeMzwecF1g0c86H4yFQsSxJhH1w==} - '@vue/runtime-core@3.5.2': - resolution: {integrity: sha512-oU+i9sJjGEMfEhlrJ7SZv7CdSIgUNyBHnWHa0SqU2RF48V3/ATajzpWq1/DkiVJ1mtx+cQFAMKs8s/3cB3YlLQ==} + '@vue/runtime-core@3.5.3': + resolution: {integrity: sha512-5b2AQw5OZlmCzSsSBWYoZOsy75N4UdMWenTfDdI5bAzXnuVR7iR8Q4AOzQm2OGoA41xjk53VQKrqQhOz2ktWaw==} '@vue/runtime-dom@3.5.0': resolution: {integrity: sha512-NQQXjpdXgyYVJ2M56FJ+lSJgZiecgQ2HhxhnQBN95FymXegRNY/N2htI7vOTwpP75pfxhIeYOJ8mE8sW8KAW6A==} - '@vue/runtime-dom@3.5.2': - resolution: {integrity: sha512-2qvysn+oR0QnFKaWZxQ90iVpWAK/WPpYmODHCv24IDXjsBrdHbjLBj9s6YBdPaMuQhs0LNsmhsgZYZBkszLg6g==} + '@vue/runtime-dom@3.5.3': + resolution: {integrity: sha512-wPR1DEGc3XnQ7yHbmkTt3GoY0cEnVGQnARRdAkDzZ8MbUKEs26gogCQo6AOvvgahfjIcnvWJzkZArQ1fmWjcSg==} '@vue/server-renderer@3.5.0': resolution: {integrity: sha512-HyDIFUg+l7L4PKrEnJlCYWHUOlm6NxZhmSxIefZ5MTYjkIPfDfkwhX7hqxAQHfgIAE1uLMLQZwuNR/ozI0NhZg==} peerDependencies: vue: 3.5.0 - '@vue/server-renderer@3.5.2': - resolution: {integrity: sha512-3POhYCA8KfbmuDuUiNbMXnpdh9pwE4SvAqo7VvACjklLkf3AaMkY3TvV7APeEa/WQezrnL+E4X2ASpJsKeS4cQ==} + '@vue/server-renderer@3.5.3': + resolution: {integrity: sha512-28volmaZVG2PGO3V3+gBPKoSHvLlE8FGfG/GKXKkjjfxLuj/50B/0OQGakM/g6ehQeqCrZYM4eHC4Ks48eig1Q==} peerDependencies: - vue: 3.5.2 + vue: 3.5.3 '@vue/shared@3.4.38': resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==} @@ -5273,6 +5348,9 @@ packages: '@vue/shared@3.5.2': resolution: {integrity: sha512-Ce89WNFBzcDca/AgFTxgX4/K4iAyF7oFIp8Z5aBbFBNbtpwnQr+5pZOoHndxnjE2h+YFcipVMzs9UL11XB6dwA==} + '@vue/shared@3.5.3': + resolution: {integrity: sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA==} + '@web3-storage/multipart-parser@1.0.0': resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} @@ -6547,6 +6625,10 @@ packages: detect-node-es@1.1.0: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev@0.1.3: + resolution: {integrity: sha512-flCHQwAkXk3+1up/wo93Ms9E5Wf9K28ZGA7Oz55nBZ8OTdPPhyvZrwsT+twtySTFHIwv0w9CUNtagZgu1MgzXQ==} + hasBin: true + devalue@5.0.0: resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} @@ -7766,6 +7848,11 @@ packages: inline-style-prefixer@6.0.4: resolution: {integrity: sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==} + inotify@1.4.6: + resolution: {integrity: sha512-WW8/uqIA04O3AePQVe/Ms3ZLR0yGamaz8YOEpaXc4WBAGOPZfzu58wWErEPSUYaPyDrJRIeCn6PEIQgC1ZyQ5w==} + engines: {node: '>=0.8'} + os: [linux] + input-otp@1.2.4: resolution: {integrity: sha512-md6rhmD+zmMnUh5crQNSQxq3keBRYvE3odbr4Qb9g2NWzQv9azi+t1a3X4TBTbh98fsGHgEEJlzbe1q860uGCA==} peerDependencies: @@ -9047,6 +9134,9 @@ packages: resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==} engines: {node: '>=12.0.0'} + nan@2.20.0: + resolution: {integrity: sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==} + nanoevents@9.0.0: resolution: {integrity: sha512-X8pU7IOpgKXVLPxYUI55ymXc8XuBE+uypfEyEFBtHkD1EX9KavYTVc+vXZHFyHKzA1TaZoVDqklLdQBBrxIuAw==} engines: {node: ^18.0.0 || >=20.0.0} @@ -9114,6 +9204,24 @@ packages: sass: optional: true + next@14.2.8: + resolution: {integrity: sha512-EyEyJZ89r8C5FPlS/401AiF3O8jeMtHIE+bLom9MwcdWJJFBgRl+MR/2VgO0v5bI6tQORNY0a0DR5sjpFNrjbg==} + engines: {node: '>=18.17.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.41.2 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + sass: + optional: true + nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} @@ -11876,8 +11984,8 @@ packages: typescript: optional: true - vue@3.5.2: - resolution: {integrity: sha512-w1YB4lAwC9ByH6AnFY0JvZF+y70Usul9jDfKIKtM5xA97q/JPS5R7mqq0fhA6D2PQxYPZdgb5jzFKLyOga5pnw==} + vue@3.5.3: + resolution: {integrity: sha512-xvRbd0HpuLovYbOHXRHlSBsSvmUJbo0pzbkKTApWnQGf3/cu5Z39mQeA5cZdLRVIoNf3zI6MSoOgHUT5i2jO+Q==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -14241,17 +14349,17 @@ snapshots: optionalDependencies: '@vue/devtools-api': 6.6.3 - '@nanostores/vue@0.10.0(@vue/devtools-api@6.6.3)(nanostores@0.11.2)(vue@3.5.2(typescript@5.5.4))': + '@nanostores/vue@0.10.0(@vue/devtools-api@6.6.3)(nanostores@0.11.2)(vue@3.5.3(typescript@5.5.4))': dependencies: nanostores: 0.11.2 - vue: 3.5.2(typescript@5.5.4) + vue: 3.5.3(typescript@5.5.4) optionalDependencies: '@vue/devtools-api': 6.6.3 - '@nanostores/vue@0.10.0(@vue/devtools-api@6.6.3)(nanostores@0.11.2)(vue@3.5.2(typescript@5.6.0-beta))': + '@nanostores/vue@0.10.0(@vue/devtools-api@6.6.3)(nanostores@0.11.2)(vue@3.5.3(typescript@5.6.0-beta))': dependencies: nanostores: 0.11.2 - vue: 3.5.2(typescript@5.6.0-beta) + vue: 3.5.3(typescript@5.6.0-beta) optionalDependencies: '@vue/devtools-api': 6.6.3 @@ -14268,33 +14376,62 @@ snapshots: '@next/env@14.2.5': {} + '@next/env@14.2.8': {} + '@next/swc-darwin-arm64@14.2.5': optional: true + '@next/swc-darwin-arm64@14.2.8': + optional: true + '@next/swc-darwin-x64@14.2.5': optional: true + '@next/swc-darwin-x64@14.2.8': + optional: true + '@next/swc-linux-arm64-gnu@14.2.5': optional: true + '@next/swc-linux-arm64-gnu@14.2.8': + optional: true + '@next/swc-linux-arm64-musl@14.2.5': optional: true + '@next/swc-linux-arm64-musl@14.2.8': + optional: true + '@next/swc-linux-x64-gnu@14.2.5': optional: true + '@next/swc-linux-x64-gnu@14.2.8': + optional: true + '@next/swc-linux-x64-musl@14.2.5': optional: true + '@next/swc-linux-x64-musl@14.2.8': + optional: true + '@next/swc-win32-arm64-msvc@14.2.5': optional: true + '@next/swc-win32-arm64-msvc@14.2.8': + optional: true + '@next/swc-win32-ia32-msvc@14.2.5': optional: true + '@next/swc-win32-ia32-msvc@14.2.8': + optional: true + '@next/swc-win32-x64-msvc@14.2.5': optional: true + '@next/swc-win32-x64-msvc@14.2.8': + optional: true + '@noble/ciphers@0.6.0': {} '@noble/hashes@1.4.0': {} @@ -14584,12 +14721,12 @@ snapshots: - rollup - supports-color - '@nuxt/vite-builder@3.13.0(@biomejs/biome@1.7.3)(@types/node@22.3.0)(eslint@9.9.1)(lightningcss@1.22.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.21.2)(terser@5.31.6)(typescript@5.6.0-beta)(vue@3.5.2(typescript@5.6.0-beta))': + '@nuxt/vite-builder@3.13.0(@biomejs/biome@1.7.3)(@types/node@22.3.0)(eslint@9.9.1)(lightningcss@1.22.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.21.2)(terser@5.31.6)(typescript@5.6.0-beta)(vue@3.5.3(typescript@5.6.0-beta))': dependencies: '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.2) '@rollup/plugin-replace': 5.0.7(rollup@4.21.2) - '@vitejs/plugin-vue': 5.1.3(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6))(vue@3.5.2(typescript@5.6.0-beta)) - '@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6))(vue@3.5.2(typescript@5.6.0-beta)) + '@vitejs/plugin-vue': 5.1.3(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6))(vue@3.5.3(typescript@5.6.0-beta)) + '@vitejs/plugin-vue-jsx': 4.0.1(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6))(vue@3.5.3(typescript@5.6.0-beta)) autoprefixer: 10.4.20(postcss@8.4.41) clear: 0.1.0 consola: 3.2.3 @@ -14618,7 +14755,7 @@ snapshots: vite: 5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6) vite-node: 2.0.5(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6) vite-plugin-checker: 0.7.2(@biomejs/biome@1.7.3)(eslint@9.9.1)(optionator@0.9.4)(typescript@5.6.0-beta)(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6)) - vue: 3.5.2(typescript@5.6.0-beta) + vue: 3.5.3(typescript@5.6.0-beta) vue-bundle-renderer: 2.1.0 transitivePeerDependencies: - '@biomejs/biome' @@ -17340,13 +17477,13 @@ snapshots: '@unhead/schema': 1.10.0 '@unhead/shared': 1.10.0 - '@unhead/vue@1.10.0(vue@3.5.2(typescript@5.6.0-beta))': + '@unhead/vue@1.10.0(vue@3.5.3(typescript@5.6.0-beta))': dependencies: '@unhead/schema': 1.10.0 '@unhead/shared': 1.10.0 hookable: 5.5.3 unhead: 1.10.0 - vue: 3.5.2(typescript@5.6.0-beta) + vue: 3.5.3(typescript@5.6.0-beta) '@urql/core@2.3.6(graphql@15.8.0)': dependencies: @@ -17446,20 +17583,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6))(vue@3.5.2(typescript@5.6.0-beta))': + '@vitejs/plugin-vue-jsx@4.0.1(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6))(vue@3.5.3(typescript@5.6.0-beta))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-typescript': 7.25.2(@babel/core@7.25.2) '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.25.2) vite: 5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6) - vue: 3.5.2(typescript@5.6.0-beta) + vue: 3.5.3(typescript@5.6.0-beta) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.3(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6))(vue@3.5.2(typescript@5.6.0-beta))': + '@vitejs/plugin-vue@5.1.3(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6))(vue@3.5.3(typescript@5.6.0-beta))': dependencies: vite: 5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6) - vue: 3.5.2(typescript@5.6.0-beta) + vue: 3.5.3(typescript@5.6.0-beta) '@vitest/expect@1.6.0': dependencies: @@ -17490,7 +17627,7 @@ snapshots: loupe: 2.3.7 pretty-format: 29.7.0 - '@vue-macros/common@1.12.2(rollup@4.21.2)(vue@3.5.2(typescript@5.6.0-beta))': + '@vue-macros/common@1.12.2(rollup@4.21.2)(vue@3.5.3(typescript@5.6.0-beta))': dependencies: '@babel/types': 7.25.6 '@rollup/pluginutils': 5.1.0(rollup@4.21.2) @@ -17499,7 +17636,7 @@ snapshots: local-pkg: 0.5.0 magic-string-ast: 0.6.2 optionalDependencies: - vue: 3.5.2(typescript@5.6.0-beta) + vue: 3.5.3(typescript@5.6.0-beta) transitivePeerDependencies: - rollup @@ -17530,7 +17667,7 @@ snapshots: '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.24.8 '@babel/parser': 7.25.6 - '@vue/compiler-sfc': 3.5.1 + '@vue/compiler-sfc': 3.5.2 '@vue/compiler-core@3.5.0': dependencies: @@ -17556,6 +17693,14 @@ snapshots: estree-walker: 2.0.2 source-map-js: 1.2.0 + '@vue/compiler-core@3.5.3': + dependencies: + '@babel/parser': 7.25.6 + '@vue/shared': 3.5.3 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.0 + '@vue/compiler-dom@3.5.0': dependencies: '@vue/compiler-core': 3.5.0 @@ -17571,6 +17716,11 @@ snapshots: '@vue/compiler-core': 3.5.2 '@vue/shared': 3.5.2 + '@vue/compiler-dom@3.5.3': + dependencies: + '@vue/compiler-core': 3.5.3 + '@vue/shared': 3.5.3 + '@vue/compiler-sfc@3.5.0': dependencies: '@babel/parser': 7.25.6 @@ -17607,6 +17757,18 @@ snapshots: postcss: 8.4.44 source-map-js: 1.2.0 + '@vue/compiler-sfc@3.5.3': + dependencies: + '@babel/parser': 7.25.6 + '@vue/compiler-core': 3.5.3 + '@vue/compiler-dom': 3.5.3 + '@vue/compiler-ssr': 3.5.3 + '@vue/shared': 3.5.3 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.44 + source-map-js: 1.2.0 + '@vue/compiler-ssr@3.5.0': dependencies: '@vue/compiler-dom': 3.5.0 @@ -17622,6 +17784,11 @@ snapshots: '@vue/compiler-dom': 3.5.2 '@vue/shared': 3.5.2 + '@vue/compiler-ssr@3.5.3': + dependencies: + '@vue/compiler-dom': 3.5.3 + '@vue/shared': 3.5.3 + '@vue/devtools-api@6.6.3': {} '@vue/devtools-core@7.3.3(vite@5.4.2(@types/node@22.3.0)(lightningcss@1.22.0)(terser@5.31.6))': @@ -17653,19 +17820,19 @@ snapshots: dependencies: '@vue/shared': 3.5.0 - '@vue/reactivity@3.5.2': + '@vue/reactivity@3.5.3': dependencies: - '@vue/shared': 3.5.2 + '@vue/shared': 3.5.3 '@vue/runtime-core@3.5.0': dependencies: '@vue/reactivity': 3.5.0 '@vue/shared': 3.5.0 - '@vue/runtime-core@3.5.2': + '@vue/runtime-core@3.5.3': dependencies: - '@vue/reactivity': 3.5.2 - '@vue/shared': 3.5.2 + '@vue/reactivity': 3.5.3 + '@vue/shared': 3.5.3 '@vue/runtime-dom@3.5.0': dependencies: @@ -17674,11 +17841,11 @@ snapshots: '@vue/shared': 3.5.0 csstype: 3.1.3 - '@vue/runtime-dom@3.5.2': + '@vue/runtime-dom@3.5.3': dependencies: - '@vue/reactivity': 3.5.2 - '@vue/runtime-core': 3.5.2 - '@vue/shared': 3.5.2 + '@vue/reactivity': 3.5.3 + '@vue/runtime-core': 3.5.3 + '@vue/shared': 3.5.3 csstype: 3.1.3 '@vue/server-renderer@3.5.0(vue@3.5.0(typescript@5.6.0-beta))': @@ -17687,17 +17854,17 @@ snapshots: '@vue/shared': 3.5.0 vue: 3.5.0(typescript@5.6.0-beta) - '@vue/server-renderer@3.5.2(vue@3.5.2(typescript@5.5.4))': + '@vue/server-renderer@3.5.3(vue@3.5.3(typescript@5.5.4))': dependencies: - '@vue/compiler-ssr': 3.5.2 - '@vue/shared': 3.5.2 - vue: 3.5.2(typescript@5.5.4) + '@vue/compiler-ssr': 3.5.3 + '@vue/shared': 3.5.3 + vue: 3.5.3(typescript@5.5.4) - '@vue/server-renderer@3.5.2(vue@3.5.2(typescript@5.6.0-beta))': + '@vue/server-renderer@3.5.3(vue@3.5.3(typescript@5.6.0-beta))': dependencies: - '@vue/compiler-ssr': 3.5.2 - '@vue/shared': 3.5.2 - vue: 3.5.2(typescript@5.6.0-beta) + '@vue/compiler-ssr': 3.5.3 + '@vue/shared': 3.5.3 + vue: 3.5.3(typescript@5.6.0-beta) '@vue/shared@3.4.38': {} @@ -17707,6 +17874,8 @@ snapshots: '@vue/shared@3.5.2': {} + '@vue/shared@3.5.3': {} + '@web3-storage/multipart-parser@1.0.0': {} '@xmldom/xmldom@0.7.13': {} @@ -18049,7 +18218,7 @@ snapshots: base64-js@1.5.1: {} - better-auth@0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.5.4)(vue@3.5.2(typescript@5.5.4)): + better-auth@0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.5.4)(vue@3.5.3(typescript@5.5.4)): dependencies: '@better-fetch/fetch': 1.1.4 '@better-fetch/logger': 1.1.3 @@ -18057,7 +18226,7 @@ snapshots: '@nanostores/query': 0.3.4(nanostores@0.11.2) '@nanostores/react': 0.7.3(nanostores@0.11.2)(react@18.3.1) '@nanostores/solid': 0.4.2(nanostores@0.11.2)(solid-js@1.8.21) - '@nanostores/vue': 0.10.0(@vue/devtools-api@6.6.3)(nanostores@0.11.2)(vue@3.5.2(typescript@5.5.4)) + '@nanostores/vue': 0.10.0(@vue/devtools-api@6.6.3)(nanostores@0.11.2)(vue@3.5.3(typescript@5.5.4)) '@noble/ciphers': 0.6.0 '@noble/hashes': 1.4.0 '@paralleldrive/cuid2': 2.2.2 @@ -18092,7 +18261,7 @@ snapshots: - typescript - vue - better-auth@0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.6.0-beta)(vue@3.5.2(typescript@5.6.0-beta)): + better-auth@0.0.4(@vue/devtools-api@6.6.3)(react@18.3.1)(solid-js@1.8.21)(typescript@5.6.0-beta)(vue@3.5.3(typescript@5.6.0-beta)): dependencies: '@better-fetch/fetch': 1.1.4 '@better-fetch/logger': 1.1.3 @@ -18100,7 +18269,7 @@ snapshots: '@nanostores/query': 0.3.4(nanostores@0.11.2) '@nanostores/react': 0.7.3(nanostores@0.11.2)(react@18.3.1) '@nanostores/solid': 0.4.2(nanostores@0.11.2)(solid-js@1.8.21) - '@nanostores/vue': 0.10.0(@vue/devtools-api@6.6.3)(nanostores@0.11.2)(vue@3.5.2(typescript@5.6.0-beta)) + '@nanostores/vue': 0.10.0(@vue/devtools-api@6.6.3)(nanostores@0.11.2)(vue@3.5.3(typescript@5.6.0-beta)) '@noble/ciphers': 0.6.0 '@noble/hashes': 1.4.0 '@paralleldrive/cuid2': 2.2.2 @@ -19141,6 +19310,10 @@ snapshots: detect-node-es@1.1.0: {} + dev@0.1.3: + dependencies: + inotify: 1.4.6 + devalue@5.0.0: {} devlop@1.1.0: @@ -20761,6 +20934,11 @@ snapshots: css-in-js-utils: 3.1.0 fast-loops: 1.1.4 + inotify@1.4.6: + dependencies: + bindings: 1.5.0 + nan: 2.20.0 + input-otp@1.2.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: react: 18.3.1 @@ -22470,6 +22648,8 @@ snapshots: dependencies: lru-cache: 7.18.3 + nan@2.20.0: {} + nanoevents@9.0.0: {} nanoid@3.3.7: {} @@ -22533,6 +22713,32 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@14.2.8(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@next/env': 14.2.8 + '@swc/helpers': 0.5.5 + busboy: 1.6.0 + caniuse-lite: 1.0.30001651 + graceful-fs: 4.2.11 + postcss: 8.4.31 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + styled-jsx: 5.1.1(react@18.3.1) + optionalDependencies: + '@next/swc-darwin-arm64': 14.2.8 + '@next/swc-darwin-x64': 14.2.8 + '@next/swc-linux-arm64-gnu': 14.2.8 + '@next/swc-linux-arm64-musl': 14.2.8 + '@next/swc-linux-x64-gnu': 14.2.8 + '@next/swc-linux-x64-musl': 14.2.8 + '@next/swc-win32-arm64-msvc': 14.2.8 + '@next/swc-win32-ia32-msvc': 14.2.8 + '@next/swc-win32-x64-msvc': 14.2.8 + '@opentelemetry/api': 1.9.0 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + nice-try@1.0.5: {} nitropack@2.9.7(magicast@0.3.5): @@ -22715,10 +22921,10 @@ snapshots: '@nuxt/kit': 3.13.0(magicast@0.3.5)(rollup@4.21.2) '@nuxt/schema': 3.13.0(rollup@4.21.2) '@nuxt/telemetry': 2.5.4(magicast@0.3.5)(rollup@4.21.2) - '@nuxt/vite-builder': 3.13.0(@biomejs/biome@1.7.3)(@types/node@22.3.0)(eslint@9.9.1)(lightningcss@1.22.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.21.2)(terser@5.31.6)(typescript@5.6.0-beta)(vue@3.5.2(typescript@5.6.0-beta)) + '@nuxt/vite-builder': 3.13.0(@biomejs/biome@1.7.3)(@types/node@22.3.0)(eslint@9.9.1)(lightningcss@1.22.0)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.21.2)(terser@5.31.6)(typescript@5.6.0-beta)(vue@3.5.3(typescript@5.6.0-beta)) '@unhead/dom': 1.10.0 '@unhead/ssr': 1.10.0 - '@unhead/vue': 1.10.0(vue@3.5.2(typescript@5.6.0-beta)) + '@unhead/vue': 1.10.0(vue@3.5.3(typescript@5.6.0-beta)) '@vue/shared': 3.4.38 acorn: 8.12.1 c12: 1.11.1(magicast@0.3.5) @@ -22762,13 +22968,13 @@ snapshots: unenv: 1.10.0 unimport: 3.11.1(rollup@4.21.2) unplugin: 1.12.2 - unplugin-vue-router: 0.10.7(rollup@4.21.2)(vue-router@4.4.3(vue@3.5.2(typescript@5.6.0-beta)))(vue@3.5.2(typescript@5.6.0-beta)) + unplugin-vue-router: 0.10.7(rollup@4.21.2)(vue-router@4.4.3(vue@3.5.3(typescript@5.6.0-beta)))(vue@3.5.3(typescript@5.6.0-beta)) unstorage: 1.10.2(ioredis@5.4.1) untyped: 1.4.2 - vue: 3.5.2(typescript@5.6.0-beta) + vue: 3.5.3(typescript@5.6.0-beta) vue-bundle-renderer: 2.1.0 vue-devtools-stub: 0.1.0 - vue-router: 4.4.3(vue@3.5.2(typescript@5.6.0-beta)) + vue-router: 4.4.3(vue@3.5.3(typescript@5.6.0-beta)) optionalDependencies: '@parcel/watcher': 2.4.1 '@types/node': 22.3.0 @@ -25365,11 +25571,11 @@ snapshots: unpipe@1.0.0: {} - unplugin-vue-router@0.10.7(rollup@4.21.2)(vue-router@4.4.3(vue@3.5.2(typescript@5.6.0-beta)))(vue@3.5.2(typescript@5.6.0-beta)): + unplugin-vue-router@0.10.7(rollup@4.21.2)(vue-router@4.4.3(vue@3.5.3(typescript@5.6.0-beta)))(vue@3.5.3(typescript@5.6.0-beta)): dependencies: '@babel/types': 7.25.6 '@rollup/pluginutils': 5.1.0(rollup@4.21.2) - '@vue-macros/common': 1.12.2(rollup@4.21.2)(vue@3.5.2(typescript@5.6.0-beta)) + '@vue-macros/common': 1.12.2(rollup@4.21.2)(vue@3.5.3(typescript@5.6.0-beta)) ast-walker-scope: 0.6.2 chokidar: 3.6.0 fast-glob: 3.3.2 @@ -25382,7 +25588,7 @@ snapshots: unplugin: 1.12.2 yaml: 2.5.0 optionalDependencies: - vue-router: 4.4.3(vue@3.5.2(typescript@5.6.0-beta)) + vue-router: 4.4.3(vue@3.5.3(typescript@5.6.0-beta)) transitivePeerDependencies: - rollup - vue @@ -25847,10 +26053,10 @@ snapshots: vue-devtools-stub@0.1.0: {} - vue-router@4.4.3(vue@3.5.2(typescript@5.6.0-beta)): + vue-router@4.4.3(vue@3.5.3(typescript@5.6.0-beta)): dependencies: '@vue/devtools-api': 6.6.3 - vue: 3.5.2(typescript@5.6.0-beta) + vue: 3.5.3(typescript@5.6.0-beta) vue@3.5.0(typescript@5.6.0-beta): dependencies: @@ -25862,23 +26068,23 @@ snapshots: optionalDependencies: typescript: 5.6.0-beta - vue@3.5.2(typescript@5.5.4): + vue@3.5.3(typescript@5.5.4): dependencies: - '@vue/compiler-dom': 3.5.2 - '@vue/compiler-sfc': 3.5.2 - '@vue/runtime-dom': 3.5.2 - '@vue/server-renderer': 3.5.2(vue@3.5.2(typescript@5.5.4)) - '@vue/shared': 3.5.2 + '@vue/compiler-dom': 3.5.3 + '@vue/compiler-sfc': 3.5.3 + '@vue/runtime-dom': 3.5.3 + '@vue/server-renderer': 3.5.3(vue@3.5.3(typescript@5.5.4)) + '@vue/shared': 3.5.3 optionalDependencies: typescript: 5.5.4 - vue@3.5.2(typescript@5.6.0-beta): + vue@3.5.3(typescript@5.6.0-beta): dependencies: - '@vue/compiler-dom': 3.5.2 - '@vue/compiler-sfc': 3.5.2 - '@vue/runtime-dom': 3.5.2 - '@vue/server-renderer': 3.5.2(vue@3.5.2(typescript@5.6.0-beta)) - '@vue/shared': 3.5.2 + '@vue/compiler-dom': 3.5.3 + '@vue/compiler-sfc': 3.5.3 + '@vue/runtime-dom': 3.5.3 + '@vue/server-renderer': 3.5.3(vue@3.5.3(typescript@5.6.0-beta)) + '@vue/shared': 3.5.3 optionalDependencies: typescript: 5.6.0-beta