diff --git a/demo/nextjs/app/.well-known/oauth-authorization-server/route.ts b/demo/nextjs/app/.well-known/oauth-authorization-server/route.ts
new file mode 100644
index 00000000..c236fffd
--- /dev/null
+++ b/demo/nextjs/app/.well-known/oauth-authorization-server/route.ts
@@ -0,0 +1,4 @@
+import { oAuthDiscoveryMetadata } from "better-auth/plugins";
+import { auth } from "../../../lib/auth";
+
+export const GET = oAuthDiscoveryMetadata(auth);
diff --git a/demo/nextjs/app/api/[transport]/route.ts b/demo/nextjs/app/api/[transport]/route.ts
new file mode 100644
index 00000000..056410b4
--- /dev/null
+++ b/demo/nextjs/app/api/[transport]/route.ts
@@ -0,0 +1,38 @@
+import { createMcpHandler } from "@vercel/mcp-adapter";
+import { withMcpAuth } from "better-auth/plugins";
+import { z } from "zod";
+import { auth } from "@/lib/auth";
+
+const handler = withMcpAuth(auth, (req, session) => {
+ return createMcpHandler(
+ (server) => {
+ server.tool(
+ "echo",
+ "Echo a message",
+ { message: z.string() },
+ async ({ message }) => {
+ return {
+ content: [{ type: "text", text: `Tool echo: ${message}` }],
+ };
+ },
+ );
+ },
+ {
+ capabilities: {
+ tools: {
+ echo: {
+ description: "Echo a message",
+ },
+ },
+ },
+ },
+ {
+ redisUrl: process.env.REDIS_URL,
+ basePath: "/api",
+ verboseLogs: true,
+ maxDuration: 60,
+ },
+ )(req);
+});
+
+export { handler as GET, handler as POST, handler as DELETE };
diff --git a/demo/nextjs/app/api/auth/[...all]/route.ts b/demo/nextjs/app/api/auth/[...all]/route.ts
index 6cba29b7..5b67b064 100644
--- a/demo/nextjs/app/api/auth/[...all]/route.ts
+++ b/demo/nextjs/app/api/auth/[...all]/route.ts
@@ -1,10 +1,4 @@
import { auth } from "@/lib/auth";
import { toNextJsHandler } from "better-auth/next-js";
-import { NextRequest } from "next/server";
-export const { GET } = toNextJsHandler(auth);
-
-export const POST = async (req: NextRequest) => {
- const res = await auth.handler(req);
- return res;
-};
+export const { GET, POST } = toNextJsHandler(auth);
diff --git a/demo/nextjs/lib/auth.ts b/demo/nextjs/lib/auth.ts
index 53691a45..45635944 100644
--- a/demo/nextjs/lib/auth.ts
+++ b/demo/nextjs/lib/auth.ts
@@ -8,8 +8,8 @@ import {
oneTap,
oAuthProxy,
openAPI,
- oidcProvider,
customSession,
+ mcp,
} from "better-auth/plugins";
import { reactInvitationEmail } from "./email/invitation";
import { LibsqlDialect } from "@libsql/kysely-libsql";
@@ -19,9 +19,9 @@ import { MysqlDialect } from "kysely";
import { createPool } from "mysql2/promise";
import { nextCookies } from "better-auth/next-js";
import { passkey } from "better-auth/plugins/passkey";
-import { expo } from "@better-auth/expo";
import { stripe } from "@better-auth/stripe";
import { Stripe } from "stripe";
+import Database from "better-sqlite3";
const from = process.env.BETTER_AUTH_EMAIL || "delivered@resend.dev";
const to = process.env.TEST_EMAIL || "";
@@ -52,10 +52,7 @@ const STARTER_PRICE_ID = {
export const auth = betterAuth({
appName: "Better Auth Demo",
- database: {
- dialect,
- type: process.env.USE_MYSQL ? "mysql" : "sqlite",
- },
+ database: new Database("auth.db"),
emailVerification: {
async sendVerificationEmail({ user, url }) {
const res = await resend.emails.send({
@@ -117,6 +114,9 @@ export const auth = betterAuth({
},
},
plugins: [
+ mcp({
+ loginPage: "/sign-in",
+ }),
organization({
async sendInvitationEmail(data) {
await resend.emails.send({
@@ -160,9 +160,7 @@ export const auth = betterAuth({
multiSession(),
oAuthProxy(),
nextCookies(),
- oidcProvider({
- loginPage: "/sign-in",
- }),
+
oneTap(),
customSession(async (session) => {
return {
@@ -198,7 +196,6 @@ export const auth = betterAuth({
],
},
}),
- expo(),
],
trustedOrigins: ["exp://"],
});
diff --git a/docs/app/blog/[[...slug]]/page.tsx b/docs/app/blog/[[...slug]]/page.tsx
new file mode 100644
index 00000000..7cf64d11
--- /dev/null
+++ b/docs/app/blog/[[...slug]]/page.tsx
@@ -0,0 +1,219 @@
+import { blogs } from "@/lib/source";
+import { notFound } from "next/navigation";
+import { absoluteUrl, formatDate } from "@/lib/utils";
+import DatabaseTable from "@/components/mdx/database-tables";
+import { cn } from "@/lib/utils";
+import { Step, Steps } from "fumadocs-ui/components/steps";
+import { Tab, Tabs } from "fumadocs-ui/components/tabs";
+import { GenerateSecret } from "@/components/generate-secret";
+import { AnimatePresence } from "@/components/ui/fade-in";
+import { TypeTable } from "fumadocs-ui/components/type-table";
+import { Features } from "@/components/blocks/features";
+import { ForkButton } from "@/components/fork-button";
+import Link from "next/link";
+import defaultMdxComponents from "fumadocs-ui/mdx";
+import { File, Folder, Files } from "fumadocs-ui/components/files";
+import { Accordion, Accordions } from "fumadocs-ui/components/accordion";
+import { Pre } from "fumadocs-ui/components/codeblock";
+import { DocsBody } from "fumadocs-ui/page";
+import { Glow } from "../_components/default-changelog";
+import { IconLink } from "../_components/changelog-layout";
+import { BookIcon, GitHubIcon, XIcon } from "../_components/icons";
+import { DiscordLogoIcon } from "@radix-ui/react-icons";
+import { StarField } from "../_components/stat-field";
+import Image from "next/image";
+
+const metaTitle = "Blogs";
+const metaDescription = "Latest changes , fixes and updates.";
+const ogImage = "https://better-auth.com/release-og/changelog-og.png";
+
+export default async function Page({
+ params,
+}: {
+ params: Promise<{ slug?: string[] }>;
+}) {
+ const { slug } = await params;
+ const page = blogs.getPage(slug);
+ if (!page) {
+ notFound();
+ }
+ const MDX = page.data?.body;
+ const toc = page.data?.toc;
+ const { title, description, date } = page.data;
+ return (
+
+
+
+
+
+
+
+
+
{description}
+
+ By {page.data?.author.name} | {formatDate(page.data?.date)}
+
+
+
+
+
+
+
+ Documentation
+
+
+ GitHub
+
+
+ Community
+
+
+
+
+ BETTER-AUTH.
+
+
+
+
+
+
+
+ ) => (
+
+ ),
+ Step,
+ Steps,
+ File,
+ Folder,
+ Files,
+ Tab,
+ Tabs,
+ Pre: Pre,
+ GenerateSecret,
+ AnimatePresence,
+ TypeTable,
+ Features,
+ ForkButton,
+ DatabaseTable,
+ Accordion,
+ Accordions,
+ }}
+ />
+
+
+
+ );
+}
+
+export async function generateMetadata({
+ params,
+}: {
+ params: Promise<{ slug?: string[] }>;
+}) {
+ const { slug } = await params;
+ if (!slug) {
+ return {
+ metadataBase: new URL("https://better-auth.com/blogs"),
+ title: metaTitle,
+ description: metaDescription,
+ openGraph: {
+ title: metaTitle,
+ description: metaDescription,
+ images: [
+ {
+ url: ogImage,
+ },
+ ],
+ url: "https://better-auth.com/blogs",
+ },
+ twitter: {
+ card: "summary_large_image",
+ title: metaTitle,
+ description: metaDescription,
+ images: [ogImage],
+ },
+ };
+ }
+ const page = blogs.getPage(slug);
+ if (page == null) notFound();
+ const baseUrl = process.env.NEXT_PUBLIC_URL || process.env.VERCEL_URL;
+ const url = new URL(`${baseUrl}/release-og/${slug.join("")}.png`);
+ const { title, description } = page.data;
+
+ return {
+ title,
+ description,
+ openGraph: {
+ title,
+ description,
+ type: "website",
+ url: absoluteUrl(`blogs/${slug.join("")}`),
+ images: [
+ {
+ url: url.toString(),
+ width: 1200,
+ height: 630,
+ alt: title,
+ },
+ ],
+ },
+ twitter: {
+ card: "summary_large_image",
+ title,
+ description,
+ images: [url.toString()],
+ },
+ };
+}
+
+export function generateStaticParams() {
+ return blogs.generateParams();
+}
diff --git a/docs/app/blog/_components/_layout.tsx b/docs/app/blog/_components/_layout.tsx
new file mode 100644
index 00000000..4d2c0833
--- /dev/null
+++ b/docs/app/blog/_components/_layout.tsx
@@ -0,0 +1,110 @@
+import { useId } from "react";
+
+import { Intro, IntroFooter } from "./changelog-layout";
+import { StarField } from "./stat-field";
+
+function Timeline() {
+ let id = useId();
+
+ return (
+
+
+
+
+
+
+
+
+
+ someone is
+
+ );
+}
+
+function Glow() {
+ let id = useId();
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+function FixedSidebar({
+ main,
+ footer,
+}: {
+ main: React.ReactNode;
+ footer: React.ReactNode;
+}) {
+ return (
+
+ );
+}
+
+export function Layout({ children }: { children: React.ReactNode }) {
+ return (
+ <>
+ } footer={ } />
+
+
+
+
+ {children}
+
+
+ >
+ );
+}
diff --git a/docs/app/blog/_components/changelog-layout.tsx b/docs/app/blog/_components/changelog-layout.tsx
new file mode 100644
index 00000000..0da3ee83
--- /dev/null
+++ b/docs/app/blog/_components/changelog-layout.tsx
@@ -0,0 +1,135 @@
+import Link from "next/link";
+import { useId } from "react";
+
+import clsx from "clsx";
+import { DiscordLogoIcon } from "@radix-ui/react-icons";
+
+function BookIcon(props: React.ComponentPropsWithoutRef<"svg">) {
+ return (
+
+
+
+ );
+}
+
+function GitHubIcon(props: React.ComponentPropsWithoutRef<"svg">) {
+ return (
+
+
+
+ );
+}
+
+function FeedIcon(props: React.ComponentPropsWithoutRef<"svg">) {
+ return (
+
+
+
+ );
+}
+
+function XIcon(props: React.ComponentPropsWithoutRef<"svg">) {
+ return (
+
+
+
+ );
+}
+
+export function Intro() {
+ return (
+ <>
+
+ All of the changes made will be{" "}
+ available here.
+
+
+ Better Auth is comprehensive authentication library for TypeScript that
+ provides a wide range of features to make authentication easier and more
+ secure.
+
+
+
+
+ Documentation
+
+
+ GitHub
+
+
+ Community
+
+
+ >
+ );
+}
+
+export function IntroFooter() {
+ return (
+
+ Brought to you by{" "}
+
+ BETTER-AUTH.
+
+
+ );
+}
+
+export function SignUpForm() {
+ let id = useId();
+
+ return (
+
+ );
+}
+
+export function IconLink({
+ children,
+ className,
+ compact = false,
+ icon: Icon,
+ ...props
+}: React.ComponentPropsWithoutRef & {
+ compact?: boolean;
+ icon?: React.ComponentType<{ className?: string }>;
+}) {
+ return (
+
+
+ {Icon && }
+
+ {children}
+
+
+ );
+}
diff --git a/docs/app/blog/_components/default-changelog.tsx b/docs/app/blog/_components/default-changelog.tsx
new file mode 100644
index 00000000..544aaf58
--- /dev/null
+++ b/docs/app/blog/_components/default-changelog.tsx
@@ -0,0 +1,254 @@
+import Link from "next/link";
+import { useId } from "react";
+import { cn } from "@/lib/utils";
+import { IconLink } from "./changelog-layout";
+import { BookIcon, GitHubIcon, XIcon } from "./icons";
+import { DiscordLogoIcon } from "@radix-ui/react-icons";
+import { StarField } from "./stat-field";
+import { betterFetch } from "@better-fetch/fetch";
+import Markdown from "react-markdown";
+import defaultMdxComponents from "fumadocs-ui/mdx";
+import rehypeHighlight from "rehype-highlight";
+import "highlight.js/styles/dark.css";
+
+export const dynamic = "force-static";
+const ChangelogPage = async () => {
+ const { data: releases } = await betterFetch<
+ {
+ id: number;
+ tag_name: string;
+ name: string;
+ body: string;
+ html_url: string;
+ prerelease: boolean;
+ published_at: string;
+ }[]
+ >("https://api.github.com/repos/better-auth/better-auth/releases");
+
+ const messages = releases
+ ?.filter((release) => !release.prerelease)
+ .map((release) => ({
+ tag: release.tag_name,
+ title: release.name,
+ content: getContent(release.body),
+ date: new Date(release.published_at).toLocaleDateString("en-US", {
+ year: "numeric",
+ month: "short",
+ day: "numeric",
+ }),
+ url: release.html_url,
+ }));
+
+ function getContent(content: string) {
+ const lines = content.split("\n");
+ const newContext = lines.map((line) => {
+ if (line.startsWith("- ")) {
+ const mainContent = line.split(";")[0];
+ const context = line.split(";")[2];
+ const mentions = context
+ ?.split(" ")
+ .filter((word) => word.startsWith("@"))
+ .map((mention) => {
+ const username = mention.replace("@", "");
+ const avatarUrl = `https://github.com/${username}.png`;
+ return `[](https://github.com/${username})`;
+ });
+ if (!mentions) {
+ return line;
+ }
+ // Remove  
+ return mainContent.replace(/ /g, "") + " – " + mentions.join(" ");
+ }
+ return line;
+ });
+ return newContext.join("\n");
+ }
+
+ return (
+
+
+
+
+
+
+
+ All of the changes made will be{" "}
+ available here.
+
+
+ Better Auth is comprehensive authentication library for TypeScript
+ that provides a wide range of features to make authentication easier
+ and more secure.
+
+
+
+
+ Documentation
+
+
+ GitHub
+
+
+ Community
+
+
+
+
+ BETTER-AUTH.
+
+
+
+
+
+
+
+
+
(
+
+ ),
+ h2: (props) => (
+
+
+
+ {props.children?.toString().includes("date=") &&
+ props.children?.toString().split("date=")[1]}
+
+
+
+
+
+ {props.children?.toString().split("date=")[0].trim()}
+
+
+ {props.children?.toString().includes("date=") &&
+ props.children?.toString().split("date=")[1]}
+
+
+ ),
+ h3: (props) => (
+
+ {props.children?.toString()?.trim()}
+
+
+ ),
+ p: (props) =>
,
+ ul: (props) => (
+
+ ),
+ li: (props) => ,
+ a: ({ className, ...props }: any) => (
+
+ ),
+ strong: (props) => (
+
+ ),
+ img: (props) => (
+
+ ),
+ }}
+ >
+ {messages
+ ?.map((message) => {
+ return `
+## ${message.title} date=${message.date}
+
+${message.content}
+ `;
+ })
+ .join("\n")}
+
+
+
+
+ );
+};
+
+export default ChangelogPage;
+
+export function Glow() {
+ let id = useId();
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/docs/app/blog/_components/fmt-dates.tsx b/docs/app/blog/_components/fmt-dates.tsx
new file mode 100644
index 00000000..7b3841c2
--- /dev/null
+++ b/docs/app/blog/_components/fmt-dates.tsx
@@ -0,0 +1,25 @@
+import { cn } from "@/lib/utils";
+
+const dateFormatter = new Intl.DateTimeFormat("en-US", {
+ year: "numeric",
+ month: "short",
+ day: "numeric",
+ timeZone: "UTC",
+});
+
+export function FormattedDate({
+ date,
+ ...props
+}: React.ComponentPropsWithoutRef<"time"> & { date: string | Date }) {
+ date = typeof date === "string" ? new Date(date) : date;
+
+ return (
+
+ {dateFormatter.format(date)}
+
+ );
+}
diff --git a/docs/app/blog/_components/icons.tsx b/docs/app/blog/_components/icons.tsx
new file mode 100644
index 00000000..52d7b5f2
--- /dev/null
+++ b/docs/app/blog/_components/icons.tsx
@@ -0,0 +1,35 @@
+export function BookIcon(props: React.ComponentPropsWithoutRef<"svg">) {
+ return (
+
+
+
+ );
+}
+
+export function GitHubIcon(props: React.ComponentPropsWithoutRef<"svg">) {
+ return (
+
+
+
+ );
+}
+
+export function FeedIcon(props: React.ComponentPropsWithoutRef<"svg">) {
+ return (
+
+
+
+ );
+}
+
+export function XIcon(props: React.ComponentPropsWithoutRef<"svg">) {
+ return (
+
+
+
+ );
+}
diff --git a/docs/app/blog/_components/stat-field.tsx b/docs/app/blog/_components/stat-field.tsx
new file mode 100644
index 00000000..5eeb89d2
--- /dev/null
+++ b/docs/app/blog/_components/stat-field.tsx
@@ -0,0 +1,219 @@
+"use client";
+
+import { useEffect, useId, useRef } from "react";
+import clsx from "clsx";
+import { animate, Segment } from "motion/react";
+
+type Star = [x: number, y: number, dim?: boolean, blur?: boolean];
+
+const stars: Array = [
+ [4, 4, true, true],
+ [4, 44, true],
+ [36, 22],
+ [50, 146, true, true],
+ [64, 43, true, true],
+ [76, 30, true],
+ [101, 116],
+ [140, 36, true],
+ [149, 134],
+ [162, 74, true],
+ [171, 96, true, true],
+ [210, 56, true, true],
+ [235, 90],
+ [275, 82, true, true],
+ [306, 6],
+ [307, 64, true, true],
+ [380, 68, true],
+ [380, 108, true, true],
+ [391, 148, true, true],
+ [405, 18, true],
+ [412, 86, true, true],
+ [426, 210, true, true],
+ [427, 56, true, true],
+ [538, 138],
+ [563, 88, true, true],
+ [611, 154, true, true],
+ [637, 150],
+ [651, 146, true],
+ [682, 70, true, true],
+ [683, 128],
+ [781, 82, true, true],
+ [785, 158, true],
+ [832, 146, true, true],
+ [852, 89],
+];
+
+const constellations: Array> = [
+ [
+ [247, 103],
+ [261, 86],
+ [307, 104],
+ [357, 36],
+ ],
+ [
+ [586, 120],
+ [516, 100],
+ [491, 62],
+ [440, 107],
+ [477, 180],
+ [516, 100],
+ ],
+ [
+ [733, 100],
+ [803, 120],
+ [879, 113],
+ [823, 164],
+ [803, 120],
+ ],
+];
+
+function Star({
+ blurId,
+ point: [cx, cy, dim, blur],
+}: {
+ blurId: string;
+ point: Star;
+}) {
+ let groupRef = useRef>(null);
+ let ref = useRef>(null);
+
+ useEffect(() => {
+ if (!groupRef.current || !ref.current) {
+ return;
+ }
+
+ let delay = Math.random() * 2;
+
+ let animations = [
+ animate(groupRef.current, { opacity: 1 }, { duration: 4, delay }),
+ animate(
+ ref.current,
+ {
+ opacity: dim ? [0.2, 0.5] : [1, 0.6],
+ scale: dim ? [1, 1.2] : [1.2, 1],
+ },
+ {
+ duration: 10,
+ delay,
+ },
+ ),
+ ];
+
+ return () => {
+ for (let animation of animations) {
+ animation.cancel();
+ }
+ };
+ }, [dim]);
+
+ return (
+
+
+
+ );
+}
+
+function Constellation({
+ points,
+ blurId,
+}: {
+ points: Array;
+ blurId: string;
+}) {
+ let ref = useRef>(null);
+ let uniquePoints = points.filter(
+ (point, pointIndex) =>
+ points.findIndex((p) => String(p) === String(point)) === pointIndex,
+ );
+ let isFilled = uniquePoints.length !== points.length;
+
+ useEffect(() => {
+ if (!ref.current) {
+ return;
+ }
+
+ let sequence: Array = [
+ [
+ ref.current,
+ { strokeDashoffset: 0, visibility: "visible" },
+ { duration: 5, delay: Math.random() * 3 + 2 },
+ ],
+ ];
+
+ if (isFilled) {
+ sequence.push([
+ ref.current,
+ { fill: "rgb(255 255 255 / 0.02)" },
+ { duration: 1 },
+ ]);
+ }
+
+ let animation = animate(sequence);
+
+ return () => {
+ animation.cancel();
+ };
+ }, [isFilled]);
+
+ return (
+ <>
+
+ {uniquePoints.map((point, pointIndex) => (
+
+ ))}
+ >
+ );
+}
+
+export function StarField({ className }: { className?: string }) {
+ let blurId = useId();
+
+ return (
+
+
+
+
+
+
+ {constellations.map((points, constellationIndex) => (
+
+ ))}
+ {stars.map((point, pointIndex) => (
+
+ ))}
+
+ );
+}
diff --git a/docs/app/blog/layout.tsx b/docs/app/blog/layout.tsx
new file mode 100644
index 00000000..3ce50d1d
--- /dev/null
+++ b/docs/app/blog/layout.tsx
@@ -0,0 +1,18 @@
+import { Metadata } from "next";
+
+export const metadata: Metadata = {
+ title: "Blog - Better Auth",
+ description: "Latest updates, articles, and insights about Better Auth",
+};
+
+interface BlogLayoutProps {
+ children: React.ReactNode;
+}
+
+export default function BlogLayout({ children }: BlogLayoutProps) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/docs/app/blogs/layout.tsx b/docs/app/blogs/layout.tsx
new file mode 100644
index 00000000..3ce50d1d
--- /dev/null
+++ b/docs/app/blogs/layout.tsx
@@ -0,0 +1,18 @@
+import { Metadata } from "next";
+
+export const metadata: Metadata = {
+ title: "Blog - Better Auth",
+ description: "Latest updates, articles, and insights about Better Auth",
+};
+
+interface BlogLayoutProps {
+ children: React.ReactNode;
+}
+
+export default function BlogLayout({ children }: BlogLayoutProps) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/docs/app/blogs/page.tsx b/docs/app/blogs/page.tsx
new file mode 100644
index 00000000..eebf0a91
--- /dev/null
+++ b/docs/app/blogs/page.tsx
@@ -0,0 +1,104 @@
+import { formatBlogDate } from "@/lib/blog";
+import Link from "next/link";
+import { blogs } from "@/lib/source";
+import { IconLink } from "../blog/_components/changelog-layout";
+import { GitHubIcon, BookIcon, XIcon } from "../blog/_components/icons";
+import { Glow } from "../blog/_components/default-changelog";
+import { StarField } from "../blog/_components/stat-field";
+import { DiscordLogoIcon } from "@radix-ui/react-icons";
+
+export default async function BlogPage() {
+ const posts = blogs.getPages();
+
+ return (
+
+
+
+
+
+
+
+ Blogs
+
+
+
+ Latest updates, articles, and insights about Better Auth
+
+
+
+
+ Documentation
+
+
+ GitHub
+
+
+ Community
+
+
+
+
+ BETTER-AUTH.
+
+
+
+
+
+
+ {posts.map((post) => (
+
+
+ {/* {post.data?.image && (
+
+ )} */}
+
+
+ {formatBlogDate(post.data.date)}
+
+
{post.data?.title}
+
+ {post.data?.description.substring(0, 100)}...
+
+
+
+
+ {post.data.structuredData.contents[0].content.substring(0, 250)}
+ ...
+
+
+ Read More
+
+
+ View Article
+
+
+ ))}
+
+
+
+ );
+}
diff --git a/docs/components/nav-bar.tsx b/docs/components/nav-bar.tsx
index eab44a75..7a6ea987 100644
--- a/docs/components/nav-bar.tsx
+++ b/docs/components/nav-bar.tsx
@@ -115,7 +115,10 @@ export const navMenu = [
name: "docs",
path: "/docs",
},
-
+ {
+ name: "blog",
+ path: "/blogs",
+ },
{
name: "changelogs",
path: "/changelogs",
diff --git a/docs/components/sidebar-content.tsx b/docs/components/sidebar-content.tsx
index 2b9ae4b0..647a2817 100644
--- a/docs/components/sidebar-content.tsx
+++ b/docs/components/sidebar-content.tsx
@@ -1270,6 +1270,38 @@ C0.7,239.6,62.1,0.5,62.2,0.4c0,0,54,13.8,119.9,30.8S302.1,62,302.2,62c0.2,0,0.2,
href: "/docs/plugins/api-key",
icon: () => ,
},
+ {
+ title: "MCP",
+ icon: () => (
+
+
+
+
+
+ ),
+ href: "/docs/plugins/mcp",
+ },
{
title: "Organization",
icon: () => ,
diff --git a/docs/content/blogs/mcp-auth.mdx b/docs/content/blogs/mcp-auth.mdx
new file mode 100644
index 00000000..58952780
--- /dev/null
+++ b/docs/content/blogs/mcp-auth.mdx
@@ -0,0 +1,178 @@
+---
+title: Authenicating MCP servers
+description: A deep dive into how to implement MCP auth with Better Auth & Vercel MCP adapter
+date: 2025-05-19
+image: /images/blogs/mcp-auth.png
+author:
+ name: Bereket Engida
+ avatar: /avatars/beka.jpg
+ twitter: imbereket
+tags:
+ - mcp
+ - vercel
+ - ai
+ - nextjs
+ - neon
+---
+
+## Introduction
+
+[MCP](https://modelcontextprotocol.io) is an open protocol that standardizes how applications provide context to LLMs. It provides a standardized way to connect AI models to different data sources and tools. It's been sometime since the MCP spec by anthropic become a standard for building LLM based apps.
+
+The protocol covers both client and server implementations. When you make a server for MCP clients to connect to, one of the requirements is to have a proper way to authenticate and authorize them. The MCP spec recommends using [OAuth 2.0](https://oauth.net/2/) for this purpose with some additional requirements.
+
+In this article, we'll see how Better Auth MCP plugin integrates with your MCP server to authenticate and authorize MCP clients.
+
+## How Better Auth MCP Plugin Works
+
+The Better Auth MCP plugin implements the OAuth 2.0 authorization flow with some MCP-specific modifications. Let's break down how it works:
+
+### 1. OAuth Discovery Endpoint
+
+First, the plugin helps you expose an OAuth discovery endpoint at `/.well-known/oauth-authorization-server` that provides metadata about the authorization server:
+
+
+```ts title=".well-known/oauth-authorization-server/route.ts"
+import { oAuthDiscoveryMetadata } from "better-auth/plugins";
+import { auth } from "../../../lib/auth";
+
+export const GET = oAuthDiscoveryMetadata(auth);
+```
+
+This endpoint returns standard OAuth metadata including:
+- Authorization endpoint (`/mcp/authorize`)
+- Token endpoint (`/mcp/token`)
+- Supported scopes (`openid`, `profile`, `email`, `offline_access`)
+- Supported response types (`code`)
+- PKCE challenge methods (`S256`)
+
+### 2. Authorization Flow
+
+When an MCP client (like Claude Desktop) wants to connect to your server, it initiates the OAuth flow:
+
+1. The client makes a request to your authorization endpoint with:
+ - `client_id`: Unique identifier for the client
+ - `redirect_uri`: Where to send the authorization code
+ - `response_type`: Always "code" for MCP
+ - `code_challenge`: PKCE challenge for security
+ - `scope`: Requested permissions (e.g. "openid profile")
+
+2. If the client isn't registered yet (no `client_id`), it first needs to register using the dynamic client registration endpoint:
+
+```ts
+// Client sends POST request to /mcp/register
+{
+ "redirect_uris": ["https://client.example.com/callback"],
+ "client_name": "My MCP Client",
+ "logo_uri": "https://client.example.com/logo.png",
+ "token_endpoint_auth_method": "client_secret_basic",
+ "grant_types": ["authorization_code"],
+ "response_types": ["code"],
+ "scope": "openid profile"
+}
+
+// Server validates and responds with:
+{
+ "client_id": "generated-client-id",
+ "client_secret": "generated-client-secret",
+ "client_id_issued_at": 1683900000,
+ "client_secret_expires_at": 0
+}
+```
+
+3. Once registered (or if already registered), if the user isn't logged in, they're redirected to your login page:
+```ts
+await ctx.setSignedCookie(
+ 'oidc_login_prompt',
+ JSON.stringify(ctx.query),
+ ctx.context.secret,
+ {
+ maxAge: 600,
+ path: '/',
+ sameSite: 'lax',
+ }
+);
+throw ctx.redirect(`${options.loginPage}?${queryFromURL}`);
+```
+
+4. After login, the plugin validates:
+ - Client ID exists and is enabled
+ - Redirect URI matches registered URIs
+ - Requested scopes are valid
+ - PKCE challenge is present (if required)
+
+5. If everything is valid, it generates an authorization code:
+```ts
+const code = generateRandomString(32, "a-z", "A-Z", "0-9");
+const codeExpiresInMs = opts.codeExpiresIn * 1000;
+const expiresAt = new Date(Date.now() + codeExpiresInMs);
+```
+
+### 3. Protecting Your MCP Server
+
+The plugin provides a `withMcpAuth` middleware to protect your MCP server routes:
+
+```ts
+import { withMcpAuth } from "better-auth/plugins";
+
+const handler = withMcpAuth(auth, (req, session) => {
+ // session contains the access token with scopes and user ID
+ return createMcpHandler(
+ (server) => {
+ // Define your MCP tools here
+ server.tool("echo", "Echo a message",
+ { message: z.string() },
+ async ({ message }) => {
+ return {
+ content: [{ type: "text", text: message }],
+ };
+ }
+ );
+ },
+ // ... rest of your MCP config
+ )(req);
+});
+```
+
+
+or you can use `auth.api.getMcpSession` to get the session from the request headers.
+
+```ts
+const session = await auth.api.getMcpSession({
+ headers: req.headers
+});
+```
+
+Make sure to handle the unauthenticated case properly by returning a 401 status code.
+
+```ts
+if (!session) {
+ return new Response(null, {
+ status: 401,
+ headers: {
+ "WWW-Authenticate": "Bearer"
+ }
+ });
+}
+```
+
+### 4. Configuration Options
+
+The plugin is highly configurable through the `mcp()` function:
+
+```ts
+mcp({
+ loginPage: "/sign-in", // Where to redirect for auth
+ oidcConfig: {
+ codeExpiresIn: 600, // Auth code expiry in seconds
+ accessTokenExpiresIn: 3600, // Access token expiry
+ refreshTokenExpiresIn: 604800, // Refresh token expiry
+ scopes: ["openid", "profile", "email"], // Supported scopes
+ requirePKCE: true, // Require PKCE security
+ }
+})
+```
+
+## Conclusion
+
+The Better Auth MCP plugin provides a secure and flexible way to authenticate and authorize MCP clients. It handles the OAuth flow, client registration, and session management, allowing you to focus on building your MCP server.
diff --git a/docs/content/blogs/meta.json b/docs/content/blogs/meta.json
new file mode 100644
index 00000000..47da3118
--- /dev/null
+++ b/docs/content/blogs/meta.json
@@ -0,0 +1,10 @@
+{
+ "title": "Blog",
+ "description": "Latest updates, articles, and insights about Better Auth",
+ "items": [
+ {
+ "title": "Latest",
+ "items": []
+ }
+ ]
+}
diff --git a/docs/content/docs/plugins/mcp.mdx b/docs/content/docs/plugins/mcp.mdx
new file mode 100644
index 00000000..03ee4ecf
--- /dev/null
+++ b/docs/content/docs/plugins/mcp.mdx
@@ -0,0 +1,224 @@
+---
+title: MCP
+description: MCP provider plugin for Better Auth
+---
+
+`OAuth` `MCP`
+
+The **MCP** plugin lets your app act as an OAuth provider for MCP clients. It handles authentication and makes it easy to issue and manage access tokens for MCP applications.
+
+## Installation
+
+
+
+ ### Add the Plugin
+
+ Add the MCP plugin to your auth configuration and specify the login page path.
+
+ ```ts title="auth.ts"
+ import { betterAuth } from "better-auth";
+ import { mcp } from "better-auth/plugins";
+
+ export const auth = betterAuth({
+ plugins: [
+ mcp({
+ loginPage: "/sign-in" // path to your login page
+ })
+ ]
+ });
+ ```
+
+ This doesn't have a client plugin, so you don't need to make any changes to your authClient.
+
+
+
+
+ ### Generate Schema
+
+ Run the migration or generate the schema to add the necessary fields and tables to the database.
+
+
+
+ ```bash
+ npx @better-auth/cli migrate
+ ```
+
+
+ ```bash
+ npx @better-auth/cli generate
+ ```
+
+
+ The MCP plugin uses the same schema as the OIDC Provider plugin. See the [OIDC Provider Schema](#schema) section for details.
+
+
+
+## Usage
+
+### OAuth Discovery Metadata
+
+Add a route to expose OAuth metadata for MCP clients:
+
+```ts title=".well-known/oauth-authorization-server/route.ts"
+import { oAuthDiscoveryMetadata } from "better-auth/plugins";
+import { auth } from "../../../lib/auth";
+
+export const GET = oAuthDiscoveryMetadata(auth);
+```
+
+### MCP Session Handling
+
+You can use the helper function `withMcpAuth` to get the session and handle unauthenticated calls automatically.
+
+
+```ts title="api/[transport]/route.ts"
+import { auth } from "@/lib/auth";
+import { createMcpHandler } from "@vercel/mcp-adapter";
+import { withMcpAuth } from "better-auth/plugins";
+import { z } from "zod";
+
+const handler = withMcpAuth(auth, (req, session) => {
+ // session contains the access token record with scopes and user ID
+ return createMcpHandler(
+ (server) => {
+ server.tool(
+ "echo",
+ "Echo a message",
+ { message: z.string() },
+ async ({ message }) => {
+ return {
+ content: [{ type: "text", text: `Tool echo: ${message}` }],
+ };
+ },
+ );
+ },
+ {
+ capabilities: {
+ tools: {
+ echo: {
+ description: "Echo a message",
+ },
+ },
+ },
+ },
+ {
+ redisUrl: process.env.REDIS_URL,
+ basePath: "/api",
+ verboseLogs: true,
+ maxDuration: 60,
+ },
+ )(req);
+});
+
+export { handler as GET, handler as POST, handler as DELETE };
+```
+
+You can also use `auth.api.getMCPSession` to get the session using the access token sent from the MCP client:
+
+```ts title="api/[transport]/route.ts"
+import { auth } from "@/lib/auth";
+import { createMcpHandler } from "@vercel/mcp-adapter";
+import { withMcpAuth } from "better-auth/plugins";
+import { z } from "zod";
+
+const handler = async (req: Request) => {
+ // session contains the access token record with scopes and user ID
+ const session = await auth.api.getMCPSession({
+ headers: req.headers
+ })
+ if(!session){
+ //this is important and you must return 401
+ return new Response(null, {
+ status: 401
+ })
+ }
+ return createMcpHandler(
+ (server) => {
+ server.tool(
+ "echo",
+ "Echo a message",
+ { message: z.string() },
+ async ({ message }) => {
+ return {
+ content: [{ type: "text", text: `Tool echo: ${message}` }],
+ };
+ },
+ );
+ },
+ {
+ capabilities: {
+ tools: {
+ echo: {
+ description: "Echo a message",
+ },
+ },
+ },
+ },
+ {
+ redisUrl: process.env.REDIS_URL,
+ basePath: "/api",
+ verboseLogs: true,
+ maxDuration: 60,
+ },
+ )(req);
+}
+
+export { handler as GET, handler as POST, handler as DELETE };
+```
+
+## Configuration
+
+The MCP plugin accepts the following configuration options:
+
+
+
+### OIDC Configuration
+
+The plugin supports additional OIDC configuration options through the `oidcConfig` parameter:
+
+
+
+## Schema
+
+The MCP plugin uses the same schema as the OIDC Provider plugin. See the [OIDC Provider Schema](#schema) section for details.
diff --git a/docs/lib/blog.ts b/docs/lib/blog.ts
new file mode 100644
index 00000000..8f314ad8
--- /dev/null
+++ b/docs/lib/blog.ts
@@ -0,0 +1,76 @@
+import { readFile, readdir } from "fs/promises";
+import matter from "gray-matter";
+import { join } from "path";
+import { cache } from "react";
+
+export interface BlogPost {
+ _id: string;
+ slug: string;
+ title: string;
+ description?: string;
+ date: string;
+ content: string;
+ image?: string;
+ author?: {
+ name: string;
+ avatar?: string;
+ twitter?: string;
+ };
+ tags?: string[];
+}
+
+const BLOGS_PATH = join(process.cwd(), "docs/content/blogs");
+
+export const getBlogPost = cache(
+ async (slug: string): Promise => {
+ try {
+ const filePath = join(BLOGS_PATH, `${slug}.mdx`);
+ const source = await readFile(filePath, "utf-8");
+ const { data, content } = matter(source);
+
+ return {
+ _id: slug,
+ slug,
+ content,
+ title: data.title,
+ description: data.description,
+ date: data.date,
+ image: data.image,
+ author: data.author,
+ tags: data.tags,
+ };
+ } catch (error) {
+ return null;
+ }
+ },
+);
+
+export const getAllBlogPosts = cache(async (): Promise => {
+ try {
+ const files = await readdir(BLOGS_PATH);
+ const mdxFiles = files.filter((file) => file.endsWith(".mdx"));
+
+ const posts = await Promise.all(
+ mdxFiles.map(async (file) => {
+ const slug = file.replace(/\.mdx$/, "");
+ const post = await getBlogPost(slug);
+ return post;
+ }),
+ );
+
+ return posts
+ .filter((post): post is BlogPost => post !== null)
+ .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
+ } catch (error) {
+ return [];
+ }
+});
+
+export function formatBlogDate(date: Date) {
+ let d = new Date(date);
+ return d.toLocaleDateString("en-US", {
+ month: "short",
+ day: "numeric",
+ year: "numeric",
+ });
+}
diff --git a/docs/lib/source.ts b/docs/lib/source.ts
index 579c7be1..b8d7e4f2 100644
--- a/docs/lib/source.ts
+++ b/docs/lib/source.ts
@@ -1,4 +1,4 @@
-import { changelogCollection, docs } from "@/.source";
+import { changelogCollection, docs, blogCollection } from "@/.source";
import { loader } from "fumadocs-core/source";
import { createMDXSource } from "fumadocs-mdx";
@@ -11,3 +11,8 @@ export const changelogs = loader({
baseUrl: "/changelogs",
source: createMDXSource(changelogCollection),
});
+
+export const blogs = loader({
+ baseUrl: "/blogs",
+ source: createMDXSource(blogCollection),
+});
diff --git a/docs/public/avatar/beka.jpg b/docs/public/avatar/beka.jpg
new file mode 100644
index 00000000..0d0873e3
Binary files /dev/null and b/docs/public/avatar/beka.jpg differ
diff --git a/docs/public/images/blogs/better auth (1).png b/docs/public/images/blogs/better auth (1).png
new file mode 100644
index 00000000..3531e362
Binary files /dev/null and b/docs/public/images/blogs/better auth (1).png differ
diff --git a/docs/source.config.ts b/docs/source.config.ts
index 816f7e7a..329d0db1 100644
--- a/docs/source.config.ts
+++ b/docs/source.config.ts
@@ -20,6 +20,23 @@ export const changelogCollection = defineCollections({
}),
});
+export const blogCollection = defineCollections({
+ type: "doc",
+ dir: "./content/blogs",
+ schema: z.object({
+ title: z.string(),
+ description: z.string(),
+ date: z.date(),
+ author: z.object({
+ name: z.string(),
+ avatar: z.string(),
+ twitter: z.string(),
+ }),
+ image: z.string(),
+ tags: z.array(z.string()),
+ }),
+});
+
export default defineConfig({
mdxOptions: {
remarkPlugins: [
diff --git a/examples/nextjs-mcp/.gitignore b/examples/nextjs-mcp/.gitignore
new file mode 100644
index 00000000..5ef6a520
--- /dev/null
+++ b/examples/nextjs-mcp/.gitignore
@@ -0,0 +1,41 @@
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/versions
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
+.DS_Store
+*.pem
+
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
+
+# env files (can opt-in for committing if needed)
+.env*
+
+# vercel
+.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/examples/nextjs-mcp/README.md b/examples/nextjs-mcp/README.md
new file mode 100644
index 00000000..041eb61a
--- /dev/null
+++ b/examples/nextjs-mcp/README.md
@@ -0,0 +1,93 @@
+# Better Auth - MCP Demo
+
+This is example repo on how to setup Better Auth for MCP Auth using Nextjs and Vercel MCP adapter.
+
+
+## Usage
+
+First, add the plugin to your auth instance
+
+```ts
+// auth.ts
+import { betterAuth } from "better-auth";
+import { mcp } from "better-auth/plugins";
+
+export cosnt auth = betterAuth({
+ plugins: [
+ mcp({
+ loginPage: "/sign-in" // path to a page where users login
+ })
+ ]
+})
+```
+
+Make sure to `generate` or `migrate` required schema using the cli:
+```bash
+npx @better-auth/cli generate ## or (migrate)
+```
+
+Add a route to expose oauth metadata
+
+```ts
+// .well-known/oauth-authroization-server/route.ts
+import { oAuthDiscoveryMetadata } from "better-auth/plugins";
+import { auth } from "../../../lib/auth";
+
+export const GET = oAuthDiscoveryMetadata(auth);
+```
+
+Mount the handlers if you haven't
+
+```ts
+// api/auth/[...all]/route.ts
+import { auth } from "@/lib/auth";
+import { toNextJsHandler } from "better-auth/next-js";
+
+export const { GET, POST } = toNextJsHandler(auth);
+```
+
+Use `auth.api.getMCPSession` to get the session using the access token sent from the MCP client
+
+```ts
+import { auth } from "@/lib/auth";
+import { createMcpHandler } from "@vercel/mcp-adapter";
+import { withMcpAuth } from "better-auth/plugins";
+import { z } from "zod";
+
+const handler = withMcpAuth(auth, (req, sesssion) => {
+ //session => This isn’t a typical Better Auth session - instead, it returns the access token record along with the scopes and user ID.
+ return createMcpHandler(
+ (server) => {
+ server.tool(
+ "echo",
+ "Echo a message",
+ { message: z.string() },
+ async ({ message }) => {
+ return {
+ content: [{ type: "text", text: `Tool echo: ${message}` }],
+ };
+ },
+ );
+ },
+ {
+ capabilities: {
+ tools: {
+ echo: {
+ description: "Echo a message",
+ },
+ },
+ },
+ },
+ {
+ redisUrl: process.env.REDIS_URL,
+ basePath: "/api",
+ verboseLogs: true,
+ maxDuration: 60,
+ },
+ )(req);
+});
+
+export { handler as GET, handler as POST, handler as DELETE };
+```
+
+And that's it!!
\ No newline at end of file
diff --git a/examples/nextjs-mcp/app/.well-known/oauth-authorization-server/route.ts b/examples/nextjs-mcp/app/.well-known/oauth-authorization-server/route.ts
new file mode 100644
index 00000000..c236fffd
--- /dev/null
+++ b/examples/nextjs-mcp/app/.well-known/oauth-authorization-server/route.ts
@@ -0,0 +1,4 @@
+import { oAuthDiscoveryMetadata } from "better-auth/plugins";
+import { auth } from "../../../lib/auth";
+
+export const GET = oAuthDiscoveryMetadata(auth);
diff --git a/examples/nextjs-mcp/app/api/[transport]/route.ts b/examples/nextjs-mcp/app/api/[transport]/route.ts
new file mode 100644
index 00000000..a8b9b5b6
--- /dev/null
+++ b/examples/nextjs-mcp/app/api/[transport]/route.ts
@@ -0,0 +1,38 @@
+import { auth } from "@/lib/auth";
+import { createMcpHandler } from "@vercel/mcp-adapter";
+import { withMcpAuth } from "better-auth/plugins";
+import { z } from "zod";
+
+const handler = withMcpAuth(auth, (req, sesssion) => {
+ return createMcpHandler(
+ (server) => {
+ server.tool(
+ "echo",
+ "Echo a message",
+ { message: z.string() },
+ async ({ message }) => {
+ return {
+ content: [{ type: "text", text: `Tool echo: ${message}` }],
+ };
+ },
+ );
+ },
+ {
+ capabilities: {
+ tools: {
+ echo: {
+ description: "Echo a message",
+ },
+ },
+ },
+ },
+ {
+ redisUrl: process.env.REDIS_URL,
+ basePath: "/api",
+ verboseLogs: true,
+ maxDuration: 60,
+ },
+ )(req);
+});
+
+export { handler as GET, handler as POST, handler as DELETE };
diff --git a/examples/nextjs-mcp/app/api/auth/[...all]/route.ts b/examples/nextjs-mcp/app/api/auth/[...all]/route.ts
new file mode 100644
index 00000000..5b67b064
--- /dev/null
+++ b/examples/nextjs-mcp/app/api/auth/[...all]/route.ts
@@ -0,0 +1,4 @@
+import { auth } from "@/lib/auth";
+import { toNextJsHandler } from "better-auth/next-js";
+
+export const { GET, POST } = toNextJsHandler(auth);
diff --git a/examples/nextjs-mcp/app/favicon.ico b/examples/nextjs-mcp/app/favicon.ico
new file mode 100644
index 00000000..718d6fea
Binary files /dev/null and b/examples/nextjs-mcp/app/favicon.ico differ
diff --git a/examples/nextjs-mcp/app/globals.css b/examples/nextjs-mcp/app/globals.css
new file mode 100644
index 00000000..a2dc41ec
--- /dev/null
+++ b/examples/nextjs-mcp/app/globals.css
@@ -0,0 +1,26 @@
+@import "tailwindcss";
+
+:root {
+ --background: #ffffff;
+ --foreground: #171717;
+}
+
+@theme inline {
+ --color-background: var(--background);
+ --color-foreground: var(--foreground);
+ --font-sans: var(--font-geist-sans);
+ --font-mono: var(--font-geist-mono);
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --background: #0a0a0a;
+ --foreground: #ededed;
+ }
+}
+
+body {
+ background: var(--background);
+ color: var(--foreground);
+ font-family: Arial, Helvetica, sans-serif;
+}
diff --git a/examples/nextjs-mcp/app/layout.tsx b/examples/nextjs-mcp/app/layout.tsx
new file mode 100644
index 00000000..7371307e
--- /dev/null
+++ b/examples/nextjs-mcp/app/layout.tsx
@@ -0,0 +1,34 @@
+import type { Metadata } from "next";
+import { Geist, Geist_Mono } from "next/font/google";
+import "./globals.css";
+
+const geistSans = Geist({
+ variable: "--font-geist-sans",
+ subsets: ["latin"],
+});
+
+const geistMono = Geist_Mono({
+ variable: "--font-geist-mono",
+ subsets: ["latin"],
+});
+
+export const metadata: Metadata = {
+ title: "Create Next App",
+ description: "Generated by create next app",
+};
+
+export default function RootLayout({
+ children,
+}: Readonly<{
+ children: React.ReactNode;
+}>) {
+ return (
+
+
+ {children}
+
+
+ );
+}
diff --git a/examples/nextjs-mcp/app/login/page.tsx b/examples/nextjs-mcp/app/login/page.tsx
new file mode 100644
index 00000000..358987a0
--- /dev/null
+++ b/examples/nextjs-mcp/app/login/page.tsx
@@ -0,0 +1,64 @@
+"use client";
+
+import { authClient } from "@/lib/authClient";
+import { useState } from "react";
+
+export default function Login() {
+ const [name, setName] = useState("");
+ const [email, setEmail] = useState("");
+ const [password, setPassword] = useState("");
+ const session = authClient.useSession();
+ return (
+
+ {JSON.stringify({ session })}
+
Sign Up
+
+
Name
+
setName(e.target.value)}
+ />
+
+
+
Email
+
setEmail(e.target.value)}
+ />
+
+
+
Password
+
setPassword(e.target.value)}
+ />
+
+
{
+ const { error } = await authClient.signUp.email({
+ email,
+ name,
+ password,
+ });
+ }}
+ >
+ Sign Up
+
+
{
+ const { error } = await authClient.signOut();
+ }}
+ >
+ Logout
+
+
+ );
+}
diff --git a/examples/nextjs-mcp/app/page.tsx b/examples/nextjs-mcp/app/page.tsx
new file mode 100644
index 00000000..721a4be1
--- /dev/null
+++ b/examples/nextjs-mcp/app/page.tsx
@@ -0,0 +1,103 @@
+import Image from "next/image";
+
+export default function Home() {
+ return (
+
+
+
+
+
+ Get started by editing{" "}
+
+ app/page.tsx
+
+ .
+
+
+ Save and see your changes instantly.
+
+
+
+
+
+
+
+ );
+}
diff --git a/examples/nextjs-mcp/lib/auth.ts b/examples/nextjs-mcp/lib/auth.ts
new file mode 100644
index 00000000..d52c35a4
--- /dev/null
+++ b/examples/nextjs-mcp/lib/auth.ts
@@ -0,0 +1,16 @@
+import { betterAuth } from "better-auth";
+import { mcp } from "better-auth/plugins";
+import Database from "better-sqlite3";
+
+export const auth = betterAuth({
+ database: new Database("./auth.db"),
+ baseURL: "http://localhost:3000",
+ plugins: [
+ mcp({
+ loginPage: "/login",
+ }),
+ ],
+ emailAndPassword: {
+ enabled: true,
+ },
+});
diff --git a/examples/nextjs-mcp/lib/authClient.ts b/examples/nextjs-mcp/lib/authClient.ts
new file mode 100644
index 00000000..f1012dd4
--- /dev/null
+++ b/examples/nextjs-mcp/lib/authClient.ts
@@ -0,0 +1,3 @@
+import { createAuthClient } from "better-auth/react";
+
+export const authClient = createAuthClient();
diff --git a/examples/nextjs-mcp/next.config.ts b/examples/nextjs-mcp/next.config.ts
new file mode 100644
index 00000000..7921f35d
--- /dev/null
+++ b/examples/nextjs-mcp/next.config.ts
@@ -0,0 +1,7 @@
+import type { NextConfig } from "next";
+
+const nextConfig: NextConfig = {
+ /* config options here */
+};
+
+export default nextConfig;
diff --git a/examples/nextjs-mcp/package.json b/examples/nextjs-mcp/package.json
new file mode 100644
index 00000000..4a975e8d
--- /dev/null
+++ b/examples/nextjs-mcp/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "nextjs-mcp",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev --turbopack",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint"
+ },
+ "dependencies": {
+ "@types/better-sqlite3": "^7.6.12",
+ "@vercel/mcp-adapter": "^0.4.1",
+ "better-auth": "workspace:^",
+ "better-sqlite3": "^11.6.0",
+ "next": "15.3.2",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0",
+ "zod": "^3.24.4"
+ },
+ "devDependencies": {
+ "@tailwindcss/postcss": "^4",
+ "@types/node": "^20",
+ "@types/react": "^19",
+ "@types/react-dom": "^19",
+ "tailwindcss": "^4",
+ "typescript": "^5"
+ }
+}
\ No newline at end of file
diff --git a/examples/nextjs-mcp/postcss.config.mjs b/examples/nextjs-mcp/postcss.config.mjs
new file mode 100644
index 00000000..f50127cd
--- /dev/null
+++ b/examples/nextjs-mcp/postcss.config.mjs
@@ -0,0 +1,5 @@
+const config = {
+ plugins: ["@tailwindcss/postcss"],
+};
+
+export default config;
diff --git a/examples/nextjs-mcp/public/file.svg b/examples/nextjs-mcp/public/file.svg
new file mode 100644
index 00000000..004145cd
--- /dev/null
+++ b/examples/nextjs-mcp/public/file.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/nextjs-mcp/public/globe.svg b/examples/nextjs-mcp/public/globe.svg
new file mode 100644
index 00000000..567f17b0
--- /dev/null
+++ b/examples/nextjs-mcp/public/globe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/nextjs-mcp/public/next.svg b/examples/nextjs-mcp/public/next.svg
new file mode 100644
index 00000000..5174b28c
--- /dev/null
+++ b/examples/nextjs-mcp/public/next.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/nextjs-mcp/public/vercel.svg b/examples/nextjs-mcp/public/vercel.svg
new file mode 100644
index 00000000..77053960
--- /dev/null
+++ b/examples/nextjs-mcp/public/vercel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/nextjs-mcp/public/window.svg b/examples/nextjs-mcp/public/window.svg
new file mode 100644
index 00000000..b2b2a44f
--- /dev/null
+++ b/examples/nextjs-mcp/public/window.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/nextjs-mcp/tsconfig.json b/examples/nextjs-mcp/tsconfig.json
new file mode 100644
index 00000000..3addb7e6
--- /dev/null
+++ b/examples/nextjs-mcp/tsconfig.json
@@ -0,0 +1,33 @@
+{
+ "compilerOptions": {
+ "target": "ES2017",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["./*"]
+ }
+ },
+ "include": [
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts",
+ "app/.well-known/oauth-authorization-server/route.ts"
+ ],
+ "exclude": ["node_modules"]
+}
diff --git a/examples/svelte-kit-example/tsconfig.json b/examples/svelte-kit-example/tsconfig.json
index 3c05e398..0f47472f 100644
--- a/examples/svelte-kit-example/tsconfig.json
+++ b/examples/svelte-kit-example/tsconfig.json
@@ -8,7 +8,6 @@
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
- "strict": true,
- "moduleResolution": "Bundler"
+ "strict": true
}
}
diff --git a/packages/better-auth/package.json b/packages/better-auth/package.json
index fba672ca..7c0f6655 100644
--- a/packages/better-auth/package.json
+++ b/packages/better-auth/package.json
@@ -1,6 +1,6 @@
{
"name": "better-auth",
- "version": "1.2.8",
+ "version": "1.2.9-beta.1",
"description": "The most comprehensive authentication library for TypeScript.",
"type": "module",
"repository": {
diff --git a/packages/better-auth/src/plugins/index.ts b/packages/better-auth/src/plugins/index.ts
index f86e7871..e6d9d5f6 100644
--- a/packages/better-auth/src/plugins/index.ts
+++ b/packages/better-auth/src/plugins/index.ts
@@ -22,3 +22,4 @@ export * from "./captcha";
export * from "./api-key";
export * from "./haveibeenpwned";
export * from "./one-time-token";
+export * from "./mcp";
diff --git a/packages/better-auth/src/plugins/mcp/authorize.ts b/packages/better-auth/src/plugins/mcp/authorize.ts
new file mode 100644
index 00000000..1c5a75d2
--- /dev/null
+++ b/packages/better-auth/src/plugins/mcp/authorize.ts
@@ -0,0 +1,232 @@
+import { APIError } from "better-call";
+import type { GenericEndpointContext } from "../../types";
+import { getSessionFromCtx } from "../../api";
+import type {
+ AuthorizationQuery,
+ Client,
+ OIDCOptions,
+} from "../oidc-provider/types";
+import { generateRandomString } from "../../crypto";
+
+function redirectErrorURL(url: string, error: string, description: string) {
+ return `${
+ url.includes("?") ? "&" : "?"
+ }error=${error}&error_description=${description}`;
+}
+
+export async function authorizeMCPOAuth(
+ ctx: GenericEndpointContext,
+ options: OIDCOptions,
+) {
+ ctx.setHeader("Access-Control-Allow-Origin", "*");
+ ctx.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
+ ctx.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
+ ctx.setHeader("Access-Control-Max-Age", "86400");
+ const opts = {
+ codeExpiresIn: 600,
+ defaultScope: "openid",
+ ...options,
+ scopes: [
+ "openid",
+ "profile",
+ "email",
+ "offline_access",
+ ...(options?.scopes || []),
+ ],
+ };
+ if (!ctx.request) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "request not found",
+ error: "invalid_request",
+ });
+ }
+ const session = await getSessionFromCtx(ctx);
+ if (!session) {
+ /**
+ * If the user is not logged in, we need to redirect them to the
+ * login page.
+ */
+ await ctx.setSignedCookie(
+ "oidc_login_prompt",
+ JSON.stringify(ctx.query),
+ ctx.context.secret,
+ {
+ maxAge: 600,
+ path: "/",
+ sameSite: "lax",
+ },
+ );
+ const queryFromURL = ctx.request.url?.split("?")[1];
+ throw ctx.redirect(`${options.loginPage}?${queryFromURL}`);
+ }
+
+ const query = ctx.query as AuthorizationQuery;
+ console.log(query);
+ if (!query.client_id) {
+ throw ctx.redirect(`${ctx.context.baseURL}/error?error=invalid_client`);
+ }
+
+ if (!query.response_type) {
+ throw ctx.redirect(
+ redirectErrorURL(
+ `${ctx.context.baseURL}/error`,
+ "invalid_request",
+ "response_type is required",
+ ),
+ );
+ }
+
+ const client = await ctx.context.adapter
+ .findOne>({
+ model: "oauthApplication",
+ where: [
+ {
+ field: "clientId",
+ value: ctx.query.client_id,
+ },
+ ],
+ })
+ .then((res) => {
+ if (!res) {
+ return null;
+ }
+ return {
+ ...res,
+ redirectURLs: res.redirectURLs.split(","),
+ metadata: res.metadata ? JSON.parse(res.metadata) : {},
+ } as Client;
+ });
+ console.log(client);
+ if (!client) {
+ throw ctx.redirect(`${ctx.context.baseURL}/error?error=invalid_client`);
+ }
+ const redirectURI = client.redirectURLs.find(
+ (url) => url === ctx.query.redirect_uri,
+ );
+
+ if (!redirectURI || !query.redirect_uri) {
+ /**
+ * show UI error here warning the user that the redirect URI is invalid
+ */
+ throw new APIError("BAD_REQUEST", {
+ message: "Invalid redirect URI",
+ });
+ }
+ if (client.disabled) {
+ throw ctx.redirect(`${ctx.context.baseURL}/error?error=client_disabled`);
+ }
+
+ if (query.response_type !== "code") {
+ throw ctx.redirect(
+ `${ctx.context.baseURL}/error?error=unsupported_response_type`,
+ );
+ }
+
+ const requestScope =
+ query.scope?.split(" ").filter((s) => s) || opts.defaultScope.split(" ");
+ const invalidScopes = requestScope.filter((scope) => {
+ const isInvalid =
+ !opts.scopes.includes(scope) ||
+ (scope === "offline_access" && query.prompt !== "consent");
+ return isInvalid;
+ });
+ if (invalidScopes.length) {
+ throw ctx.redirect(
+ redirectErrorURL(
+ query.redirect_uri,
+ "invalid_scope",
+ `The following scopes are invalid: ${invalidScopes.join(", ")}`,
+ ),
+ );
+ }
+
+ if (
+ (!query.code_challenge || !query.code_challenge_method) &&
+ options.requirePKCE
+ ) {
+ throw ctx.redirect(
+ redirectErrorURL(
+ query.redirect_uri,
+ "invalid_request",
+ "pkce is required",
+ ),
+ );
+ }
+
+ if (!query.code_challenge_method) {
+ query.code_challenge_method = "plain";
+ }
+
+ if (
+ ![
+ "s256",
+ options.allowPlainCodeChallengeMethod ? "plain" : "s256",
+ ].includes(query.code_challenge_method?.toLowerCase() || "")
+ ) {
+ throw ctx.redirect(
+ redirectErrorURL(
+ query.redirect_uri,
+ "invalid_request",
+ "invalid code_challenge method",
+ ),
+ );
+ }
+
+ const code = generateRandomString(32, "a-z", "A-Z", "0-9");
+ const codeExpiresInMs = opts.codeExpiresIn * 1000;
+ const expiresAt = new Date(Date.now() + codeExpiresInMs);
+ try {
+ /**
+ * Save the code in the database
+ */
+ await ctx.context.internalAdapter.createVerificationValue(
+ {
+ value: JSON.stringify({
+ clientId: client.clientId,
+ redirectURI: query.redirect_uri,
+ scope: requestScope,
+ userId: session.user.id,
+ authTime: session.session.createdAt.getTime(),
+ /**
+ * If the prompt is set to `consent`, then we need
+ * to require the user to consent to the scopes.
+ *
+ * This means the code now needs to be treated as a
+ * consent request.
+ *
+ * once the user consents, teh code will be updated
+ * with the actual code. This is to prevent the
+ * client from using the code before the user
+ * consents.
+ */
+ requireConsent: query.prompt === "consent",
+ state: query.prompt === "consent" ? query.state : null,
+ codeChallenge: query.code_challenge,
+ codeChallengeMethod: query.code_challenge_method,
+ nonce: query.nonce,
+ }),
+ identifier: code,
+ expiresAt,
+ },
+ ctx,
+ );
+ } catch (e) {
+ throw ctx.redirect(
+ redirectErrorURL(
+ query.redirect_uri,
+ "server_error",
+ "An error occurred while processing the request",
+ ),
+ );
+ }
+
+ const redirectURIWithCode = new URL(redirectURI);
+ redirectURIWithCode.searchParams.set("code", code);
+ redirectURIWithCode.searchParams.set("state", ctx.query.state);
+
+ if (query.prompt !== "consent") {
+ throw ctx.redirect(redirectURIWithCode.toString());
+ }
+
+ throw ctx.redirect(redirectURIWithCode.toString());
+}
diff --git a/packages/better-auth/src/plugins/mcp/index.ts b/packages/better-auth/src/plugins/mcp/index.ts
new file mode 100644
index 00000000..8002a8c2
--- /dev/null
+++ b/packages/better-auth/src/plugins/mcp/index.ts
@@ -0,0 +1,928 @@
+import { z } from "zod";
+import {
+ createAuthEndpoint,
+ createAuthMiddleware,
+ type BetterAuthPlugin,
+} from "..";
+import {
+ oidcProvider,
+ type Client,
+ type CodeVerificationValue,
+ type OAuthAccessToken,
+ type OIDCMetadata,
+ type OIDCOptions,
+} from "../oidc-provider";
+import { APIError, getSessionFromCtx } from "../../api";
+import { base64 } from "@better-auth/utils/base64";
+import { generateRandomString } from "../../crypto";
+import { createHash } from "@better-auth/utils/hash";
+import { subtle } from "@better-auth/utils";
+import { SignJWT } from "jose";
+import type { GenericEndpointContext } from "../../types";
+import { parseSetCookieHeader } from "../../cookies";
+import { schema } from "../oidc-provider/schema";
+import { authorizeMCPOAuth } from "./authorize";
+
+interface MCPOptions {
+ loginPage: string;
+ oidcConfig?: OIDCOptions;
+}
+
+export const getMCPProviderMetadata = (
+ ctx: GenericEndpointContext,
+ options?: OIDCOptions,
+): OIDCMetadata => {
+ const issuer = ctx.context.options.baseURL as string;
+ const baseURL = ctx.context.baseURL;
+ if (!issuer || !baseURL) {
+ throw new APIError("INTERNAL_SERVER_ERROR", {
+ error: "invalid_issuer",
+ error_description:
+ "issuer or baseURL is not set. If you're the app developer, please make sure to set the `baseURL` in your auth config.",
+ });
+ }
+ return {
+ issuer,
+ authorization_endpoint: `${baseURL}/mcp/authorize`,
+ token_endpoint: `${baseURL}/mcp/token`,
+ userinfo_endpoint: `${baseURL}/mcp/userinfo`,
+ jwks_uri: `${baseURL}/mcp/jwks`,
+ registration_endpoint: `${baseURL}/mcp/register`,
+ scopes_supported: ["openid", "profile", "email", "offline_access"],
+ response_types_supported: ["code"],
+ response_modes_supported: ["query"],
+ grant_types_supported: ["authorization_code"],
+ acr_values_supported: [
+ "urn:mace:incommon:iap:silver",
+ "urn:mace:incommon:iap:bronze",
+ ],
+ subject_types_supported: ["public"],
+ id_token_signing_alg_values_supported: ["RS256", "none"],
+ token_endpoint_auth_methods_supported: [
+ "client_secret_basic",
+ "client_secret_post",
+ ],
+ code_challenge_methods_supported: ["S256"],
+ claims_supported: [
+ "sub",
+ "iss",
+ "aud",
+ "exp",
+ "nbf",
+ "iat",
+ "jti",
+ "email",
+ "email_verified",
+ "name",
+ ],
+ ...options?.metadata,
+ };
+};
+
+export const mcp = (options: MCPOptions) => {
+ const opts = {
+ codeExpiresIn: 600,
+ defaultScope: "openid",
+ accessTokenExpiresIn: 3600,
+ refreshTokenExpiresIn: 604800,
+ allowPlainCodeChallengeMethod: true,
+ ...options.oidcConfig,
+ loginPage: options.loginPage,
+ scopes: [
+ "openid",
+ "profile",
+ "email",
+ "offline_access",
+ ...(options.oidcConfig?.scopes || []),
+ ],
+ };
+ const modelName = {
+ oauthClient: "oauthApplication",
+ oauthAccessToken: "oauthAccessToken",
+ oauthConsent: "oauthConsent",
+ };
+ const provider = oidcProvider(opts);
+ return {
+ id: "mcp",
+ hooks: {
+ after: [
+ {
+ matcher() {
+ return true;
+ },
+ handler: createAuthMiddleware(async (ctx) => {
+ const cookie = await ctx.getSignedCookie(
+ "oidc_login_prompt",
+ ctx.context.secret,
+ );
+ const cookieName = ctx.context.authCookies.sessionToken.name;
+ const parsedSetCookieHeader = parseSetCookieHeader(
+ ctx.context.responseHeaders?.get("set-cookie") || "",
+ );
+ const hasSessionToken = parsedSetCookieHeader.has(cookieName);
+ if (!cookie || !hasSessionToken) {
+ return;
+ }
+ ctx.setCookie("oidc_login_prompt", "", {
+ maxAge: 0,
+ });
+ const sessionCookie = parsedSetCookieHeader.get(cookieName)?.value;
+ const sessionToken = sessionCookie?.split(".")[0];
+ if (!sessionToken) {
+ return;
+ }
+ const session =
+ await ctx.context.internalAdapter.findSession(sessionToken);
+ if (!session) {
+ return;
+ }
+ ctx.query = JSON.parse(cookie);
+ ctx.query!.prompt = "consent";
+ ctx.context.session = session;
+ const response = await authorizeMCPOAuth(ctx, opts).catch((e) => {
+ if (e instanceof APIError) {
+ if (e.statusCode === 302) {
+ return ctx.json({
+ redirect: true,
+ //@ts-expect-error
+ url: e.headers.get("location"),
+ });
+ }
+ }
+ throw e;
+ });
+ return response;
+ }),
+ },
+ ],
+ },
+ endpoints: {
+ getMcpOAuthConfig: createAuthEndpoint(
+ "/.well-known/oauth-authorization-server",
+ {
+ method: "GET",
+ metadata: {
+ client: false,
+ },
+ },
+ async (c) => {
+ try {
+ const metadata = getMCPProviderMetadata(c, options);
+ return c.json(metadata);
+ } catch (e) {
+ console.log(e);
+ return c.json(null);
+ }
+ },
+ ),
+ mcpOAuthAuthroize: createAuthEndpoint(
+ "/mcp/authorize",
+ {
+ method: "GET",
+ query: z.record(z.string(), z.any()),
+ metadata: {
+ openapi: {
+ description: "Authorize an OAuth2 request using MCP",
+ responses: {
+ "200": {
+ description: "Authorization response generated successfully",
+ content: {
+ "application/json": {
+ schema: {
+ type: "object",
+ additionalProperties: true,
+ description:
+ "Authorization response, contents depend on the authorize function implementation",
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ async (ctx) => {
+ return authorizeMCPOAuth(ctx, opts);
+ },
+ ),
+ mcpOAuthToken: createAuthEndpoint(
+ "/mcp/token",
+ {
+ method: "POST",
+ body: z.record(z.any()),
+ metadata: {
+ isAction: false,
+ },
+ },
+ async (ctx) => {
+ //cors
+ ctx.setHeader("Access-Control-Allow-Origin", "*");
+ ctx.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
+ ctx.setHeader(
+ "Access-Control-Allow-Headers",
+ "Content-Type, Authorization",
+ );
+ ctx.setHeader("Access-Control-Max-Age", "86400");
+
+ let { body } = ctx;
+ if (!body) {
+ throw ctx.error("BAD_REQUEST", {
+ error_description: "request body not found",
+ error: "invalid_request",
+ });
+ }
+ if (body instanceof FormData) {
+ body = Object.fromEntries(body.entries());
+ }
+ if (!(body instanceof Object)) {
+ throw new APIError("BAD_REQUEST", {
+ error_description: "request body is not an object",
+ error: "invalid_request",
+ });
+ }
+ let { client_id, client_secret } = body;
+ const authorization =
+ ctx.request?.headers.get("authorization") || null;
+ if (
+ authorization &&
+ !client_id &&
+ !client_secret &&
+ authorization.startsWith("Basic ")
+ ) {
+ try {
+ const encoded = authorization.replace("Basic ", "");
+ const decoded = new TextDecoder().decode(base64.decode(encoded));
+ if (!decoded.includes(":")) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "invalid authorization header format",
+ error: "invalid_client",
+ });
+ }
+ const [id, secret] = decoded.split(":");
+ if (!id || !secret) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "invalid authorization header format",
+ error: "invalid_client",
+ });
+ }
+ client_id = id;
+ client_secret = secret;
+ } catch (error) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "invalid authorization header format",
+ error: "invalid_client",
+ });
+ }
+ }
+ const {
+ grant_type,
+ code,
+ redirect_uri,
+ refresh_token,
+ code_verifier,
+ } = body;
+ if (grant_type === "refresh_token") {
+ if (!refresh_token) {
+ throw new APIError("BAD_REQUEST", {
+ error_description: "refresh_token is required",
+ error: "invalid_request",
+ });
+ }
+ const token = await ctx.context.adapter.findOne({
+ model: "oauthAccessToken",
+ where: [
+ {
+ field: "refreshToken",
+ value: refresh_token.toString(),
+ },
+ ],
+ });
+ if (!token) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "invalid refresh token",
+ error: "invalid_grant",
+ });
+ }
+ if (token.clientId !== client_id?.toString()) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "invalid client_id",
+ error: "invalid_client",
+ });
+ }
+ if (token.refreshTokenExpiresAt < new Date()) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "refresh token expired",
+ error: "invalid_grant",
+ });
+ }
+ const accessToken = generateRandomString(32, "a-z", "A-Z");
+ const newRefreshToken = generateRandomString(32, "a-z", "A-Z");
+ const accessTokenExpiresAt = new Date(
+ Date.now() + opts.accessTokenExpiresIn * 1000,
+ );
+ const refreshTokenExpiresAt = new Date(
+ Date.now() + opts.refreshTokenExpiresIn * 1000,
+ );
+ await ctx.context.adapter.create({
+ model: modelName.oauthAccessToken,
+ data: {
+ accessToken,
+ refreshToken: newRefreshToken,
+ accessTokenExpiresAt,
+ refreshTokenExpiresAt,
+ clientId: client_id.toString(),
+ userId: token.userId,
+ scopes: token.scopes,
+ createdAt: new Date(),
+ updatedAt: new Date(),
+ },
+ });
+ return ctx.json({
+ access_token: accessToken,
+ token_type: "bearer",
+ expires_in: opts.accessTokenExpiresIn,
+ refresh_token: newRefreshToken,
+ scope: token.scopes,
+ });
+ }
+
+ if (!code) {
+ throw new APIError("BAD_REQUEST", {
+ error_description: "code is required",
+ error: "invalid_request",
+ });
+ }
+
+ if (opts.requirePKCE && !code_verifier) {
+ throw new APIError("BAD_REQUEST", {
+ error_description: "code verifier is missing",
+ error: "invalid_request",
+ });
+ }
+
+ /**
+ * We need to check if the code is valid before we can proceed
+ * with the rest of the request.
+ */
+ const verificationValue =
+ await ctx.context.internalAdapter.findVerificationValue(
+ code.toString(),
+ );
+ if (!verificationValue) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "invalid code",
+ error: "invalid_grant",
+ });
+ }
+ if (verificationValue.expiresAt < new Date()) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "code expired",
+ error: "invalid_grant",
+ });
+ }
+
+ await ctx.context.internalAdapter.deleteVerificationValue(
+ verificationValue.id,
+ );
+ if (!client_id || !client_secret) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "client_id and client_secret are required",
+ error: "invalid_client",
+ });
+ }
+ if (!grant_type) {
+ throw new APIError("BAD_REQUEST", {
+ error_description: "grant_type is required",
+ error: "invalid_request",
+ });
+ }
+ if (grant_type !== "authorization_code") {
+ throw new APIError("BAD_REQUEST", {
+ error_description: "grant_type must be 'authorization_code'",
+ error: "unsupported_grant_type",
+ });
+ }
+
+ if (!redirect_uri) {
+ throw new APIError("BAD_REQUEST", {
+ error_description: "redirect_uri is required",
+ error: "invalid_request",
+ });
+ }
+
+ const client = await ctx.context.adapter
+ .findOne>({
+ model: modelName.oauthClient,
+ where: [{ field: "clientId", value: client_id.toString() }],
+ })
+ .then((res) => {
+ if (!res) {
+ return null;
+ }
+ return {
+ ...res,
+ redirectURLs: res.redirectURLs.split(","),
+ metadata: res.metadata ? JSON.parse(res.metadata) : {},
+ } as Client;
+ });
+ if (!client) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "invalid client_id",
+ error: "invalid_client",
+ });
+ }
+ if (client.disabled) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "client is disabled",
+ error: "invalid_client",
+ });
+ }
+ const isValidSecret =
+ client.clientSecret === client_secret.toString();
+ if (!isValidSecret) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "invalid client_secret",
+ error: "invalid_client",
+ });
+ }
+ const value = JSON.parse(
+ verificationValue.value,
+ ) as CodeVerificationValue;
+ if (value.clientId !== client_id.toString()) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "invalid client_id",
+ error: "invalid_client",
+ });
+ }
+ if (value.redirectURI !== redirect_uri.toString()) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "invalid redirect_uri",
+ error: "invalid_client",
+ });
+ }
+ if (value.codeChallenge && !code_verifier) {
+ throw new APIError("BAD_REQUEST", {
+ error_description: "code verifier is missing",
+ error: "invalid_request",
+ });
+ }
+
+ const challenge =
+ value.codeChallengeMethod === "plain"
+ ? code_verifier
+ : await createHash("SHA-256", "base64urlnopad").digest(
+ code_verifier,
+ );
+
+ if (challenge !== value.codeChallenge) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "code verification failed",
+ error: "invalid_request",
+ });
+ }
+
+ const requestedScopes = value.scope;
+ await ctx.context.internalAdapter.deleteVerificationValue(
+ verificationValue.id,
+ );
+ const accessToken = generateRandomString(32, "a-z", "A-Z");
+ const refreshToken = generateRandomString(32, "A-Z", "a-z");
+ const accessTokenExpiresAt = new Date(
+ Date.now() + opts.accessTokenExpiresIn * 1000,
+ );
+ const refreshTokenExpiresAt = new Date(
+ Date.now() + opts.refreshTokenExpiresIn * 1000,
+ );
+ await ctx.context.adapter.create({
+ model: modelName.oauthAccessToken,
+ data: {
+ accessToken,
+ refreshToken,
+ accessTokenExpiresAt,
+ refreshTokenExpiresAt,
+ clientId: client_id.toString(),
+ userId: value.userId,
+ scopes: requestedScopes.join(" "),
+ createdAt: new Date(),
+ updatedAt: new Date(),
+ },
+ });
+ const user = await ctx.context.internalAdapter.findUserById(
+ value.userId,
+ );
+ if (!user) {
+ throw new APIError("UNAUTHORIZED", {
+ error_description: "user not found",
+ error: "invalid_grant",
+ });
+ }
+ let secretKey = {
+ alg: "HS256",
+ key: await subtle.generateKey(
+ {
+ name: "HMAC",
+ hash: "SHA-256",
+ },
+ true,
+ ["sign", "verify"],
+ ),
+ };
+ const profile = {
+ given_name: user.name.split(" ")[0],
+ family_name: user.name.split(" ")[1],
+ name: user.name,
+ profile: user.image,
+ updated_at: user.updatedAt.toISOString(),
+ };
+ const email = {
+ email: user.email,
+ email_verified: user.emailVerified,
+ };
+ const userClaims = {
+ ...(requestedScopes.includes("profile") ? profile : {}),
+ ...(requestedScopes.includes("email") ? email : {}),
+ };
+
+ const additionalUserClaims = opts.getAdditionalUserInfoClaim
+ ? opts.getAdditionalUserInfoClaim(user, requestedScopes)
+ : {};
+
+ const idToken = await new SignJWT({
+ sub: user.id,
+ aud: client_id.toString(),
+ iat: Date.now(),
+ auth_time: ctx.context.session?.session.createdAt.getTime(),
+ nonce: value.nonce,
+ acr: "urn:mace:incommon:iap:silver", // default to silver - ⚠︎ this should be configurable and should be validated against the client's metadata
+ ...userClaims,
+ ...additionalUserClaims,
+ })
+ .setProtectedHeader({ alg: secretKey.alg })
+ .setIssuedAt()
+ .setExpirationTime(
+ Math.floor(Date.now() / 1000) + opts.accessTokenExpiresIn,
+ )
+ .sign(secretKey.key);
+ return ctx.json(
+ {
+ access_token: accessToken,
+ token_type: "Bearer",
+ expires_in: opts.accessTokenExpiresIn,
+ refresh_token: requestedScopes.includes("offline_access")
+ ? refreshToken
+ : undefined,
+ scope: requestedScopes.join(" "),
+ id_token: requestedScopes.includes("openid")
+ ? idToken
+ : undefined,
+ },
+ {
+ headers: {
+ "Cache-Control": "no-store",
+ Pragma: "no-cache",
+ },
+ },
+ );
+ },
+ ),
+ registerMcpClient: createAuthEndpoint(
+ "/mcp/register",
+ {
+ method: "POST",
+ body: z.object({
+ redirect_uris: z.array(z.string()),
+ token_endpoint_auth_method: z
+ .enum(["none", "client_secret_basic", "client_secret_post"])
+ .default("client_secret_basic")
+ .optional(),
+ grant_types: z
+ .array(
+ z.enum([
+ "authorization_code",
+ "implicit",
+ "password",
+ "client_credentials",
+ "refresh_token",
+ "urn:ietf:params:oauth:grant-type:jwt-bearer",
+ "urn:ietf:params:oauth:grant-type:saml2-bearer",
+ ]),
+ )
+ .default(["authorization_code"])
+ .optional(),
+ response_types: z
+ .array(z.enum(["code", "token"]))
+ .default(["code"])
+ .optional(),
+ client_name: z.string().optional(),
+ client_uri: z.string().optional(),
+ logo_uri: z.string().optional(),
+ scope: z.string().optional(),
+ contacts: z.array(z.string()).optional(),
+ tos_uri: z.string().optional(),
+ policy_uri: z.string().optional(),
+ jwks_uri: z.string().optional(),
+ jwks: z.record(z.any()).optional(),
+ metadata: z.record(z.any()).optional(),
+ software_id: z.string().optional(),
+ software_version: z.string().optional(),
+ software_statement: z.string().optional(),
+ }),
+ metadata: {
+ openapi: {
+ description: "Register an OAuth2 application",
+ responses: {
+ "200": {
+ description: "OAuth2 application registered successfully",
+ content: {
+ "application/json": {
+ schema: {
+ type: "object",
+ properties: {
+ name: {
+ type: "string",
+ description: "Name of the OAuth2 application",
+ },
+ icon: {
+ type: "string",
+ nullable: true,
+ description: "Icon URL for the application",
+ },
+ metadata: {
+ type: "object",
+ additionalProperties: true,
+ nullable: true,
+ description:
+ "Additional metadata for the application",
+ },
+ clientId: {
+ type: "string",
+ description: "Unique identifier for the client",
+ },
+ clientSecret: {
+ type: "string",
+ description: "Secret key for the client",
+ },
+ redirectURLs: {
+ type: "array",
+ items: { type: "string", format: "uri" },
+ description: "List of allowed redirect URLs",
+ },
+ type: {
+ type: "string",
+ description: "Type of the client",
+ enum: ["web"],
+ },
+ authenticationScheme: {
+ type: "string",
+ description:
+ "Authentication scheme used by the client",
+ enum: ["client_secret"],
+ },
+ disabled: {
+ type: "boolean",
+ description: "Whether the client is disabled",
+ enum: [false],
+ },
+ userId: {
+ type: "string",
+ nullable: true,
+ description:
+ "ID of the user who registered the client, null if registered anonymously",
+ },
+ createdAt: {
+ type: "string",
+ format: "date-time",
+ description: "Creation timestamp",
+ },
+ updatedAt: {
+ type: "string",
+ format: "date-time",
+ description: "Last update timestamp",
+ },
+ },
+ required: [
+ "name",
+ "clientId",
+ "clientSecret",
+ "redirectURLs",
+ "type",
+ "authenticationScheme",
+ "disabled",
+ "createdAt",
+ "updatedAt",
+ ],
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ async (ctx) => {
+ const body = ctx.body;
+ const session = await getSessionFromCtx(ctx);
+ ctx.setHeader("Access-Control-Allow-Origin", "*");
+ ctx.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
+ ctx.setHeader(
+ "Access-Control-Allow-Headers",
+ "Content-Type, Authorization",
+ );
+ ctx.setHeader("Access-Control-Max-Age", "86400");
+ ctx.headers?.set("Access-Control-Max-Age", "86400");
+ if (
+ (!body.grant_types ||
+ body.grant_types.includes("authorization_code") ||
+ body.grant_types.includes("implicit")) &&
+ (!body.redirect_uris || body.redirect_uris.length === 0)
+ ) {
+ throw new APIError("BAD_REQUEST", {
+ error: "invalid_redirect_uri",
+ error_description:
+ "Redirect URIs are required for authorization_code and implicit grant types",
+ });
+ }
+
+ if (body.grant_types && body.response_types) {
+ if (
+ body.grant_types.includes("authorization_code") &&
+ !body.response_types.includes("code")
+ ) {
+ throw new APIError("BAD_REQUEST", {
+ error: "invalid_client_metadata",
+ error_description:
+ "When 'authorization_code' grant type is used, 'code' response type must be included",
+ });
+ }
+ if (
+ body.grant_types.includes("implicit") &&
+ !body.response_types.includes("token")
+ ) {
+ throw new APIError("BAD_REQUEST", {
+ error: "invalid_client_metadata",
+ error_description:
+ "When 'implicit' grant type is used, 'token' response type must be included",
+ });
+ }
+ }
+
+ const clientId =
+ opts.generateClientId?.() || generateRandomString(32, "a-z", "A-Z");
+ const clientSecret =
+ opts.generateClientSecret?.() ||
+ generateRandomString(32, "a-z", "A-Z");
+
+ await ctx.context.adapter.create({
+ model: modelName.oauthClient,
+ data: {
+ name: body.client_name,
+ icon: body.logo_uri,
+ metadata: body.metadata ? JSON.stringify(body.metadata) : null,
+ clientId: clientId,
+ clientSecret: clientSecret,
+ redirectURLs: body.redirect_uris.join(","),
+ type: "web",
+ authenticationScheme:
+ body.token_endpoint_auth_method || "client_secret_basic",
+ disabled: false,
+ userId: session?.session.userId,
+ createdAt: new Date(),
+ updatedAt: new Date(),
+ },
+ });
+
+ return ctx.json(
+ {
+ client_id: clientId,
+ client_secret: clientSecret,
+ client_id_issued_at: Math.floor(Date.now() / 1000),
+ client_secret_expires_at: 0, // 0 means it doesn't expire
+ redirect_uris: body.redirect_uris,
+ token_endpoint_auth_method:
+ body.token_endpoint_auth_method || "client_secret_basic",
+ grant_types: body.grant_types || ["authorization_code"],
+ response_types: body.response_types || ["code"],
+ client_name: body.client_name,
+ client_uri: body.client_uri,
+ logo_uri: body.logo_uri,
+ scope: body.scope,
+ contacts: body.contacts,
+ tos_uri: body.tos_uri,
+ policy_uri: body.policy_uri,
+ jwks_uri: body.jwks_uri,
+ jwks: body.jwks,
+ software_id: body.software_id,
+ software_version: body.software_version,
+ software_statement: body.software_statement,
+ metadata: body.metadata,
+ },
+ {
+ status: 201,
+ headers: {
+ "Cache-Control": "no-store",
+ Pragma: "no-cache",
+ },
+ },
+ );
+ },
+ ),
+ getMcpSession: createAuthEndpoint(
+ "/mcp/get-session",
+ {
+ method: "GET",
+ requireHeaders: true,
+ },
+ async (c) => {
+ const accessToken = c.headers
+ ?.get("Authorization")
+ ?.replace("Bearer ", "");
+ if (!accessToken) {
+ c.headers?.set("WWW-Authenticate", "Bearer");
+ return c.json(null);
+ }
+ const accessTokenData =
+ await c.context.adapter.findOne({
+ model: modelName.oauthAccessToken,
+ where: [
+ {
+ field: "accessToken",
+ value: accessToken,
+ },
+ ],
+ });
+ if (!accessTokenData) {
+ return c.json(null);
+ }
+ return c.json(accessTokenData);
+ },
+ ),
+ },
+ schema,
+ } satisfies BetterAuthPlugin;
+};
+
+export const withMcpAuth = <
+ Auth extends {
+ api: {
+ getMcpSession: (...args: any) => Promise;
+ };
+ },
+>(
+ auth: Auth,
+ handler: (
+ req: Request,
+ sesssion: OAuthAccessToken,
+ ) => Response | Promise,
+) => {
+ return async (req: Request) => {
+ const session = await auth.api.getMcpSession({
+ headers: req.headers,
+ });
+ const wwwAuthenticateValue =
+ "Bearer resource_metadata=http://localhost:3000/api/auth/.well-known/oauth-authorization-server";
+ if (!session) {
+ return Response.json(
+ {
+ jsonrpc: "2.0",
+ error: {
+ code: -32000,
+ message: "Unauthorized: Authentication required",
+ "www-authenticate": wwwAuthenticateValue,
+ },
+ id: null,
+ },
+ {
+ status: 401,
+ headers: {
+ "WWW-Authenticate": wwwAuthenticateValue,
+ },
+ },
+ );
+ }
+ return handler(req, session);
+ };
+};
+
+export const oAuthDiscoveryMetadata = <
+ Auth extends {
+ api: {
+ getMcpOAuthConfig: (...args: any) => any;
+ };
+ },
+>(
+ auth: Auth,
+) => {
+ return async (request: Request) => {
+ const res = await auth.api.getMcpOAuthConfig();
+ return new Response(JSON.stringify(res), {
+ status: 200,
+ headers: {
+ "Content-Type": "application/json",
+ "Access-Control-Allow-Origin": "*",
+ "Access-Control-Allow-Methods": "POST, OPTIONS",
+ "Access-Control-Allow-Headers": "Content-Type, Authorization",
+ "Access-Control-Max-Age": "86400",
+ },
+ });
+ };
+};
diff --git a/packages/better-auth/src/plugins/oidc-provider/index.ts b/packages/better-auth/src/plugins/oidc-provider/index.ts
index 39afe00f..84c3f28d 100644
--- a/packages/better-auth/src/plugins/oidc-provider/index.ts
+++ b/packages/better-auth/src/plugins/oidc-provider/index.ts
@@ -23,7 +23,7 @@ import { parseSetCookieHeader } from "../../cookies";
import { createHash } from "@better-auth/utils/hash";
import { base64 } from "@better-auth/utils/base64";
-const getMetadata = (
+export const getMetadata = (
ctx: GenericEndpointContext,
options?: OIDCOptions,
): OIDCMetadata => {
@@ -50,6 +50,7 @@ const getMetadata = (
"client_secret_basic",
"client_secret_post",
],
+ code_challenge_methods_supported: ["S256"],
claims_supported: [
"sub",
"iss",
diff --git a/packages/better-auth/src/plugins/oidc-provider/types.ts b/packages/better-auth/src/plugins/oidc-provider/types.ts
index 22629da9..d6b26c79 100644
--- a/packages/better-auth/src/plugins/oidc-provider/types.ts
+++ b/packages/better-auth/src/plugins/oidc-provider/types.ts
@@ -513,4 +513,12 @@ export interface OIDCMetadata {
* ["sub", "iss", "aud", "exp", "nbf", "iat", "jti", "email", "email_verified", "name"]
*/
claims_supported: string[];
+ /**
+ * Supported code challenge methods.
+ *
+ * only `S256` is supported.
+ *
+ * @default ["S256"]
+ */
+ code_challenge_methods_supported: ["S256"];
}
diff --git a/packages/cli/package.json b/packages/cli/package.json
index a4c259bd..b9a2bb7e 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -1,6 +1,6 @@
{
"name": "@better-auth/cli",
- "version": "1.2.8",
+ "version": "1.2.9-beta.1",
"description": "The CLI for Better Auth",
"module": "dist/index.mjs",
"repository": {
diff --git a/packages/expo/package.json b/packages/expo/package.json
index 944592f9..a41f2615 100644
--- a/packages/expo/package.json
+++ b/packages/expo/package.json
@@ -1,6 +1,6 @@
{
"name": "@better-auth/expo",
- "version": "1.2.8",
+ "version": "1.2.9-beta.1",
"description": "",
"main": "dist/index.cjs",
"module": "dist/index.mjs",
diff --git a/packages/stripe/package.json b/packages/stripe/package.json
index 22e9c178..53140213 100644
--- a/packages/stripe/package.json
+++ b/packages/stripe/package.json
@@ -1,7 +1,7 @@
{
"name": "@better-auth/stripe",
"author": "Bereket Engida",
- "version": "1.2.8",
+ "version": "1.2.9-beta.1",
"main": "dist/index.cjs",
"license": "MIT",
"keywords": [
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 50e9add1..f40208a1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -358,7 +358,7 @@ importers:
devDependencies:
'@types/bun':
specifier: latest
- version: 1.2.12
+ version: 1.2.13
dev/cloudflare:
dependencies:
@@ -367,7 +367,7 @@ importers:
version: link:../../packages/better-auth
drizzle-orm:
specifier: ^0.39.3
- version: 0.39.3(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2))
+ version: 0.39.3(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2))
hono:
specifier: ^4.7.2
version: 4.7.4
@@ -476,7 +476,7 @@ importers:
version: 0.5.15(next@15.2.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1))(react@19.0.0)
'@vercel/analytics':
specifier: ^1.5.0
- version: 1.5.0(@remix-run/react@2.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2))(@sveltejs/kit@2.19.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.6)(vite@6.3.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)))(svelte@5.22.6)(vite@6.3.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)))(next@15.2.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1))(react@19.0.0)(svelte@5.22.6)(vue-router@4.5.1(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
+ version: 1.5.0(@remix-run/react@2.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2))(@sveltejs/kit@2.19.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.6)(vite@6.3.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)))(svelte@5.22.6)(vite@6.3.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)))(next@15.2.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1))(react@19.0.0)(svelte@5.22.6)(vue-router@4.5.1(vue@3.5.14(typescript@5.8.2)))(vue@3.5.14(typescript@5.8.2))
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -731,7 +731,7 @@ importers:
devDependencies:
'@ianvs/prettier-plugin-sort-imports':
specifier: 4.1.1
- version: 4.1.1(@vue/compiler-sfc@3.5.13)(prettier@3.2.4)
+ version: 4.1.1(@vue/compiler-sfc@3.5.14)(prettier@3.2.4)
'@types/chrome':
specifier: 0.0.258
version: 0.0.258
@@ -890,11 +890,57 @@ importers:
specifier: ^5.7.2
version: 5.8.2
+ examples/nextjs-mcp:
+ dependencies:
+ '@types/better-sqlite3':
+ specifier: ^7.6.12
+ version: 7.6.12
+ '@vercel/mcp-adapter':
+ specifier: ^0.4.1
+ version: 0.4.1(next@15.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1))
+ better-auth:
+ specifier: workspace:^
+ version: link:../../packages/better-auth
+ better-sqlite3:
+ specifier: ^11.6.0
+ version: 11.8.1
+ next:
+ specifier: 15.3.2
+ version: 15.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1)
+ react:
+ specifier: ^19.0.0
+ version: 19.0.0
+ react-dom:
+ specifier: ^19.0.0
+ version: 19.0.0(react@19.0.0)
+ zod:
+ specifier: ^3.24.4
+ version: 3.24.4
+ devDependencies:
+ '@tailwindcss/postcss':
+ specifier: ^4
+ version: 4.0.12
+ '@types/node':
+ specifier: ^20
+ version: 20.17.24
+ '@types/react':
+ specifier: ^19
+ version: 19.0.10
+ '@types/react-dom':
+ specifier: ^19
+ version: 19.0.4(@types/react@19.0.10)
+ tailwindcss:
+ specifier: ^4
+ version: 4.0.12
+ typescript:
+ specifier: ^5
+ version: 5.8.2
+
examples/nuxt-example:
dependencies:
'@radix-icons/vue':
specifier: ^1.0.0
- version: 1.0.0(vue@3.5.13(typescript@5.8.2))
+ version: 1.0.0(vue@3.5.14(typescript@5.8.2))
'@types/better-sqlite3':
specifier: ^7.6.12
version: 7.6.12
@@ -903,13 +949,13 @@ importers:
version: 1.4.3-beta.0
'@unovis/vue':
specifier: 1.4.3-beta.0
- version: 1.4.3-beta.0(@unovis/ts@1.4.3-beta.0)(vue@3.5.13(typescript@5.8.2))
+ version: 1.4.3-beta.0(@unovis/ts@1.4.3-beta.0)(vue@3.5.14(typescript@5.8.2))
'@vee-validate/zod':
specifier: ^4.14.7
- version: 4.15.0(vue@3.5.13(typescript@5.8.2))(zod@3.24.2)
+ version: 4.15.0(vue@3.5.14(typescript@5.8.2))(zod@3.24.2)
'@vueuse/core':
specifier: ^11.3.0
- version: 11.3.0(vue@3.5.13(typescript@5.8.2))
+ version: 11.3.0(vue@3.5.14(typescript@5.8.2))
better-auth:
specifier: workspace:*
version: link:../../packages/better-auth
@@ -924,13 +970,13 @@ importers:
version: 2.1.1
embla-carousel-vue:
specifier: ^8.5.1
- version: 8.5.2(vue@3.5.13(typescript@5.8.2))
+ version: 8.5.2(vue@3.5.14(typescript@5.8.2))
nuxt:
specifier: ^3.14.1592
- version: 3.16.0(yykrlyfgcq7bklxjhifzhuppyq)
+ version: 3.16.0(kygbndsg3u7xffwrewwioaaldy)
radix-vue:
specifier: ^1.9.11
- version: 1.9.17(vue@3.5.13(typescript@5.8.2))
+ version: 1.9.17(vue@3.5.14(typescript@5.8.2))
shadcn-nuxt:
specifier: ^0.10.4
version: 0.10.4(magicast@0.3.5)
@@ -942,19 +988,19 @@ importers:
version: 1.0.7(tailwindcss@3.4.17)
v-calendar:
specifier: ^3.1.2
- version: 3.1.2(@popperjs/core@2.11.8)(vue@3.5.13(typescript@5.8.2))
+ version: 3.1.2(@popperjs/core@2.11.8)(vue@3.5.14(typescript@5.8.2))
vaul-vue:
specifier: ^0.2.0
- version: 0.2.1(radix-vue@1.9.17(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
+ version: 0.2.1(radix-vue@1.9.17(vue@3.5.14(typescript@5.8.2)))(vue@3.5.14(typescript@5.8.2))
vee-validate:
specifier: ^4.14.7
- version: 4.15.0(vue@3.5.13(typescript@5.8.2))
+ version: 4.15.0(vue@3.5.14(typescript@5.8.2))
vue:
specifier: latest
- version: 3.5.13(typescript@5.8.2)
+ version: 3.5.14(typescript@5.8.2)
vue-router:
specifier: latest
- version: 4.5.1(vue@3.5.13(typescript@5.8.2))
+ version: 4.5.1(vue@3.5.14(typescript@5.8.2))
vue-sonner:
specifier: ^1.3.0
version: 1.3.0
@@ -1314,7 +1360,7 @@ importers:
version: 1.112.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@tanstack/start':
specifier: ^1.86.1
- version: 1.113.0(hcvcmo22cfk2zc45m3egdtrfb4)
+ version: 1.113.0(umfczj6grv5xwnnilehiba4mti)
'@types/ua-parser-js':
specifier: ^0.7.39
version: 0.7.39
@@ -1362,7 +1408,7 @@ importers:
version: 0.7.40
vinxi:
specifier: ^0.4.3
- version: 0.4.3(tbiltmkuca6gwy6wvywbppe5hm)
+ version: 0.4.3(xigip3pwxsynk4cmajsowrm4re)
devDependencies:
'@biomejs/biome':
specifier: 1.9.4
@@ -1372,7 +1418,7 @@ importers:
version: 7.6.12
'@types/bun':
specifier: latest
- version: 1.2.12
+ version: 1.2.13
'@types/node':
specifier: ^22.10.1
version: 22.13.10
@@ -1442,13 +1488,13 @@ importers:
version: 5.22.0(prisma@5.22.0)
'@tanstack/react-start':
specifier: ^1.114.34
- version: 1.114.34(lijngnfq54cp5rlnj53jssmkhu)
+ version: 1.114.34(xdtxozacaptx2f2yoax7hh4is4)
'@types/better-sqlite3':
specifier: ^7.6.12
version: 7.6.12
'@types/bun':
specifier: latest
- version: 1.2.12
+ version: 1.2.13
'@types/pg':
specifier: ^8.11.10
version: 8.11.11
@@ -1466,7 +1512,7 @@ importers:
version: 9.1.2
drizzle-orm:
specifier: ^0.38.2
- version: 0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0)
+ version: 0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0)
happy-dom:
specifier: ^15.11.7
version: 15.11.7
@@ -1565,7 +1611,7 @@ importers:
version: 16.4.7
drizzle-orm:
specifier: ^0.33.0
- version: 0.33.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@19.0.10)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0)
+ version: 0.33.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@19.0.10)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0)
fs-extra:
specifier: ^11.3.0
version: 11.3.0
@@ -1605,7 +1651,7 @@ importers:
version: 5.8.2
unbuild:
specifier: 'catalog:'
- version: 3.5.0(sass@1.85.1)(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))
+ version: 3.5.0(sass@1.85.1)(typescript@5.8.2)(vue@3.5.14(typescript@5.8.2))
vitest:
specifier: ^1.6.0
version: 1.6.1(@types/node@22.15.3)(happy-dom@17.4.1)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)
@@ -1645,7 +1691,7 @@ importers:
version: 14.0.2(expo@52.0.37(@babel/core@7.27.1)(@babel/preset-env@7.26.9(@babel/core@7.27.1))(@expo/metro-runtime@4.0.1(react-native@0.78.0(@babel/core@7.27.1)(@babel/preset-env@7.26.9(@babel/core@7.27.1))(@react-native-community/cli-server-api@13.6.9(encoding@0.1.13))(@types/react@19.0.10)(react@19.0.0)))(encoding@0.1.13)(graphql@15.10.1)(react-native@0.78.0(@babel/core@7.27.1)(@babel/preset-env@7.26.9(@babel/core@7.27.1))(@react-native-community/cli-server-api@13.6.9(encoding@0.1.13))(@types/react@19.0.10)(react@19.0.0))(react@19.0.0))(react-native@0.78.0(@babel/core@7.27.1)(@babel/preset-env@7.26.9(@babel/core@7.27.1))(@react-native-community/cli-server-api@13.6.9(encoding@0.1.13))(@types/react@19.0.10)(react@19.0.0))
unbuild:
specifier: ^3.5.0
- version: 3.5.0(sass@1.85.1)(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))
+ version: 3.5.0(sass@1.85.1)(typescript@5.8.2)(vue@3.5.14(typescript@5.8.2))
vitest:
specifier: ^1.6.0
version: 1.6.1(@types/node@22.15.3)(happy-dom@17.4.1)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)
@@ -2162,6 +2208,11 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
+ '@babel/parser@7.27.2':
+ resolution: {integrity: sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
'@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9':
resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==}
engines: {node: '>=6.9.0'}
@@ -3377,6 +3428,9 @@ packages:
'@emnapi/runtime@1.3.1':
resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
+ '@emnapi/runtime@1.4.3':
+ resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==}
+
'@emnapi/wasi-threads@1.0.1':
resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==}
@@ -4933,105 +4987,215 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@img/sharp-darwin-arm64@0.34.1':
+ resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [darwin]
+
'@img/sharp-darwin-x64@0.33.5':
resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [darwin]
+ '@img/sharp-darwin-x64@0.34.1':
+ resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [darwin]
+
'@img/sharp-libvips-darwin-arm64@1.0.4':
resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
cpu: [arm64]
os: [darwin]
+ '@img/sharp-libvips-darwin-arm64@1.1.0':
+ resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==}
+ cpu: [arm64]
+ os: [darwin]
+
'@img/sharp-libvips-darwin-x64@1.0.4':
resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
cpu: [x64]
os: [darwin]
+ '@img/sharp-libvips-darwin-x64@1.1.0':
+ resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==}
+ cpu: [x64]
+ os: [darwin]
+
'@img/sharp-libvips-linux-arm64@1.0.4':
resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
cpu: [arm64]
os: [linux]
+ '@img/sharp-libvips-linux-arm64@1.1.0':
+ resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==}
+ cpu: [arm64]
+ os: [linux]
+
'@img/sharp-libvips-linux-arm@1.0.5':
resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
cpu: [arm]
os: [linux]
+ '@img/sharp-libvips-linux-arm@1.1.0':
+ resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==}
+ cpu: [arm]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-ppc64@1.1.0':
+ resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==}
+ cpu: [ppc64]
+ os: [linux]
+
'@img/sharp-libvips-linux-s390x@1.0.4':
resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
cpu: [s390x]
os: [linux]
+ '@img/sharp-libvips-linux-s390x@1.1.0':
+ resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==}
+ cpu: [s390x]
+ os: [linux]
+
'@img/sharp-libvips-linux-x64@1.0.4':
resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
cpu: [x64]
os: [linux]
+ '@img/sharp-libvips-linux-x64@1.1.0':
+ resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==}
+ cpu: [x64]
+ os: [linux]
+
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
cpu: [arm64]
os: [linux]
+ '@img/sharp-libvips-linuxmusl-arm64@1.1.0':
+ resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==}
+ cpu: [arm64]
+ os: [linux]
+
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
cpu: [x64]
os: [linux]
+ '@img/sharp-libvips-linuxmusl-x64@1.1.0':
+ resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==}
+ cpu: [x64]
+ os: [linux]
+
'@img/sharp-linux-arm64@0.33.5':
resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
+ '@img/sharp-linux-arm64@0.34.1':
+ resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+
'@img/sharp-linux-arm@0.33.5':
resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
+ '@img/sharp-linux-arm@0.34.1':
+ resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm]
+ os: [linux]
+
'@img/sharp-linux-s390x@0.33.5':
resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
+ '@img/sharp-linux-s390x@0.34.1':
+ resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [s390x]
+ os: [linux]
+
'@img/sharp-linux-x64@0.33.5':
resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
+ '@img/sharp-linux-x64@0.34.1':
+ resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+
'@img/sharp-linuxmusl-arm64@0.33.5':
resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
+ '@img/sharp-linuxmusl-arm64@0.34.1':
+ resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+
'@img/sharp-linuxmusl-x64@0.33.5':
resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
+ '@img/sharp-linuxmusl-x64@0.34.1':
+ resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+
'@img/sharp-wasm32@0.33.5':
resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [wasm32]
+ '@img/sharp-wasm32@0.34.1':
+ resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [wasm32]
+
'@img/sharp-win32-ia32@0.33.5':
resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ia32]
os: [win32]
+ '@img/sharp-win32-ia32@0.34.1':
+ resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [ia32]
+ os: [win32]
+
'@img/sharp-win32-x64@0.33.5':
resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [win32]
+ '@img/sharp-win32-x64@0.34.1':
+ resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [win32]
+
'@internationalized/date@3.5.5':
resolution: {integrity: sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==}
@@ -5440,6 +5604,10 @@ packages:
resolution: {integrity: sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==}
engines: {node: '>=12.0.0'}
+ '@modelcontextprotocol/sdk@1.10.2':
+ resolution: {integrity: sha512-rb6AMp2DR4SN+kc6L1ta2NCpApyA9WYNx3CrTSZvGxq9wH71bRur+zRqPfg0vQ9mjywR7qZdX2RGHOPq3ss+tA==}
+ engines: {node: '>=18'}
+
'@mongodb-js/saslprep@1.1.9':
resolution: {integrity: sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==}
@@ -5505,6 +5673,9 @@ packages:
'@next/env@15.2.3':
resolution: {integrity: sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==}
+ '@next/env@15.3.2':
+ resolution: {integrity: sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==}
+
'@next/eslint-plugin-next@15.0.0-canary.149':
resolution: {integrity: sha512-luututuveL0xzHMFfuyVyfctC/7jdNS/iGrVqGbEvHqvW7W4yydwieasELkC4uY10onGoKGxg1PV8QciqMJqWQ==}
@@ -5514,48 +5685,96 @@ packages:
cpu: [arm64]
os: [darwin]
+ '@next/swc-darwin-arm64@15.3.2':
+ resolution: {integrity: sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
'@next/swc-darwin-x64@15.2.3':
resolution: {integrity: sha512-pVwKvJ4Zk7h+4hwhqOUuMx7Ib02u3gDX3HXPKIShBi9JlYllI0nU6TWLbPT94dt7FSi6mSBhfc2JrHViwqbOdw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
+ '@next/swc-darwin-x64@15.3.2':
+ resolution: {integrity: sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
'@next/swc-linux-arm64-gnu@15.2.3':
resolution: {integrity: sha512-50ibWdn2RuFFkOEUmo9NCcQbbV9ViQOrUfG48zHBCONciHjaUKtHcYFiCwBVuzD08fzvzkWuuZkd4AqbvKO7UQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ '@next/swc-linux-arm64-gnu@15.3.2':
+ resolution: {integrity: sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
'@next/swc-linux-arm64-musl@15.2.3':
resolution: {integrity: sha512-2gAPA7P652D3HzR4cLyAuVYwYqjG0mt/3pHSWTCyKZq/N/dJcUAEoNQMyUmwTZWCJRKofB+JPuDVP2aD8w2J6Q==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ '@next/swc-linux-arm64-musl@15.3.2':
+ resolution: {integrity: sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
'@next/swc-linux-x64-gnu@15.2.3':
resolution: {integrity: sha512-ODSKvrdMgAJOVU4qElflYy1KSZRM3M45JVbeZu42TINCMG3anp7YCBn80RkISV6bhzKwcUqLBAmOiWkaGtBA9w==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ '@next/swc-linux-x64-gnu@15.3.2':
+ resolution: {integrity: sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
'@next/swc-linux-x64-musl@15.2.3':
resolution: {integrity: sha512-ZR9kLwCWrlYxwEoytqPi1jhPd1TlsSJWAc+H/CJHmHkf2nD92MQpSRIURR1iNgA/kuFSdxB8xIPt4p/T78kwsg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ '@next/swc-linux-x64-musl@15.3.2':
+ resolution: {integrity: sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
'@next/swc-win32-arm64-msvc@15.2.3':
resolution: {integrity: sha512-+G2FrDcfm2YDbhDiObDU/qPriWeiz/9cRR0yMWJeTLGGX6/x8oryO3tt7HhodA1vZ8r2ddJPCjtLcpaVl7TE2Q==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
+ '@next/swc-win32-arm64-msvc@15.3.2':
+ resolution: {integrity: sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
'@next/swc-win32-x64-msvc@15.2.3':
resolution: {integrity: sha512-gHYS9tc+G2W0ZC8rBL+H6RdtXIyk40uLiaos0yj5US85FNhbFEndMA2nW3z47nzOWiSvXTZ5kBClc3rD0zJg0w==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
+ '@next/swc-win32-x64-msvc@15.3.2':
+ resolution: {integrity: sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
'@noble/ciphers@0.6.0':
resolution: {integrity: sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ==}
@@ -7874,6 +8093,35 @@ packages:
react-native:
optional: true
+ '@redis/bloom@1.2.0':
+ resolution: {integrity: sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+
+ '@redis/client@1.6.1':
+ resolution: {integrity: sha512-/KCsg3xSlR+nCK8/8ZYSknYxvXHwubJrU82F3Lm1Fp6789VQ0/3RJKfsmRXjqfaTA++23CvC3hqmqe/2GEt6Kw==}
+ engines: {node: '>=14'}
+
+ '@redis/graph@1.1.1':
+ resolution: {integrity: sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+
+ '@redis/json@1.0.7':
+ resolution: {integrity: sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+
+ '@redis/search@1.2.0':
+ resolution: {integrity: sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+
+ '@redis/time-series@1.1.0':
+ resolution: {integrity: sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==}
+ peerDependencies:
+ '@redis/client': ^1.0.0
+
'@redocly/ajv@8.11.2':
resolution: {integrity: sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg==}
@@ -9413,8 +9661,8 @@ packages:
'@types/braces@3.0.4':
resolution: {integrity: sha512-0WR3b8eaISjEW7RpZnclONaLFDf7buaowRHdqLp4vLj54AsSAYWfh3DRbfiYJY9XDxMgx1B4sE1Afw2PGpuHOA==}
- '@types/bun@1.2.12':
- resolution: {integrity: sha512-lY/GQTXDGsolT/TiH72p1tuyUORuRrdV7VwOTOjDOt8uTBJQOJc5zz3ufwwDl0VBaoxotSk4LdP0hhjLJ6ypIQ==}
+ '@types/bun@1.2.13':
+ resolution: {integrity: sha512-u6vXep/i9VBxoJl3GjZsl/BFIsvML8DfVDO0RYLEwtSZSp981kEO1V5NwRcO1CPJ7AmvpbnDCiMKo3JvbDEjAg==}
'@types/canvas-confetti@1.9.0':
resolution: {integrity: sha512-aBGj/dULrimR1XDZLtG9JwxX1b4HPRF6CX9Yfwh3NvstZEm1ZL7RBnel4keCPSqs1ANRu1u2Aoz9R+VmtjYuTg==}
@@ -9945,6 +10193,11 @@ packages:
vue-router:
optional: true
+ '@vercel/mcp-adapter@0.4.1':
+ resolution: {integrity: sha512-/P1J1KGbQieNT9dKSt4Y+ZrLcnuf6W1cUMR0V+AcWRfQs7ilz64GaLVdpyUIoZFb45VHqRvTVEZ8YmQspEM/Kw==}
+ peerDependencies:
+ next: '>=13.0.0'
+
'@vercel/nft@0.29.2':
resolution: {integrity: sha512-A/Si4mrTkQqJ6EXJKv5EYCDQ3NL6nJXxG8VGXePsaiQigsomHYQC9xSpX8qGk7AEZk4b1ssbYIqJ0ISQQ7bfcA==}
engines: {node: '>=18'}
@@ -10095,24 +10348,36 @@ packages:
'@vue/compiler-core@3.5.13':
resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
+ '@vue/compiler-core@3.5.14':
+ resolution: {integrity: sha512-k7qMHMbKvoCXIxPhquKQVw3Twid3Kg4s7+oYURxLGRd56LiuHJVrvFKI4fm2AM3c8apqODPfVJGoh8nePbXMRA==}
+
'@vue/compiler-dom@3.3.4':
resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==}
'@vue/compiler-dom@3.5.13':
resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
+ '@vue/compiler-dom@3.5.14':
+ resolution: {integrity: sha512-1aOCSqxGOea5I80U2hQJvXYpPm/aXo95xL/m/mMhgyPUsKe9jhjwWpziNAw7tYRnbz1I61rd9Mld4W9KmmRoug==}
+
'@vue/compiler-sfc@3.3.4':
resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==}
'@vue/compiler-sfc@3.5.13':
resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
+ '@vue/compiler-sfc@3.5.14':
+ resolution: {integrity: sha512-9T6m/9mMr81Lj58JpzsiSIjBgv2LiVoWjIVa7kuXHICUi8LiDSIotMpPRXYJsXKqyARrzjT24NAwttrMnMaCXA==}
+
'@vue/compiler-ssr@3.3.4':
resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==}
'@vue/compiler-ssr@3.5.13':
resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
+ '@vue/compiler-ssr@3.5.14':
+ resolution: {integrity: sha512-Y0G7PcBxr1yllnHuS/NxNCSPWnRGH4Ogrp0tsLA5QemDZuJLs99YjAKQ7KqkHE0vCg4QTKlQzXLKCMF7WPSl7Q==}
+
'@vue/devtools-api@6.6.4':
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
@@ -10145,18 +10410,27 @@ packages:
'@vue/reactivity@3.5.13':
resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
+ '@vue/reactivity@3.5.14':
+ resolution: {integrity: sha512-7cK1Hp343Fu/SUCCO52vCabjvsYu7ZkOqyYu7bXV9P2yyfjUMUXHZafEbq244sP7gf+EZEz+77QixBTuEqkQQw==}
+
'@vue/runtime-core@3.3.4':
resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==}
'@vue/runtime-core@3.5.13':
resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==}
+ '@vue/runtime-core@3.5.14':
+ resolution: {integrity: sha512-w9JWEANwHXNgieAhxPpEpJa+0V5G0hz3NmjAZwlOebtfKyp2hKxKF0+qSh0Xs6/PhfGihuSdqMprMVcQU/E6ag==}
+
'@vue/runtime-dom@3.3.4':
resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==}
'@vue/runtime-dom@3.5.13':
resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==}
+ '@vue/runtime-dom@3.5.14':
+ resolution: {integrity: sha512-lCfR++IakeI35TVR80QgOelsUIdcKjd65rWAMfdSlCYnaEY5t3hYwru7vvcWaqmrK+LpI7ZDDYiGU5V3xjMacw==}
+
'@vue/server-renderer@3.3.4':
resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==}
peerDependencies:
@@ -10167,12 +10441,20 @@ packages:
peerDependencies:
vue: 3.5.13
+ '@vue/server-renderer@3.5.14':
+ resolution: {integrity: sha512-Rf/ISLqokIvcySIYnv3tNWq40PLpNLDLSJwwVWzG6MNtyIhfbcrAxo5ZL9nARJhqjZyWWa40oRb2IDuejeuv6w==}
+ peerDependencies:
+ vue: 3.5.14
+
'@vue/shared@3.3.4':
resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==}
'@vue/shared@3.5.13':
resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
+ '@vue/shared@3.5.14':
+ resolution: {integrity: sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==}
+
'@vueuse/core@10.11.1':
resolution: {integrity: sha512-guoy26JQktXPcz+0n3GukWIy/JDNKti9v6VEMu6kV2sYBsWuGiTU8OWdg+ADfUbHg3/3DlqySDe7JmdHrktiww==}
@@ -10433,6 +10715,10 @@ packages:
resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
engines: {node: '>= 0.6'}
+ accepts@2.0.0:
+ resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
+ engines: {node: '>= 0.6'}
+
acorn-import-attributes@1.9.5:
resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==}
peerDependencies:
@@ -10956,6 +11242,10 @@ packages:
resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ body-parser@2.2.0:
+ resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==}
+ engines: {node: '>=18'}
+
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -11046,8 +11336,8 @@ packages:
engines: {node: '>=10'}
hasBin: true
- bun-types@1.2.12:
- resolution: {integrity: sha512-tvWMx5vPqbRXgE8WUZI94iS1xAYs8bkqESR9cxBB1Wi+urvfTrF1uzuDgBHFAdO0+d2lmsbG3HmeKMvUyj6pWA==}
+ bun-types@1.2.13:
+ resolution: {integrity: sha512-rRjA1T6n7wto4gxhAO/ErZEtOXyEZEmnIHQfl0Dt1QQSB4QV0iP6BZ9/YB5fZaHFQ2dwHFrmPaRQ9GGMX01k9Q==}
bundle-name@4.1.0:
resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
@@ -11518,6 +11808,10 @@ packages:
resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
engines: {node: '>= 0.6'}
+ content-disposition@1.0.0:
+ resolution: {integrity: sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==}
+ engines: {node: '>= 0.6'}
+
content-security-policy-parser@0.4.1:
resolution: {integrity: sha512-NNJS8XPnx3OKr/CUOSwDSJw+lWTrZMYnclLKj0Y9CYOfJNJTWLFGPg3u2hYgbXMXKVRkZR2fbyReNQ1mUff/Qg==}
engines: {node: '>=8.0.0'}
@@ -13117,6 +13411,14 @@ packages:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
+ eventsource-parser@3.0.2:
+ resolution: {integrity: sha512-6RxOBZ/cYgd8usLwsEl+EC09Au/9BcmCKYF2/xbml6DNczf7nv0MQb+7BA2F+li6//I+28VNlQR37XfQtcAJuA==}
+ engines: {node: '>=18.0.0'}
+
+ eventsource@3.0.7:
+ resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==}
+ engines: {node: '>=18.0.0'}
+
exec-async@2.2.0:
resolution: {integrity: sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==}
@@ -13278,10 +13580,20 @@ packages:
exponential-backoff@3.1.2:
resolution: {integrity: sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==}
+ express-rate-limit@7.5.0:
+ resolution: {integrity: sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==}
+ engines: {node: '>= 16'}
+ peerDependencies:
+ express: ^4.11 || 5 || ^5.0.0-beta.1
+
express@4.21.1:
resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==}
engines: {node: '>= 0.10.0'}
+ express@5.1.0:
+ resolution: {integrity: sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==}
+ engines: {node: '>= 18'}
+
exsolve@1.0.2:
resolution: {integrity: sha512-ZEcIMbthn2zeX4/wD/DLxDUjuCltHXT8Htvm/JFlTkdYgWh2+HGppgwwNUnIVxzxP7yJOPtuBAec0dLx6lVY8w==}
@@ -13437,6 +13749,10 @@ packages:
resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
engines: {node: '>= 0.8'}
+ finalhandler@2.1.0:
+ resolution: {integrity: sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==}
+ engines: {node: '>= 0.8'}
+
find-cache-dir@2.1.0:
resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==}
engines: {node: '>=6'}
@@ -13583,6 +13899,10 @@ packages:
resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
engines: {node: '>= 0.6'}
+ fresh@2.0.0:
+ resolution: {integrity: sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==}
+ engines: {node: '>= 0.8'}
+
fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
@@ -13711,6 +14031,10 @@ packages:
generic-names@4.0.0:
resolution: {integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==}
+ generic-pool@3.9.0:
+ resolution: {integrity: sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==}
+ engines: {node: '>= 4'}
+
gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
@@ -14566,6 +14890,9 @@ packages:
resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
engines: {node: '>=0.10.0'}
+ is-promise@4.0.0:
+ resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==}
+
is-property@1.0.2:
resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==}
@@ -15608,6 +15935,10 @@ packages:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
+ media-typer@1.1.0:
+ resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==}
+ engines: {node: '>= 0.8'}
+
memoize-one@5.2.1:
resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
@@ -15627,6 +15958,10 @@ packages:
merge-descriptors@1.0.3:
resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+ merge-descriptors@2.0.0:
+ resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==}
+ engines: {node: '>=18'}
+
merge-options@3.0.4:
resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==}
engines: {node: '>=10'}
@@ -16008,10 +16343,18 @@ packages:
resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==}
engines: {node: '>= 0.6'}
+ mime-db@1.54.0:
+ resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==}
+ engines: {node: '>= 0.6'}
+
mime-types@2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
+ mime-types@3.0.1:
+ resolution: {integrity: sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==}
+ engines: {node: '>= 0.6'}
+
mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
engines: {node: '>=4'}
@@ -16402,6 +16745,27 @@ packages:
sass:
optional: true
+ next@15.3.2:
+ resolution: {integrity: sha512-CA3BatMyHkxZ48sgOCLdVHjFU36N7TF1HhqAHLFOkV6buwZnvMI84Cug8xD56B9mCuKrqXnLn94417GrZ/jjCQ==}
+ engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@opentelemetry/api': ^1.1.0
+ '@playwright/test': ^1.41.2
+ babel-plugin-react-compiler: '*'
+ react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
+ react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
+ sass: ^1.3.0
+ peerDependenciesMeta:
+ '@opentelemetry/api':
+ optional: true
+ '@playwright/test':
+ optional: true
+ babel-plugin-react-compiler:
+ optional: true
+ sass:
+ optional: true
+
nice-try@1.0.5:
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
@@ -16959,6 +17323,10 @@ packages:
path-to-regexp@6.3.0:
resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==}
+ path-to-regexp@8.2.0:
+ resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==}
+ engines: {node: '>=16'}
+
path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
@@ -17080,6 +17448,10 @@ packages:
resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
engines: {node: '>= 6'}
+ pkce-challenge@5.0.0:
+ resolution: {integrity: sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==}
+ engines: {node: '>=16.20.0'}
+
pkg-dir@3.0.0:
resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==}
engines: {node: '>=6'}
@@ -17648,6 +18020,10 @@ packages:
resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
engines: {node: '>=0.6'}
+ qs@6.14.0:
+ resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
+ engines: {node: '>=0.6'}
+
quansync@0.2.8:
resolution: {integrity: sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==}
@@ -17692,6 +18068,10 @@ packages:
resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
engines: {node: '>= 0.8'}
+ raw-body@3.0.0:
+ resolution: {integrity: sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==}
+ engines: {node: '>= 0.8'}
+
rc9@2.1.2:
resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
@@ -18061,6 +18441,9 @@ packages:
resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==}
engines: {node: '>=4'}
+ redis@4.7.1:
+ resolution: {integrity: sha512-S1bJDnqLftzHXHP8JsT5II/CtHWQrASX5K96REjWjlmWKrviSOLWmM7QnRLstAWsu1VBBV1ffV6DzCvxNP0UJQ==}
+
reflect.getprototypeof@1.0.10:
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
engines: {node: '>= 0.4'}
@@ -18389,6 +18772,10 @@ packages:
rou3@0.5.1:
resolution: {integrity: sha512-OXMmJ3zRk2xeXFGfA3K+EOPHC5u7RDFG7lIOx0X1pdnhUkI8MdVrbV+sNsD80ElpUZ+MRHdyxPnFthq9VHs8uQ==}
+ router@2.2.0:
+ resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
+ engines: {node: '>= 18'}
+
run-applescript@7.0.0:
resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
engines: {node: '>=18'}
@@ -18511,6 +18898,10 @@ packages:
resolution: {integrity: sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==}
engines: {node: '>= 0.8.0'}
+ send@1.2.0:
+ resolution: {integrity: sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==}
+ engines: {node: '>= 18'}
+
seq-queue@0.0.5:
resolution: {integrity: sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==}
@@ -18538,6 +18929,10 @@ packages:
resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
engines: {node: '>= 0.8.0'}
+ serve-static@2.2.0:
+ resolution: {integrity: sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==}
+ engines: {node: '>= 18'}
+
server-only@0.0.1:
resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
@@ -18586,6 +18981,10 @@ packages:
resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ sharp@0.34.1:
+ resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+
shebang-command@1.2.0:
resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
engines: {node: '>=0.10.0'}
@@ -19584,6 +19983,10 @@ packages:
resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
engines: {node: '>= 0.6'}
+ type-is@2.0.1:
+ resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==}
+ engines: {node: '>= 0.6'}
+
typed-array-buffer@1.0.2:
resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==}
engines: {node: '>= 0.4'}
@@ -20623,6 +21026,14 @@ packages:
typescript:
optional: true
+ vue@3.5.14:
+ resolution: {integrity: sha512-LbOm50/vZFG6Mhy6KscQYXZMQ0LMCC/y40HDJPPvGFQ+i/lUH+PJHR6C3assgOQiXdl6tAfsXHbXYVBZZu65ew==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
walker@1.0.8:
resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==}
@@ -20990,6 +21401,9 @@ packages:
zod@3.24.2:
resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==}
+ zod@3.24.4:
+ resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==}
+
zustand@3.7.2:
resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==}
engines: {node: '>=12.7.0'}
@@ -22070,6 +22484,10 @@ snapshots:
dependencies:
'@babel/types': 7.27.1
+ '@babel/parser@7.27.2':
+ dependencies:
+ '@babel/types': 7.27.1
+
'@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.9)':
dependencies:
'@babel/core': 7.26.9
@@ -24508,6 +24926,11 @@ snapshots:
tslib: 2.8.1
optional: true
+ '@emnapi/runtime@1.4.3':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@emnapi/wasi-threads@1.0.1':
dependencies:
tslib: 2.8.1
@@ -25677,11 +26100,11 @@ snapshots:
'@floating-ui/utils@0.2.9': {}
- '@floating-ui/vue@1.1.5(vue@3.5.13(typescript@5.8.2))':
+ '@floating-ui/vue@1.1.5(vue@3.5.14(typescript@5.8.2))':
dependencies:
'@floating-ui/dom': 1.6.12
'@floating-ui/utils': 0.2.8
- vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2))
+ vue-demi: 0.14.10(vue@3.5.14(typescript@5.8.2))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@@ -25738,7 +26161,7 @@ snapshots:
'@humanwhocodes/retry@0.4.2': {}
- '@ianvs/prettier-plugin-sort-imports@4.1.1(@vue/compiler-sfc@3.5.13)(prettier@3.2.4)':
+ '@ianvs/prettier-plugin-sort-imports@4.1.1(@vue/compiler-sfc@3.5.14)(prettier@3.2.4)':
dependencies:
'@babel/core': 7.26.9
'@babel/generator': 7.26.9
@@ -25748,7 +26171,7 @@ snapshots:
prettier: 3.2.4
semver: 7.7.1
optionalDependencies:
- '@vue/compiler-sfc': 3.5.13
+ '@vue/compiler-sfc': 3.5.14
transitivePeerDependencies:
- supports-color
@@ -25757,76 +26180,154 @@ snapshots:
'@img/sharp-libvips-darwin-arm64': 1.0.4
optional: true
+ '@img/sharp-darwin-arm64@0.34.1':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-arm64': 1.1.0
+ optional: true
+
'@img/sharp-darwin-x64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-darwin-x64': 1.0.4
optional: true
+ '@img/sharp-darwin-x64@0.34.1':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-x64': 1.1.0
+ optional: true
+
'@img/sharp-libvips-darwin-arm64@1.0.4':
optional: true
+ '@img/sharp-libvips-darwin-arm64@1.1.0':
+ optional: true
+
'@img/sharp-libvips-darwin-x64@1.0.4':
optional: true
+ '@img/sharp-libvips-darwin-x64@1.1.0':
+ optional: true
+
'@img/sharp-libvips-linux-arm64@1.0.4':
optional: true
+ '@img/sharp-libvips-linux-arm64@1.1.0':
+ optional: true
+
'@img/sharp-libvips-linux-arm@1.0.5':
optional: true
+ '@img/sharp-libvips-linux-arm@1.1.0':
+ optional: true
+
+ '@img/sharp-libvips-linux-ppc64@1.1.0':
+ optional: true
+
'@img/sharp-libvips-linux-s390x@1.0.4':
optional: true
+ '@img/sharp-libvips-linux-s390x@1.1.0':
+ optional: true
+
'@img/sharp-libvips-linux-x64@1.0.4':
optional: true
+ '@img/sharp-libvips-linux-x64@1.1.0':
+ optional: true
+
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
optional: true
+ '@img/sharp-libvips-linuxmusl-arm64@1.1.0':
+ optional: true
+
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
optional: true
+ '@img/sharp-libvips-linuxmusl-x64@1.1.0':
+ optional: true
+
'@img/sharp-linux-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linux-arm64': 1.0.4
optional: true
+ '@img/sharp-linux-arm64@0.34.1':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm64': 1.1.0
+ optional: true
+
'@img/sharp-linux-arm@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linux-arm': 1.0.5
optional: true
+ '@img/sharp-linux-arm@0.34.1':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm': 1.1.0
+ optional: true
+
'@img/sharp-linux-s390x@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linux-s390x': 1.0.4
optional: true
+ '@img/sharp-linux-s390x@0.34.1':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-s390x': 1.1.0
+ optional: true
+
'@img/sharp-linux-x64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linux-x64': 1.0.4
optional: true
+ '@img/sharp-linux-x64@0.34.1':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-x64': 1.1.0
+ optional: true
+
'@img/sharp-linuxmusl-arm64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-arm64': 1.0.4
optional: true
+ '@img/sharp-linuxmusl-arm64@0.34.1':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-arm64': 1.1.0
+ optional: true
+
'@img/sharp-linuxmusl-x64@0.33.5':
optionalDependencies:
'@img/sharp-libvips-linuxmusl-x64': 1.0.4
optional: true
+ '@img/sharp-linuxmusl-x64@0.34.1':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-x64': 1.1.0
+ optional: true
+
'@img/sharp-wasm32@0.33.5':
dependencies:
'@emnapi/runtime': 1.3.1
optional: true
+ '@img/sharp-wasm32@0.34.1':
+ dependencies:
+ '@emnapi/runtime': 1.4.3
+ optional: true
+
'@img/sharp-win32-ia32@0.33.5':
optional: true
+ '@img/sharp-win32-ia32@0.34.1':
+ optional: true
+
'@img/sharp-win32-x64@0.33.5':
optional: true
+ '@img/sharp-win32-x64@0.34.1':
+ optional: true
+
'@internationalized/date@3.5.5':
dependencies:
'@swc/helpers': 0.5.15
@@ -25926,7 +26427,7 @@ snapshots:
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
- '@types/node': 22.15.3
+ '@types/node': 20.17.24
'@types/yargs': 15.0.19
chalk: 4.1.2
@@ -26340,6 +26841,21 @@ snapshots:
'@lezer/lr': 1.4.2
json5: 2.2.3
+ '@modelcontextprotocol/sdk@1.10.2':
+ dependencies:
+ content-type: 1.0.5
+ cors: 2.8.5
+ cross-spawn: 7.0.6
+ eventsource: 3.0.7
+ express: 5.1.0
+ express-rate-limit: 7.5.0(express@5.1.0)
+ pkce-challenge: 5.0.0
+ raw-body: 3.0.0
+ zod: 3.24.4
+ zod-to-json-schema: 3.24.3(zod@3.24.4)
+ transitivePeerDependencies:
+ - supports-color
+
'@mongodb-js/saslprep@1.1.9':
dependencies:
sparse-bitfield: 3.0.3
@@ -26394,6 +26910,8 @@ snapshots:
'@next/env@15.2.3': {}
+ '@next/env@15.3.2': {}
+
'@next/eslint-plugin-next@15.0.0-canary.149':
dependencies:
fast-glob: 3.3.1
@@ -26401,27 +26919,51 @@ snapshots:
'@next/swc-darwin-arm64@15.2.3':
optional: true
+ '@next/swc-darwin-arm64@15.3.2':
+ optional: true
+
'@next/swc-darwin-x64@15.2.3':
optional: true
+ '@next/swc-darwin-x64@15.3.2':
+ optional: true
+
'@next/swc-linux-arm64-gnu@15.2.3':
optional: true
+ '@next/swc-linux-arm64-gnu@15.3.2':
+ optional: true
+
'@next/swc-linux-arm64-musl@15.2.3':
optional: true
+ '@next/swc-linux-arm64-musl@15.3.2':
+ optional: true
+
'@next/swc-linux-x64-gnu@15.2.3':
optional: true
+ '@next/swc-linux-x64-gnu@15.3.2':
+ optional: true
+
'@next/swc-linux-x64-musl@15.2.3':
optional: true
+ '@next/swc-linux-x64-musl@15.3.2':
+ optional: true
+
'@next/swc-win32-arm64-msvc@15.2.3':
optional: true
+ '@next/swc-win32-arm64-msvc@15.3.2':
+ optional: true
+
'@next/swc-win32-x64-msvc@15.2.3':
optional: true
+ '@next/swc-win32-x64-msvc@15.3.2':
+ optional: true
+
'@noble/ciphers@0.6.0': {}
'@noble/hashes@1.7.1': {}
@@ -26530,12 +27072,12 @@ snapshots:
prompts: 2.4.2
semver: 7.7.1
- '@nuxt/devtools@2.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))':
+ '@nuxt/devtools@2.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.14(typescript@5.8.2))':
dependencies:
'@nuxt/devtools-kit': 2.2.1(magicast@0.3.5)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
'@nuxt/devtools-wizard': 2.2.1
'@nuxt/kit': 3.16.0(magicast@0.3.5)
- '@vue/devtools-core': 7.7.2(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))
+ '@vue/devtools-core': 7.7.2(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.14(typescript@5.8.2))
'@vue/devtools-kit': 7.7.2
birpc: 2.2.0
consola: 3.4.0
@@ -26562,7 +27104,7 @@ snapshots:
tinyglobby: 0.2.12
vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
vite-plugin-inspect: 11.0.0(@nuxt/kit@3.16.0(magicast@0.3.5))(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
- vite-plugin-vue-tracer: 0.1.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))
+ vite-plugin-vue-tracer: 0.1.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.14(typescript@5.8.2))
which: 5.0.0
ws: 8.18.1
transitivePeerDependencies:
@@ -26649,12 +27191,12 @@ snapshots:
transitivePeerDependencies:
- magicast
- '@nuxt/vite-builder@3.16.0(@biomejs/biome@1.9.4)(@types/node@22.15.3)(eslint@9.22.0(jiti@2.4.2))(less@4.2.2)(lightningcss@1.29.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.38.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0)':
+ '@nuxt/vite-builder@3.16.0(@biomejs/biome@1.9.4)(@types/node@22.15.3)(eslint@9.22.0(jiti@2.4.2))(less@4.2.2)(lightningcss@1.29.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.38.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(vue@3.5.14(typescript@5.8.2))(yaml@2.7.0)':
dependencies:
'@nuxt/kit': 3.16.0(magicast@0.3.5)
'@rollup/plugin-replace': 6.0.2(rollup@4.38.0)
- '@vitejs/plugin-vue': 5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))
- '@vitejs/plugin-vue-jsx': 4.1.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))
+ '@vitejs/plugin-vue': 5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.14(typescript@5.8.2))
+ '@vitejs/plugin-vue-jsx': 4.1.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.14(typescript@5.8.2))
autoprefixer: 10.4.20(postcss@8.5.3)
consola: 3.4.0
cssnano: 7.0.6(postcss@8.5.3)
@@ -26682,7 +27224,7 @@ snapshots:
vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
vite-node: 3.0.8(@types/node@22.15.3)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)
vite-plugin-checker: 0.9.0(@biomejs/biome@1.9.4)(eslint@9.22.0(jiti@2.4.2))(optionator@0.9.4)(typescript@5.8.2)(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
vue-bundle-renderer: 2.1.1
transitivePeerDependencies:
- '@biomejs/biome'
@@ -28071,9 +28613,9 @@ snapshots:
'@prisma/debug': 6.4.1
optional: true
- '@radix-icons/vue@1.0.0(vue@3.5.13(typescript@5.8.2))':
+ '@radix-icons/vue@1.0.0(vue@3.5.14(typescript@5.8.2))':
dependencies:
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
'@radix-ui/number@1.1.0': {}
@@ -30808,6 +31350,32 @@ snapshots:
transitivePeerDependencies:
- '@types/react'
+ '@redis/bloom@1.2.0(@redis/client@1.6.1)':
+ dependencies:
+ '@redis/client': 1.6.1
+
+ '@redis/client@1.6.1':
+ dependencies:
+ cluster-key-slot: 1.1.2
+ generic-pool: 3.9.0
+ yallist: 4.0.0
+
+ '@redis/graph@1.1.1(@redis/client@1.6.1)':
+ dependencies:
+ '@redis/client': 1.6.1
+
+ '@redis/json@1.0.7(@redis/client@1.6.1)':
+ dependencies:
+ '@redis/client': 1.6.1
+
+ '@redis/search@1.2.0(@redis/client@1.6.1)':
+ dependencies:
+ '@redis/client': 1.6.1
+
+ '@redis/time-series@1.1.0(@redis/client@1.6.1)':
+ dependencies:
+ '@redis/client': 1.6.1
+
'@redocly/ajv@8.11.2':
dependencies:
fast-deep-equal: 3.1.3
@@ -32165,11 +32733,11 @@ snapshots:
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/react-start-api-routes@1.112.18(aguku5xwh67z542n34jhfwn7wm)':
+ '@tanstack/react-start-api-routes@1.112.18(do3hc3md4wd7it5bigaqcra2vq)':
dependencies:
- '@tanstack/react-start-server': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
+ '@tanstack/react-start-server': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
'@tanstack/router-core': 1.112.18
- vinxi: 0.5.3(5mkccpfbjktkt3otnngqrrcgde)
+ vinxi: 0.5.3(qmycrikecd3inn5enqnqcdtkym)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -32215,7 +32783,7 @@ snapshots:
- xml2js
- yaml
- '@tanstack/react-start-client@1.112.18(aguku5xwh67z542n34jhfwn7wm)':
+ '@tanstack/react-start-client@1.112.18(do3hc3md4wd7it5bigaqcra2vq)':
dependencies:
'@tanstack/react-router': 1.112.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@tanstack/router-core': 1.112.18
@@ -32225,7 +32793,7 @@ snapshots:
react-dom: 18.3.1(react@18.3.1)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- vinxi: 0.5.3(5mkccpfbjktkt3otnngqrrcgde)
+ vinxi: 0.5.3(qmycrikecd3inn5enqnqcdtkym)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -32269,7 +32837,7 @@ snapshots:
- xml2js
- yaml
- '@tanstack/react-start-client@1.114.34(3rgr7yknbwuqb7flheblwpv2eq)':
+ '@tanstack/react-start-client@1.114.34(2plvxtj6a7vw55mtbqwukj7brm)':
dependencies:
'@tanstack/react-router': 1.114.34(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
'@tanstack/router-core': 1.114.33
@@ -32280,7 +32848,7 @@ snapshots:
react-dom: 19.0.0(react@19.0.0)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- vinxi: 0.5.3(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
+ vinxi: 0.5.3(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -32324,7 +32892,7 @@ snapshots:
- xml2js
- yaml
- '@tanstack/react-start-client@1.114.34(aguku5xwh67z542n34jhfwn7wm)':
+ '@tanstack/react-start-client@1.114.34(do3hc3md4wd7it5bigaqcra2vq)':
dependencies:
'@tanstack/react-router': 1.114.34(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@tanstack/router-core': 1.114.33
@@ -32335,7 +32903,7 @@ snapshots:
react-dom: 18.3.1(react@18.3.1)
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- vinxi: 0.5.3(5mkccpfbjktkt3otnngqrrcgde)
+ vinxi: 0.5.3(qmycrikecd3inn5enqnqcdtkym)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -32379,7 +32947,7 @@ snapshots:
- xml2js
- yaml
- '@tanstack/react-start-config@1.114.34(lijngnfq54cp5rlnj53jssmkhu)':
+ '@tanstack/react-start-config@1.114.34(xdtxozacaptx2f2yoax7hh4is4)':
dependencies:
'@tanstack/react-start-plugin': 1.114.32(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
'@tanstack/router-core': 1.114.33
@@ -32389,11 +32957,11 @@ snapshots:
'@tanstack/start-server-functions-handler': 1.114.33
'@vitejs/plugin-react': 4.3.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
import-meta-resolve: 4.1.0
- nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
+ nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
ofetch: 1.4.1
react: 19.0.0
react-dom: 19.0.0(react@19.0.0)
- vinxi: 0.5.3(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
+ vinxi: 0.5.3(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
zod: 3.24.2
transitivePeerDependencies:
@@ -32498,11 +33066,11 @@ snapshots:
- tsx
- yaml
- '@tanstack/react-start-router-manifest@1.112.18(5mkccpfbjktkt3otnngqrrcgde)':
+ '@tanstack/react-start-router-manifest@1.112.18(qmycrikecd3inn5enqnqcdtkym)':
dependencies:
'@tanstack/router-core': 1.112.18
tiny-invariant: 1.3.3
- vinxi: 0.5.3(5mkccpfbjktkt3otnngqrrcgde)
+ vinxi: 0.5.3(qmycrikecd3inn5enqnqcdtkym)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -32546,11 +33114,11 @@ snapshots:
- xml2js
- yaml
- ? '@tanstack/react-start-router-manifest@1.114.33(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)'
+ ? '@tanstack/react-start-router-manifest@1.114.33(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)'
: dependencies:
'@tanstack/router-core': 1.114.33
tiny-invariant: 1.3.3
- vinxi: 0.5.3(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
+ vinxi: 0.5.3(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -32594,9 +33162,9 @@ snapshots:
- xml2js
- yaml
- '@tanstack/react-start-server-functions-client@1.112.18(fbq2slcpifq65x7m35legngaoq)':
+ '@tanstack/react-start-server-functions-client@1.112.18(rikohmhqegmq4stnnvkdxooyim)':
dependencies:
- '@tanstack/react-start-server-functions-fetcher': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
+ '@tanstack/react-start-server-functions-fetcher': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
'@tanstack/server-functions-plugin': 1.112.18(@types/node@22.13.10)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -32644,10 +33212,10 @@ snapshots:
- xml2js
- yaml
- '@tanstack/react-start-server-functions-fetcher@1.112.18(aguku5xwh67z542n34jhfwn7wm)':
+ '@tanstack/react-start-server-functions-fetcher@1.112.18(do3hc3md4wd7it5bigaqcra2vq)':
dependencies:
'@tanstack/react-router': 1.112.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@tanstack/react-start-client': 1.114.34(aguku5xwh67z542n34jhfwn7wm)
+ '@tanstack/react-start-client': 1.114.34(do3hc3md4wd7it5bigaqcra2vq)
'@tanstack/router-core': 1.112.18
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
@@ -32694,11 +33262,11 @@ snapshots:
- xml2js
- yaml
- '@tanstack/react-start-server-functions-handler@1.112.18(aguku5xwh67z542n34jhfwn7wm)':
+ '@tanstack/react-start-server-functions-handler@1.112.18(do3hc3md4wd7it5bigaqcra2vq)':
dependencies:
'@tanstack/react-router': 1.112.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@tanstack/react-start-client': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
- '@tanstack/react-start-server': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
+ '@tanstack/react-start-client': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
+ '@tanstack/react-start-server': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
tiny-invariant: 1.3.3
@@ -32745,11 +33313,11 @@ snapshots:
- xml2js
- yaml
- '@tanstack/react-start-server-functions-ssr@1.112.18(fbq2slcpifq65x7m35legngaoq)':
+ '@tanstack/react-start-server-functions-ssr@1.112.18(rikohmhqegmq4stnnvkdxooyim)':
dependencies:
- '@tanstack/react-start-client': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
- '@tanstack/react-start-server': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
- '@tanstack/react-start-server-functions-fetcher': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
+ '@tanstack/react-start-client': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
+ '@tanstack/react-start-server': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
+ '@tanstack/react-start-server-functions-fetcher': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
'@tanstack/server-functions-plugin': 1.112.18(@types/node@22.13.10)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
tiny-invariant: 1.3.3
transitivePeerDependencies:
@@ -32798,11 +33366,11 @@ snapshots:
- xml2js
- yaml
- '@tanstack/react-start-server@1.112.18(aguku5xwh67z542n34jhfwn7wm)':
+ '@tanstack/react-start-server@1.112.18(do3hc3md4wd7it5bigaqcra2vq)':
dependencies:
'@tanstack/history': 1.112.18
'@tanstack/react-router': 1.112.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
- '@tanstack/react-start-client': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
+ '@tanstack/react-start-client': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
'@tanstack/router-core': 1.112.18
h3: 1.13.0
isbot: 5.1.23
@@ -32869,13 +33437,13 @@ snapshots:
tiny-warning: 1.0.3
unctx: 2.4.1
- '@tanstack/react-start@1.114.34(lijngnfq54cp5rlnj53jssmkhu)':
+ '@tanstack/react-start@1.114.34(xdtxozacaptx2f2yoax7hh4is4)':
dependencies:
- '@tanstack/react-start-client': 1.114.34(3rgr7yknbwuqb7flheblwpv2eq)
- '@tanstack/react-start-config': 1.114.34(lijngnfq54cp5rlnj53jssmkhu)
- '@tanstack/react-start-router-manifest': 1.114.33(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
+ '@tanstack/react-start-client': 1.114.34(2plvxtj6a7vw55mtbqwukj7brm)
+ '@tanstack/react-start-config': 1.114.34(xdtxozacaptx2f2yoax7hh4is4)
+ '@tanstack/react-start-router-manifest': 1.114.33(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
'@tanstack/react-start-server': 1.114.34(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- '@tanstack/start-api-routes': 1.114.33(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
+ '@tanstack/start-api-routes': 1.114.33(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
'@tanstack/start-server-functions-client': 1.114.33(@types/node@22.15.3)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
'@tanstack/start-server-functions-handler': 1.114.33
'@tanstack/start-server-functions-server': 1.114.32(@types/node@22.15.3)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
@@ -33096,11 +33664,11 @@ snapshots:
- tsx
- yaml
- '@tanstack/start-api-routes@1.114.33(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)':
+ '@tanstack/start-api-routes@1.114.33(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)':
dependencies:
'@tanstack/router-core': 1.114.33
'@tanstack/start-server-core': 1.114.33
- vinxi: 0.5.3(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
+ vinxi: 0.5.3(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -33151,21 +33719,21 @@ snapshots:
tiny-invariant: 1.3.3
tiny-warning: 1.0.3
- '@tanstack/start-config@1.113.0(hcvcmo22cfk2zc45m3egdtrfb4)':
+ '@tanstack/start-config@1.113.0(umfczj6grv5xwnnilehiba4mti)':
dependencies:
'@tanstack/react-router': 1.112.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@tanstack/react-start-plugin': 1.112.18(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
- '@tanstack/react-start-server-functions-handler': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
+ '@tanstack/react-start-server-functions-handler': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
'@tanstack/router-generator': 1.113.0(@tanstack/react-router@1.112.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1))
'@tanstack/router-plugin': 1.113.0(@tanstack/react-router@1.112.18(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite-plugin-solid@2.11.6(solid-js@1.9.5)(vite@6.3.4(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)))(vite@6.3.4(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
'@tanstack/server-functions-plugin': 1.112.18(@types/node@22.13.10)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
'@vitejs/plugin-react': 4.3.4(vite@6.3.4(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
import-meta-resolve: 4.1.0
- nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
+ nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
ofetch: 1.4.1
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
- vinxi: 0.5.3(5mkccpfbjktkt3otnngqrrcgde)
+ vinxi: 0.5.3(qmycrikecd3inn5enqnqcdtkym)
vite: 6.3.4(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
zod: 3.24.2
transitivePeerDependencies:
@@ -33317,16 +33885,16 @@ snapshots:
- tsx
- yaml
- '@tanstack/start@1.113.0(hcvcmo22cfk2zc45m3egdtrfb4)':
+ '@tanstack/start@1.113.0(umfczj6grv5xwnnilehiba4mti)':
dependencies:
- '@tanstack/react-start-api-routes': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
- '@tanstack/react-start-client': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
- '@tanstack/react-start-router-manifest': 1.112.18(5mkccpfbjktkt3otnngqrrcgde)
- '@tanstack/react-start-server': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
- '@tanstack/react-start-server-functions-client': 1.112.18(fbq2slcpifq65x7m35legngaoq)
- '@tanstack/react-start-server-functions-handler': 1.112.18(aguku5xwh67z542n34jhfwn7wm)
- '@tanstack/react-start-server-functions-ssr': 1.112.18(fbq2slcpifq65x7m35legngaoq)
- '@tanstack/start-config': 1.113.0(hcvcmo22cfk2zc45m3egdtrfb4)
+ '@tanstack/react-start-api-routes': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
+ '@tanstack/react-start-client': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
+ '@tanstack/react-start-router-manifest': 1.112.18(qmycrikecd3inn5enqnqcdtkym)
+ '@tanstack/react-start-server': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
+ '@tanstack/react-start-server-functions-client': 1.112.18(rikohmhqegmq4stnnvkdxooyim)
+ '@tanstack/react-start-server-functions-handler': 1.112.18(do3hc3md4wd7it5bigaqcra2vq)
+ '@tanstack/react-start-server-functions-ssr': 1.112.18(rikohmhqegmq4stnnvkdxooyim)
+ '@tanstack/start-config': 1.113.0(umfczj6grv5xwnnilehiba4mti)
'@tanstack/start-server-functions-server': 1.112.18(@types/node@22.13.10)(babel-plugin-macros@3.1.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -33386,10 +33954,10 @@ snapshots:
'@tanstack/virtual-file-routes@1.99.0': {}
- '@tanstack/vue-virtual@3.10.8(vue@3.5.13(typescript@5.8.2))':
+ '@tanstack/vue-virtual@3.10.8(vue@3.5.14(typescript@5.8.2))':
dependencies:
'@tanstack/virtual-core': 3.10.8
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
'@trysound/sax@0.2.0': {}
@@ -33437,9 +34005,9 @@ snapshots:
'@types/braces@3.0.4': {}
- '@types/bun@1.2.12':
+ '@types/bun@1.2.13':
dependencies:
- bun-types: 1.2.12
+ bun-types: 1.2.13
'@types/canvas-confetti@1.9.0': {}
@@ -33610,7 +34178,7 @@ snapshots:
'@types/graceful-fs@4.1.9':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
'@types/hammerjs@2.0.46': {}
@@ -33628,7 +34196,7 @@ snapshots:
'@types/http-proxy@1.17.16':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
'@types/istanbul-lib-coverage@2.0.6': {}
@@ -33651,7 +34219,7 @@ snapshots:
'@types/jsonfile@6.1.4':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
'@types/leaflet@1.7.6':
dependencies:
@@ -33689,7 +34257,7 @@ snapshots:
'@types/node-forge@1.3.11':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
'@types/node@18.19.87':
dependencies:
@@ -33714,6 +34282,7 @@ snapshots:
'@types/node@22.15.3':
dependencies:
undici-types: 6.21.0
+ optional: true
'@types/parse-json@4.0.2': {}
@@ -33864,7 +34433,7 @@ snapshots:
'@types/ws@8.5.13':
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
'@types/yargs-parser@21.0.3': {}
@@ -34042,11 +34611,11 @@ snapshots:
hookable: 5.5.3
zhead: 2.2.4
- '@unhead/vue@2.0.0-rc.9(vue@3.5.13(typescript@5.8.2))':
+ '@unhead/vue@2.0.0-rc.9(vue@3.5.14(typescript@5.8.2))':
dependencies:
hookable: 5.5.3
unhead: 2.0.0-rc.9
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
'@unovis/dagre-layout@0.8.8-2':
dependencies:
@@ -34094,10 +34663,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@unovis/vue@1.4.3-beta.0(@unovis/ts@1.4.3-beta.0)(vue@3.5.13(typescript@5.8.2))':
+ '@unovis/vue@1.4.3-beta.0(@unovis/ts@1.4.3-beta.0)(vue@3.5.14(typescript@5.8.2))':
dependencies:
'@unovis/ts': 1.4.3-beta.0
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
'@urql/core@5.1.1(graphql@15.10.1)':
dependencies:
@@ -34163,23 +34732,31 @@ snapshots:
'@vanilla-extract/private@1.0.6': {}
- '@vee-validate/zod@4.15.0(vue@3.5.13(typescript@5.8.2))(zod@3.24.2)':
+ '@vee-validate/zod@4.15.0(vue@3.5.14(typescript@5.8.2))(zod@3.24.2)':
dependencies:
type-fest: 4.26.1
- vee-validate: 4.15.0(vue@3.5.13(typescript@5.8.2))
+ vee-validate: 4.15.0(vue@3.5.14(typescript@5.8.2))
zod: 3.24.2
transitivePeerDependencies:
- vue
- '@vercel/analytics@1.5.0(@remix-run/react@2.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2))(@sveltejs/kit@2.19.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.6)(vite@6.3.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)))(svelte@5.22.6)(vite@6.3.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)))(next@15.2.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1))(react@19.0.0)(svelte@5.22.6)(vue-router@4.5.1(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))':
+ '@vercel/analytics@1.5.0(@remix-run/react@2.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2))(@sveltejs/kit@2.19.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.6)(vite@6.3.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)))(svelte@5.22.6)(vite@6.3.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)))(next@15.2.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1))(react@19.0.0)(svelte@5.22.6)(vue-router@4.5.1(vue@3.5.14(typescript@5.8.2)))(vue@3.5.14(typescript@5.8.2))':
optionalDependencies:
'@remix-run/react': 2.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2)
'@sveltejs/kit': 2.19.0(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.22.6)(vite@6.3.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)))(svelte@5.22.6)(vite@6.3.4(@types/node@22.13.8)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
next: 15.2.3(@babel/core@7.26.9)(babel-plugin-macros@3.1.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1)
react: 19.0.0
svelte: 5.22.6
- vue: 3.5.13(typescript@5.8.2)
- vue-router: 4.5.1(vue@3.5.13(typescript@5.8.2))
+ vue: 3.5.14(typescript@5.8.2)
+ vue-router: 4.5.1(vue@3.5.14(typescript@5.8.2))
+
+ '@vercel/mcp-adapter@0.4.1(next@15.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1))':
+ dependencies:
+ '@modelcontextprotocol/sdk': 1.10.2
+ next: 15.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1)
+ redis: 4.7.1
+ transitivePeerDependencies:
+ - supports-color
'@vercel/nft@0.29.2(encoding@0.1.13)(rollup@4.38.0)':
dependencies:
@@ -34257,20 +34834,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-vue-jsx@4.1.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))':
+ '@vitejs/plugin-vue-jsx@4.1.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.14(typescript@5.8.2))':
dependencies:
'@babel/core': 7.26.9
'@babel/plugin-transform-typescript': 7.26.8(@babel/core@7.26.9)
'@vue/babel-plugin-jsx': 1.3.0(@babel/core@7.26.9)
vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
transitivePeerDependencies:
- supports-color
- '@vitejs/plugin-vue@5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))':
+ '@vitejs/plugin-vue@5.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.14(typescript@5.8.2))':
dependencies:
vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
'@vitest/expect@1.6.1':
dependencies:
@@ -34412,7 +34989,7 @@ snapshots:
'@vscode/l10n@0.0.18': {}
- '@vue-macros/common@1.16.1(vue@3.5.13(typescript@5.8.2))':
+ '@vue-macros/common@1.16.1(vue@3.5.14(typescript@5.8.2))':
dependencies:
'@vue/compiler-sfc': 3.5.13
ast-kit: 1.4.2
@@ -34421,7 +34998,7 @@ snapshots:
pathe: 2.0.3
picomatch: 4.0.2
optionalDependencies:
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
'@vue/babel-helper-vue-transform-on@1.3.0': {}
@@ -34461,12 +35038,20 @@ snapshots:
'@vue/compiler-core@3.5.13':
dependencies:
- '@babel/parser': 7.26.9
+ '@babel/parser': 7.27.1
'@vue/shared': 3.5.13
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.1
+ '@vue/compiler-core@3.5.14':
+ dependencies:
+ '@babel/parser': 7.27.2
+ '@vue/shared': 3.5.14
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
'@vue/compiler-dom@3.3.4':
dependencies:
'@vue/compiler-core': 3.3.4
@@ -34477,6 +35062,11 @@ snapshots:
'@vue/compiler-core': 3.5.13
'@vue/shared': 3.5.13
+ '@vue/compiler-dom@3.5.14':
+ dependencies:
+ '@vue/compiler-core': 3.5.14
+ '@vue/shared': 3.5.14
+
'@vue/compiler-sfc@3.3.4':
dependencies:
'@babel/parser': 7.27.1
@@ -34502,6 +35092,18 @@ snapshots:
postcss: 8.5.3
source-map-js: 1.2.1
+ '@vue/compiler-sfc@3.5.14':
+ dependencies:
+ '@babel/parser': 7.27.2
+ '@vue/compiler-core': 3.5.14
+ '@vue/compiler-dom': 3.5.14
+ '@vue/compiler-ssr': 3.5.14
+ '@vue/shared': 3.5.14
+ estree-walker: 2.0.2
+ magic-string: 0.30.17
+ postcss: 8.5.3
+ source-map-js: 1.2.1
+
'@vue/compiler-ssr@3.3.4':
dependencies:
'@vue/compiler-dom': 3.3.4
@@ -34512,13 +35114,18 @@ snapshots:
'@vue/compiler-dom': 3.5.13
'@vue/shared': 3.5.13
+ '@vue/compiler-ssr@3.5.14':
+ dependencies:
+ '@vue/compiler-dom': 3.5.14
+ '@vue/shared': 3.5.14
+
'@vue/devtools-api@6.6.4': {}
'@vue/devtools-api@7.6.2':
dependencies:
'@vue/devtools-kit': 7.6.2
- '@vue/devtools-core@7.7.2(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))':
+ '@vue/devtools-core@7.7.2(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.14(typescript@5.8.2))':
dependencies:
'@vue/devtools-kit': 7.7.2
'@vue/devtools-shared': 7.7.2
@@ -34526,7 +35133,7 @@ snapshots:
nanoid: 5.1.5
pathe: 2.0.3
vite-hot-client: 0.2.4(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
transitivePeerDependencies:
- vite
@@ -34574,6 +35181,10 @@ snapshots:
dependencies:
'@vue/shared': 3.5.13
+ '@vue/reactivity@3.5.14':
+ dependencies:
+ '@vue/shared': 3.5.14
+
'@vue/runtime-core@3.3.4':
dependencies:
'@vue/reactivity': 3.3.4
@@ -34584,6 +35195,11 @@ snapshots:
'@vue/reactivity': 3.5.13
'@vue/shared': 3.5.13
+ '@vue/runtime-core@3.5.14':
+ dependencies:
+ '@vue/reactivity': 3.5.14
+ '@vue/shared': 3.5.14
+
'@vue/runtime-dom@3.3.4':
dependencies:
'@vue/runtime-core': 3.3.4
@@ -34597,6 +35213,13 @@ snapshots:
'@vue/shared': 3.5.13
csstype: 3.1.3
+ '@vue/runtime-dom@3.5.14':
+ dependencies:
+ '@vue/reactivity': 3.5.14
+ '@vue/runtime-core': 3.5.14
+ '@vue/shared': 3.5.14
+ csstype: 3.1.3
+
'@vue/server-renderer@3.3.4(vue@3.3.4)':
dependencies:
'@vue/compiler-ssr': 3.3.4
@@ -34609,26 +35232,34 @@ snapshots:
'@vue/shared': 3.5.13
vue: 3.5.13(typescript@5.8.2)
+ '@vue/server-renderer@3.5.14(vue@3.5.14(typescript@5.8.2))':
+ dependencies:
+ '@vue/compiler-ssr': 3.5.14
+ '@vue/shared': 3.5.14
+ vue: 3.5.14(typescript@5.8.2)
+
'@vue/shared@3.3.4': {}
'@vue/shared@3.5.13': {}
- '@vueuse/core@10.11.1(vue@3.5.13(typescript@5.8.2))':
+ '@vue/shared@3.5.14': {}
+
+ '@vueuse/core@10.11.1(vue@3.5.14(typescript@5.8.2))':
dependencies:
'@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 10.11.1
- '@vueuse/shared': 10.11.1(vue@3.5.13(typescript@5.8.2))
- vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2))
+ '@vueuse/shared': 10.11.1(vue@3.5.14(typescript@5.8.2))
+ vue-demi: 0.14.10(vue@3.5.14(typescript@5.8.2))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@vueuse/core@11.3.0(vue@3.5.13(typescript@5.8.2))':
+ '@vueuse/core@11.3.0(vue@3.5.14(typescript@5.8.2))':
dependencies:
'@types/web-bluetooth': 0.0.20
'@vueuse/metadata': 11.3.0
- '@vueuse/shared': 11.3.0(vue@3.5.13(typescript@5.8.2))
- vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2))
+ '@vueuse/shared': 11.3.0(vue@3.5.14(typescript@5.8.2))
+ vue-demi: 0.14.10(vue@3.5.14(typescript@5.8.2))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@@ -34637,16 +35268,16 @@ snapshots:
'@vueuse/metadata@11.3.0': {}
- '@vueuse/shared@10.11.1(vue@3.5.13(typescript@5.8.2))':
+ '@vueuse/shared@10.11.1(vue@3.5.14(typescript@5.8.2))':
dependencies:
- vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2))
+ vue-demi: 0.14.10(vue@3.5.14(typescript@5.8.2))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
- '@vueuse/shared@11.3.0(vue@3.5.13(typescript@5.8.2))':
+ '@vueuse/shared@11.3.0(vue@3.5.14(typescript@5.8.2))':
dependencies:
- vue-demi: 0.14.10(vue@3.5.13(typescript@5.8.2))
+ vue-demi: 0.14.10(vue@3.5.14(typescript@5.8.2))
transitivePeerDependencies:
- '@vue/composition-api'
- vue
@@ -35170,6 +35801,11 @@ snapshots:
mime-types: 2.1.35
negotiator: 0.6.3
+ accepts@2.0.0:
+ dependencies:
+ mime-types: 3.0.1
+ negotiator: 1.0.0
+
acorn-import-attributes@1.9.5(acorn@8.14.1):
dependencies:
acorn: 8.14.1
@@ -35456,7 +36092,7 @@ snapshots:
ast-walker-scope@0.6.2:
dependencies:
- '@babel/parser': 7.26.9
+ '@babel/parser': 7.27.1
ast-kit: 1.4.2
astral-regex@1.0.0: {}
@@ -36026,6 +36662,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ body-parser@2.2.0:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 4.4.0(supports-color@9.4.0)
+ http-errors: 2.0.0
+ iconv-lite: 0.6.3
+ on-finished: 2.4.1
+ qs: 6.14.0
+ raw-body: 3.0.0
+ type-is: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
boolbase@1.0.0: {}
boxen@7.1.1:
@@ -36151,9 +36801,9 @@ snapshots:
transitivePeerDependencies:
- magicast
- bun-types@1.2.12:
+ bun-types@1.2.13:
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
bundle-name@4.1.0:
dependencies:
@@ -36412,7 +37062,7 @@ snapshots:
chrome-launcher@0.15.2:
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -36423,7 +37073,7 @@ snapshots:
chromium-edge-launcher@0.2.0:
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
escape-string-regexp: 4.0.0
is-wsl: 2.2.0
lighthouse-logger: 1.4.2
@@ -36697,6 +37347,10 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
+ content-disposition@1.0.0:
+ dependencies:
+ safe-buffer: 5.2.1
+
content-security-policy-parser@0.4.1: {}
content-type@1.0.5: {}
@@ -37213,18 +37867,18 @@ snapshots:
dayjs@1.11.13: {}
- db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0):
+ db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0):
optionalDependencies:
'@libsql/client': 0.14.0
better-sqlite3: 11.8.1
- drizzle-orm: 0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0)
+ drizzle-orm: 0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0)
mysql2: 3.13.0
- db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0):
+ db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0):
optionalDependencies:
'@libsql/client': 0.14.0
better-sqlite3: 11.8.1
- drizzle-orm: 0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2))
+ drizzle-orm: 0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2))
mysql2: 3.13.0
debug@2.6.9:
@@ -37460,7 +38114,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- drizzle-orm@0.33.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@19.0.10)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0):
+ drizzle-orm@0.33.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@19.0.10)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0):
optionalDependencies:
'@cloudflare/workers-types': 4.20250303.0
'@libsql/client': 0.14.0
@@ -37469,14 +38123,14 @@ snapshots:
'@types/pg': 8.11.11
'@types/react': 19.0.10
better-sqlite3: 11.8.1
- bun-types: 1.2.12
+ bun-types: 1.2.13
kysely: 0.28.1
mysql2: 3.13.0
pg: 8.13.3
prisma: 5.22.0
react: 19.0.0
- drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0):
+ drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0):
optionalDependencies:
'@cloudflare/workers-types': 4.20250303.0
'@libsql/client': 0.14.0
@@ -37486,14 +38140,14 @@ snapshots:
'@types/pg': 8.11.11
'@types/react': 18.3.18
better-sqlite3: 11.8.1
- bun-types: 1.2.12
+ bun-types: 1.2.13
kysely: 0.28.1
mysql2: 3.13.0
pg: 8.13.3
prisma: 5.22.0
react: 19.0.0
- drizzle-orm@0.39.3(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)):
+ drizzle-orm@0.39.3(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)):
optionalDependencies:
'@cloudflare/workers-types': 4.20250303.0
'@libsql/client': 0.14.0
@@ -37502,13 +38156,13 @@ snapshots:
'@types/better-sqlite3': 7.6.12
'@types/pg': 8.11.11
better-sqlite3: 11.8.1
- bun-types: 1.2.12
+ bun-types: 1.2.13
kysely: 0.28.1
mysql2: 3.13.0
pg: 8.13.3
prisma: 6.4.1(typescript@5.8.2)
- drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)):
+ drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)):
optionalDependencies:
'@cloudflare/workers-types': 4.20250303.0
'@libsql/client': 0.14.0
@@ -37517,7 +38171,7 @@ snapshots:
'@types/better-sqlite3': 7.6.12
'@types/pg': 8.11.11
better-sqlite3: 11.8.1
- bun-types: 1.2.12
+ bun-types: 1.2.13
gel: 2.0.1
kysely: 0.28.1
mysql2: 3.13.0
@@ -37599,11 +38253,11 @@ snapshots:
embla-carousel-reactive-utils: 8.5.2(embla-carousel@8.5.2)
svelte: 4.2.19
- embla-carousel-vue@8.5.2(vue@3.5.13(typescript@5.8.2)):
+ embla-carousel-vue@8.5.2(vue@3.5.14(typescript@5.8.2)):
dependencies:
embla-carousel: 8.5.2
embla-carousel-reactive-utils: 8.5.2(embla-carousel@8.5.2)
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
embla-carousel@8.5.2: {}
@@ -38581,7 +39235,7 @@ snapshots:
eval@0.1.8:
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
require-like: 0.1.2
event-target-shim@5.0.1: {}
@@ -38592,6 +39246,12 @@ snapshots:
events@3.3.0: {}
+ eventsource-parser@3.0.2: {}
+
+ eventsource@3.0.7:
+ dependencies:
+ eventsource-parser: 3.0.2
+
exec-async@2.2.0: {}
execa@1.0.0:
@@ -38934,6 +39594,10 @@ snapshots:
exponential-backoff@3.1.2: {}
+ express-rate-limit@7.5.0(express@5.1.0):
+ dependencies:
+ express: 5.1.0
+
express@4.21.1:
dependencies:
accepts: 1.3.8
@@ -38970,6 +39634,38 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ express@5.1.0:
+ dependencies:
+ accepts: 2.0.0
+ body-parser: 2.2.0
+ content-disposition: 1.0.0
+ content-type: 1.0.5
+ cookie: 0.7.2
+ cookie-signature: 1.2.2
+ debug: 4.4.0(supports-color@9.4.0)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 2.1.0
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ merge-descriptors: 2.0.0
+ mime-types: 3.0.1
+ on-finished: 2.4.1
+ once: 1.4.0
+ parseurl: 1.3.3
+ proxy-addr: 2.0.7
+ qs: 6.14.0
+ range-parser: 1.2.1
+ router: 2.2.0
+ send: 1.2.0
+ serve-static: 2.2.0
+ statuses: 2.0.1
+ type-is: 2.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
exsolve@1.0.2: {}
extend-shallow@2.0.1:
@@ -39146,6 +39842,17 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ finalhandler@2.1.0:
+ dependencies:
+ debug: 4.4.0(supports-color@9.4.0)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
find-cache-dir@2.1.0:
dependencies:
commondir: 1.0.1
@@ -39279,6 +39986,8 @@ snapshots:
fresh@0.5.2: {}
+ fresh@2.0.0: {}
+
fs-constants@1.0.0: {}
fs-extra@10.1.0:
@@ -39473,6 +40182,8 @@ snapshots:
dependencies:
loader-utils: 3.3.1
+ generic-pool@3.9.0: {}
+
gensync@1.0.0-beta.2: {}
geojson-vt@3.2.1: {}
@@ -40483,6 +41194,8 @@ snapshots:
is-plain-object@5.0.0: {}
+ is-promise@4.0.0: {}
+
is-property@1.0.2: {}
is-reference@1.2.1:
@@ -40667,7 +41380,7 @@ snapshots:
dependencies:
'@jest/types': 29.6.3
'@types/graceful-fs': 4.1.9
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
anymatch: 3.1.3
fb-watchman: 2.0.2
graceful-fs: 4.2.11
@@ -40709,7 +41422,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
- '@types/node': 22.15.3
+ '@types/node': 20.17.24
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@@ -40726,7 +41439,7 @@ snapshots:
jest-worker@29.7.0:
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
jest-util: 29.7.0
merge-stream: 2.0.0
supports-color: 8.1.1
@@ -40794,7 +41507,7 @@ snapshots:
jscodeshift@0.14.0(@babel/preset-env@7.26.9(@babel/core@7.26.9)):
dependencies:
'@babel/core': 7.26.9
- '@babel/parser': 7.26.9
+ '@babel/parser': 7.27.1
'@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.9)
'@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.9)
'@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.9)
@@ -40819,7 +41532,7 @@ snapshots:
jscodeshift@0.14.0(@babel/preset-env@7.26.9(@babel/core@7.27.1)):
dependencies:
'@babel/core': 7.26.9
- '@babel/parser': 7.26.9
+ '@babel/parser': 7.27.1
'@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.9)
'@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.9)
'@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.9)
@@ -41848,6 +42561,8 @@ snapshots:
media-typer@0.3.0: {}
+ media-typer@1.1.0: {}
+
memoize-one@5.2.1: {}
memoize-one@6.0.0: {}
@@ -41862,6 +42577,8 @@ snapshots:
merge-descriptors@1.0.3: {}
+ merge-descriptors@2.0.0: {}
+
merge-options@3.0.4:
dependencies:
is-plain-obj: 2.1.0
@@ -42258,7 +42975,7 @@ snapshots:
'@babel/code-frame': 7.26.2
'@babel/core': 7.26.9
'@babel/generator': 7.26.9
- '@babel/parser': 7.26.9
+ '@babel/parser': 7.27.1
'@babel/template': 7.26.9
'@babel/traverse': 7.26.9
'@babel/types': 7.26.9
@@ -42824,10 +43541,16 @@ snapshots:
mime-db@1.53.0: {}
+ mime-db@1.54.0: {}
+
mime-types@2.1.35:
dependencies:
mime-db: 1.52.0
+ mime-types@3.0.1:
+ dependencies:
+ mime-db: 1.54.0
+
mime@1.6.0: {}
mime@2.6.0: {}
@@ -42955,6 +43678,26 @@ snapshots:
typescript: 5.8.2
vue: 3.5.13(typescript@5.8.2)
+ mkdist@2.2.0(sass@1.85.1)(typescript@5.8.2)(vue@3.5.14(typescript@5.8.2)):
+ dependencies:
+ autoprefixer: 10.4.20(postcss@8.5.3)
+ citty: 0.1.6
+ cssnano: 7.0.6(postcss@8.5.3)
+ defu: 6.1.4
+ esbuild: 0.24.2
+ jiti: 1.21.7
+ mlly: 1.7.4
+ pathe: 1.1.2
+ pkg-types: 1.3.1
+ postcss: 8.5.3
+ postcss-nested: 7.0.2(postcss@8.5.3)
+ semver: 7.7.1
+ tinyglobby: 0.2.12
+ optionalDependencies:
+ sass: 1.85.1
+ typescript: 5.8.2
+ vue: 3.5.14(typescript@5.8.2)
+
mlly@1.7.3:
dependencies:
acorn: 8.14.0
@@ -43199,9 +43942,35 @@ snapshots:
- '@babel/core'
- babel-plugin-macros
+ next@15.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.85.1):
+ dependencies:
+ '@next/env': 15.3.2
+ '@swc/counter': 0.1.3
+ '@swc/helpers': 0.5.15
+ busboy: 1.6.0
+ caniuse-lite: 1.0.30001707
+ postcss: 8.4.31
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ styled-jsx: 5.1.6(@babel/core@7.26.9)(babel-plugin-macros@3.1.0)(react@19.0.0)
+ optionalDependencies:
+ '@next/swc-darwin-arm64': 15.3.2
+ '@next/swc-darwin-x64': 15.3.2
+ '@next/swc-linux-arm64-gnu': 15.3.2
+ '@next/swc-linux-arm64-musl': 15.3.2
+ '@next/swc-linux-x64-gnu': 15.3.2
+ '@next/swc-linux-x64-musl': 15.3.2
+ '@next/swc-win32-arm64-msvc': 15.3.2
+ '@next/swc-win32-x64-msvc': 15.3.2
+ sass: 1.85.1
+ sharp: 0.34.1
+ transitivePeerDependencies:
+ - '@babel/core'
+ - babel-plugin-macros
+
nice-try@1.0.5: {}
- nitropack@2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2):
+ nitropack@2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2):
dependencies:
'@cloudflare/kv-asset-handler': 0.3.4
'@netlify/functions': 3.0.0
@@ -43224,7 +43993,7 @@ snapshots:
cookie-es: 2.0.0
croner: 9.0.0
crossws: 0.3.4
- db0: 0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0)
+ db0: 0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0)
defu: 6.1.4
destr: 2.0.3
dot-prop: 9.0.0
@@ -43272,7 +44041,7 @@ snapshots:
unenv: 2.0.0-rc.12
unimport: 4.1.2
unplugin-utils: 0.2.4
- unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(ioredis@5.6.0)
+ unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(ioredis@5.6.0)
untyped: 2.0.0
unwasm: 0.3.9
youch: 4.1.0-beta.6
@@ -43305,7 +44074,7 @@ snapshots:
- typescript
- uploadthing
- nitropack@2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2):
+ nitropack@2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2):
dependencies:
'@cloudflare/kv-asset-handler': 0.3.4
'@netlify/functions': 3.0.0
@@ -43328,7 +44097,7 @@ snapshots:
cookie-es: 2.0.0
croner: 9.0.0
crossws: 0.3.4
- db0: 0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0)
+ db0: 0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0)
defu: 6.1.4
destr: 2.0.3
dot-prop: 9.0.0
@@ -43376,7 +44145,7 @@ snapshots:
unenv: 2.0.0-rc.12
unimport: 4.1.2
unplugin-utils: 0.2.4
- unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0))(ioredis@5.6.0)
+ unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0))(ioredis@5.6.0)
untyped: 2.0.0
unwasm: 0.3.9
youch: 4.1.0-beta.6
@@ -43549,17 +44318,17 @@ snapshots:
dependencies:
esm-env: 1.2.1
- nuxt@3.16.0(yykrlyfgcq7bklxjhifzhuppyq):
+ nuxt@3.16.0(kygbndsg3u7xffwrewwioaaldy):
dependencies:
'@nuxt/cli': 3.22.5(magicast@0.3.5)
'@nuxt/devalue': 2.0.2
- '@nuxt/devtools': 2.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2))
+ '@nuxt/devtools': 2.2.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.14(typescript@5.8.2))
'@nuxt/kit': 3.16.0(magicast@0.3.5)
'@nuxt/schema': 3.16.0
'@nuxt/telemetry': 2.6.5(magicast@0.3.5)
- '@nuxt/vite-builder': 3.16.0(@biomejs/biome@1.9.4)(@types/node@22.15.3)(eslint@9.22.0(jiti@2.4.2))(less@4.2.2)(lightningcss@1.29.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.38.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))(yaml@2.7.0)
+ '@nuxt/vite-builder': 3.16.0(@biomejs/biome@1.9.4)(@types/node@22.15.3)(eslint@9.22.0(jiti@2.4.2))(less@4.2.2)(lightningcss@1.29.2)(magicast@0.3.5)(optionator@0.9.4)(rollup@4.38.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(vue@3.5.14(typescript@5.8.2))(yaml@2.7.0)
'@oxc-parser/wasm': 0.56.5
- '@unhead/vue': 2.0.0-rc.9(vue@3.5.13(typescript@5.8.2))
+ '@unhead/vue': 2.0.0-rc.9(vue@3.5.14(typescript@5.8.2))
'@vue/shared': 3.5.13
c12: 3.0.2(magicast@0.3.5)
chokidar: 4.0.3
@@ -43585,7 +44354,7 @@ snapshots:
magic-string: 0.30.17
mlly: 1.7.4
nanotar: 0.2.0
- nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
+ nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
nypm: 0.6.0
ofetch: 1.4.1
ohash: 2.0.11
@@ -43607,13 +44376,13 @@ snapshots:
unenv: 2.0.0-rc.12
unimport: 4.1.2
unplugin: 2.2.0
- unplugin-vue-router: 0.12.0(vue-router@4.5.1(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2))
- unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0))(ioredis@5.6.0)
+ unplugin-vue-router: 0.12.0(vue-router@4.5.1(vue@3.5.14(typescript@5.8.2)))(vue@3.5.14(typescript@5.8.2))
+ unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0))(ioredis@5.6.0)
untyped: 2.0.0
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
vue-bundle-renderer: 2.1.1
vue-devtools-stub: 0.1.0
- vue-router: 4.5.1(vue@3.5.13(typescript@5.8.2))
+ vue-router: 4.5.1(vue@3.5.14(typescript@5.8.2))
optionalDependencies:
'@parcel/watcher': 2.5.1
'@types/node': 22.15.3
@@ -44112,6 +44881,8 @@ snapshots:
path-to-regexp@6.3.0: {}
+ path-to-regexp@8.2.0: {}
+
path-type@4.0.0: {}
path-type@6.0.0: {}
@@ -44214,6 +44985,8 @@ snapshots:
pirates@4.0.7: {}
+ pkce-challenge@5.0.0: {}
+
pkg-dir@3.0.0:
dependencies:
find-up: 3.0.0
@@ -45027,6 +45800,10 @@ snapshots:
dependencies:
side-channel: 1.1.0
+ qs@6.14.0:
+ dependencies:
+ side-channel: 1.1.0
+
quansync@0.2.8: {}
query-string@7.1.3:
@@ -45048,20 +45825,20 @@ snapshots:
quickselect@2.0.0: {}
- radix-vue@1.9.17(vue@3.5.13(typescript@5.8.2)):
+ radix-vue@1.9.17(vue@3.5.14(typescript@5.8.2)):
dependencies:
'@floating-ui/dom': 1.6.12
- '@floating-ui/vue': 1.1.5(vue@3.5.13(typescript@5.8.2))
+ '@floating-ui/vue': 1.1.5(vue@3.5.14(typescript@5.8.2))
'@internationalized/date': 3.6.0
'@internationalized/number': 3.5.4
- '@tanstack/vue-virtual': 3.10.8(vue@3.5.13(typescript@5.8.2))
- '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.8.2))
- '@vueuse/shared': 10.11.1(vue@3.5.13(typescript@5.8.2))
+ '@tanstack/vue-virtual': 3.10.8(vue@3.5.14(typescript@5.8.2))
+ '@vueuse/core': 10.11.1(vue@3.5.14(typescript@5.8.2))
+ '@vueuse/shared': 10.11.1(vue@3.5.14(typescript@5.8.2))
aria-hidden: 1.2.4
defu: 6.1.4
fast-deep-equal: 3.1.3
nanoid: 5.0.9
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
transitivePeerDependencies:
- '@vue/composition-api'
@@ -45080,6 +45857,13 @@ snapshots:
iconv-lite: 0.4.24
unpipe: 1.0.0
+ raw-body@3.0.0:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.6.3
+ unpipe: 1.0.0
+
rc9@2.1.2:
dependencies:
defu: 6.1.4
@@ -45810,6 +46594,15 @@ snapshots:
dependencies:
redis-errors: 1.2.0
+ redis@4.7.1:
+ dependencies:
+ '@redis/bloom': 1.2.0(@redis/client@1.6.1)
+ '@redis/client': 1.6.1
+ '@redis/graph': 1.1.1(@redis/client@1.6.1)
+ '@redis/json': 1.0.7(@redis/client@1.6.1)
+ '@redis/search': 1.2.0(@redis/client@1.6.1)
+ '@redis/time-series': 1.1.0(@redis/client@1.6.1)
+
reflect.getprototypeof@1.0.10:
dependencies:
call-bind: 1.0.8
@@ -46310,6 +47103,16 @@ snapshots:
rou3@0.5.1: {}
+ router@2.2.0:
+ dependencies:
+ debug: 4.4.0(supports-color@9.4.0)
+ depd: 2.0.0
+ is-promise: 4.0.0
+ parseurl: 1.3.3
+ path-to-regexp: 8.2.0
+ transitivePeerDependencies:
+ - supports-color
+
run-applescript@7.0.0: {}
run-async@3.0.0: {}
@@ -46465,6 +47268,22 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ send@1.2.0:
+ dependencies:
+ debug: 4.4.0(supports-color@9.4.0)
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 2.0.0
+ http-errors: 2.0.0
+ mime-types: 3.0.1
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
seq-queue@0.0.5: {}
serialize-error@2.1.0: {}
@@ -46492,6 +47311,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ serve-static@2.2.0:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 1.2.0
+ transitivePeerDependencies:
+ - supports-color
+
server-only@0.0.1: {}
set-blocking@2.0.0: {}
@@ -46579,6 +47407,34 @@ snapshots:
'@img/sharp-win32-x64': 0.33.5
optional: true
+ sharp@0.34.1:
+ dependencies:
+ color: 4.2.3
+ detect-libc: 2.0.3
+ semver: 7.7.1
+ optionalDependencies:
+ '@img/sharp-darwin-arm64': 0.34.1
+ '@img/sharp-darwin-x64': 0.34.1
+ '@img/sharp-libvips-darwin-arm64': 1.1.0
+ '@img/sharp-libvips-darwin-x64': 1.1.0
+ '@img/sharp-libvips-linux-arm': 1.1.0
+ '@img/sharp-libvips-linux-arm64': 1.1.0
+ '@img/sharp-libvips-linux-ppc64': 1.1.0
+ '@img/sharp-libvips-linux-s390x': 1.1.0
+ '@img/sharp-libvips-linux-x64': 1.1.0
+ '@img/sharp-libvips-linuxmusl-arm64': 1.1.0
+ '@img/sharp-libvips-linuxmusl-x64': 1.1.0
+ '@img/sharp-linux-arm': 0.34.1
+ '@img/sharp-linux-arm64': 0.34.1
+ '@img/sharp-linux-s390x': 0.34.1
+ '@img/sharp-linux-x64': 0.34.1
+ '@img/sharp-linuxmusl-arm64': 0.34.1
+ '@img/sharp-linuxmusl-x64': 0.34.1
+ '@img/sharp-wasm32': 0.34.1
+ '@img/sharp-win32-ia32': 0.34.1
+ '@img/sharp-win32-x64': 0.34.1
+ optional: true
+
shebang-command@1.2.0:
dependencies:
shebang-regex: 1.0.0
@@ -47021,7 +47877,7 @@ snapshots:
stripe@18.0.0:
dependencies:
- '@types/node': 22.13.8
+ '@types/node': 20.17.24
qs: 6.13.0
striptags@3.2.0: {}
@@ -47753,6 +48609,12 @@ snapshots:
media-typer: 0.3.0
mime-types: 2.1.35
+ type-is@2.0.1:
+ dependencies:
+ content-type: 1.0.5
+ media-typer: 1.1.0
+ mime-types: 3.0.1
+
typed-array-buffer@1.0.2:
dependencies:
call-bind: 1.0.8
@@ -47885,6 +48747,39 @@ snapshots:
- vue
- vue-tsc
+ unbuild@3.5.0(sass@1.85.1)(typescript@5.8.2)(vue@3.5.14(typescript@5.8.2)):
+ dependencies:
+ '@rollup/plugin-alias': 5.1.1(rollup@4.34.8)
+ '@rollup/plugin-commonjs': 28.0.2(rollup@4.34.8)
+ '@rollup/plugin-json': 6.1.0(rollup@4.34.8)
+ '@rollup/plugin-node-resolve': 16.0.0(rollup@4.34.8)
+ '@rollup/plugin-replace': 6.0.2(rollup@4.34.8)
+ '@rollup/pluginutils': 5.1.4(rollup@4.34.8)
+ citty: 0.1.6
+ consola: 3.4.0
+ defu: 6.1.4
+ esbuild: 0.25.0
+ fix-dts-default-cjs-exports: 1.0.0
+ hookable: 5.5.3
+ jiti: 2.4.2
+ magic-string: 0.30.17
+ mkdist: 2.2.0(sass@1.85.1)(typescript@5.8.2)(vue@3.5.14(typescript@5.8.2))
+ mlly: 1.7.4
+ pathe: 2.0.3
+ pkg-types: 2.0.0
+ pretty-bytes: 6.1.1
+ rollup: 4.34.8
+ rollup-plugin-dts: 6.1.1(rollup@4.34.8)(typescript@5.8.2)
+ scule: 1.3.0
+ tinyglobby: 0.2.12
+ untyped: 2.0.0
+ optionalDependencies:
+ typescript: 5.8.2
+ transitivePeerDependencies:
+ - sass
+ - vue
+ - vue-tsc
+
unconfig@0.6.1:
dependencies:
'@antfu/utils': 8.1.1
@@ -47913,7 +48808,8 @@ snapshots:
undici-types@6.20.0: {}
- undici-types@6.21.0: {}
+ undici-types@6.21.0:
+ optional: true
undici@5.28.5:
dependencies:
@@ -48095,10 +48991,10 @@ snapshots:
pathe: 2.0.3
picomatch: 4.0.2
- unplugin-vue-router@0.12.0(vue-router@4.5.1(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2)):
+ unplugin-vue-router@0.12.0(vue-router@4.5.1(vue@3.5.14(typescript@5.8.2)))(vue@3.5.14(typescript@5.8.2)):
dependencies:
'@babel/types': 7.26.9
- '@vue-macros/common': 1.16.1(vue@3.5.13(typescript@5.8.2))
+ '@vue-macros/common': 1.16.1(vue@3.5.14(typescript@5.8.2))
ast-walker-scope: 0.6.2
chokidar: 4.0.3
fast-glob: 3.3.3
@@ -48113,7 +49009,7 @@ snapshots:
unplugin-utils: 0.2.4
yaml: 2.7.0
optionalDependencies:
- vue-router: 4.5.1(vue@3.5.13(typescript@5.8.2))
+ vue-router: 4.5.1(vue@3.5.14(typescript@5.8.2))
transitivePeerDependencies:
- vue
@@ -48127,7 +49023,7 @@ snapshots:
acorn: 8.14.1
webpack-virtual-modules: 0.6.2
- unstorage@1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(ioredis@5.6.0):
+ unstorage@1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(ioredis@5.6.0):
dependencies:
anymatch: 3.1.3
chokidar: 4.0.3
@@ -48139,10 +49035,10 @@ snapshots:
ufo: 1.5.4
optionalDependencies:
'@azure/identity': 4.6.0
- db0: 0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0)
+ db0: 0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0)
ioredis: 5.6.0
- unstorage@1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0))(ioredis@5.6.0):
+ unstorage@1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0))(ioredis@5.6.0):
dependencies:
anymatch: 3.1.3
chokidar: 4.0.3
@@ -48154,7 +49050,7 @@ snapshots:
ufo: 1.5.4
optionalDependencies:
'@azure/identity': 4.6.0
- db0: 0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0)
+ db0: 0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0)
ioredis: 5.6.0
untun@0.1.3:
@@ -48292,7 +49188,7 @@ snapshots:
kleur: 4.1.5
sade: 1.8.1
- v-calendar@3.1.2(@popperjs/core@2.11.8)(vue@3.5.13(typescript@5.8.2)):
+ v-calendar@3.1.2(@popperjs/core@2.11.8)(vue@3.5.14(typescript@5.8.2)):
dependencies:
'@popperjs/core': 2.11.8
'@types/lodash': 4.17.13
@@ -48300,8 +49196,8 @@ snapshots:
date-fns: 2.30.0
date-fns-tz: 2.0.1(date-fns@2.30.0)
lodash: 4.17.21
- vue: 3.5.13(typescript@5.8.2)
- vue-screen-utils: 1.0.0-beta.13(vue@3.5.13(typescript@5.8.2))
+ vue: 3.5.14(typescript@5.8.2)
+ vue-screen-utils: 1.0.0-beta.13(vue@3.5.14(typescript@5.8.2))
valibot@0.31.1:
optional: true
@@ -48334,11 +49230,11 @@ snapshots:
bits-ui: 0.21.16(svelte@4.2.19)
svelte: 4.2.19
- vaul-vue@0.2.1(radix-vue@1.9.17(vue@3.5.13(typescript@5.8.2)))(vue@3.5.13(typescript@5.8.2)):
+ vaul-vue@0.2.1(radix-vue@1.9.17(vue@3.5.14(typescript@5.8.2)))(vue@3.5.14(typescript@5.8.2)):
dependencies:
- '@vueuse/core': 10.11.1(vue@3.5.13(typescript@5.8.2))
- radix-vue: 1.9.17(vue@3.5.13(typescript@5.8.2))
- vue: 3.5.13(typescript@5.8.2)
+ '@vueuse/core': 10.11.1(vue@3.5.14(typescript@5.8.2))
+ radix-vue: 1.9.17(vue@3.5.14(typescript@5.8.2))
+ vue: 3.5.14(typescript@5.8.2)
transitivePeerDependencies:
- '@vue/composition-api'
@@ -48369,11 +49265,11 @@ snapshots:
- '@types/react'
- '@types/react-dom'
- vee-validate@4.15.0(vue@3.5.13(typescript@5.8.2)):
+ vee-validate@4.15.0(vue@3.5.14(typescript@5.8.2)):
dependencies:
'@vue/devtools-api': 7.6.2
type-fest: 4.26.1
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
vfile-location@5.0.3:
dependencies:
@@ -48419,7 +49315,7 @@ snapshots:
d3-time: 3.1.0
d3-timer: 3.0.1
- vinxi@0.4.3(tbiltmkuca6gwy6wvywbppe5hm):
+ vinxi@0.4.3(xigip3pwxsynk4cmajsowrm4re):
dependencies:
'@babel/core': 7.26.9
'@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.9)
@@ -48441,7 +49337,7 @@ snapshots:
hookable: 5.5.3
http-proxy: 1.18.1
micromatch: 4.0.8
- nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
+ nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
node-fetch-native: 1.6.6
path-to-regexp: 6.3.0
pathe: 1.1.2
@@ -48452,7 +49348,7 @@ snapshots:
ufo: 1.5.4
unctx: 2.4.1
unenv: 1.10.0
- unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0))(ioredis@5.6.0)
+ unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0))(ioredis@5.6.0)
vite: 5.4.19(@types/node@22.13.10)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)
zod: 3.24.2
transitivePeerDependencies:
@@ -48496,7 +49392,7 @@ snapshots:
- uploadthing
- xml2js
- vinxi@0.5.3(5mkccpfbjktkt3otnngqrrcgde):
+ vinxi@0.5.3(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0):
dependencies:
'@babel/core': 7.26.9
'@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.9)
@@ -48518,7 +49414,7 @@ snapshots:
hookable: 5.5.3
http-proxy: 1.18.1
micromatch: 4.0.8
- nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
+ nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
node-fetch-native: 1.6.6
path-to-regexp: 6.3.0
pathe: 1.1.2
@@ -48529,8 +49425,8 @@ snapshots:
ufo: 1.5.4
unctx: 2.4.1
unenv: 1.10.0
- unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.12)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0))(ioredis@5.6.0)
- vite: 6.3.4(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.13)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(ioredis@5.6.0)
+ vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
zod: 3.24.2
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -48575,7 +49471,7 @@ snapshots:
- xml2js
- yaml
- vinxi@0.5.3(@azure/identity@4.6.0)(@libsql/client@0.14.0)(@types/node@22.15.3)(better-sqlite3@11.8.1)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(ioredis@5.6.0)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(mysql2@3.13.0)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(typescript@5.8.2)(yaml@2.7.0):
+ vinxi@0.5.3(qmycrikecd3inn5enqnqcdtkym):
dependencies:
'@babel/core': 7.26.9
'@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.9)
@@ -48597,7 +49493,7 @@ snapshots:
hookable: 5.5.3
http-proxy: 1.18.1
micromatch: 4.0.8
- nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
+ nitropack: 2.11.5(@azure/identity@4.6.0)(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(encoding@0.1.13)(mysql2@3.13.0)(typescript@5.8.2)
node-fetch-native: 1.6.6
path-to-regexp: 6.3.0
pathe: 1.1.2
@@ -48608,8 +49504,8 @@ snapshots:
ufo: 1.5.4
unctx: 2.4.1
unenv: 1.10.0
- unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.38.4(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@5.22.0(prisma@5.22.0))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(@types/react@18.3.18)(better-sqlite3@11.8.1)(bun-types@1.2.12)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@5.22.0)(react@19.0.0))(mysql2@3.13.0))(ioredis@5.6.0)
- vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
+ unstorage: 1.15.0(@azure/identity@4.6.0)(db0@0.3.1(@libsql/client@0.14.0)(better-sqlite3@11.8.1)(drizzle-orm@0.40.0(@cloudflare/workers-types@4.20250303.0)(@libsql/client-wasm@0.14.0)(@libsql/client@0.14.0)(@prisma/client@6.4.1(prisma@6.4.1(typescript@5.8.2))(typescript@5.8.2))(@types/better-sqlite3@7.6.12)(@types/pg@8.11.11)(better-sqlite3@11.8.1)(bun-types@1.2.13)(gel@2.0.1)(kysely@0.28.1)(mysql2@3.13.0)(pg@8.13.3)(prisma@6.4.1(typescript@5.8.2)))(mysql2@3.13.0))(ioredis@5.6.0)
+ vite: 6.3.4(@types/node@22.13.10)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
zod: 3.24.2
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -48816,14 +49712,14 @@ snapshots:
- supports-color
optional: true
- vite-plugin-vue-tracer@0.1.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.8.2)):
+ vite-plugin-vue-tracer@0.1.1(vite@6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.14(typescript@5.8.2)):
dependencies:
estree-walker: 3.0.3
magic-string: 0.30.17
pathe: 2.0.3
source-map-js: 1.2.1
vite: 6.3.4(@types/node@22.15.3)(jiti@2.4.2)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)(tsx@4.19.3)(yaml@2.7.0)
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
vite-tsconfig-paths@4.3.2(typescript@5.8.2)(vite@5.4.19(@types/node@22.15.3)(less@4.2.2)(lightningcss@1.29.2)(sass@1.85.1)(terser@5.39.0)):
dependencies:
@@ -49231,20 +50127,20 @@ snapshots:
dependencies:
ufo: 1.5.4
- vue-demi@0.14.10(vue@3.5.13(typescript@5.8.2)):
+ vue-demi@0.14.10(vue@3.5.14(typescript@5.8.2)):
dependencies:
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
vue-devtools-stub@0.1.0: {}
- vue-router@4.5.1(vue@3.5.13(typescript@5.8.2)):
+ vue-router@4.5.1(vue@3.5.14(typescript@5.8.2)):
dependencies:
'@vue/devtools-api': 6.6.4
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
- vue-screen-utils@1.0.0-beta.13(vue@3.5.13(typescript@5.8.2)):
+ vue-screen-utils@1.0.0-beta.13(vue@3.5.14(typescript@5.8.2)):
dependencies:
- vue: 3.5.13(typescript@5.8.2)
+ vue: 3.5.14(typescript@5.8.2)
vue-sonner@1.3.0: {}
@@ -49266,6 +50162,16 @@ snapshots:
optionalDependencies:
typescript: 5.8.2
+ vue@3.5.14(typescript@5.8.2):
+ dependencies:
+ '@vue/compiler-dom': 3.5.14
+ '@vue/compiler-sfc': 3.5.14
+ '@vue/runtime-dom': 3.5.14
+ '@vue/server-renderer': 3.5.14(vue@3.5.14(typescript@5.8.2))
+ '@vue/shared': 3.5.14
+ optionalDependencies:
+ typescript: 5.8.2
+
walker@1.0.8:
dependencies:
makeerror: 1.0.12
@@ -49634,6 +50540,10 @@ snapshots:
dependencies:
zod: 3.24.2
+ zod-to-json-schema@3.24.3(zod@3.24.4):
+ dependencies:
+ zod: 3.24.4
+
zod-to-ts@1.2.0(typescript@5.8.2)(zod@3.24.2):
dependencies:
typescript: 5.8.2
@@ -49643,6 +50553,8 @@ snapshots:
zod@3.24.2: {}
+ zod@3.24.4: {}
+
zustand@3.7.2(react@19.0.0):
optionalDependencies:
react: 19.0.0