feat: move password to argon2

This commit is contained in:
Bereket Engida
2024-09-06 21:25:59 +03:00
parent 761d8b54a0
commit 0397b2b7e9
20 changed files with 410 additions and 117 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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() {

View File

@@ -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(),
],
});

View File

@@ -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(),
],
});

View File

@@ -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",
}),
],
});

View File

@@ -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"],
});

View File

@@ -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<typeof auth>;
export type Session = InferSession<typeof auth>;

View File

@@ -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",

View File

@@ -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,

View File

@@ -173,7 +173,7 @@ export const router = <C extends AuthContext, Option extends BetterAuthOptions>(
const { api, middlewares } = getEndpoints(ctx, _options);
const basePath = new URL(ctx.baseURL).pathname;
return createRouter(api, {
return createRouter(api as Omit<typeof api, "error" | "ok" | "welcome">, {
extraContext: ctx,
basePath,
routerMiddleware: [
@@ -183,5 +183,8 @@ export const router = <C extends AuthContext, Option extends BetterAuthOptions>(
},
...middlewares,
],
onError(e) {
console.log(e);
},
});
};

View File

@@ -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",

View File

@@ -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 {

View File

@@ -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",

View File

@@ -16,7 +16,7 @@ export const betterAuth = <O extends BetterAuthOptions>(options: O) => {
return handler(request);
},
api,
options,
options: authContext.options,
};
};

View File

@@ -39,7 +39,10 @@ describe("run time proxy", async () => {
const res = client.useComputedAtom();
expect(res()).toBe(0);
await client.test();
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<number>
>();
expectTypeOf(client.useComputedAtom).toEqualTypeOf<ReadableAtom<number>>();
});
it("should infer from multiple plugins", () => {

View File

@@ -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;

View File

@@ -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: {

View File

@@ -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<T extends Auth>(
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();
};
}

358
pnpm-lock.yaml generated
View File

@@ -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