├── .gitignore ├── README.md ├── app ├── app.css ├── components │ └── ui │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── input.tsx │ │ └── label.tsx ├── entry.server.tsx ├── lib │ ├── session.ts │ └── utils.ts ├── root.tsx ├── routes.ts └── routes │ ├── dashboard.tsx │ ├── login.tsx │ └── signup.tsx ├── components.json ├── database ├── context.ts ├── schema.ts └── user.ts ├── drizzle.config.ts ├── drizzle ├── 0000_workable_sersi.sql └── meta │ ├── 0000_snapshot.json │ └── _journal.json ├── package.json ├── pnpm-lock.yaml ├── public └── favicon.ico ├── react-router.config.ts ├── tailwind.config.ts ├── tsconfig.cloudflare.json ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.ts ├── workers └── app.ts └── wrangler.toml /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | !.env.example 3 | .DS_Store 4 | .react-router 5 | build 6 | node_modules 7 | *.tsbuildinfo 8 | 9 | # Cloudflare specific 10 | .mf 11 | .wrangler 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Welcome to React Router! 2 | 3 | A modern, production-ready template for building full-stack React applications using React Router. 4 | 5 | ## Features 6 | 7 | - 🚀 Server-side rendering 8 | - ⚡️ Hot Module Replacement (HMR) 9 | - 📦 Asset bundling and optimization 10 | - 🔄 Data loading and mutations 11 | - 🔒 TypeScript by default 12 | - 🎉 TailwindCSS for styling 13 | - 📖 [React Router docs](https://reactrouter.com/) 14 | 15 | ## Getting Started 16 | 17 | ### Installation 18 | 19 | Choose your preferred package manager and run one of the following commands: 20 | 21 | ```bash 22 | # Using npm 23 | npm install 24 | 25 | # Using pnpm 26 | pnpm install 27 | 28 | # Using Bun 29 | bun install 30 | ``` 31 | 32 | ### Development 33 | 34 | Run an initial database migration: 35 | 36 | ```bash 37 | # Using npm 38 | npm run db:migrate 39 | 40 | # Using pnpm 41 | pnpm db:migrate 42 | 43 | # Using Bun 44 | bun run db:migrate 45 | ``` 46 | 47 | Start the development server with HMR: 48 | 49 | ```bash 50 | # Using npm 51 | npm run dev 52 | 53 | # Using pnpm 54 | pnpm dev 55 | 56 | # Using Bun 57 | bun dev 58 | ``` 59 | 60 | Your application will be available at `http://localhost:5173`. 61 | 62 | ## Building for Production 63 | 64 | Create a production build: 65 | 66 | ```bash 67 | # Using npm 68 | npm run build 69 | 70 | # Using pnpm 71 | pnpm build 72 | 73 | # Using Bun 74 | bun run build 75 | ``` 76 | 77 | ## Deployment 78 | 79 | Deployment is done using the Wrangler CLI. 80 | 81 | To deploy directly to production: 82 | 83 | ```sh 84 | # Using npm 85 | npx wrangler deploy 86 | 87 | # Using pnpm 88 | pnpm dlx wrangler deploy 89 | 90 | # Using bun 91 | bunx wrangler deploy 92 | ``` 93 | 94 | To deploy a preview URL: 95 | 96 | ```sh 97 | # Using npm 98 | npx wrangler versions upload 99 | 100 | # Using pnpm 101 | pnpm dlx wrangler versions upload 102 | 103 | # Using bun 104 | bunx wrangler versions upload 105 | ``` 106 | 107 | You can then promote a version to production after verification or roll it out progressively. 108 | 109 | ```sh 110 | # Using npm 111 | npx wrangler versions deploy 112 | 113 | # Using pnpm 114 | pnpm dlx wrangler versions deploy 115 | 116 | # Using bun 117 | bunx wrangler versions deploy 118 | ``` 119 | 120 | ## Styling 121 | 122 | This template comes with [Tailwind CSS](https://tailwindcss.com/) already configured for a simple default starting experience. You can use whatever CSS framework you prefer. 123 | 124 | --- 125 | 126 | Built with ❤️ using React Router. 127 | -------------------------------------------------------------------------------- /app/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | :root { 7 | --background: 0 0% 100%; 8 | --foreground: 240 10% 3.9%; 9 | --card: 0 0% 100%; 10 | --card-foreground: 240 10% 3.9%; 11 | --popover: 0 0% 100%; 12 | --popover-foreground: 240 10% 3.9%; 13 | --primary: 240 5.9% 10%; 14 | --primary-foreground: 0 0% 98%; 15 | --secondary: 240 4.8% 95.9%; 16 | --secondary-foreground: 240 5.9% 10%; 17 | --muted: 240 4.8% 95.9%; 18 | --muted-foreground: 240 3.8% 46.1%; 19 | --accent: 240 4.8% 95.9%; 20 | --accent-foreground: 240 5.9% 10%; 21 | --destructive: 0 84.2% 60.2%; 22 | --destructive-foreground: 0 0% 98%; 23 | --border: 240 5.9% 90%; 24 | --input: 240 5.9% 90%; 25 | --ring: 240 10% 3.9%; 26 | --chart-1: 12 76% 61%; 27 | --chart-2: 173 58% 39%; 28 | --chart-3: 197 37% 24%; 29 | --chart-4: 43 74% 66%; 30 | --chart-5: 27 87% 67%; 31 | --radius: 0.5rem; 32 | } 33 | .dark { 34 | --background: 240 10% 3.9%; 35 | --foreground: 0 0% 98%; 36 | --card: 240 10% 3.9%; 37 | --card-foreground: 0 0% 98%; 38 | --popover: 240 10% 3.9%; 39 | --popover-foreground: 0 0% 98%; 40 | --primary: 0 0% 98%; 41 | --primary-foreground: 240 5.9% 10%; 42 | --secondary: 240 3.7% 15.9%; 43 | --secondary-foreground: 0 0% 98%; 44 | --muted: 240 3.7% 15.9%; 45 | --muted-foreground: 240 5% 64.9%; 46 | --accent: 240 3.7% 15.9%; 47 | --accent-foreground: 0 0% 98%; 48 | --destructive: 0 62.8% 30.6%; 49 | --destructive-foreground: 0 0% 98%; 50 | --border: 240 3.7% 15.9%; 51 | --input: 240 3.7% 15.9%; 52 | --ring: 240 4.9% 83.9%; 53 | --chart-1: 220 70% 50%; 54 | --chart-2: 160 60% 45%; 55 | --chart-3: 30 80% 55%; 56 | --chart-4: 280 65% 60%; 57 | --chart-5: 340 75% 55%; 58 | } 59 | } 60 | 61 | @layer base { 62 | * { 63 | @apply border-border; 64 | } 65 | 66 | html, 67 | body { 68 | @apply bg-background text-foreground; 69 | 70 | @media (prefers-color-scheme: dark) { 71 | color-scheme: dark; 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /app/components/ui/button.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import { Slot } from "@radix-ui/react-slot" 3 | import { cva, type VariantProps } from "class-variance-authority" 4 | 5 | import { cn } from "~/lib/utils" 6 | 7 | const buttonVariants = cva( 8 | "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", 9 | { 10 | variants: { 11 | variant: { 12 | default: 13 | "bg-primary text-primary-foreground shadow hover:bg-primary/90", 14 | destructive: 15 | "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", 16 | outline: 17 | "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground", 18 | secondary: 19 | "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", 20 | ghost: "hover:bg-accent hover:text-accent-foreground", 21 | link: "text-primary underline-offset-4 hover:underline", 22 | }, 23 | size: { 24 | default: "h-9 px-4 py-2", 25 | sm: "h-8 rounded-md px-3 text-xs", 26 | lg: "h-10 rounded-md px-8", 27 | icon: "h-9 w-9", 28 | }, 29 | }, 30 | defaultVariants: { 31 | variant: "default", 32 | size: "default", 33 | }, 34 | } 35 | ) 36 | 37 | export interface ButtonProps 38 | extends React.ButtonHTMLAttributes, 39 | VariantProps { 40 | asChild?: boolean 41 | } 42 | 43 | const Button = React.forwardRef( 44 | ({ className, variant, size, asChild = false, ...props }, ref) => { 45 | const Comp = asChild ? Slot : "button" 46 | return ( 47 | 52 | ) 53 | } 54 | ) 55 | Button.displayName = "Button" 56 | 57 | export { Button, buttonVariants } 58 | -------------------------------------------------------------------------------- /app/components/ui/card.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "~/lib/utils" 4 | 5 | const Card = React.forwardRef< 6 | HTMLDivElement, 7 | React.HTMLAttributes 8 | >(({ className, ...props }, ref) => ( 9 |
17 | )) 18 | Card.displayName = "Card" 19 | 20 | const CardHeader = React.forwardRef< 21 | HTMLDivElement, 22 | React.HTMLAttributes 23 | >(({ className, ...props }, ref) => ( 24 |
29 | )) 30 | CardHeader.displayName = "CardHeader" 31 | 32 | const CardTitle = React.forwardRef< 33 | HTMLDivElement, 34 | React.HTMLAttributes 35 | >(({ className, ...props }, ref) => ( 36 |
41 | )) 42 | CardTitle.displayName = "CardTitle" 43 | 44 | const CardDescription = React.forwardRef< 45 | HTMLDivElement, 46 | React.HTMLAttributes 47 | >(({ className, ...props }, ref) => ( 48 |
53 | )) 54 | CardDescription.displayName = "CardDescription" 55 | 56 | const CardContent = React.forwardRef< 57 | HTMLDivElement, 58 | React.HTMLAttributes 59 | >(({ className, ...props }, ref) => ( 60 |
61 | )) 62 | CardContent.displayName = "CardContent" 63 | 64 | const CardFooter = React.forwardRef< 65 | HTMLDivElement, 66 | React.HTMLAttributes 67 | >(({ className, ...props }, ref) => ( 68 |
73 | )) 74 | CardFooter.displayName = "CardFooter" 75 | 76 | export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } 77 | -------------------------------------------------------------------------------- /app/components/ui/input.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | 3 | import { cn } from "~/lib/utils" 4 | 5 | const Input = React.forwardRef>( 6 | ({ className, type, ...props }, ref) => { 7 | return ( 8 | 17 | ) 18 | } 19 | ) 20 | Input.displayName = "Input" 21 | 22 | export { Input } 23 | -------------------------------------------------------------------------------- /app/components/ui/label.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react" 2 | import * as LabelPrimitive from "@radix-ui/react-label" 3 | import { cva, type VariantProps } from "class-variance-authority" 4 | 5 | import { cn } from "~/lib/utils" 6 | 7 | const labelVariants = cva( 8 | "text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" 9 | ) 10 | 11 | const Label = React.forwardRef< 12 | React.ElementRef, 13 | React.ComponentPropsWithoutRef & 14 | VariantProps 15 | >(({ className, ...props }, ref) => ( 16 | 21 | )) 22 | Label.displayName = LabelPrimitive.Root.displayName 23 | 24 | export { Label } 25 | -------------------------------------------------------------------------------- /app/entry.server.tsx: -------------------------------------------------------------------------------- 1 | import type { AppLoadContext, EntryContext } from "react-router"; 2 | import { ServerRouter } from "react-router"; 3 | import { isbot } from "isbot"; 4 | import { renderToReadableStream } from "react-dom/server"; 5 | 6 | const ABORT_DELAY = 5_000; 7 | 8 | export default async function handleRequest( 9 | request: Request, 10 | responseStatusCode: number, 11 | responseHeaders: Headers, 12 | routerContext: EntryContext, 13 | _loadContext: AppLoadContext 14 | ) { 15 | let shellRendered = false; 16 | const userAgent = request.headers.get("user-agent"); 17 | 18 | const body = await renderToReadableStream( 19 | , 24 | { 25 | onError(error: unknown) { 26 | responseStatusCode = 500; 27 | // Log streaming rendering errors from inside the shell. Don't log 28 | // errors encountered during initial shell rendering since they'll 29 | // reject and get logged in handleDocumentRequest. 30 | if (shellRendered) { 31 | console.error(error); 32 | } 33 | }, 34 | } 35 | ); 36 | shellRendered = true; 37 | 38 | // Ensure requests from bots and SPA Mode renders wait for all content to load before responding 39 | // https://react.dev/reference/react-dom/server/renderToPipeableStream#waiting-for-all-content-to-load-for-crawlers-and-static-generation 40 | if ((userAgent && isbot(userAgent)) || routerContext.isSpaMode) { 41 | await body.allReady; 42 | } 43 | 44 | responseHeaders.set("Content-Type", "text/html"); 45 | return new Response(body, { 46 | headers: responseHeaders, 47 | status: responseStatusCode, 48 | }); 49 | } 50 | -------------------------------------------------------------------------------- /app/lib/session.ts: -------------------------------------------------------------------------------- 1 | import { AsyncLocalStorage } from "node:async_hooks"; 2 | 3 | import { redirect, type Session } from "react-router"; 4 | 5 | type SessionData = { 6 | userId?: number; 7 | }; 8 | 9 | export const SessionContext = new AsyncLocalStorage>(); 10 | 11 | export function session() { 12 | const session = SessionContext.getStore(); 13 | 14 | if (!session) { 15 | throw new Error("SessionContext not set"); 16 | } 17 | return session; 18 | } 19 | 20 | export function setUserId(userId: number | undefined) { 21 | session().set("userId", userId); 22 | } 23 | 24 | export function getUserId() { 25 | return session().get("userId"); 26 | } 27 | 28 | export function requireUser() { 29 | const userId = getUserId(); 30 | if (typeof userId !== "number") { 31 | throw redirect("/"); 32 | } 33 | return userId; 34 | } 35 | -------------------------------------------------------------------------------- /app/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from "clsx" 2 | import { twMerge } from "tailwind-merge" 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /app/root.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | isRouteErrorResponse, 3 | Links, 4 | Meta, 5 | Outlet, 6 | Scripts, 7 | ScrollRestoration, 8 | } from "react-router"; 9 | 10 | import type { Route } from "./+types/root"; 11 | import "./app.css"; 12 | 13 | export const links: Route.LinksFunction = () => [ 14 | { rel: "preconnect", href: "https://fonts.googleapis.com" }, 15 | { 16 | rel: "preconnect", 17 | href: "https://fonts.gstatic.com", 18 | crossOrigin: "anonymous", 19 | }, 20 | { 21 | rel: "stylesheet", 22 | href: "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap", 23 | }, 24 | ]; 25 | 26 | export function Layout({ children }: { children: React.ReactNode }) { 27 | return ( 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | {children} 37 | 38 | 39 | 40 | 41 | ); 42 | } 43 | 44 | export default function App() { 45 | return ; 46 | } 47 | 48 | export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) { 49 | let message = "Oops!"; 50 | let details = "An unexpected error occurred."; 51 | let stack: string | undefined; 52 | 53 | if (isRouteErrorResponse(error)) { 54 | message = error.status === 404 ? "404" : "Error"; 55 | details = 56 | error.status === 404 57 | ? "The requested page could not be found." 58 | : error.statusText || details; 59 | } else if (import.meta.env.DEV && error && error instanceof Error) { 60 | details = error.message; 61 | stack = error.stack; 62 | } 63 | 64 | return ( 65 |
66 |

{message}

67 |

{details}

68 | {stack && ( 69 |
70 |           {stack}
71 |         
72 | )} 73 |
74 | ); 75 | } 76 | -------------------------------------------------------------------------------- /app/routes.ts: -------------------------------------------------------------------------------- 1 | import { type RouteConfig, index, route } from "@react-router/dev/routes"; 2 | 3 | export default [ 4 | index("routes/login.tsx"), 5 | route("signup", "routes/signup.tsx"), 6 | route("dashboard", "routes/dashboard.tsx"), 7 | ] satisfies RouteConfig; 8 | -------------------------------------------------------------------------------- /app/routes/dashboard.tsx: -------------------------------------------------------------------------------- 1 | import { Form, redirect } from "react-router"; 2 | 3 | import { Button } from "~/components/ui/button"; 4 | import { requireUser, setUserId } from "~/lib/session"; 5 | 6 | export function meta() { 7 | return [ 8 | { title: "New React Router App" }, 9 | { name: "description", content: "Welcome to React Router!" }, 10 | ]; 11 | } 12 | 13 | export function action() { 14 | setUserId(undefined); 15 | throw redirect("/"); 16 | } 17 | 18 | export function loader() { 19 | requireUser(); 20 | } 21 | 22 | export default function Dashboard() { 23 | return ( 24 |
25 |

Dashboard

26 |
27 | 28 |
29 |
30 | ); 31 | } 32 | -------------------------------------------------------------------------------- /app/routes/login.tsx: -------------------------------------------------------------------------------- 1 | import { getFormProps, getInputProps, useForm } from "@conform-to/react"; 2 | import { parseWithZod } from "@conform-to/zod"; 3 | import { Form, Link, redirect, useNavigation } from "react-router"; 4 | import { z } from "zod"; 5 | 6 | import { Button } from "~/components/ui/button"; 7 | import { 8 | Card, 9 | CardContent, 10 | CardDescription, 11 | CardHeader, 12 | CardTitle, 13 | } from "~/components/ui/card"; 14 | import { Input } from "~/components/ui/input"; 15 | import { Label } from "~/components/ui/label"; 16 | import { authenticate } from "~/database/user"; 17 | import { getUserId, setUserId } from "~/lib/session"; 18 | 19 | import type { Route } from "./+types/login"; 20 | 21 | export function meta() { 22 | return [ 23 | { title: "New React Router App" }, 24 | { name: "description", content: "Welcome to React Router!" }, 25 | ]; 26 | } 27 | 28 | const formSchema = z.object({ 29 | email: z.string().email(), 30 | password: z.string(), 31 | }); 32 | 33 | export async function action({ request }: Route.ActionArgs) { 34 | const formData = await request.formData(); 35 | const submission = parseWithZod(formData, { schema: formSchema }); 36 | 37 | if (submission.status !== "success") { 38 | return submission.reply({ hideFields: ["password"] }); 39 | } 40 | 41 | const { email, password } = submission.value; 42 | 43 | try { 44 | const user = await authenticate(email, password); 45 | 46 | if (!user) { 47 | return submission.reply({ 48 | hideFields: ["password"], 49 | fieldErrors: { 50 | password: ["Invalid username or password"], 51 | }, 52 | }); 53 | } 54 | 55 | setUserId(user.id); 56 | } catch (error) { 57 | return submission.reply({ 58 | hideFields: ["password"], 59 | fieldErrors: { 60 | password: ["Invalid username or password"], 61 | }, 62 | }); 63 | } 64 | 65 | throw redirect("/dashboard"); 66 | } 67 | 68 | export async function loader() { 69 | const userId = getUserId(); 70 | if (typeof userId === "number") { 71 | throw redirect("/dashboard"); 72 | } 73 | } 74 | 75 | export default function Login({ actionData }: Route.ComponentProps) { 76 | const navigation = useNavigation(); 77 | const submitting = navigation.state === "submitting"; 78 | 79 | const [form, fields] = useForm({ 80 | shouldValidate: "onSubmit", 81 | lastResult: actionData, 82 | onValidate({ formData }) { 83 | return parseWithZod(formData, { schema: formSchema }); 84 | }, 85 | }); 86 | 87 | return ( 88 |
89 | 90 | 91 | Login 92 | 93 | Enter your email below to login to your account 94 | 95 | 96 | 97 |
{ 102 | if (submitting) { 103 | event.preventDefault(); 104 | } 105 | form.onSubmit(event); 106 | }} 107 | > 108 |
109 | 110 | 119 | {fields.email.errors?.map((error, key) => ( 120 |
124 | {error} 125 |
126 | ))} 127 |
128 |
129 | 130 | 139 | {fields.password.errors?.map((error, key) => ( 140 |
144 | {error} 145 |
146 | ))} 147 |
148 | {form.errors?.map((error, key) => ( 149 |
153 | {error} 154 |
155 | ))} 156 | 159 |
160 |
161 | Don't have an account?{" "} 162 | 163 | Sign up 164 | 165 |
166 |
167 |
168 |
169 | ); 170 | } 171 | -------------------------------------------------------------------------------- /app/routes/signup.tsx: -------------------------------------------------------------------------------- 1 | import { getFormProps, getInputProps, useForm } from "@conform-to/react"; 2 | import { parseWithZod } from "@conform-to/zod"; 3 | import { Form, Link, redirect, useNavigation } from "react-router"; 4 | import { z } from "zod"; 5 | 6 | import { Button } from "~/components/ui/button"; 7 | import { 8 | Card, 9 | CardContent, 10 | CardDescription, 11 | CardHeader, 12 | CardTitle, 13 | } from "~/components/ui/card"; 14 | import { Input } from "~/components/ui/input"; 15 | import { Label } from "~/components/ui/label"; 16 | import { signup } from "~/database/user"; 17 | import { getUserId, setUserId } from "~/lib/session"; 18 | 19 | import type { Route } from "./+types/signup"; 20 | 21 | export function meta() { 22 | return [ 23 | { title: "New React Router App" }, 24 | { name: "description", content: "Welcome to React Router!" }, 25 | ]; 26 | } 27 | 28 | const formSchema = z 29 | .object({ 30 | email: z.string().email(), 31 | password: z.string().min(8, "Password must be at least 8 characters"), 32 | verifyPassword: z.string(), 33 | }) 34 | .refine(({ password, verifyPassword }) => password === verifyPassword, { 35 | message: "Passwords do not match", 36 | path: ["verifyPassword"], 37 | }); 38 | 39 | export async function action({ request }: Route.ActionArgs) { 40 | const formData = await request.formData(); 41 | const submission = parseWithZod(formData, { schema: formSchema }); 42 | 43 | if (submission.status !== "success") { 44 | return submission.reply({ hideFields: ["password"] }); 45 | } 46 | 47 | const { email, password } = submission.value; 48 | 49 | try { 50 | const user = await signup(email, password); 51 | 52 | if (!user) { 53 | return submission.reply({ 54 | hideFields: ["password"], 55 | fieldErrors: { 56 | password: ["Invalid username or password"], 57 | }, 58 | }); 59 | } 60 | 61 | setUserId(user.id); 62 | } catch (error) { 63 | console.error(error); 64 | return submission.reply({ 65 | hideFields: ["password"], 66 | fieldErrors: { 67 | password: ["Invalid username or password"], 68 | }, 69 | }); 70 | } 71 | 72 | throw redirect("/dashboard"); 73 | } 74 | 75 | export async function loader() { 76 | const userId = getUserId(); 77 | if (typeof userId === "number") { 78 | throw redirect("/dashboard"); 79 | } 80 | } 81 | 82 | export default function Signup({ actionData }: Route.ComponentProps) { 83 | const navigation = useNavigation(); 84 | const submitting = navigation.state === "submitting"; 85 | 86 | const [form, fields] = useForm({ 87 | shouldValidate: "onSubmit", 88 | lastResult: actionData, 89 | onValidate({ formData }) { 90 | return parseWithZod(formData, { schema: formSchema }); 91 | }, 92 | }); 93 | 94 | return ( 95 |
96 | 97 | 98 | Signup 99 | 100 | Enter your email below to create your account 101 | 102 | 103 | 104 |
{ 109 | if (submitting) { 110 | event.preventDefault(); 111 | } 112 | form.onSubmit(event); 113 | }} 114 | > 115 |
116 | 117 | 126 | {fields.email.errors?.map((error, key) => ( 127 |
131 | {error} 132 |
133 | ))} 134 |
135 |
136 | 137 | 146 | {fields.password.errors?.map((error, key) => ( 147 |
151 | {error} 152 |
153 | ))} 154 |
155 |
156 | 157 | 166 | {fields.verifyPassword.errors?.map((error, key) => ( 167 |
171 | {error} 172 |
173 | ))} 174 |
175 | {form.errors?.map((error, key) => ( 176 |
180 | {error} 181 |
182 | ))} 183 | 186 |
187 |
188 | Already have an account?{" "} 189 | 190 | Sign in 191 | 192 |
193 |
194 |
195 |
196 | ); 197 | } 198 | -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "new-york", 4 | "rsc": false, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.ts", 8 | "css": "app/app.css", 9 | "baseColor": "zinc", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "~/components", 15 | "utils": "~/lib/utils", 16 | "ui": "~/components/ui", 17 | "lib": "~/lib", 18 | "hooks": "~/hooks" 19 | }, 20 | "iconLibrary": "lucide" 21 | } -------------------------------------------------------------------------------- /database/context.ts: -------------------------------------------------------------------------------- 1 | import { AsyncLocalStorage } from "node:async_hooks"; 2 | 3 | import type { DrizzleD1Database } from "drizzle-orm/d1"; 4 | 5 | import type * as schema from "./schema"; 6 | 7 | export const DatabaseContext = new AsyncLocalStorage< 8 | DrizzleD1Database 9 | >(); 10 | 11 | export function database() { 12 | const db = DatabaseContext.getStore(); 13 | if (!db) { 14 | throw new Error("DatabaseContext not set"); 15 | } 16 | return db; 17 | } 18 | -------------------------------------------------------------------------------- /database/schema.ts: -------------------------------------------------------------------------------- 1 | import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core"; 2 | 3 | export const user = sqliteTable("user", { 4 | id: integer().primaryKey({ autoIncrement: true }), 5 | email: text().notNull().unique(), 6 | hashedPassword: text().notNull(), 7 | }); 8 | -------------------------------------------------------------------------------- /database/user.ts: -------------------------------------------------------------------------------- 1 | import * as bcrypt from "bcrypt-edge"; 2 | 3 | import { database } from "./context"; 4 | import * as schema from "./schema"; 5 | 6 | export async function authenticate(email: string, password: string) { 7 | const db = database(); 8 | 9 | const user = await db.query.user.findFirst({ 10 | columns: { 11 | id: true, 12 | hashedPassword: true, 13 | }, 14 | where: (user, { eq }) => eq(user.email, email), 15 | }); 16 | if (!user) { 17 | return null; 18 | } 19 | 20 | const isValid = bcrypt.compareSync(password, user.hashedPassword); 21 | if (!isValid) { 22 | return null; 23 | } 24 | 25 | return { id: user.id }; 26 | } 27 | 28 | export async function signup(email: string, password: string) { 29 | const db = database(); 30 | 31 | const hashedPassword = bcrypt.hashSync(password, 10); 32 | 33 | const user = ( 34 | await db 35 | .insert(schema.user) 36 | .values({ 37 | email, 38 | hashedPassword, 39 | }) 40 | .returning({ id: schema.user.id }) 41 | )[0]; 42 | 43 | return { id: user.id }; 44 | } 45 | -------------------------------------------------------------------------------- /drizzle.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "drizzle-kit"; 2 | 3 | export default { 4 | out: "./drizzle", 5 | schema: "./database/schema.ts", 6 | dialect: "sqlite", 7 | driver: "d1-http", 8 | dbCredentials: { 9 | databaseId: "your-database-id", 10 | accountId: process.env.CLOUDFLARE_ACCOUNT_ID!, 11 | token: process.env.CLOUDFLARE_TOKEN!, 12 | }, 13 | } satisfies Config; 14 | -------------------------------------------------------------------------------- /drizzle/0000_workable_sersi.sql: -------------------------------------------------------------------------------- 1 | CREATE TABLE `user` ( 2 | `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL, 3 | `email` text NOT NULL, 4 | `hashedPassword` text NOT NULL 5 | ); 6 | --> statement-breakpoint 7 | CREATE UNIQUE INDEX `user_email_unique` ON `user` (`email`); -------------------------------------------------------------------------------- /drizzle/meta/0000_snapshot.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "6", 3 | "dialect": "sqlite", 4 | "id": "2135216d-4d4e-425a-bce0-5bc6e8dd3578", 5 | "prevId": "00000000-0000-0000-0000-000000000000", 6 | "tables": { 7 | "user": { 8 | "name": "user", 9 | "columns": { 10 | "id": { 11 | "name": "id", 12 | "type": "integer", 13 | "primaryKey": true, 14 | "notNull": true, 15 | "autoincrement": true 16 | }, 17 | "email": { 18 | "name": "email", 19 | "type": "text", 20 | "primaryKey": false, 21 | "notNull": true, 22 | "autoincrement": false 23 | }, 24 | "hashedPassword": { 25 | "name": "hashedPassword", 26 | "type": "text", 27 | "primaryKey": false, 28 | "notNull": true, 29 | "autoincrement": false 30 | } 31 | }, 32 | "indexes": { 33 | "user_email_unique": { 34 | "name": "user_email_unique", 35 | "columns": [ 36 | "email" 37 | ], 38 | "isUnique": true 39 | } 40 | }, 41 | "foreignKeys": {}, 42 | "compositePrimaryKeys": {}, 43 | "uniqueConstraints": {}, 44 | "checkConstraints": {} 45 | } 46 | }, 47 | "views": {}, 48 | "enums": {}, 49 | "_meta": { 50 | "schemas": {}, 51 | "tables": {}, 52 | "columns": {} 53 | }, 54 | "internal": { 55 | "indexes": {} 56 | } 57 | } -------------------------------------------------------------------------------- /drizzle/meta/_journal.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "7", 3 | "dialect": "sqlite", 4 | "entries": [ 5 | { 6 | "idx": 0, 7 | "version": "6", 8 | "when": 1732259456918, 9 | "tag": "0000_workable_sersi", 10 | "breakpoints": true 11 | } 12 | ] 13 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "type": "module", 4 | "scripts": { 5 | "build": "react-router build", 6 | "db:generate": "dotenv -- drizzle-kit generate", 7 | "db:migrate": "wrangler d1 migrations apply --local DB", 8 | "db:migrate-production": "dotenv -- drizzle-kit migrate", 9 | "dev": "react-router dev", 10 | "start": "wrangler dev", 11 | "typecheck": "react-router typegen && tsc --build --noEmit" 12 | }, 13 | "dependencies": { 14 | "@conform-to/react": "^1.2.2", 15 | "@conform-to/zod": "^1.2.2", 16 | "@radix-ui/react-label": "^2.1.0", 17 | "@radix-ui/react-slot": "^1.1.0", 18 | "@react-router/node": "7.0.0", 19 | "@react-router/serve": "7.0.0", 20 | "bcrypt-edge": "0.1.0", 21 | "class-variance-authority": "0.7.0", 22 | "clsx": "^2.1.1", 23 | "drizzle-orm": "0.36.3", 24 | "isbot": "^5.1.17", 25 | "lucide-react": "0.460.0", 26 | "react": "^18.3.1", 27 | "react-dom": "^18.3.1", 28 | "react-router": "7.0.0", 29 | "tailwind-merge": "^2.5.4", 30 | "tailwindcss-animate": "^1.0.7", 31 | "zod": "^3.23.8" 32 | }, 33 | "devDependencies": { 34 | "@cloudflare/workers-types": "^4.20241112.0", 35 | "@hiogawa/vite-node-miniflare": "0.1.1", 36 | "@react-router/dev": "7.0.0", 37 | "@types/node": "^20", 38 | "@types/react": "^18.3.12", 39 | "@types/react-dom": "^18.3.1", 40 | "autoprefixer": "^10.4.20", 41 | "dotenv-cli": "^7.4.3", 42 | "drizzle-kit": "0.28.1", 43 | "postcss": "^8.4.49", 44 | "tailwindcss": "^3.4.15", 45 | "typescript": "^5.6.3", 46 | "vite": "^5.4.11", 47 | "vite-tsconfig-paths": "^5.1.2", 48 | "wrangler": "^3.87.0" 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@conform-to/react': 12 | specifier: ^1.2.2 13 | version: 1.2.2(react@18.3.1) 14 | '@conform-to/zod': 15 | specifier: ^1.2.2 16 | version: 1.2.2(zod@3.23.8) 17 | '@radix-ui/react-label': 18 | specifier: ^2.1.0 19 | version: 2.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 20 | '@radix-ui/react-slot': 21 | specifier: ^1.1.0 22 | version: 1.1.0(@types/react@18.3.12)(react@18.3.1) 23 | '@react-router/node': 24 | specifier: 7.0.0 25 | version: 7.0.0(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) 26 | '@react-router/serve': 27 | specifier: 7.0.0 28 | version: 7.0.0(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) 29 | bcrypt-edge: 30 | specifier: 0.1.0 31 | version: 0.1.0 32 | class-variance-authority: 33 | specifier: 0.7.0 34 | version: 0.7.0 35 | clsx: 36 | specifier: ^2.1.1 37 | version: 2.1.1 38 | drizzle-orm: 39 | specifier: 0.36.3 40 | version: 0.36.3(@cloudflare/workers-types@4.20241112.0)(@types/react@18.3.12)(react@18.3.1) 41 | isbot: 42 | specifier: ^5.1.17 43 | version: 5.1.17 44 | lucide-react: 45 | specifier: 0.460.0 46 | version: 0.460.0(react@18.3.1) 47 | react: 48 | specifier: ^18.3.1 49 | version: 18.3.1 50 | react-dom: 51 | specifier: ^18.3.1 52 | version: 18.3.1(react@18.3.1) 53 | react-router: 54 | specifier: 7.0.0 55 | version: 7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 56 | tailwind-merge: 57 | specifier: ^2.5.4 58 | version: 2.5.4 59 | tailwindcss-animate: 60 | specifier: ^1.0.7 61 | version: 1.0.7(tailwindcss@3.4.15) 62 | zod: 63 | specifier: ^3.23.8 64 | version: 3.23.8 65 | devDependencies: 66 | '@cloudflare/workers-types': 67 | specifier: ^4.20241112.0 68 | version: 4.20241112.0 69 | '@hiogawa/vite-node-miniflare': 70 | specifier: 0.1.1 71 | version: 0.1.1(vite@5.4.11(@types/node@20.17.6)) 72 | '@react-router/dev': 73 | specifier: 7.0.0 74 | version: 7.0.0(@react-router/serve@7.0.0(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3))(@types/node@20.17.6)(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@5.4.11(@types/node@20.17.6))(wrangler@3.89.0(@cloudflare/workers-types@4.20241112.0)) 75 | '@types/node': 76 | specifier: ^20 77 | version: 20.17.6 78 | '@types/react': 79 | specifier: ^18.3.12 80 | version: 18.3.12 81 | '@types/react-dom': 82 | specifier: ^18.3.1 83 | version: 18.3.1 84 | autoprefixer: 85 | specifier: ^10.4.20 86 | version: 10.4.20(postcss@8.4.49) 87 | dotenv-cli: 88 | specifier: ^7.4.3 89 | version: 7.4.4 90 | drizzle-kit: 91 | specifier: 0.28.1 92 | version: 0.28.1 93 | postcss: 94 | specifier: ^8.4.49 95 | version: 8.4.49 96 | tailwindcss: 97 | specifier: ^3.4.15 98 | version: 3.4.15 99 | typescript: 100 | specifier: ^5.6.3 101 | version: 5.6.3 102 | vite: 103 | specifier: ^5.4.11 104 | version: 5.4.11(@types/node@20.17.6) 105 | vite-tsconfig-paths: 106 | specifier: ^5.1.2 107 | version: 5.1.3(typescript@5.6.3)(vite@5.4.11(@types/node@20.17.6)) 108 | wrangler: 109 | specifier: ^3.87.0 110 | version: 3.89.0(@cloudflare/workers-types@4.20241112.0) 111 | 112 | packages: 113 | 114 | '@alloc/quick-lru@5.2.0': 115 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 116 | engines: {node: '>=10'} 117 | 118 | '@ampproject/remapping@2.3.0': 119 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 120 | engines: {node: '>=6.0.0'} 121 | 122 | '@babel/code-frame@7.26.2': 123 | resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 124 | engines: {node: '>=6.9.0'} 125 | 126 | '@babel/compat-data@7.26.2': 127 | resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} 128 | engines: {node: '>=6.9.0'} 129 | 130 | '@babel/core@7.26.0': 131 | resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} 132 | engines: {node: '>=6.9.0'} 133 | 134 | '@babel/generator@7.26.2': 135 | resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} 136 | engines: {node: '>=6.9.0'} 137 | 138 | '@babel/helper-annotate-as-pure@7.25.9': 139 | resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} 140 | engines: {node: '>=6.9.0'} 141 | 142 | '@babel/helper-compilation-targets@7.25.9': 143 | resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} 144 | engines: {node: '>=6.9.0'} 145 | 146 | '@babel/helper-create-class-features-plugin@7.25.9': 147 | resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} 148 | engines: {node: '>=6.9.0'} 149 | peerDependencies: 150 | '@babel/core': ^7.0.0 151 | 152 | '@babel/helper-member-expression-to-functions@7.25.9': 153 | resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} 154 | engines: {node: '>=6.9.0'} 155 | 156 | '@babel/helper-module-imports@7.25.9': 157 | resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 158 | engines: {node: '>=6.9.0'} 159 | 160 | '@babel/helper-module-transforms@7.26.0': 161 | resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 162 | engines: {node: '>=6.9.0'} 163 | peerDependencies: 164 | '@babel/core': ^7.0.0 165 | 166 | '@babel/helper-optimise-call-expression@7.25.9': 167 | resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} 168 | engines: {node: '>=6.9.0'} 169 | 170 | '@babel/helper-plugin-utils@7.25.9': 171 | resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} 172 | engines: {node: '>=6.9.0'} 173 | 174 | '@babel/helper-replace-supers@7.25.9': 175 | resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} 176 | engines: {node: '>=6.9.0'} 177 | peerDependencies: 178 | '@babel/core': ^7.0.0 179 | 180 | '@babel/helper-simple-access@7.25.9': 181 | resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} 182 | engines: {node: '>=6.9.0'} 183 | 184 | '@babel/helper-skip-transparent-expression-wrappers@7.25.9': 185 | resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} 186 | engines: {node: '>=6.9.0'} 187 | 188 | '@babel/helper-string-parser@7.25.9': 189 | resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 190 | engines: {node: '>=6.9.0'} 191 | 192 | '@babel/helper-validator-identifier@7.25.9': 193 | resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 194 | engines: {node: '>=6.9.0'} 195 | 196 | '@babel/helper-validator-option@7.25.9': 197 | resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 198 | engines: {node: '>=6.9.0'} 199 | 200 | '@babel/helpers@7.26.0': 201 | resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} 202 | engines: {node: '>=6.9.0'} 203 | 204 | '@babel/parser@7.26.2': 205 | resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} 206 | engines: {node: '>=6.0.0'} 207 | hasBin: true 208 | 209 | '@babel/plugin-syntax-decorators@7.25.9': 210 | resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} 211 | engines: {node: '>=6.9.0'} 212 | peerDependencies: 213 | '@babel/core': ^7.0.0-0 214 | 215 | '@babel/plugin-syntax-jsx@7.25.9': 216 | resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} 217 | engines: {node: '>=6.9.0'} 218 | peerDependencies: 219 | '@babel/core': ^7.0.0-0 220 | 221 | '@babel/plugin-syntax-typescript@7.25.9': 222 | resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} 223 | engines: {node: '>=6.9.0'} 224 | peerDependencies: 225 | '@babel/core': ^7.0.0-0 226 | 227 | '@babel/plugin-transform-modules-commonjs@7.25.9': 228 | resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} 229 | engines: {node: '>=6.9.0'} 230 | peerDependencies: 231 | '@babel/core': ^7.0.0-0 232 | 233 | '@babel/plugin-transform-typescript@7.25.9': 234 | resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} 235 | engines: {node: '>=6.9.0'} 236 | peerDependencies: 237 | '@babel/core': ^7.0.0-0 238 | 239 | '@babel/preset-typescript@7.26.0': 240 | resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} 241 | engines: {node: '>=6.9.0'} 242 | peerDependencies: 243 | '@babel/core': ^7.0.0-0 244 | 245 | '@babel/template@7.25.9': 246 | resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} 247 | engines: {node: '>=6.9.0'} 248 | 249 | '@babel/traverse@7.25.9': 250 | resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} 251 | engines: {node: '>=6.9.0'} 252 | 253 | '@babel/types@7.26.0': 254 | resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} 255 | engines: {node: '>=6.9.0'} 256 | 257 | '@cloudflare/kv-asset-handler@0.3.4': 258 | resolution: {integrity: sha512-YLPHc8yASwjNkmcDMQMY35yiWjoKAKnhUbPRszBRS0YgH+IXtsMp61j+yTcnCE3oO2DgP0U3iejLC8FTtKDC8Q==} 259 | engines: {node: '>=16.13'} 260 | 261 | '@cloudflare/workerd-darwin-64@1.20241106.1': 262 | resolution: {integrity: sha512-zxvaToi1m0qzAScrxFt7UvFVqU8DxrCO2CinM1yQkv5no7pA1HolpIrwZ0xOhR3ny64Is2s/J6BrRjpO5dM9Zw==} 263 | engines: {node: '>=16'} 264 | cpu: [x64] 265 | os: [darwin] 266 | 267 | '@cloudflare/workerd-darwin-arm64@1.20241106.1': 268 | resolution: {integrity: sha512-j3dg/42D/bPgfNP3cRUBxF+4waCKO/5YKwXNj+lnVOwHxDu+ne5pFw9TIkKYcWTcwn0ZUkbNZNM5rhJqRn4xbg==} 269 | engines: {node: '>=16'} 270 | cpu: [arm64] 271 | os: [darwin] 272 | 273 | '@cloudflare/workerd-linux-64@1.20241106.1': 274 | resolution: {integrity: sha512-Ih+Ye8E1DMBXcKrJktGfGztFqHKaX1CeByqshmTbODnWKHt6O65ax3oTecUwyC0+abuyraOpAtdhHNpFMhUkmw==} 275 | engines: {node: '>=16'} 276 | cpu: [x64] 277 | os: [linux] 278 | 279 | '@cloudflare/workerd-linux-arm64@1.20241106.1': 280 | resolution: {integrity: sha512-mdQFPk4+14Yywn7n1xIzI+6olWM8Ybz10R7H3h+rk0XulMumCWUCy1CzIDauOx6GyIcSgKIibYMssVHZR30ObA==} 281 | engines: {node: '>=16'} 282 | cpu: [arm64] 283 | os: [linux] 284 | 285 | '@cloudflare/workerd-windows-64@1.20241106.1': 286 | resolution: {integrity: sha512-4rtcss31E/Rb/PeFocZfr+B9i1MdrkhsTBWizh8siNR4KMmkslU2xs2wPaH1z8+ErxkOsHrKRa5EPLh5rIiFeg==} 287 | engines: {node: '>=16'} 288 | cpu: [x64] 289 | os: [win32] 290 | 291 | '@cloudflare/workers-shared@0.7.1': 292 | resolution: {integrity: sha512-46cP5FCrl3TrvHeoHLb5SRuiDMKH5kc9Yvo36SAfzt8dqJI/qJRoY1GP3ioHn/gP7v2QIoUOTAzIl7Ml7MnfrA==} 293 | engines: {node: '>=16.7.0'} 294 | 295 | '@cloudflare/workers-types@4.20241112.0': 296 | resolution: {integrity: sha512-Q4p9bAWZrX14bSCKY9to19xl0KMU7nsO5sJ2cTVspHoypsjPUMeQCsjHjmsO2C4Myo8/LPeDvmqFmkyNAPPYZw==} 297 | 298 | '@conform-to/dom@1.2.2': 299 | resolution: {integrity: sha512-f05EClpNP31o6lX4LYmmLqgsiTOHdGfY7z2XXK6U6rRp+EtxrkUBdrFlIGsfkf7e9AFO19h3/Cb/cXHVd1k1FA==} 300 | 301 | '@conform-to/react@1.2.2': 302 | resolution: {integrity: sha512-1JBECb3NKi5/IlexaYLgnAxGJ55MRuO2sEQ10cJfUK2bfltNbTIQnYUDG6pU886A4lda/q6UH/adPsjiB/4Gkg==} 303 | peerDependencies: 304 | react: '>=18' 305 | 306 | '@conform-to/zod@1.2.2': 307 | resolution: {integrity: sha512-mNCzh0XsF2vhCtD8bfHYMYayEJ9dP6/KsGjmq8DFcO1ykDTNQZwfi1MIm4evGYVempSS3poYr4xZjd7cXEbtaw==} 308 | peerDependencies: 309 | zod: ^3.21.0 310 | 311 | '@cspotcode/source-map-support@0.8.1': 312 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 313 | engines: {node: '>=12'} 314 | 315 | '@drizzle-team/brocli@0.10.2': 316 | resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} 317 | 318 | '@esbuild-kit/core-utils@3.3.2': 319 | resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} 320 | deprecated: 'Merged into tsx: https://tsx.is' 321 | 322 | '@esbuild-kit/esm-loader@2.6.5': 323 | resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} 324 | deprecated: 'Merged into tsx: https://tsx.is' 325 | 326 | '@esbuild-plugins/node-globals-polyfill@0.2.3': 327 | resolution: {integrity: sha512-r3MIryXDeXDOZh7ih1l/yE9ZLORCd5e8vWg02azWRGj5SPTuoh69A2AIyn0Z31V/kHBfZ4HgWJ+OK3GTTwLmnw==} 328 | peerDependencies: 329 | esbuild: '*' 330 | 331 | '@esbuild-plugins/node-modules-polyfill@0.2.2': 332 | resolution: {integrity: sha512-LXV7QsWJxRuMYvKbiznh+U1ilIop3g2TeKRzUxOG5X3YITc8JyyTa90BmLwqqv0YnX4v32CSlG+vsziZp9dMvA==} 333 | peerDependencies: 334 | esbuild: '*' 335 | 336 | '@esbuild/aix-ppc64@0.19.12': 337 | resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} 338 | engines: {node: '>=12'} 339 | cpu: [ppc64] 340 | os: [aix] 341 | 342 | '@esbuild/aix-ppc64@0.21.5': 343 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 344 | engines: {node: '>=12'} 345 | cpu: [ppc64] 346 | os: [aix] 347 | 348 | '@esbuild/android-arm64@0.17.19': 349 | resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} 350 | engines: {node: '>=12'} 351 | cpu: [arm64] 352 | os: [android] 353 | 354 | '@esbuild/android-arm64@0.18.20': 355 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 356 | engines: {node: '>=12'} 357 | cpu: [arm64] 358 | os: [android] 359 | 360 | '@esbuild/android-arm64@0.19.12': 361 | resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} 362 | engines: {node: '>=12'} 363 | cpu: [arm64] 364 | os: [android] 365 | 366 | '@esbuild/android-arm64@0.21.5': 367 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 368 | engines: {node: '>=12'} 369 | cpu: [arm64] 370 | os: [android] 371 | 372 | '@esbuild/android-arm@0.17.19': 373 | resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} 374 | engines: {node: '>=12'} 375 | cpu: [arm] 376 | os: [android] 377 | 378 | '@esbuild/android-arm@0.18.20': 379 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 380 | engines: {node: '>=12'} 381 | cpu: [arm] 382 | os: [android] 383 | 384 | '@esbuild/android-arm@0.19.12': 385 | resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} 386 | engines: {node: '>=12'} 387 | cpu: [arm] 388 | os: [android] 389 | 390 | '@esbuild/android-arm@0.21.5': 391 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 392 | engines: {node: '>=12'} 393 | cpu: [arm] 394 | os: [android] 395 | 396 | '@esbuild/android-x64@0.17.19': 397 | resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} 398 | engines: {node: '>=12'} 399 | cpu: [x64] 400 | os: [android] 401 | 402 | '@esbuild/android-x64@0.18.20': 403 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 404 | engines: {node: '>=12'} 405 | cpu: [x64] 406 | os: [android] 407 | 408 | '@esbuild/android-x64@0.19.12': 409 | resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} 410 | engines: {node: '>=12'} 411 | cpu: [x64] 412 | os: [android] 413 | 414 | '@esbuild/android-x64@0.21.5': 415 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 416 | engines: {node: '>=12'} 417 | cpu: [x64] 418 | os: [android] 419 | 420 | '@esbuild/darwin-arm64@0.17.19': 421 | resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} 422 | engines: {node: '>=12'} 423 | cpu: [arm64] 424 | os: [darwin] 425 | 426 | '@esbuild/darwin-arm64@0.18.20': 427 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 428 | engines: {node: '>=12'} 429 | cpu: [arm64] 430 | os: [darwin] 431 | 432 | '@esbuild/darwin-arm64@0.19.12': 433 | resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} 434 | engines: {node: '>=12'} 435 | cpu: [arm64] 436 | os: [darwin] 437 | 438 | '@esbuild/darwin-arm64@0.21.5': 439 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 440 | engines: {node: '>=12'} 441 | cpu: [arm64] 442 | os: [darwin] 443 | 444 | '@esbuild/darwin-x64@0.17.19': 445 | resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} 446 | engines: {node: '>=12'} 447 | cpu: [x64] 448 | os: [darwin] 449 | 450 | '@esbuild/darwin-x64@0.18.20': 451 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 452 | engines: {node: '>=12'} 453 | cpu: [x64] 454 | os: [darwin] 455 | 456 | '@esbuild/darwin-x64@0.19.12': 457 | resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} 458 | engines: {node: '>=12'} 459 | cpu: [x64] 460 | os: [darwin] 461 | 462 | '@esbuild/darwin-x64@0.21.5': 463 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 464 | engines: {node: '>=12'} 465 | cpu: [x64] 466 | os: [darwin] 467 | 468 | '@esbuild/freebsd-arm64@0.17.19': 469 | resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} 470 | engines: {node: '>=12'} 471 | cpu: [arm64] 472 | os: [freebsd] 473 | 474 | '@esbuild/freebsd-arm64@0.18.20': 475 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 476 | engines: {node: '>=12'} 477 | cpu: [arm64] 478 | os: [freebsd] 479 | 480 | '@esbuild/freebsd-arm64@0.19.12': 481 | resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} 482 | engines: {node: '>=12'} 483 | cpu: [arm64] 484 | os: [freebsd] 485 | 486 | '@esbuild/freebsd-arm64@0.21.5': 487 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 488 | engines: {node: '>=12'} 489 | cpu: [arm64] 490 | os: [freebsd] 491 | 492 | '@esbuild/freebsd-x64@0.17.19': 493 | resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} 494 | engines: {node: '>=12'} 495 | cpu: [x64] 496 | os: [freebsd] 497 | 498 | '@esbuild/freebsd-x64@0.18.20': 499 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 500 | engines: {node: '>=12'} 501 | cpu: [x64] 502 | os: [freebsd] 503 | 504 | '@esbuild/freebsd-x64@0.19.12': 505 | resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} 506 | engines: {node: '>=12'} 507 | cpu: [x64] 508 | os: [freebsd] 509 | 510 | '@esbuild/freebsd-x64@0.21.5': 511 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 512 | engines: {node: '>=12'} 513 | cpu: [x64] 514 | os: [freebsd] 515 | 516 | '@esbuild/linux-arm64@0.17.19': 517 | resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} 518 | engines: {node: '>=12'} 519 | cpu: [arm64] 520 | os: [linux] 521 | 522 | '@esbuild/linux-arm64@0.18.20': 523 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 524 | engines: {node: '>=12'} 525 | cpu: [arm64] 526 | os: [linux] 527 | 528 | '@esbuild/linux-arm64@0.19.12': 529 | resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} 530 | engines: {node: '>=12'} 531 | cpu: [arm64] 532 | os: [linux] 533 | 534 | '@esbuild/linux-arm64@0.21.5': 535 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 536 | engines: {node: '>=12'} 537 | cpu: [arm64] 538 | os: [linux] 539 | 540 | '@esbuild/linux-arm@0.17.19': 541 | resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} 542 | engines: {node: '>=12'} 543 | cpu: [arm] 544 | os: [linux] 545 | 546 | '@esbuild/linux-arm@0.18.20': 547 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 548 | engines: {node: '>=12'} 549 | cpu: [arm] 550 | os: [linux] 551 | 552 | '@esbuild/linux-arm@0.19.12': 553 | resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} 554 | engines: {node: '>=12'} 555 | cpu: [arm] 556 | os: [linux] 557 | 558 | '@esbuild/linux-arm@0.21.5': 559 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 560 | engines: {node: '>=12'} 561 | cpu: [arm] 562 | os: [linux] 563 | 564 | '@esbuild/linux-ia32@0.17.19': 565 | resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} 566 | engines: {node: '>=12'} 567 | cpu: [ia32] 568 | os: [linux] 569 | 570 | '@esbuild/linux-ia32@0.18.20': 571 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 572 | engines: {node: '>=12'} 573 | cpu: [ia32] 574 | os: [linux] 575 | 576 | '@esbuild/linux-ia32@0.19.12': 577 | resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} 578 | engines: {node: '>=12'} 579 | cpu: [ia32] 580 | os: [linux] 581 | 582 | '@esbuild/linux-ia32@0.21.5': 583 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 584 | engines: {node: '>=12'} 585 | cpu: [ia32] 586 | os: [linux] 587 | 588 | '@esbuild/linux-loong64@0.17.19': 589 | resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} 590 | engines: {node: '>=12'} 591 | cpu: [loong64] 592 | os: [linux] 593 | 594 | '@esbuild/linux-loong64@0.18.20': 595 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 596 | engines: {node: '>=12'} 597 | cpu: [loong64] 598 | os: [linux] 599 | 600 | '@esbuild/linux-loong64@0.19.12': 601 | resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} 602 | engines: {node: '>=12'} 603 | cpu: [loong64] 604 | os: [linux] 605 | 606 | '@esbuild/linux-loong64@0.21.5': 607 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 608 | engines: {node: '>=12'} 609 | cpu: [loong64] 610 | os: [linux] 611 | 612 | '@esbuild/linux-mips64el@0.17.19': 613 | resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} 614 | engines: {node: '>=12'} 615 | cpu: [mips64el] 616 | os: [linux] 617 | 618 | '@esbuild/linux-mips64el@0.18.20': 619 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 620 | engines: {node: '>=12'} 621 | cpu: [mips64el] 622 | os: [linux] 623 | 624 | '@esbuild/linux-mips64el@0.19.12': 625 | resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} 626 | engines: {node: '>=12'} 627 | cpu: [mips64el] 628 | os: [linux] 629 | 630 | '@esbuild/linux-mips64el@0.21.5': 631 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 632 | engines: {node: '>=12'} 633 | cpu: [mips64el] 634 | os: [linux] 635 | 636 | '@esbuild/linux-ppc64@0.17.19': 637 | resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} 638 | engines: {node: '>=12'} 639 | cpu: [ppc64] 640 | os: [linux] 641 | 642 | '@esbuild/linux-ppc64@0.18.20': 643 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 644 | engines: {node: '>=12'} 645 | cpu: [ppc64] 646 | os: [linux] 647 | 648 | '@esbuild/linux-ppc64@0.19.12': 649 | resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} 650 | engines: {node: '>=12'} 651 | cpu: [ppc64] 652 | os: [linux] 653 | 654 | '@esbuild/linux-ppc64@0.21.5': 655 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 656 | engines: {node: '>=12'} 657 | cpu: [ppc64] 658 | os: [linux] 659 | 660 | '@esbuild/linux-riscv64@0.17.19': 661 | resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} 662 | engines: {node: '>=12'} 663 | cpu: [riscv64] 664 | os: [linux] 665 | 666 | '@esbuild/linux-riscv64@0.18.20': 667 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 668 | engines: {node: '>=12'} 669 | cpu: [riscv64] 670 | os: [linux] 671 | 672 | '@esbuild/linux-riscv64@0.19.12': 673 | resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} 674 | engines: {node: '>=12'} 675 | cpu: [riscv64] 676 | os: [linux] 677 | 678 | '@esbuild/linux-riscv64@0.21.5': 679 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 680 | engines: {node: '>=12'} 681 | cpu: [riscv64] 682 | os: [linux] 683 | 684 | '@esbuild/linux-s390x@0.17.19': 685 | resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} 686 | engines: {node: '>=12'} 687 | cpu: [s390x] 688 | os: [linux] 689 | 690 | '@esbuild/linux-s390x@0.18.20': 691 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 692 | engines: {node: '>=12'} 693 | cpu: [s390x] 694 | os: [linux] 695 | 696 | '@esbuild/linux-s390x@0.19.12': 697 | resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} 698 | engines: {node: '>=12'} 699 | cpu: [s390x] 700 | os: [linux] 701 | 702 | '@esbuild/linux-s390x@0.21.5': 703 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 704 | engines: {node: '>=12'} 705 | cpu: [s390x] 706 | os: [linux] 707 | 708 | '@esbuild/linux-x64@0.17.19': 709 | resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} 710 | engines: {node: '>=12'} 711 | cpu: [x64] 712 | os: [linux] 713 | 714 | '@esbuild/linux-x64@0.18.20': 715 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 716 | engines: {node: '>=12'} 717 | cpu: [x64] 718 | os: [linux] 719 | 720 | '@esbuild/linux-x64@0.19.12': 721 | resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} 722 | engines: {node: '>=12'} 723 | cpu: [x64] 724 | os: [linux] 725 | 726 | '@esbuild/linux-x64@0.21.5': 727 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 728 | engines: {node: '>=12'} 729 | cpu: [x64] 730 | os: [linux] 731 | 732 | '@esbuild/netbsd-x64@0.17.19': 733 | resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} 734 | engines: {node: '>=12'} 735 | cpu: [x64] 736 | os: [netbsd] 737 | 738 | '@esbuild/netbsd-x64@0.18.20': 739 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 740 | engines: {node: '>=12'} 741 | cpu: [x64] 742 | os: [netbsd] 743 | 744 | '@esbuild/netbsd-x64@0.19.12': 745 | resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} 746 | engines: {node: '>=12'} 747 | cpu: [x64] 748 | os: [netbsd] 749 | 750 | '@esbuild/netbsd-x64@0.21.5': 751 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 752 | engines: {node: '>=12'} 753 | cpu: [x64] 754 | os: [netbsd] 755 | 756 | '@esbuild/openbsd-x64@0.17.19': 757 | resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} 758 | engines: {node: '>=12'} 759 | cpu: [x64] 760 | os: [openbsd] 761 | 762 | '@esbuild/openbsd-x64@0.18.20': 763 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 764 | engines: {node: '>=12'} 765 | cpu: [x64] 766 | os: [openbsd] 767 | 768 | '@esbuild/openbsd-x64@0.19.12': 769 | resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} 770 | engines: {node: '>=12'} 771 | cpu: [x64] 772 | os: [openbsd] 773 | 774 | '@esbuild/openbsd-x64@0.21.5': 775 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 776 | engines: {node: '>=12'} 777 | cpu: [x64] 778 | os: [openbsd] 779 | 780 | '@esbuild/sunos-x64@0.17.19': 781 | resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} 782 | engines: {node: '>=12'} 783 | cpu: [x64] 784 | os: [sunos] 785 | 786 | '@esbuild/sunos-x64@0.18.20': 787 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 788 | engines: {node: '>=12'} 789 | cpu: [x64] 790 | os: [sunos] 791 | 792 | '@esbuild/sunos-x64@0.19.12': 793 | resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} 794 | engines: {node: '>=12'} 795 | cpu: [x64] 796 | os: [sunos] 797 | 798 | '@esbuild/sunos-x64@0.21.5': 799 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 800 | engines: {node: '>=12'} 801 | cpu: [x64] 802 | os: [sunos] 803 | 804 | '@esbuild/win32-arm64@0.17.19': 805 | resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} 806 | engines: {node: '>=12'} 807 | cpu: [arm64] 808 | os: [win32] 809 | 810 | '@esbuild/win32-arm64@0.18.20': 811 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 812 | engines: {node: '>=12'} 813 | cpu: [arm64] 814 | os: [win32] 815 | 816 | '@esbuild/win32-arm64@0.19.12': 817 | resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} 818 | engines: {node: '>=12'} 819 | cpu: [arm64] 820 | os: [win32] 821 | 822 | '@esbuild/win32-arm64@0.21.5': 823 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 824 | engines: {node: '>=12'} 825 | cpu: [arm64] 826 | os: [win32] 827 | 828 | '@esbuild/win32-ia32@0.17.19': 829 | resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} 830 | engines: {node: '>=12'} 831 | cpu: [ia32] 832 | os: [win32] 833 | 834 | '@esbuild/win32-ia32@0.18.20': 835 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 836 | engines: {node: '>=12'} 837 | cpu: [ia32] 838 | os: [win32] 839 | 840 | '@esbuild/win32-ia32@0.19.12': 841 | resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} 842 | engines: {node: '>=12'} 843 | cpu: [ia32] 844 | os: [win32] 845 | 846 | '@esbuild/win32-ia32@0.21.5': 847 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 848 | engines: {node: '>=12'} 849 | cpu: [ia32] 850 | os: [win32] 851 | 852 | '@esbuild/win32-x64@0.17.19': 853 | resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} 854 | engines: {node: '>=12'} 855 | cpu: [x64] 856 | os: [win32] 857 | 858 | '@esbuild/win32-x64@0.18.20': 859 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 860 | engines: {node: '>=12'} 861 | cpu: [x64] 862 | os: [win32] 863 | 864 | '@esbuild/win32-x64@0.19.12': 865 | resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} 866 | engines: {node: '>=12'} 867 | cpu: [x64] 868 | os: [win32] 869 | 870 | '@esbuild/win32-x64@0.21.5': 871 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 872 | engines: {node: '>=12'} 873 | cpu: [x64] 874 | os: [win32] 875 | 876 | '@fastify/busboy@2.1.1': 877 | resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} 878 | engines: {node: '>=14'} 879 | 880 | '@hattip/adapter-node@0.0.44': 881 | resolution: {integrity: sha512-Qf0kcrE4yHFrmKgfntrxHGNkk0/9a45aKmAO3ex6OiRKat5DZCFDdFMHV85Z594IohzT7Q+WcWiHQl/b0Jvo7Q==} 882 | 883 | '@hattip/compose@0.0.44': 884 | resolution: {integrity: sha512-0K8fhk3dOI8p6FmCxiGPz5Cr1Svu65Q19/hX2r5OJVdj0U6D/yPzrXyMDQ0Mr8h7PWtAIDCJpa/HxQw+z84HZQ==} 885 | 886 | '@hattip/core@0.0.44': 887 | resolution: {integrity: sha512-hW0scygJk2FjC8lL+NAaV8eY5XtseXvX+EyORFgtURJQ33myy/epSFm7uLZcVNVU9aA0C4WyJQSza+U0rxt2Sg==} 888 | 889 | '@hattip/headers@0.0.44': 890 | resolution: {integrity: sha512-bwNQ+o8RRTox9FWkmprTP8/rNki9BXkrthCDdnT5zgfkjZk6VFAloV5jmYqnqrNkh3Aw5DFGUcQJRoQBb4aQCw==} 891 | 892 | '@hattip/polyfills@0.0.44': 893 | resolution: {integrity: sha512-ldNES22u/135K8Yg6nti1djcwZeIw6e1SY/iqW0qh+AfyYNHuGTix7YL/9OKAD9wbOUj2NHqXYOGCT69NsfIqA==} 894 | 895 | '@hattip/walk@0.0.44': 896 | resolution: {integrity: sha512-tjYO71byyQpdsOVKJ4cySAwWSYqU9IWbROiU1D9SqlQyEYN+TOEaB6n8YkX1gyRbLVkMe+/DJcuagm9AQdPO5A==} 897 | hasBin: true 898 | 899 | '@hiogawa/vite-node-miniflare@0.1.1': 900 | resolution: {integrity: sha512-JG3C6rh7AXLP/YWIr6kncoJ3aXzMTrZNwQPh6bIn0N1VMhVKFCC/agvBKWVyKnpEkcgbOQEhsz9YeZbmunukRQ==} 901 | peerDependencies: 902 | vite: '*' 903 | 904 | '@isaacs/cliui@8.0.2': 905 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 906 | engines: {node: '>=12'} 907 | 908 | '@jridgewell/gen-mapping@0.3.5': 909 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 910 | engines: {node: '>=6.0.0'} 911 | 912 | '@jridgewell/resolve-uri@3.1.2': 913 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 914 | engines: {node: '>=6.0.0'} 915 | 916 | '@jridgewell/set-array@1.2.1': 917 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 918 | engines: {node: '>=6.0.0'} 919 | 920 | '@jridgewell/sourcemap-codec@1.5.0': 921 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 922 | 923 | '@jridgewell/trace-mapping@0.3.25': 924 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 925 | 926 | '@jridgewell/trace-mapping@0.3.9': 927 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 928 | 929 | '@kamilkisiela/fast-url-parser@1.1.4': 930 | resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} 931 | 932 | '@mjackson/node-fetch-server@0.2.0': 933 | resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==} 934 | 935 | '@nodelib/fs.scandir@2.1.5': 936 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 937 | engines: {node: '>= 8'} 938 | 939 | '@nodelib/fs.stat@2.0.5': 940 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 941 | engines: {node: '>= 8'} 942 | 943 | '@nodelib/fs.walk@1.2.8': 944 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 945 | engines: {node: '>= 8'} 946 | 947 | '@npmcli/git@4.1.0': 948 | resolution: {integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==} 949 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 950 | 951 | '@npmcli/package-json@4.0.1': 952 | resolution: {integrity: sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==} 953 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 954 | 955 | '@npmcli/promise-spawn@6.0.2': 956 | resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} 957 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 958 | 959 | '@pkgjs/parseargs@0.11.0': 960 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 961 | engines: {node: '>=14'} 962 | 963 | '@radix-ui/react-compose-refs@1.1.0': 964 | resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} 965 | peerDependencies: 966 | '@types/react': '*' 967 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 968 | peerDependenciesMeta: 969 | '@types/react': 970 | optional: true 971 | 972 | '@radix-ui/react-label@2.1.0': 973 | resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==} 974 | peerDependencies: 975 | '@types/react': '*' 976 | '@types/react-dom': '*' 977 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 978 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 979 | peerDependenciesMeta: 980 | '@types/react': 981 | optional: true 982 | '@types/react-dom': 983 | optional: true 984 | 985 | '@radix-ui/react-primitive@2.0.0': 986 | resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} 987 | peerDependencies: 988 | '@types/react': '*' 989 | '@types/react-dom': '*' 990 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 991 | react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 992 | peerDependenciesMeta: 993 | '@types/react': 994 | optional: true 995 | '@types/react-dom': 996 | optional: true 997 | 998 | '@radix-ui/react-slot@1.1.0': 999 | resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} 1000 | peerDependencies: 1001 | '@types/react': '*' 1002 | react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1003 | peerDependenciesMeta: 1004 | '@types/react': 1005 | optional: true 1006 | 1007 | '@react-router/dev@7.0.0': 1008 | resolution: {integrity: sha512-ymepoSTlAE+yNHLW2cJam3Ur9pcHsL/8cAYSprQtN0hLX4395DTfjxSpy42kDHbTM8cpWKHfyyIBXjPAv3V0DQ==} 1009 | engines: {node: '>=20.0.0'} 1010 | hasBin: true 1011 | peerDependencies: 1012 | '@react-router/serve': ^7.0.0 1013 | react-router: ^7.0.0 1014 | typescript: ^5.1.0 1015 | vite: ^5.1.0 1016 | wrangler: ^3.28.2 1017 | peerDependenciesMeta: 1018 | '@react-router/serve': 1019 | optional: true 1020 | typescript: 1021 | optional: true 1022 | wrangler: 1023 | optional: true 1024 | 1025 | '@react-router/express@7.0.0': 1026 | resolution: {integrity: sha512-BycOXEkNZYyflgM4Yld+gFJi27rUVzKHQBW2JVI+xUNwXAJQpPStc9Jcd57ViPVa1R4k6i05DpmVAJBJNHpbIg==} 1027 | engines: {node: '>=20.0.0'} 1028 | peerDependencies: 1029 | express: ^4.17.1 1030 | react-router: 7.0.0 1031 | typescript: ^5.1.0 1032 | peerDependenciesMeta: 1033 | typescript: 1034 | optional: true 1035 | 1036 | '@react-router/node@7.0.0': 1037 | resolution: {integrity: sha512-0WVVIo6mwgbF2v+2zXyKOkvYcOJzAmmh8uwASzlI4n1hQm0p9YQxajYKq1B55TIkkLv0ECSMyqY3TAzwISwpcA==} 1038 | engines: {node: '>=20.0.0'} 1039 | peerDependencies: 1040 | react-router: 7.0.0 1041 | typescript: ^5.1.0 1042 | peerDependenciesMeta: 1043 | typescript: 1044 | optional: true 1045 | 1046 | '@react-router/serve@7.0.0': 1047 | resolution: {integrity: sha512-ECfq7zJVfBFSm162eGwnoNOFySsKx+VWVyZmxdvxew4pFFR/fPLIE88a69uJzc5hnYkMxkgTYBlvIvzD4D2HtA==} 1048 | engines: {node: '>=20.0.0'} 1049 | hasBin: true 1050 | peerDependencies: 1051 | react-router: 7.0.0 1052 | 1053 | '@rollup/rollup-android-arm-eabi@4.27.3': 1054 | resolution: {integrity: sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==} 1055 | cpu: [arm] 1056 | os: [android] 1057 | 1058 | '@rollup/rollup-android-arm64@4.27.3': 1059 | resolution: {integrity: sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==} 1060 | cpu: [arm64] 1061 | os: [android] 1062 | 1063 | '@rollup/rollup-darwin-arm64@4.27.3': 1064 | resolution: {integrity: sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==} 1065 | cpu: [arm64] 1066 | os: [darwin] 1067 | 1068 | '@rollup/rollup-darwin-x64@4.27.3': 1069 | resolution: {integrity: sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==} 1070 | cpu: [x64] 1071 | os: [darwin] 1072 | 1073 | '@rollup/rollup-freebsd-arm64@4.27.3': 1074 | resolution: {integrity: sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==} 1075 | cpu: [arm64] 1076 | os: [freebsd] 1077 | 1078 | '@rollup/rollup-freebsd-x64@4.27.3': 1079 | resolution: {integrity: sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==} 1080 | cpu: [x64] 1081 | os: [freebsd] 1082 | 1083 | '@rollup/rollup-linux-arm-gnueabihf@4.27.3': 1084 | resolution: {integrity: sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==} 1085 | cpu: [arm] 1086 | os: [linux] 1087 | 1088 | '@rollup/rollup-linux-arm-musleabihf@4.27.3': 1089 | resolution: {integrity: sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==} 1090 | cpu: [arm] 1091 | os: [linux] 1092 | 1093 | '@rollup/rollup-linux-arm64-gnu@4.27.3': 1094 | resolution: {integrity: sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==} 1095 | cpu: [arm64] 1096 | os: [linux] 1097 | 1098 | '@rollup/rollup-linux-arm64-musl@4.27.3': 1099 | resolution: {integrity: sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==} 1100 | cpu: [arm64] 1101 | os: [linux] 1102 | 1103 | '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': 1104 | resolution: {integrity: sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==} 1105 | cpu: [ppc64] 1106 | os: [linux] 1107 | 1108 | '@rollup/rollup-linux-riscv64-gnu@4.27.3': 1109 | resolution: {integrity: sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==} 1110 | cpu: [riscv64] 1111 | os: [linux] 1112 | 1113 | '@rollup/rollup-linux-s390x-gnu@4.27.3': 1114 | resolution: {integrity: sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==} 1115 | cpu: [s390x] 1116 | os: [linux] 1117 | 1118 | '@rollup/rollup-linux-x64-gnu@4.27.3': 1119 | resolution: {integrity: sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==} 1120 | cpu: [x64] 1121 | os: [linux] 1122 | 1123 | '@rollup/rollup-linux-x64-musl@4.27.3': 1124 | resolution: {integrity: sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==} 1125 | cpu: [x64] 1126 | os: [linux] 1127 | 1128 | '@rollup/rollup-win32-arm64-msvc@4.27.3': 1129 | resolution: {integrity: sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==} 1130 | cpu: [arm64] 1131 | os: [win32] 1132 | 1133 | '@rollup/rollup-win32-ia32-msvc@4.27.3': 1134 | resolution: {integrity: sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==} 1135 | cpu: [ia32] 1136 | os: [win32] 1137 | 1138 | '@rollup/rollup-win32-x64-msvc@4.27.3': 1139 | resolution: {integrity: sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==} 1140 | cpu: [x64] 1141 | os: [win32] 1142 | 1143 | '@types/cookie@0.6.0': 1144 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 1145 | 1146 | '@types/estree@1.0.6': 1147 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 1148 | 1149 | '@types/node-forge@1.3.11': 1150 | resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} 1151 | 1152 | '@types/node@20.17.6': 1153 | resolution: {integrity: sha512-VEI7OdvK2wP7XHnsuXbAJnEpEkF6NjSN45QJlL4VGqZSXsnicpesdTWsg9RISeSdYd3yeRj/y3k5KGjUXYnFwQ==} 1154 | 1155 | '@types/prop-types@15.7.13': 1156 | resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} 1157 | 1158 | '@types/react-dom@18.3.1': 1159 | resolution: {integrity: sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==} 1160 | 1161 | '@types/react@18.3.12': 1162 | resolution: {integrity: sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==} 1163 | 1164 | '@whatwg-node/fetch@0.9.23': 1165 | resolution: {integrity: sha512-7xlqWel9JsmxahJnYVUj/LLxWcnA93DR4c9xlw3U814jWTiYalryiH1qToik1hOxweKKRLi4haXHM5ycRksPBA==} 1166 | engines: {node: '>=18.0.0'} 1167 | 1168 | '@whatwg-node/node-fetch@0.6.0': 1169 | resolution: {integrity: sha512-tcZAhrpx6oVlkEsRngeTEEE7I5/QdLjeEz4IlekabGaESP7+Dkm/6a9KcF1KdCBB7mO9PXtBkwCuTCt8+UPg8Q==} 1170 | engines: {node: '>=18.0.0'} 1171 | 1172 | accepts@1.3.8: 1173 | resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} 1174 | engines: {node: '>= 0.6'} 1175 | 1176 | acorn-walk@8.3.4: 1177 | resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} 1178 | engines: {node: '>=0.4.0'} 1179 | 1180 | acorn@8.14.0: 1181 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 1182 | engines: {node: '>=0.4.0'} 1183 | hasBin: true 1184 | 1185 | ansi-regex@5.0.1: 1186 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 1187 | engines: {node: '>=8'} 1188 | 1189 | ansi-regex@6.1.0: 1190 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 1191 | engines: {node: '>=12'} 1192 | 1193 | ansi-styles@4.3.0: 1194 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 1195 | engines: {node: '>=8'} 1196 | 1197 | ansi-styles@6.2.1: 1198 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 1199 | engines: {node: '>=12'} 1200 | 1201 | any-promise@1.3.0: 1202 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 1203 | 1204 | anymatch@3.1.3: 1205 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 1206 | engines: {node: '>= 8'} 1207 | 1208 | arg@5.0.2: 1209 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 1210 | 1211 | array-flatten@1.1.1: 1212 | resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} 1213 | 1214 | as-table@1.0.55: 1215 | resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} 1216 | 1217 | autoprefixer@10.4.20: 1218 | resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} 1219 | engines: {node: ^10 || ^12 || >=14} 1220 | hasBin: true 1221 | peerDependencies: 1222 | postcss: ^8.1.0 1223 | 1224 | babel-dead-code-elimination@1.0.6: 1225 | resolution: {integrity: sha512-JxFi9qyRJpN0LjEbbjbN8g0ux71Qppn9R8Qe3k6QzHg2CaKsbUQtbn307LQGiDLGjV6JCtEFqfxzVig9MyDCHQ==} 1226 | 1227 | balanced-match@1.0.2: 1228 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 1229 | 1230 | basic-auth@2.0.1: 1231 | resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} 1232 | engines: {node: '>= 0.8'} 1233 | 1234 | bcrypt-edge@0.1.0: 1235 | resolution: {integrity: sha512-kTmsr8pHBxW6PwTc+jjAXw6eaHnxWaG5m058bYNftGZQEpG3ZwQrRip9f9RSFvUqLs50unwXdr/YrBIc1jbQsA==} 1236 | 1237 | binary-extensions@2.3.0: 1238 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 1239 | engines: {node: '>=8'} 1240 | 1241 | blake3-wasm@2.1.5: 1242 | resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 1243 | 1244 | body-parser@1.20.3: 1245 | resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} 1246 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1247 | 1248 | brace-expansion@2.0.1: 1249 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 1250 | 1251 | braces@3.0.3: 1252 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 1253 | engines: {node: '>=8'} 1254 | 1255 | browserify-zlib@0.1.4: 1256 | resolution: {integrity: sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==} 1257 | 1258 | browserslist@4.24.2: 1259 | resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} 1260 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1261 | hasBin: true 1262 | 1263 | buffer-from@1.1.2: 1264 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1265 | 1266 | busboy@1.6.0: 1267 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 1268 | engines: {node: '>=10.16.0'} 1269 | 1270 | bytes@3.1.2: 1271 | resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} 1272 | engines: {node: '>= 0.8'} 1273 | 1274 | cac@6.7.14: 1275 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 1276 | engines: {node: '>=8'} 1277 | 1278 | call-bind@1.0.7: 1279 | resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} 1280 | engines: {node: '>= 0.4'} 1281 | 1282 | camelcase-css@2.0.1: 1283 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 1284 | engines: {node: '>= 6'} 1285 | 1286 | caniuse-lite@1.0.30001683: 1287 | resolution: {integrity: sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==} 1288 | 1289 | capnp-ts@0.7.0: 1290 | resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==} 1291 | 1292 | chokidar@3.6.0: 1293 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 1294 | engines: {node: '>= 8.10.0'} 1295 | 1296 | chokidar@4.0.1: 1297 | resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} 1298 | engines: {node: '>= 14.16.0'} 1299 | 1300 | class-variance-authority@0.7.0: 1301 | resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} 1302 | 1303 | clsx@2.0.0: 1304 | resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} 1305 | engines: {node: '>=6'} 1306 | 1307 | clsx@2.1.1: 1308 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 1309 | engines: {node: '>=6'} 1310 | 1311 | color-convert@2.0.1: 1312 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1313 | engines: {node: '>=7.0.0'} 1314 | 1315 | color-name@1.1.4: 1316 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1317 | 1318 | commander@4.1.1: 1319 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1320 | engines: {node: '>= 6'} 1321 | 1322 | compressible@2.0.18: 1323 | resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} 1324 | engines: {node: '>= 0.6'} 1325 | 1326 | compression@1.7.5: 1327 | resolution: {integrity: sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==} 1328 | engines: {node: '>= 0.8.0'} 1329 | 1330 | content-disposition@0.5.4: 1331 | resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} 1332 | engines: {node: '>= 0.6'} 1333 | 1334 | content-type@1.0.5: 1335 | resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} 1336 | engines: {node: '>= 0.6'} 1337 | 1338 | convert-source-map@2.0.0: 1339 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1340 | 1341 | cookie-signature@1.0.6: 1342 | resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} 1343 | 1344 | cookie@0.7.1: 1345 | resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} 1346 | engines: {node: '>= 0.6'} 1347 | 1348 | cookie@0.7.2: 1349 | resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} 1350 | engines: {node: '>= 0.6'} 1351 | 1352 | cookie@1.0.2: 1353 | resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} 1354 | engines: {node: '>=18'} 1355 | 1356 | core-util-is@1.0.3: 1357 | resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} 1358 | 1359 | cross-spawn@7.0.6: 1360 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 1361 | engines: {node: '>= 8'} 1362 | 1363 | cssesc@3.0.0: 1364 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1365 | engines: {node: '>=4'} 1366 | hasBin: true 1367 | 1368 | csstype@3.1.3: 1369 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1370 | 1371 | data-uri-to-buffer@2.0.2: 1372 | resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} 1373 | 1374 | date-fns@4.1.0: 1375 | resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} 1376 | 1377 | debug@2.6.9: 1378 | resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} 1379 | peerDependencies: 1380 | supports-color: '*' 1381 | peerDependenciesMeta: 1382 | supports-color: 1383 | optional: true 1384 | 1385 | debug@4.3.7: 1386 | resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 1387 | engines: {node: '>=6.0'} 1388 | peerDependencies: 1389 | supports-color: '*' 1390 | peerDependenciesMeta: 1391 | supports-color: 1392 | optional: true 1393 | 1394 | dedent@1.5.3: 1395 | resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} 1396 | peerDependencies: 1397 | babel-plugin-macros: ^3.1.0 1398 | peerDependenciesMeta: 1399 | babel-plugin-macros: 1400 | optional: true 1401 | 1402 | define-data-property@1.1.4: 1403 | resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 1404 | engines: {node: '>= 0.4'} 1405 | 1406 | defu@6.1.4: 1407 | resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 1408 | 1409 | depd@2.0.0: 1410 | resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} 1411 | engines: {node: '>= 0.8'} 1412 | 1413 | destroy@1.2.0: 1414 | resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} 1415 | engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} 1416 | 1417 | didyoumean@1.2.2: 1418 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1419 | 1420 | dlv@1.1.3: 1421 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1422 | 1423 | dotenv-cli@7.4.4: 1424 | resolution: {integrity: sha512-XkBYCG0tPIes+YZr4SpfFv76SQrV/LeCE8CI7JSEMi3VR9MvTihCGTOtbIexD6i2mXF+6px7trb1imVCXSNMDw==} 1425 | hasBin: true 1426 | 1427 | dotenv-expand@10.0.0: 1428 | resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} 1429 | engines: {node: '>=12'} 1430 | 1431 | dotenv@16.4.5: 1432 | resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} 1433 | engines: {node: '>=12'} 1434 | 1435 | drizzle-kit@0.28.1: 1436 | resolution: {integrity: sha512-JimOV+ystXTWMgZkLHYHf2w3oS28hxiH1FR0dkmJLc7GHzdGJoJAQtQS5DRppnabsRZwE2U1F6CuezVBgmsBBQ==} 1437 | hasBin: true 1438 | 1439 | drizzle-orm@0.36.3: 1440 | resolution: {integrity: sha512-ffQB7CcyCTvQBK6xtRLMl/Jsd5xFTBs+UTHrgs1hbk68i5TPkbsoCPbKEwiEsQZfq2I7VH632XJpV1g7LS2H9Q==} 1441 | peerDependencies: 1442 | '@aws-sdk/client-rds-data': '>=3' 1443 | '@cloudflare/workers-types': '>=3' 1444 | '@electric-sql/pglite': '>=0.2.0' 1445 | '@libsql/client': '>=0.10.0' 1446 | '@libsql/client-wasm': '>=0.10.0' 1447 | '@neondatabase/serverless': '>=0.1' 1448 | '@op-engineering/op-sqlite': '>=2' 1449 | '@opentelemetry/api': ^1.4.1 1450 | '@planetscale/database': '>=1' 1451 | '@prisma/client': '*' 1452 | '@tidbcloud/serverless': '*' 1453 | '@types/better-sqlite3': '*' 1454 | '@types/pg': '*' 1455 | '@types/react': '>=18' 1456 | '@types/sql.js': '*' 1457 | '@vercel/postgres': '>=0.8.0' 1458 | '@xata.io/client': '*' 1459 | better-sqlite3: '>=7' 1460 | bun-types: '*' 1461 | expo-sqlite: '>=14.0.0' 1462 | knex: '*' 1463 | kysely: '*' 1464 | mysql2: '>=2' 1465 | pg: '>=8' 1466 | postgres: '>=3' 1467 | prisma: '*' 1468 | react: '>=18' 1469 | sql.js: '>=1' 1470 | sqlite3: '>=5' 1471 | peerDependenciesMeta: 1472 | '@aws-sdk/client-rds-data': 1473 | optional: true 1474 | '@cloudflare/workers-types': 1475 | optional: true 1476 | '@electric-sql/pglite': 1477 | optional: true 1478 | '@libsql/client': 1479 | optional: true 1480 | '@libsql/client-wasm': 1481 | optional: true 1482 | '@neondatabase/serverless': 1483 | optional: true 1484 | '@op-engineering/op-sqlite': 1485 | optional: true 1486 | '@opentelemetry/api': 1487 | optional: true 1488 | '@planetscale/database': 1489 | optional: true 1490 | '@prisma/client': 1491 | optional: true 1492 | '@tidbcloud/serverless': 1493 | optional: true 1494 | '@types/better-sqlite3': 1495 | optional: true 1496 | '@types/pg': 1497 | optional: true 1498 | '@types/react': 1499 | optional: true 1500 | '@types/sql.js': 1501 | optional: true 1502 | '@vercel/postgres': 1503 | optional: true 1504 | '@xata.io/client': 1505 | optional: true 1506 | better-sqlite3: 1507 | optional: true 1508 | bun-types: 1509 | optional: true 1510 | expo-sqlite: 1511 | optional: true 1512 | knex: 1513 | optional: true 1514 | kysely: 1515 | optional: true 1516 | mysql2: 1517 | optional: true 1518 | pg: 1519 | optional: true 1520 | postgres: 1521 | optional: true 1522 | prisma: 1523 | optional: true 1524 | react: 1525 | optional: true 1526 | sql.js: 1527 | optional: true 1528 | sqlite3: 1529 | optional: true 1530 | 1531 | duplexify@3.7.1: 1532 | resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} 1533 | 1534 | eastasianwidth@0.2.0: 1535 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1536 | 1537 | ee-first@1.1.1: 1538 | resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} 1539 | 1540 | electron-to-chromium@1.5.64: 1541 | resolution: {integrity: sha512-IXEuxU+5ClW2IGEYFC2T7szbyVgehupCWQe5GNh+H065CD6U6IFN0s4KeAMFGNmQolRU4IV7zGBWSYMmZ8uuqQ==} 1542 | 1543 | emoji-regex@8.0.0: 1544 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1545 | 1546 | emoji-regex@9.2.2: 1547 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1548 | 1549 | encodeurl@1.0.2: 1550 | resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} 1551 | engines: {node: '>= 0.8'} 1552 | 1553 | encodeurl@2.0.0: 1554 | resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} 1555 | engines: {node: '>= 0.8'} 1556 | 1557 | end-of-stream@1.4.4: 1558 | resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 1559 | 1560 | err-code@2.0.3: 1561 | resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} 1562 | 1563 | es-define-property@1.0.0: 1564 | resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} 1565 | engines: {node: '>= 0.4'} 1566 | 1567 | es-errors@1.3.0: 1568 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1569 | engines: {node: '>= 0.4'} 1570 | 1571 | es-module-lexer@1.5.4: 1572 | resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} 1573 | 1574 | esbuild-register@3.6.0: 1575 | resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} 1576 | peerDependencies: 1577 | esbuild: '>=0.12 <1' 1578 | 1579 | esbuild@0.17.19: 1580 | resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} 1581 | engines: {node: '>=12'} 1582 | hasBin: true 1583 | 1584 | esbuild@0.18.20: 1585 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 1586 | engines: {node: '>=12'} 1587 | hasBin: true 1588 | 1589 | esbuild@0.19.12: 1590 | resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} 1591 | engines: {node: '>=12'} 1592 | hasBin: true 1593 | 1594 | esbuild@0.21.5: 1595 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 1596 | engines: {node: '>=12'} 1597 | hasBin: true 1598 | 1599 | escalade@3.2.0: 1600 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1601 | engines: {node: '>=6'} 1602 | 1603 | escape-html@1.0.3: 1604 | resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} 1605 | 1606 | escape-string-regexp@4.0.0: 1607 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1608 | engines: {node: '>=10'} 1609 | 1610 | estree-walker@0.6.1: 1611 | resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} 1612 | 1613 | etag@1.8.1: 1614 | resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} 1615 | engines: {node: '>= 0.6'} 1616 | 1617 | exit-hook@2.2.1: 1618 | resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} 1619 | engines: {node: '>=6'} 1620 | 1621 | express@4.21.1: 1622 | resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} 1623 | engines: {node: '>= 0.10.0'} 1624 | 1625 | fast-decode-uri-component@1.0.1: 1626 | resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} 1627 | 1628 | fast-glob@3.3.2: 1629 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1630 | engines: {node: '>=8.6.0'} 1631 | 1632 | fast-querystring@1.1.2: 1633 | resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} 1634 | 1635 | fastq@1.17.1: 1636 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 1637 | 1638 | fill-range@7.1.1: 1639 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 1640 | engines: {node: '>=8'} 1641 | 1642 | finalhandler@1.3.1: 1643 | resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} 1644 | engines: {node: '>= 0.8'} 1645 | 1646 | foreground-child@3.3.0: 1647 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 1648 | engines: {node: '>=14'} 1649 | 1650 | forwarded@0.2.0: 1651 | resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} 1652 | engines: {node: '>= 0.6'} 1653 | 1654 | fraction.js@4.3.7: 1655 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1656 | 1657 | fresh@0.5.2: 1658 | resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} 1659 | engines: {node: '>= 0.6'} 1660 | 1661 | fs-extra@10.1.0: 1662 | resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} 1663 | engines: {node: '>=12'} 1664 | 1665 | fsevents@2.3.3: 1666 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1667 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1668 | os: [darwin] 1669 | 1670 | function-bind@1.1.2: 1671 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1672 | 1673 | gensync@1.0.0-beta.2: 1674 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1675 | engines: {node: '>=6.9.0'} 1676 | 1677 | get-intrinsic@1.2.4: 1678 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 1679 | engines: {node: '>= 0.4'} 1680 | 1681 | get-port@5.1.1: 1682 | resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} 1683 | engines: {node: '>=8'} 1684 | 1685 | get-source@2.0.12: 1686 | resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} 1687 | 1688 | get-tsconfig@4.8.1: 1689 | resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} 1690 | 1691 | glob-parent@5.1.2: 1692 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1693 | engines: {node: '>= 6'} 1694 | 1695 | glob-parent@6.0.2: 1696 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1697 | engines: {node: '>=10.13.0'} 1698 | 1699 | glob-to-regexp@0.4.1: 1700 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1701 | 1702 | glob@10.4.5: 1703 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 1704 | hasBin: true 1705 | 1706 | globals@11.12.0: 1707 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1708 | engines: {node: '>=4'} 1709 | 1710 | globrex@0.1.2: 1711 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1712 | 1713 | gopd@1.0.1: 1714 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1715 | 1716 | graceful-fs@4.2.11: 1717 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1718 | 1719 | gunzip-maybe@1.4.2: 1720 | resolution: {integrity: sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==} 1721 | hasBin: true 1722 | 1723 | has-property-descriptors@1.0.2: 1724 | resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 1725 | 1726 | has-proto@1.0.3: 1727 | resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} 1728 | engines: {node: '>= 0.4'} 1729 | 1730 | has-symbols@1.0.3: 1731 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1732 | engines: {node: '>= 0.4'} 1733 | 1734 | hasown@2.0.2: 1735 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 1736 | engines: {node: '>= 0.4'} 1737 | 1738 | hosted-git-info@6.1.3: 1739 | resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==} 1740 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1741 | 1742 | http-errors@2.0.0: 1743 | resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} 1744 | engines: {node: '>= 0.8'} 1745 | 1746 | iconv-lite@0.4.24: 1747 | resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 1748 | engines: {node: '>=0.10.0'} 1749 | 1750 | inherits@2.0.4: 1751 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1752 | 1753 | ipaddr.js@1.9.1: 1754 | resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} 1755 | engines: {node: '>= 0.10'} 1756 | 1757 | is-binary-path@2.1.0: 1758 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1759 | engines: {node: '>=8'} 1760 | 1761 | is-core-module@2.15.1: 1762 | resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} 1763 | engines: {node: '>= 0.4'} 1764 | 1765 | is-deflate@1.0.0: 1766 | resolution: {integrity: sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==} 1767 | 1768 | is-extglob@2.1.1: 1769 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1770 | engines: {node: '>=0.10.0'} 1771 | 1772 | is-fullwidth-code-point@3.0.0: 1773 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1774 | engines: {node: '>=8'} 1775 | 1776 | is-glob@4.0.3: 1777 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1778 | engines: {node: '>=0.10.0'} 1779 | 1780 | is-gzip@1.0.0: 1781 | resolution: {integrity: sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==} 1782 | engines: {node: '>=0.10.0'} 1783 | 1784 | is-number@7.0.0: 1785 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1786 | engines: {node: '>=0.12.0'} 1787 | 1788 | isarray@1.0.0: 1789 | resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} 1790 | 1791 | isbot@5.1.17: 1792 | resolution: {integrity: sha512-/wch8pRKZE+aoVhRX/hYPY1C7dMCeeMyhkQLNLNlYAbGQn9bkvMB8fOUXNnk5I0m4vDYbBJ9ciVtkr9zfBJ7qA==} 1793 | engines: {node: '>=18'} 1794 | 1795 | isexe@2.0.0: 1796 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1797 | 1798 | itty-time@1.0.6: 1799 | resolution: {integrity: sha512-+P8IZaLLBtFv8hCkIjcymZOp4UJ+xW6bSlQsXGqrkmJh7vSiMFSlNne0mCYagEE0N7HDNR5jJBRxwN0oYv61Rw==} 1800 | 1801 | jackspeak@3.4.3: 1802 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1803 | 1804 | jiti@1.21.6: 1805 | resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} 1806 | hasBin: true 1807 | 1808 | js-tokens@4.0.0: 1809 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1810 | 1811 | jsesc@3.0.2: 1812 | resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 1813 | engines: {node: '>=6'} 1814 | hasBin: true 1815 | 1816 | json-parse-even-better-errors@3.0.2: 1817 | resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} 1818 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1819 | 1820 | json5@2.2.3: 1821 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1822 | engines: {node: '>=6'} 1823 | hasBin: true 1824 | 1825 | jsonfile@6.1.0: 1826 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} 1827 | 1828 | lilconfig@2.1.0: 1829 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1830 | engines: {node: '>=10'} 1831 | 1832 | lilconfig@3.1.2: 1833 | resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} 1834 | engines: {node: '>=14'} 1835 | 1836 | lines-and-columns@1.2.4: 1837 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1838 | 1839 | lodash@4.17.21: 1840 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1841 | 1842 | loose-envify@1.4.0: 1843 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 1844 | hasBin: true 1845 | 1846 | lru-cache@10.4.3: 1847 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1848 | 1849 | lru-cache@5.1.1: 1850 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1851 | 1852 | lru-cache@7.18.3: 1853 | resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} 1854 | engines: {node: '>=12'} 1855 | 1856 | lucide-react@0.460.0: 1857 | resolution: {integrity: sha512-BVtq/DykVeIvRTJvRAgCsOwaGL8Un3Bxh8MbDxMhEWlZay3T4IpEKDEpwt5KZ0KJMHzgm6jrltxlT5eXOWXDHg==} 1858 | peerDependencies: 1859 | react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc 1860 | 1861 | magic-string@0.25.9: 1862 | resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} 1863 | 1864 | media-typer@0.3.0: 1865 | resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} 1866 | engines: {node: '>= 0.6'} 1867 | 1868 | merge-descriptors@1.0.3: 1869 | resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} 1870 | 1871 | merge2@1.4.1: 1872 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1873 | engines: {node: '>= 8'} 1874 | 1875 | methods@1.1.2: 1876 | resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} 1877 | engines: {node: '>= 0.6'} 1878 | 1879 | micromatch@4.0.8: 1880 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1881 | engines: {node: '>=8.6'} 1882 | 1883 | mime-db@1.52.0: 1884 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1885 | engines: {node: '>= 0.6'} 1886 | 1887 | mime-db@1.53.0: 1888 | resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} 1889 | engines: {node: '>= 0.6'} 1890 | 1891 | mime-types@2.1.35: 1892 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1893 | engines: {node: '>= 0.6'} 1894 | 1895 | mime@1.6.0: 1896 | resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} 1897 | engines: {node: '>=4'} 1898 | hasBin: true 1899 | 1900 | mime@3.0.0: 1901 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1902 | engines: {node: '>=10.0.0'} 1903 | hasBin: true 1904 | 1905 | miniflare@3.20241106.1: 1906 | resolution: {integrity: sha512-dM3RBlJE8rUFxnqlPCaFCq0E7qQqEQvKbYX7W/APGCK+rLcyLmEBzC4GQR/niXdNM/oV6gdg9AA50ghnn2ALuw==} 1907 | engines: {node: '>=16.13'} 1908 | hasBin: true 1909 | 1910 | minimatch@9.0.5: 1911 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1912 | engines: {node: '>=16 || 14 >=14.17'} 1913 | 1914 | minimist@1.2.8: 1915 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1916 | 1917 | minipass@7.1.2: 1918 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1919 | engines: {node: '>=16 || 14 >=14.17'} 1920 | 1921 | morgan@1.10.0: 1922 | resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==} 1923 | engines: {node: '>= 0.8.0'} 1924 | 1925 | ms@2.0.0: 1926 | resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} 1927 | 1928 | ms@2.1.3: 1929 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1930 | 1931 | mustache@4.2.0: 1932 | resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} 1933 | hasBin: true 1934 | 1935 | mz@2.7.0: 1936 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1937 | 1938 | nanoid@3.3.7: 1939 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1940 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1941 | hasBin: true 1942 | 1943 | negotiator@0.6.3: 1944 | resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} 1945 | engines: {node: '>= 0.6'} 1946 | 1947 | negotiator@0.6.4: 1948 | resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} 1949 | engines: {node: '>= 0.6'} 1950 | 1951 | node-fetch-native@1.6.4: 1952 | resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} 1953 | 1954 | node-forge@1.3.1: 1955 | resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} 1956 | engines: {node: '>= 6.13.0'} 1957 | 1958 | node-releases@2.0.18: 1959 | resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} 1960 | 1961 | normalize-package-data@5.0.0: 1962 | resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} 1963 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1964 | 1965 | normalize-path@3.0.0: 1966 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1967 | engines: {node: '>=0.10.0'} 1968 | 1969 | normalize-range@0.1.2: 1970 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1971 | engines: {node: '>=0.10.0'} 1972 | 1973 | npm-install-checks@6.3.0: 1974 | resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} 1975 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1976 | 1977 | npm-normalize-package-bin@3.0.1: 1978 | resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} 1979 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1980 | 1981 | npm-package-arg@10.1.0: 1982 | resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} 1983 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1984 | 1985 | npm-pick-manifest@8.0.2: 1986 | resolution: {integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==} 1987 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 1988 | 1989 | object-assign@4.1.1: 1990 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1991 | engines: {node: '>=0.10.0'} 1992 | 1993 | object-hash@3.0.0: 1994 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1995 | engines: {node: '>= 6'} 1996 | 1997 | object-inspect@1.13.3: 1998 | resolution: {integrity: sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==} 1999 | engines: {node: '>= 0.4'} 2000 | 2001 | ohash@1.1.4: 2002 | resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} 2003 | 2004 | on-finished@2.3.0: 2005 | resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} 2006 | engines: {node: '>= 0.8'} 2007 | 2008 | on-finished@2.4.1: 2009 | resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} 2010 | engines: {node: '>= 0.8'} 2011 | 2012 | on-headers@1.0.2: 2013 | resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} 2014 | engines: {node: '>= 0.8'} 2015 | 2016 | once@1.4.0: 2017 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2018 | 2019 | package-json-from-dist@1.0.1: 2020 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 2021 | 2022 | pako@0.2.9: 2023 | resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} 2024 | 2025 | parseurl@1.3.3: 2026 | resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} 2027 | engines: {node: '>= 0.8'} 2028 | 2029 | path-key@3.1.1: 2030 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2031 | engines: {node: '>=8'} 2032 | 2033 | path-parse@1.0.7: 2034 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2035 | 2036 | path-scurry@1.11.1: 2037 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 2038 | engines: {node: '>=16 || 14 >=14.18'} 2039 | 2040 | path-to-regexp@0.1.10: 2041 | resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} 2042 | 2043 | path-to-regexp@6.3.0: 2044 | resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} 2045 | 2046 | pathe@1.1.2: 2047 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 2048 | 2049 | peek-stream@1.1.3: 2050 | resolution: {integrity: sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==} 2051 | 2052 | picocolors@1.1.1: 2053 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 2054 | 2055 | picomatch@2.3.1: 2056 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2057 | engines: {node: '>=8.6'} 2058 | 2059 | pify@2.3.0: 2060 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2061 | engines: {node: '>=0.10.0'} 2062 | 2063 | pirates@4.0.6: 2064 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 2065 | engines: {node: '>= 6'} 2066 | 2067 | postcss-import@15.1.0: 2068 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 2069 | engines: {node: '>=14.0.0'} 2070 | peerDependencies: 2071 | postcss: ^8.0.0 2072 | 2073 | postcss-js@4.0.1: 2074 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 2075 | engines: {node: ^12 || ^14 || >= 16} 2076 | peerDependencies: 2077 | postcss: ^8.4.21 2078 | 2079 | postcss-load-config@4.0.2: 2080 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 2081 | engines: {node: '>= 14'} 2082 | peerDependencies: 2083 | postcss: '>=8.0.9' 2084 | ts-node: '>=9.0.0' 2085 | peerDependenciesMeta: 2086 | postcss: 2087 | optional: true 2088 | ts-node: 2089 | optional: true 2090 | 2091 | postcss-nested@6.2.0: 2092 | resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} 2093 | engines: {node: '>=12.0'} 2094 | peerDependencies: 2095 | postcss: ^8.2.14 2096 | 2097 | postcss-selector-parser@6.1.2: 2098 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 2099 | engines: {node: '>=4'} 2100 | 2101 | postcss-value-parser@4.2.0: 2102 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2103 | 2104 | postcss@8.4.49: 2105 | resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} 2106 | engines: {node: ^10 || ^12 || >=14} 2107 | 2108 | prettier@2.8.8: 2109 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 2110 | engines: {node: '>=10.13.0'} 2111 | hasBin: true 2112 | 2113 | printable-characters@1.0.42: 2114 | resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} 2115 | 2116 | proc-log@3.0.0: 2117 | resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} 2118 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 2119 | 2120 | process-nextick-args@2.0.1: 2121 | resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} 2122 | 2123 | promise-inflight@1.0.1: 2124 | resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} 2125 | peerDependencies: 2126 | bluebird: '*' 2127 | peerDependenciesMeta: 2128 | bluebird: 2129 | optional: true 2130 | 2131 | promise-retry@2.0.1: 2132 | resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} 2133 | engines: {node: '>=10'} 2134 | 2135 | proxy-addr@2.0.7: 2136 | resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} 2137 | engines: {node: '>= 0.10'} 2138 | 2139 | pump@2.0.1: 2140 | resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==} 2141 | 2142 | pumpify@1.5.1: 2143 | resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==} 2144 | 2145 | qs@6.13.0: 2146 | resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} 2147 | engines: {node: '>=0.6'} 2148 | 2149 | queue-microtask@1.2.3: 2150 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2151 | 2152 | range-parser@1.2.1: 2153 | resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} 2154 | engines: {node: '>= 0.6'} 2155 | 2156 | raw-body@2.5.2: 2157 | resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} 2158 | engines: {node: '>= 0.8'} 2159 | 2160 | react-dom@18.3.1: 2161 | resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} 2162 | peerDependencies: 2163 | react: ^18.3.1 2164 | 2165 | react-refresh@0.14.2: 2166 | resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} 2167 | engines: {node: '>=0.10.0'} 2168 | 2169 | react-router@7.0.0: 2170 | resolution: {integrity: sha512-1xf+yMVhUjAzZGY90ZnYJ9KVe1R8FggpugzRBkh+p6vl4cC1sHDe3nO+r5rxWTAgCMf8uN5hfoV2M7rLVTWPUA==} 2171 | engines: {node: '>=20.0.0'} 2172 | peerDependencies: 2173 | react: '>=18' 2174 | react-dom: '>=18' 2175 | peerDependenciesMeta: 2176 | react-dom: 2177 | optional: true 2178 | 2179 | react@18.3.1: 2180 | resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} 2181 | engines: {node: '>=0.10.0'} 2182 | 2183 | read-cache@1.0.0: 2184 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2185 | 2186 | readable-stream@2.3.8: 2187 | resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} 2188 | 2189 | readdirp@3.6.0: 2190 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2191 | engines: {node: '>=8.10.0'} 2192 | 2193 | readdirp@4.0.2: 2194 | resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} 2195 | engines: {node: '>= 14.16.0'} 2196 | 2197 | resolve-pkg-maps@1.0.0: 2198 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2199 | 2200 | resolve.exports@2.0.2: 2201 | resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} 2202 | engines: {node: '>=10'} 2203 | 2204 | resolve@1.22.8: 2205 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 2206 | hasBin: true 2207 | 2208 | retry@0.12.0: 2209 | resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} 2210 | engines: {node: '>= 4'} 2211 | 2212 | reusify@1.0.4: 2213 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2214 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2215 | 2216 | rollup-plugin-inject@3.0.2: 2217 | resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} 2218 | deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. 2219 | 2220 | rollup-plugin-node-polyfills@0.2.1: 2221 | resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} 2222 | 2223 | rollup-pluginutils@2.8.2: 2224 | resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} 2225 | 2226 | rollup@4.27.3: 2227 | resolution: {integrity: sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==} 2228 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2229 | hasBin: true 2230 | 2231 | run-parallel@1.2.0: 2232 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2233 | 2234 | safe-buffer@5.1.2: 2235 | resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} 2236 | 2237 | safe-buffer@5.2.1: 2238 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2239 | 2240 | safer-buffer@2.1.2: 2241 | resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 2242 | 2243 | scheduler@0.23.2: 2244 | resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} 2245 | 2246 | selfsigned@2.4.1: 2247 | resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} 2248 | engines: {node: '>=10'} 2249 | 2250 | semver@6.3.1: 2251 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2252 | hasBin: true 2253 | 2254 | semver@7.6.3: 2255 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 2256 | engines: {node: '>=10'} 2257 | hasBin: true 2258 | 2259 | send@0.19.0: 2260 | resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} 2261 | engines: {node: '>= 0.8.0'} 2262 | 2263 | serve-static@1.16.2: 2264 | resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} 2265 | engines: {node: '>= 0.8.0'} 2266 | 2267 | set-cookie-parser@2.7.1: 2268 | resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} 2269 | 2270 | set-function-length@1.2.2: 2271 | resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 2272 | engines: {node: '>= 0.4'} 2273 | 2274 | setprototypeof@1.2.0: 2275 | resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} 2276 | 2277 | shebang-command@2.0.0: 2278 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2279 | engines: {node: '>=8'} 2280 | 2281 | shebang-regex@3.0.0: 2282 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2283 | engines: {node: '>=8'} 2284 | 2285 | side-channel@1.0.6: 2286 | resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} 2287 | engines: {node: '>= 0.4'} 2288 | 2289 | signal-exit@4.1.0: 2290 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2291 | engines: {node: '>=14'} 2292 | 2293 | source-map-js@1.2.1: 2294 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 2295 | engines: {node: '>=0.10.0'} 2296 | 2297 | source-map-support@0.5.21: 2298 | resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 2299 | 2300 | source-map@0.6.1: 2301 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2302 | engines: {node: '>=0.10.0'} 2303 | 2304 | sourcemap-codec@1.4.8: 2305 | resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} 2306 | deprecated: Please use @jridgewell/sourcemap-codec instead 2307 | 2308 | spdx-correct@3.2.0: 2309 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} 2310 | 2311 | spdx-exceptions@2.5.0: 2312 | resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} 2313 | 2314 | spdx-expression-parse@3.0.1: 2315 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 2316 | 2317 | spdx-license-ids@3.0.20: 2318 | resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} 2319 | 2320 | stacktracey@2.1.8: 2321 | resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} 2322 | 2323 | statuses@2.0.1: 2324 | resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} 2325 | engines: {node: '>= 0.8'} 2326 | 2327 | stoppable@1.1.0: 2328 | resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} 2329 | engines: {node: '>=4', npm: '>=6'} 2330 | 2331 | stream-shift@1.0.3: 2332 | resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} 2333 | 2334 | stream-slice@0.1.2: 2335 | resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} 2336 | 2337 | streamsearch@1.1.0: 2338 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 2339 | engines: {node: '>=10.0.0'} 2340 | 2341 | string-width@4.2.3: 2342 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2343 | engines: {node: '>=8'} 2344 | 2345 | string-width@5.1.2: 2346 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 2347 | engines: {node: '>=12'} 2348 | 2349 | string_decoder@1.1.1: 2350 | resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} 2351 | 2352 | strip-ansi@6.0.1: 2353 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2354 | engines: {node: '>=8'} 2355 | 2356 | strip-ansi@7.1.0: 2357 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2358 | engines: {node: '>=12'} 2359 | 2360 | sucrase@3.35.0: 2361 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 2362 | engines: {node: '>=16 || 14 >=14.17'} 2363 | hasBin: true 2364 | 2365 | supports-preserve-symlinks-flag@1.0.0: 2366 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2367 | engines: {node: '>= 0.4'} 2368 | 2369 | tailwind-merge@2.5.4: 2370 | resolution: {integrity: sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==} 2371 | 2372 | tailwindcss-animate@1.0.7: 2373 | resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} 2374 | peerDependencies: 2375 | tailwindcss: '>=3.0.0 || insiders' 2376 | 2377 | tailwindcss@3.4.15: 2378 | resolution: {integrity: sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==} 2379 | engines: {node: '>=14.0.0'} 2380 | hasBin: true 2381 | 2382 | thenify-all@1.6.0: 2383 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2384 | engines: {node: '>=0.8'} 2385 | 2386 | thenify@3.3.1: 2387 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2388 | 2389 | through2@2.0.5: 2390 | resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} 2391 | 2392 | to-regex-range@5.0.1: 2393 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2394 | engines: {node: '>=8.0'} 2395 | 2396 | toidentifier@1.0.1: 2397 | resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} 2398 | engines: {node: '>=0.6'} 2399 | 2400 | ts-interface-checker@0.1.13: 2401 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2402 | 2403 | tsconfck@3.1.4: 2404 | resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==} 2405 | engines: {node: ^18 || >=20} 2406 | hasBin: true 2407 | peerDependencies: 2408 | typescript: ^5.0.0 2409 | peerDependenciesMeta: 2410 | typescript: 2411 | optional: true 2412 | 2413 | tslib@2.8.1: 2414 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 2415 | 2416 | turbo-stream@2.4.0: 2417 | resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} 2418 | 2419 | type-is@1.6.18: 2420 | resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} 2421 | engines: {node: '>= 0.6'} 2422 | 2423 | typescript@5.6.3: 2424 | resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 2425 | engines: {node: '>=14.17'} 2426 | hasBin: true 2427 | 2428 | ufo@1.5.4: 2429 | resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} 2430 | 2431 | undici-types@6.19.8: 2432 | resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} 2433 | 2434 | undici@5.28.4: 2435 | resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} 2436 | engines: {node: '>=14.0'} 2437 | 2438 | undici@6.21.0: 2439 | resolution: {integrity: sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==} 2440 | engines: {node: '>=18.17'} 2441 | 2442 | unenv-nightly@2.0.0-20241111-080453-894aa31: 2443 | resolution: {integrity: sha512-0W39QQOQ9VE8kVVUpGwEG+pZcsCXk5wqNG6rDPE6Gr+fiA69LR0qERM61hW5KCOkC1/ArCFrfCGjwHyyv/bI0Q==} 2444 | 2445 | universalify@2.0.1: 2446 | resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} 2447 | engines: {node: '>= 10.0.0'} 2448 | 2449 | unpipe@1.0.0: 2450 | resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} 2451 | engines: {node: '>= 0.8'} 2452 | 2453 | update-browserslist-db@1.1.1: 2454 | resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} 2455 | hasBin: true 2456 | peerDependencies: 2457 | browserslist: '>= 4.21.0' 2458 | 2459 | urlpattern-polyfill@10.0.0: 2460 | resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} 2461 | 2462 | util-deprecate@1.0.2: 2463 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2464 | 2465 | utils-merge@1.0.1: 2466 | resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} 2467 | engines: {node: '>= 0.4.0'} 2468 | 2469 | valibot@0.41.0: 2470 | resolution: {integrity: sha512-igDBb8CTYr8YTQlOKgaN9nSS0Be7z+WRuaeYqGf3Cjz3aKmSnqEmYnkfVjzIuumGqfHpa3fLIvMEAfhrpqN8ng==} 2471 | peerDependencies: 2472 | typescript: '>=5' 2473 | peerDependenciesMeta: 2474 | typescript: 2475 | optional: true 2476 | 2477 | validate-npm-package-license@3.0.4: 2478 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 2479 | 2480 | validate-npm-package-name@5.0.1: 2481 | resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} 2482 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 2483 | 2484 | vary@1.1.2: 2485 | resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} 2486 | engines: {node: '>= 0.8'} 2487 | 2488 | vite-node@1.6.0: 2489 | resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} 2490 | engines: {node: ^18.0.0 || >=20.0.0} 2491 | hasBin: true 2492 | 2493 | vite-tsconfig-paths@5.1.3: 2494 | resolution: {integrity: sha512-0bz+PDlLpGfP2CigeSKL9NFTF1KtXkeHGZSSaGQSuPZH77GhoiQaA8IjYgOaynSuwlDTolSUEU0ErVvju3NURg==} 2495 | peerDependencies: 2496 | vite: '*' 2497 | peerDependenciesMeta: 2498 | vite: 2499 | optional: true 2500 | 2501 | vite@5.4.11: 2502 | resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} 2503 | engines: {node: ^18.0.0 || >=20.0.0} 2504 | hasBin: true 2505 | peerDependencies: 2506 | '@types/node': ^18.0.0 || >=20.0.0 2507 | less: '*' 2508 | lightningcss: ^1.21.0 2509 | sass: '*' 2510 | sass-embedded: '*' 2511 | stylus: '*' 2512 | sugarss: '*' 2513 | terser: ^5.4.0 2514 | peerDependenciesMeta: 2515 | '@types/node': 2516 | optional: true 2517 | less: 2518 | optional: true 2519 | lightningcss: 2520 | optional: true 2521 | sass: 2522 | optional: true 2523 | sass-embedded: 2524 | optional: true 2525 | stylus: 2526 | optional: true 2527 | sugarss: 2528 | optional: true 2529 | terser: 2530 | optional: true 2531 | 2532 | which@2.0.2: 2533 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2534 | engines: {node: '>= 8'} 2535 | hasBin: true 2536 | 2537 | which@3.0.1: 2538 | resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} 2539 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} 2540 | hasBin: true 2541 | 2542 | workerd@1.20241106.1: 2543 | resolution: {integrity: sha512-1GdKl0kDw8rrirr/ThcK66Kbl4/jd4h8uHx5g7YHBrnenY5SX1UPuop2cnCzYUxlg55kPjzIqqYslz1muRFgFw==} 2544 | engines: {node: '>=16'} 2545 | hasBin: true 2546 | 2547 | wrangler@3.89.0: 2548 | resolution: {integrity: sha512-ix3Rir/cu9Cn6FklvPDIW1QwOMcRU8iPj3IrkBWGdB66K9z1uqyqoTP64UZZyXrBItfrU7SbQT4L5wJ5y10TPA==} 2549 | engines: {node: '>=16.17.0'} 2550 | hasBin: true 2551 | peerDependencies: 2552 | '@cloudflare/workers-types': ^4.20241106.0 2553 | peerDependenciesMeta: 2554 | '@cloudflare/workers-types': 2555 | optional: true 2556 | 2557 | wrap-ansi@7.0.0: 2558 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2559 | engines: {node: '>=10'} 2560 | 2561 | wrap-ansi@8.1.0: 2562 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 2563 | engines: {node: '>=12'} 2564 | 2565 | wrappy@1.0.2: 2566 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2567 | 2568 | ws@8.18.0: 2569 | resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 2570 | engines: {node: '>=10.0.0'} 2571 | peerDependencies: 2572 | bufferutil: ^4.0.1 2573 | utf-8-validate: '>=5.0.2' 2574 | peerDependenciesMeta: 2575 | bufferutil: 2576 | optional: true 2577 | utf-8-validate: 2578 | optional: true 2579 | 2580 | xtend@4.0.2: 2581 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 2582 | engines: {node: '>=0.4'} 2583 | 2584 | xxhash-wasm@1.1.0: 2585 | resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} 2586 | 2587 | yallist@3.1.1: 2588 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 2589 | 2590 | yaml@2.6.1: 2591 | resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} 2592 | engines: {node: '>= 14'} 2593 | hasBin: true 2594 | 2595 | youch@3.3.4: 2596 | resolution: {integrity: sha512-UeVBXie8cA35DS6+nBkls68xaBBXCye0CNznrhszZjTbRVnJKQuNsyLKBTTL4ln1o1rh2PKtv35twV7irj5SEg==} 2597 | 2598 | zod@3.23.8: 2599 | resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} 2600 | 2601 | snapshots: 2602 | 2603 | '@alloc/quick-lru@5.2.0': {} 2604 | 2605 | '@ampproject/remapping@2.3.0': 2606 | dependencies: 2607 | '@jridgewell/gen-mapping': 0.3.5 2608 | '@jridgewell/trace-mapping': 0.3.25 2609 | 2610 | '@babel/code-frame@7.26.2': 2611 | dependencies: 2612 | '@babel/helper-validator-identifier': 7.25.9 2613 | js-tokens: 4.0.0 2614 | picocolors: 1.1.1 2615 | 2616 | '@babel/compat-data@7.26.2': {} 2617 | 2618 | '@babel/core@7.26.0': 2619 | dependencies: 2620 | '@ampproject/remapping': 2.3.0 2621 | '@babel/code-frame': 7.26.2 2622 | '@babel/generator': 7.26.2 2623 | '@babel/helper-compilation-targets': 7.25.9 2624 | '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) 2625 | '@babel/helpers': 7.26.0 2626 | '@babel/parser': 7.26.2 2627 | '@babel/template': 7.25.9 2628 | '@babel/traverse': 7.25.9 2629 | '@babel/types': 7.26.0 2630 | convert-source-map: 2.0.0 2631 | debug: 4.3.7 2632 | gensync: 1.0.0-beta.2 2633 | json5: 2.2.3 2634 | semver: 6.3.1 2635 | transitivePeerDependencies: 2636 | - supports-color 2637 | 2638 | '@babel/generator@7.26.2': 2639 | dependencies: 2640 | '@babel/parser': 7.26.2 2641 | '@babel/types': 7.26.0 2642 | '@jridgewell/gen-mapping': 0.3.5 2643 | '@jridgewell/trace-mapping': 0.3.25 2644 | jsesc: 3.0.2 2645 | 2646 | '@babel/helper-annotate-as-pure@7.25.9': 2647 | dependencies: 2648 | '@babel/types': 7.26.0 2649 | 2650 | '@babel/helper-compilation-targets@7.25.9': 2651 | dependencies: 2652 | '@babel/compat-data': 7.26.2 2653 | '@babel/helper-validator-option': 7.25.9 2654 | browserslist: 4.24.2 2655 | lru-cache: 5.1.1 2656 | semver: 6.3.1 2657 | 2658 | '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': 2659 | dependencies: 2660 | '@babel/core': 7.26.0 2661 | '@babel/helper-annotate-as-pure': 7.25.9 2662 | '@babel/helper-member-expression-to-functions': 7.25.9 2663 | '@babel/helper-optimise-call-expression': 7.25.9 2664 | '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) 2665 | '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 2666 | '@babel/traverse': 7.25.9 2667 | semver: 6.3.1 2668 | transitivePeerDependencies: 2669 | - supports-color 2670 | 2671 | '@babel/helper-member-expression-to-functions@7.25.9': 2672 | dependencies: 2673 | '@babel/traverse': 7.25.9 2674 | '@babel/types': 7.26.0 2675 | transitivePeerDependencies: 2676 | - supports-color 2677 | 2678 | '@babel/helper-module-imports@7.25.9': 2679 | dependencies: 2680 | '@babel/traverse': 7.25.9 2681 | '@babel/types': 7.26.0 2682 | transitivePeerDependencies: 2683 | - supports-color 2684 | 2685 | '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': 2686 | dependencies: 2687 | '@babel/core': 7.26.0 2688 | '@babel/helper-module-imports': 7.25.9 2689 | '@babel/helper-validator-identifier': 7.25.9 2690 | '@babel/traverse': 7.25.9 2691 | transitivePeerDependencies: 2692 | - supports-color 2693 | 2694 | '@babel/helper-optimise-call-expression@7.25.9': 2695 | dependencies: 2696 | '@babel/types': 7.26.0 2697 | 2698 | '@babel/helper-plugin-utils@7.25.9': {} 2699 | 2700 | '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': 2701 | dependencies: 2702 | '@babel/core': 7.26.0 2703 | '@babel/helper-member-expression-to-functions': 7.25.9 2704 | '@babel/helper-optimise-call-expression': 7.25.9 2705 | '@babel/traverse': 7.25.9 2706 | transitivePeerDependencies: 2707 | - supports-color 2708 | 2709 | '@babel/helper-simple-access@7.25.9': 2710 | dependencies: 2711 | '@babel/traverse': 7.25.9 2712 | '@babel/types': 7.26.0 2713 | transitivePeerDependencies: 2714 | - supports-color 2715 | 2716 | '@babel/helper-skip-transparent-expression-wrappers@7.25.9': 2717 | dependencies: 2718 | '@babel/traverse': 7.25.9 2719 | '@babel/types': 7.26.0 2720 | transitivePeerDependencies: 2721 | - supports-color 2722 | 2723 | '@babel/helper-string-parser@7.25.9': {} 2724 | 2725 | '@babel/helper-validator-identifier@7.25.9': {} 2726 | 2727 | '@babel/helper-validator-option@7.25.9': {} 2728 | 2729 | '@babel/helpers@7.26.0': 2730 | dependencies: 2731 | '@babel/template': 7.25.9 2732 | '@babel/types': 7.26.0 2733 | 2734 | '@babel/parser@7.26.2': 2735 | dependencies: 2736 | '@babel/types': 7.26.0 2737 | 2738 | '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)': 2739 | dependencies: 2740 | '@babel/core': 7.26.0 2741 | '@babel/helper-plugin-utils': 7.25.9 2742 | 2743 | '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': 2744 | dependencies: 2745 | '@babel/core': 7.26.0 2746 | '@babel/helper-plugin-utils': 7.25.9 2747 | 2748 | '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': 2749 | dependencies: 2750 | '@babel/core': 7.26.0 2751 | '@babel/helper-plugin-utils': 7.25.9 2752 | 2753 | '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)': 2754 | dependencies: 2755 | '@babel/core': 7.26.0 2756 | '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) 2757 | '@babel/helper-plugin-utils': 7.25.9 2758 | '@babel/helper-simple-access': 7.25.9 2759 | transitivePeerDependencies: 2760 | - supports-color 2761 | 2762 | '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)': 2763 | dependencies: 2764 | '@babel/core': 7.26.0 2765 | '@babel/helper-annotate-as-pure': 7.25.9 2766 | '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) 2767 | '@babel/helper-plugin-utils': 7.25.9 2768 | '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 2769 | '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) 2770 | transitivePeerDependencies: 2771 | - supports-color 2772 | 2773 | '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': 2774 | dependencies: 2775 | '@babel/core': 7.26.0 2776 | '@babel/helper-plugin-utils': 7.25.9 2777 | '@babel/helper-validator-option': 7.25.9 2778 | '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) 2779 | '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) 2780 | '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) 2781 | transitivePeerDependencies: 2782 | - supports-color 2783 | 2784 | '@babel/template@7.25.9': 2785 | dependencies: 2786 | '@babel/code-frame': 7.26.2 2787 | '@babel/parser': 7.26.2 2788 | '@babel/types': 7.26.0 2789 | 2790 | '@babel/traverse@7.25.9': 2791 | dependencies: 2792 | '@babel/code-frame': 7.26.2 2793 | '@babel/generator': 7.26.2 2794 | '@babel/parser': 7.26.2 2795 | '@babel/template': 7.25.9 2796 | '@babel/types': 7.26.0 2797 | debug: 4.3.7 2798 | globals: 11.12.0 2799 | transitivePeerDependencies: 2800 | - supports-color 2801 | 2802 | '@babel/types@7.26.0': 2803 | dependencies: 2804 | '@babel/helper-string-parser': 7.25.9 2805 | '@babel/helper-validator-identifier': 7.25.9 2806 | 2807 | '@cloudflare/kv-asset-handler@0.3.4': 2808 | dependencies: 2809 | mime: 3.0.0 2810 | 2811 | '@cloudflare/workerd-darwin-64@1.20241106.1': 2812 | optional: true 2813 | 2814 | '@cloudflare/workerd-darwin-arm64@1.20241106.1': 2815 | optional: true 2816 | 2817 | '@cloudflare/workerd-linux-64@1.20241106.1': 2818 | optional: true 2819 | 2820 | '@cloudflare/workerd-linux-arm64@1.20241106.1': 2821 | optional: true 2822 | 2823 | '@cloudflare/workerd-windows-64@1.20241106.1': 2824 | optional: true 2825 | 2826 | '@cloudflare/workers-shared@0.7.1': 2827 | dependencies: 2828 | mime: 3.0.0 2829 | zod: 3.23.8 2830 | 2831 | '@cloudflare/workers-types@4.20241112.0': {} 2832 | 2833 | '@conform-to/dom@1.2.2': {} 2834 | 2835 | '@conform-to/react@1.2.2(react@18.3.1)': 2836 | dependencies: 2837 | '@conform-to/dom': 1.2.2 2838 | react: 18.3.1 2839 | 2840 | '@conform-to/zod@1.2.2(zod@3.23.8)': 2841 | dependencies: 2842 | '@conform-to/dom': 1.2.2 2843 | zod: 3.23.8 2844 | 2845 | '@cspotcode/source-map-support@0.8.1': 2846 | dependencies: 2847 | '@jridgewell/trace-mapping': 0.3.9 2848 | 2849 | '@drizzle-team/brocli@0.10.2': {} 2850 | 2851 | '@esbuild-kit/core-utils@3.3.2': 2852 | dependencies: 2853 | esbuild: 0.18.20 2854 | source-map-support: 0.5.21 2855 | 2856 | '@esbuild-kit/esm-loader@2.6.5': 2857 | dependencies: 2858 | '@esbuild-kit/core-utils': 3.3.2 2859 | get-tsconfig: 4.8.1 2860 | 2861 | '@esbuild-plugins/node-globals-polyfill@0.2.3(esbuild@0.17.19)': 2862 | dependencies: 2863 | esbuild: 0.17.19 2864 | 2865 | '@esbuild-plugins/node-modules-polyfill@0.2.2(esbuild@0.17.19)': 2866 | dependencies: 2867 | esbuild: 0.17.19 2868 | escape-string-regexp: 4.0.0 2869 | rollup-plugin-node-polyfills: 0.2.1 2870 | 2871 | '@esbuild/aix-ppc64@0.19.12': 2872 | optional: true 2873 | 2874 | '@esbuild/aix-ppc64@0.21.5': 2875 | optional: true 2876 | 2877 | '@esbuild/android-arm64@0.17.19': 2878 | optional: true 2879 | 2880 | '@esbuild/android-arm64@0.18.20': 2881 | optional: true 2882 | 2883 | '@esbuild/android-arm64@0.19.12': 2884 | optional: true 2885 | 2886 | '@esbuild/android-arm64@0.21.5': 2887 | optional: true 2888 | 2889 | '@esbuild/android-arm@0.17.19': 2890 | optional: true 2891 | 2892 | '@esbuild/android-arm@0.18.20': 2893 | optional: true 2894 | 2895 | '@esbuild/android-arm@0.19.12': 2896 | optional: true 2897 | 2898 | '@esbuild/android-arm@0.21.5': 2899 | optional: true 2900 | 2901 | '@esbuild/android-x64@0.17.19': 2902 | optional: true 2903 | 2904 | '@esbuild/android-x64@0.18.20': 2905 | optional: true 2906 | 2907 | '@esbuild/android-x64@0.19.12': 2908 | optional: true 2909 | 2910 | '@esbuild/android-x64@0.21.5': 2911 | optional: true 2912 | 2913 | '@esbuild/darwin-arm64@0.17.19': 2914 | optional: true 2915 | 2916 | '@esbuild/darwin-arm64@0.18.20': 2917 | optional: true 2918 | 2919 | '@esbuild/darwin-arm64@0.19.12': 2920 | optional: true 2921 | 2922 | '@esbuild/darwin-arm64@0.21.5': 2923 | optional: true 2924 | 2925 | '@esbuild/darwin-x64@0.17.19': 2926 | optional: true 2927 | 2928 | '@esbuild/darwin-x64@0.18.20': 2929 | optional: true 2930 | 2931 | '@esbuild/darwin-x64@0.19.12': 2932 | optional: true 2933 | 2934 | '@esbuild/darwin-x64@0.21.5': 2935 | optional: true 2936 | 2937 | '@esbuild/freebsd-arm64@0.17.19': 2938 | optional: true 2939 | 2940 | '@esbuild/freebsd-arm64@0.18.20': 2941 | optional: true 2942 | 2943 | '@esbuild/freebsd-arm64@0.19.12': 2944 | optional: true 2945 | 2946 | '@esbuild/freebsd-arm64@0.21.5': 2947 | optional: true 2948 | 2949 | '@esbuild/freebsd-x64@0.17.19': 2950 | optional: true 2951 | 2952 | '@esbuild/freebsd-x64@0.18.20': 2953 | optional: true 2954 | 2955 | '@esbuild/freebsd-x64@0.19.12': 2956 | optional: true 2957 | 2958 | '@esbuild/freebsd-x64@0.21.5': 2959 | optional: true 2960 | 2961 | '@esbuild/linux-arm64@0.17.19': 2962 | optional: true 2963 | 2964 | '@esbuild/linux-arm64@0.18.20': 2965 | optional: true 2966 | 2967 | '@esbuild/linux-arm64@0.19.12': 2968 | optional: true 2969 | 2970 | '@esbuild/linux-arm64@0.21.5': 2971 | optional: true 2972 | 2973 | '@esbuild/linux-arm@0.17.19': 2974 | optional: true 2975 | 2976 | '@esbuild/linux-arm@0.18.20': 2977 | optional: true 2978 | 2979 | '@esbuild/linux-arm@0.19.12': 2980 | optional: true 2981 | 2982 | '@esbuild/linux-arm@0.21.5': 2983 | optional: true 2984 | 2985 | '@esbuild/linux-ia32@0.17.19': 2986 | optional: true 2987 | 2988 | '@esbuild/linux-ia32@0.18.20': 2989 | optional: true 2990 | 2991 | '@esbuild/linux-ia32@0.19.12': 2992 | optional: true 2993 | 2994 | '@esbuild/linux-ia32@0.21.5': 2995 | optional: true 2996 | 2997 | '@esbuild/linux-loong64@0.17.19': 2998 | optional: true 2999 | 3000 | '@esbuild/linux-loong64@0.18.20': 3001 | optional: true 3002 | 3003 | '@esbuild/linux-loong64@0.19.12': 3004 | optional: true 3005 | 3006 | '@esbuild/linux-loong64@0.21.5': 3007 | optional: true 3008 | 3009 | '@esbuild/linux-mips64el@0.17.19': 3010 | optional: true 3011 | 3012 | '@esbuild/linux-mips64el@0.18.20': 3013 | optional: true 3014 | 3015 | '@esbuild/linux-mips64el@0.19.12': 3016 | optional: true 3017 | 3018 | '@esbuild/linux-mips64el@0.21.5': 3019 | optional: true 3020 | 3021 | '@esbuild/linux-ppc64@0.17.19': 3022 | optional: true 3023 | 3024 | '@esbuild/linux-ppc64@0.18.20': 3025 | optional: true 3026 | 3027 | '@esbuild/linux-ppc64@0.19.12': 3028 | optional: true 3029 | 3030 | '@esbuild/linux-ppc64@0.21.5': 3031 | optional: true 3032 | 3033 | '@esbuild/linux-riscv64@0.17.19': 3034 | optional: true 3035 | 3036 | '@esbuild/linux-riscv64@0.18.20': 3037 | optional: true 3038 | 3039 | '@esbuild/linux-riscv64@0.19.12': 3040 | optional: true 3041 | 3042 | '@esbuild/linux-riscv64@0.21.5': 3043 | optional: true 3044 | 3045 | '@esbuild/linux-s390x@0.17.19': 3046 | optional: true 3047 | 3048 | '@esbuild/linux-s390x@0.18.20': 3049 | optional: true 3050 | 3051 | '@esbuild/linux-s390x@0.19.12': 3052 | optional: true 3053 | 3054 | '@esbuild/linux-s390x@0.21.5': 3055 | optional: true 3056 | 3057 | '@esbuild/linux-x64@0.17.19': 3058 | optional: true 3059 | 3060 | '@esbuild/linux-x64@0.18.20': 3061 | optional: true 3062 | 3063 | '@esbuild/linux-x64@0.19.12': 3064 | optional: true 3065 | 3066 | '@esbuild/linux-x64@0.21.5': 3067 | optional: true 3068 | 3069 | '@esbuild/netbsd-x64@0.17.19': 3070 | optional: true 3071 | 3072 | '@esbuild/netbsd-x64@0.18.20': 3073 | optional: true 3074 | 3075 | '@esbuild/netbsd-x64@0.19.12': 3076 | optional: true 3077 | 3078 | '@esbuild/netbsd-x64@0.21.5': 3079 | optional: true 3080 | 3081 | '@esbuild/openbsd-x64@0.17.19': 3082 | optional: true 3083 | 3084 | '@esbuild/openbsd-x64@0.18.20': 3085 | optional: true 3086 | 3087 | '@esbuild/openbsd-x64@0.19.12': 3088 | optional: true 3089 | 3090 | '@esbuild/openbsd-x64@0.21.5': 3091 | optional: true 3092 | 3093 | '@esbuild/sunos-x64@0.17.19': 3094 | optional: true 3095 | 3096 | '@esbuild/sunos-x64@0.18.20': 3097 | optional: true 3098 | 3099 | '@esbuild/sunos-x64@0.19.12': 3100 | optional: true 3101 | 3102 | '@esbuild/sunos-x64@0.21.5': 3103 | optional: true 3104 | 3105 | '@esbuild/win32-arm64@0.17.19': 3106 | optional: true 3107 | 3108 | '@esbuild/win32-arm64@0.18.20': 3109 | optional: true 3110 | 3111 | '@esbuild/win32-arm64@0.19.12': 3112 | optional: true 3113 | 3114 | '@esbuild/win32-arm64@0.21.5': 3115 | optional: true 3116 | 3117 | '@esbuild/win32-ia32@0.17.19': 3118 | optional: true 3119 | 3120 | '@esbuild/win32-ia32@0.18.20': 3121 | optional: true 3122 | 3123 | '@esbuild/win32-ia32@0.19.12': 3124 | optional: true 3125 | 3126 | '@esbuild/win32-ia32@0.21.5': 3127 | optional: true 3128 | 3129 | '@esbuild/win32-x64@0.17.19': 3130 | optional: true 3131 | 3132 | '@esbuild/win32-x64@0.18.20': 3133 | optional: true 3134 | 3135 | '@esbuild/win32-x64@0.19.12': 3136 | optional: true 3137 | 3138 | '@esbuild/win32-x64@0.21.5': 3139 | optional: true 3140 | 3141 | '@fastify/busboy@2.1.1': {} 3142 | 3143 | '@hattip/adapter-node@0.0.44': 3144 | dependencies: 3145 | '@hattip/core': 0.0.44 3146 | '@hattip/polyfills': 0.0.44 3147 | '@hattip/walk': 0.0.44 3148 | 3149 | '@hattip/compose@0.0.44': 3150 | dependencies: 3151 | '@hattip/core': 0.0.44 3152 | 3153 | '@hattip/core@0.0.44': {} 3154 | 3155 | '@hattip/headers@0.0.44': 3156 | dependencies: 3157 | '@hattip/core': 0.0.44 3158 | 3159 | '@hattip/polyfills@0.0.44': 3160 | dependencies: 3161 | '@hattip/core': 0.0.44 3162 | '@whatwg-node/fetch': 0.9.23 3163 | node-fetch-native: 1.6.4 3164 | 3165 | '@hattip/walk@0.0.44': 3166 | dependencies: 3167 | '@hattip/headers': 0.0.44 3168 | cac: 6.7.14 3169 | mime-types: 2.1.35 3170 | 3171 | '@hiogawa/vite-node-miniflare@0.1.1(vite@5.4.11(@types/node@20.17.6))': 3172 | dependencies: 3173 | '@hattip/adapter-node': 0.0.44 3174 | '@hattip/compose': 0.0.44 3175 | miniflare: 3.20241106.1 3176 | vite: 5.4.11(@types/node@20.17.6) 3177 | transitivePeerDependencies: 3178 | - bufferutil 3179 | - supports-color 3180 | - utf-8-validate 3181 | 3182 | '@isaacs/cliui@8.0.2': 3183 | dependencies: 3184 | string-width: 5.1.2 3185 | string-width-cjs: string-width@4.2.3 3186 | strip-ansi: 7.1.0 3187 | strip-ansi-cjs: strip-ansi@6.0.1 3188 | wrap-ansi: 8.1.0 3189 | wrap-ansi-cjs: wrap-ansi@7.0.0 3190 | 3191 | '@jridgewell/gen-mapping@0.3.5': 3192 | dependencies: 3193 | '@jridgewell/set-array': 1.2.1 3194 | '@jridgewell/sourcemap-codec': 1.5.0 3195 | '@jridgewell/trace-mapping': 0.3.25 3196 | 3197 | '@jridgewell/resolve-uri@3.1.2': {} 3198 | 3199 | '@jridgewell/set-array@1.2.1': {} 3200 | 3201 | '@jridgewell/sourcemap-codec@1.5.0': {} 3202 | 3203 | '@jridgewell/trace-mapping@0.3.25': 3204 | dependencies: 3205 | '@jridgewell/resolve-uri': 3.1.2 3206 | '@jridgewell/sourcemap-codec': 1.5.0 3207 | 3208 | '@jridgewell/trace-mapping@0.3.9': 3209 | dependencies: 3210 | '@jridgewell/resolve-uri': 3.1.2 3211 | '@jridgewell/sourcemap-codec': 1.5.0 3212 | 3213 | '@kamilkisiela/fast-url-parser@1.1.4': {} 3214 | 3215 | '@mjackson/node-fetch-server@0.2.0': {} 3216 | 3217 | '@nodelib/fs.scandir@2.1.5': 3218 | dependencies: 3219 | '@nodelib/fs.stat': 2.0.5 3220 | run-parallel: 1.2.0 3221 | 3222 | '@nodelib/fs.stat@2.0.5': {} 3223 | 3224 | '@nodelib/fs.walk@1.2.8': 3225 | dependencies: 3226 | '@nodelib/fs.scandir': 2.1.5 3227 | fastq: 1.17.1 3228 | 3229 | '@npmcli/git@4.1.0': 3230 | dependencies: 3231 | '@npmcli/promise-spawn': 6.0.2 3232 | lru-cache: 7.18.3 3233 | npm-pick-manifest: 8.0.2 3234 | proc-log: 3.0.0 3235 | promise-inflight: 1.0.1 3236 | promise-retry: 2.0.1 3237 | semver: 7.6.3 3238 | which: 3.0.1 3239 | transitivePeerDependencies: 3240 | - bluebird 3241 | 3242 | '@npmcli/package-json@4.0.1': 3243 | dependencies: 3244 | '@npmcli/git': 4.1.0 3245 | glob: 10.4.5 3246 | hosted-git-info: 6.1.3 3247 | json-parse-even-better-errors: 3.0.2 3248 | normalize-package-data: 5.0.0 3249 | proc-log: 3.0.0 3250 | semver: 7.6.3 3251 | transitivePeerDependencies: 3252 | - bluebird 3253 | 3254 | '@npmcli/promise-spawn@6.0.2': 3255 | dependencies: 3256 | which: 3.0.1 3257 | 3258 | '@pkgjs/parseargs@0.11.0': 3259 | optional: true 3260 | 3261 | '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.12)(react@18.3.1)': 3262 | dependencies: 3263 | react: 18.3.1 3264 | optionalDependencies: 3265 | '@types/react': 18.3.12 3266 | 3267 | '@radix-ui/react-label@2.1.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 3268 | dependencies: 3269 | '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 3270 | react: 18.3.1 3271 | react-dom: 18.3.1(react@18.3.1) 3272 | optionalDependencies: 3273 | '@types/react': 18.3.12 3274 | '@types/react-dom': 18.3.1 3275 | 3276 | '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': 3277 | dependencies: 3278 | '@radix-ui/react-slot': 1.1.0(@types/react@18.3.12)(react@18.3.1) 3279 | react: 18.3.1 3280 | react-dom: 18.3.1(react@18.3.1) 3281 | optionalDependencies: 3282 | '@types/react': 18.3.12 3283 | '@types/react-dom': 18.3.1 3284 | 3285 | '@radix-ui/react-slot@1.1.0(@types/react@18.3.12)(react@18.3.1)': 3286 | dependencies: 3287 | '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.12)(react@18.3.1) 3288 | react: 18.3.1 3289 | optionalDependencies: 3290 | '@types/react': 18.3.12 3291 | 3292 | '@react-router/dev@7.0.0(@react-router/serve@7.0.0(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3))(@types/node@20.17.6)(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)(vite@5.4.11(@types/node@20.17.6))(wrangler@3.89.0(@cloudflare/workers-types@4.20241112.0))': 3293 | dependencies: 3294 | '@babel/core': 7.26.0 3295 | '@babel/generator': 7.26.2 3296 | '@babel/parser': 7.26.2 3297 | '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) 3298 | '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) 3299 | '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) 3300 | '@babel/traverse': 7.25.9 3301 | '@babel/types': 7.26.0 3302 | '@npmcli/package-json': 4.0.1 3303 | '@react-router/node': 7.0.0(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) 3304 | arg: 5.0.2 3305 | babel-dead-code-elimination: 1.0.6 3306 | chokidar: 4.0.1 3307 | dedent: 1.5.3 3308 | es-module-lexer: 1.5.4 3309 | exit-hook: 2.2.1 3310 | fs-extra: 10.1.0 3311 | gunzip-maybe: 1.4.2 3312 | jsesc: 3.0.2 3313 | lodash: 4.17.21 3314 | pathe: 1.1.2 3315 | picocolors: 1.1.1 3316 | picomatch: 2.3.1 3317 | prettier: 2.8.8 3318 | react-refresh: 0.14.2 3319 | react-router: 7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 3320 | semver: 7.6.3 3321 | set-cookie-parser: 2.7.1 3322 | valibot: 0.41.0(typescript@5.6.3) 3323 | vite: 5.4.11(@types/node@20.17.6) 3324 | vite-node: 1.6.0(@types/node@20.17.6) 3325 | optionalDependencies: 3326 | '@react-router/serve': 7.0.0(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) 3327 | typescript: 5.6.3 3328 | wrangler: 3.89.0(@cloudflare/workers-types@4.20241112.0) 3329 | transitivePeerDependencies: 3330 | - '@types/node' 3331 | - babel-plugin-macros 3332 | - bluebird 3333 | - less 3334 | - lightningcss 3335 | - sass 3336 | - sass-embedded 3337 | - stylus 3338 | - sugarss 3339 | - supports-color 3340 | - terser 3341 | 3342 | '@react-router/express@7.0.0(express@4.21.1)(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)': 3343 | dependencies: 3344 | '@react-router/node': 7.0.0(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) 3345 | express: 4.21.1 3346 | react-router: 7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 3347 | optionalDependencies: 3348 | typescript: 5.6.3 3349 | 3350 | '@react-router/node@7.0.0(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)': 3351 | dependencies: 3352 | '@mjackson/node-fetch-server': 0.2.0 3353 | react-router: 7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 3354 | source-map-support: 0.5.21 3355 | stream-slice: 0.1.2 3356 | undici: 6.21.0 3357 | optionalDependencies: 3358 | typescript: 5.6.3 3359 | 3360 | '@react-router/serve@7.0.0(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3)': 3361 | dependencies: 3362 | '@react-router/express': 7.0.0(express@4.21.1)(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) 3363 | '@react-router/node': 7.0.0(react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.6.3) 3364 | compression: 1.7.5 3365 | express: 4.21.1 3366 | get-port: 5.1.1 3367 | morgan: 1.10.0 3368 | react-router: 7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) 3369 | source-map-support: 0.5.21 3370 | transitivePeerDependencies: 3371 | - supports-color 3372 | - typescript 3373 | 3374 | '@rollup/rollup-android-arm-eabi@4.27.3': 3375 | optional: true 3376 | 3377 | '@rollup/rollup-android-arm64@4.27.3': 3378 | optional: true 3379 | 3380 | '@rollup/rollup-darwin-arm64@4.27.3': 3381 | optional: true 3382 | 3383 | '@rollup/rollup-darwin-x64@4.27.3': 3384 | optional: true 3385 | 3386 | '@rollup/rollup-freebsd-arm64@4.27.3': 3387 | optional: true 3388 | 3389 | '@rollup/rollup-freebsd-x64@4.27.3': 3390 | optional: true 3391 | 3392 | '@rollup/rollup-linux-arm-gnueabihf@4.27.3': 3393 | optional: true 3394 | 3395 | '@rollup/rollup-linux-arm-musleabihf@4.27.3': 3396 | optional: true 3397 | 3398 | '@rollup/rollup-linux-arm64-gnu@4.27.3': 3399 | optional: true 3400 | 3401 | '@rollup/rollup-linux-arm64-musl@4.27.3': 3402 | optional: true 3403 | 3404 | '@rollup/rollup-linux-powerpc64le-gnu@4.27.3': 3405 | optional: true 3406 | 3407 | '@rollup/rollup-linux-riscv64-gnu@4.27.3': 3408 | optional: true 3409 | 3410 | '@rollup/rollup-linux-s390x-gnu@4.27.3': 3411 | optional: true 3412 | 3413 | '@rollup/rollup-linux-x64-gnu@4.27.3': 3414 | optional: true 3415 | 3416 | '@rollup/rollup-linux-x64-musl@4.27.3': 3417 | optional: true 3418 | 3419 | '@rollup/rollup-win32-arm64-msvc@4.27.3': 3420 | optional: true 3421 | 3422 | '@rollup/rollup-win32-ia32-msvc@4.27.3': 3423 | optional: true 3424 | 3425 | '@rollup/rollup-win32-x64-msvc@4.27.3': 3426 | optional: true 3427 | 3428 | '@types/cookie@0.6.0': {} 3429 | 3430 | '@types/estree@1.0.6': {} 3431 | 3432 | '@types/node-forge@1.3.11': 3433 | dependencies: 3434 | '@types/node': 20.17.6 3435 | 3436 | '@types/node@20.17.6': 3437 | dependencies: 3438 | undici-types: 6.19.8 3439 | 3440 | '@types/prop-types@15.7.13': {} 3441 | 3442 | '@types/react-dom@18.3.1': 3443 | dependencies: 3444 | '@types/react': 18.3.12 3445 | 3446 | '@types/react@18.3.12': 3447 | dependencies: 3448 | '@types/prop-types': 15.7.13 3449 | csstype: 3.1.3 3450 | 3451 | '@whatwg-node/fetch@0.9.23': 3452 | dependencies: 3453 | '@whatwg-node/node-fetch': 0.6.0 3454 | urlpattern-polyfill: 10.0.0 3455 | 3456 | '@whatwg-node/node-fetch@0.6.0': 3457 | dependencies: 3458 | '@kamilkisiela/fast-url-parser': 1.1.4 3459 | busboy: 1.6.0 3460 | fast-querystring: 1.1.2 3461 | tslib: 2.8.1 3462 | 3463 | accepts@1.3.8: 3464 | dependencies: 3465 | mime-types: 2.1.35 3466 | negotiator: 0.6.3 3467 | 3468 | acorn-walk@8.3.4: 3469 | dependencies: 3470 | acorn: 8.14.0 3471 | 3472 | acorn@8.14.0: {} 3473 | 3474 | ansi-regex@5.0.1: {} 3475 | 3476 | ansi-regex@6.1.0: {} 3477 | 3478 | ansi-styles@4.3.0: 3479 | dependencies: 3480 | color-convert: 2.0.1 3481 | 3482 | ansi-styles@6.2.1: {} 3483 | 3484 | any-promise@1.3.0: {} 3485 | 3486 | anymatch@3.1.3: 3487 | dependencies: 3488 | normalize-path: 3.0.0 3489 | picomatch: 2.3.1 3490 | 3491 | arg@5.0.2: {} 3492 | 3493 | array-flatten@1.1.1: {} 3494 | 3495 | as-table@1.0.55: 3496 | dependencies: 3497 | printable-characters: 1.0.42 3498 | 3499 | autoprefixer@10.4.20(postcss@8.4.49): 3500 | dependencies: 3501 | browserslist: 4.24.2 3502 | caniuse-lite: 1.0.30001683 3503 | fraction.js: 4.3.7 3504 | normalize-range: 0.1.2 3505 | picocolors: 1.1.1 3506 | postcss: 8.4.49 3507 | postcss-value-parser: 4.2.0 3508 | 3509 | babel-dead-code-elimination@1.0.6: 3510 | dependencies: 3511 | '@babel/core': 7.26.0 3512 | '@babel/parser': 7.26.2 3513 | '@babel/traverse': 7.25.9 3514 | '@babel/types': 7.26.0 3515 | transitivePeerDependencies: 3516 | - supports-color 3517 | 3518 | balanced-match@1.0.2: {} 3519 | 3520 | basic-auth@2.0.1: 3521 | dependencies: 3522 | safe-buffer: 5.1.2 3523 | 3524 | bcrypt-edge@0.1.0: {} 3525 | 3526 | binary-extensions@2.3.0: {} 3527 | 3528 | blake3-wasm@2.1.5: {} 3529 | 3530 | body-parser@1.20.3: 3531 | dependencies: 3532 | bytes: 3.1.2 3533 | content-type: 1.0.5 3534 | debug: 2.6.9 3535 | depd: 2.0.0 3536 | destroy: 1.2.0 3537 | http-errors: 2.0.0 3538 | iconv-lite: 0.4.24 3539 | on-finished: 2.4.1 3540 | qs: 6.13.0 3541 | raw-body: 2.5.2 3542 | type-is: 1.6.18 3543 | unpipe: 1.0.0 3544 | transitivePeerDependencies: 3545 | - supports-color 3546 | 3547 | brace-expansion@2.0.1: 3548 | dependencies: 3549 | balanced-match: 1.0.2 3550 | 3551 | braces@3.0.3: 3552 | dependencies: 3553 | fill-range: 7.1.1 3554 | 3555 | browserify-zlib@0.1.4: 3556 | dependencies: 3557 | pako: 0.2.9 3558 | 3559 | browserslist@4.24.2: 3560 | dependencies: 3561 | caniuse-lite: 1.0.30001683 3562 | electron-to-chromium: 1.5.64 3563 | node-releases: 2.0.18 3564 | update-browserslist-db: 1.1.1(browserslist@4.24.2) 3565 | 3566 | buffer-from@1.1.2: {} 3567 | 3568 | busboy@1.6.0: 3569 | dependencies: 3570 | streamsearch: 1.1.0 3571 | 3572 | bytes@3.1.2: {} 3573 | 3574 | cac@6.7.14: {} 3575 | 3576 | call-bind@1.0.7: 3577 | dependencies: 3578 | es-define-property: 1.0.0 3579 | es-errors: 1.3.0 3580 | function-bind: 1.1.2 3581 | get-intrinsic: 1.2.4 3582 | set-function-length: 1.2.2 3583 | 3584 | camelcase-css@2.0.1: {} 3585 | 3586 | caniuse-lite@1.0.30001683: {} 3587 | 3588 | capnp-ts@0.7.0: 3589 | dependencies: 3590 | debug: 4.3.7 3591 | tslib: 2.8.1 3592 | transitivePeerDependencies: 3593 | - supports-color 3594 | 3595 | chokidar@3.6.0: 3596 | dependencies: 3597 | anymatch: 3.1.3 3598 | braces: 3.0.3 3599 | glob-parent: 5.1.2 3600 | is-binary-path: 2.1.0 3601 | is-glob: 4.0.3 3602 | normalize-path: 3.0.0 3603 | readdirp: 3.6.0 3604 | optionalDependencies: 3605 | fsevents: 2.3.3 3606 | 3607 | chokidar@4.0.1: 3608 | dependencies: 3609 | readdirp: 4.0.2 3610 | 3611 | class-variance-authority@0.7.0: 3612 | dependencies: 3613 | clsx: 2.0.0 3614 | 3615 | clsx@2.0.0: {} 3616 | 3617 | clsx@2.1.1: {} 3618 | 3619 | color-convert@2.0.1: 3620 | dependencies: 3621 | color-name: 1.1.4 3622 | 3623 | color-name@1.1.4: {} 3624 | 3625 | commander@4.1.1: {} 3626 | 3627 | compressible@2.0.18: 3628 | dependencies: 3629 | mime-db: 1.53.0 3630 | 3631 | compression@1.7.5: 3632 | dependencies: 3633 | bytes: 3.1.2 3634 | compressible: 2.0.18 3635 | debug: 2.6.9 3636 | negotiator: 0.6.4 3637 | on-headers: 1.0.2 3638 | safe-buffer: 5.2.1 3639 | vary: 1.1.2 3640 | transitivePeerDependencies: 3641 | - supports-color 3642 | 3643 | content-disposition@0.5.4: 3644 | dependencies: 3645 | safe-buffer: 5.2.1 3646 | 3647 | content-type@1.0.5: {} 3648 | 3649 | convert-source-map@2.0.0: {} 3650 | 3651 | cookie-signature@1.0.6: {} 3652 | 3653 | cookie@0.7.1: {} 3654 | 3655 | cookie@0.7.2: {} 3656 | 3657 | cookie@1.0.2: {} 3658 | 3659 | core-util-is@1.0.3: {} 3660 | 3661 | cross-spawn@7.0.6: 3662 | dependencies: 3663 | path-key: 3.1.1 3664 | shebang-command: 2.0.0 3665 | which: 2.0.2 3666 | 3667 | cssesc@3.0.0: {} 3668 | 3669 | csstype@3.1.3: {} 3670 | 3671 | data-uri-to-buffer@2.0.2: {} 3672 | 3673 | date-fns@4.1.0: {} 3674 | 3675 | debug@2.6.9: 3676 | dependencies: 3677 | ms: 2.0.0 3678 | 3679 | debug@4.3.7: 3680 | dependencies: 3681 | ms: 2.1.3 3682 | 3683 | dedent@1.5.3: {} 3684 | 3685 | define-data-property@1.1.4: 3686 | dependencies: 3687 | es-define-property: 1.0.0 3688 | es-errors: 1.3.0 3689 | gopd: 1.0.1 3690 | 3691 | defu@6.1.4: {} 3692 | 3693 | depd@2.0.0: {} 3694 | 3695 | destroy@1.2.0: {} 3696 | 3697 | didyoumean@1.2.2: {} 3698 | 3699 | dlv@1.1.3: {} 3700 | 3701 | dotenv-cli@7.4.4: 3702 | dependencies: 3703 | cross-spawn: 7.0.6 3704 | dotenv: 16.4.5 3705 | dotenv-expand: 10.0.0 3706 | minimist: 1.2.8 3707 | 3708 | dotenv-expand@10.0.0: {} 3709 | 3710 | dotenv@16.4.5: {} 3711 | 3712 | drizzle-kit@0.28.1: 3713 | dependencies: 3714 | '@drizzle-team/brocli': 0.10.2 3715 | '@esbuild-kit/esm-loader': 2.6.5 3716 | esbuild: 0.19.12 3717 | esbuild-register: 3.6.0(esbuild@0.19.12) 3718 | transitivePeerDependencies: 3719 | - supports-color 3720 | 3721 | drizzle-orm@0.36.3(@cloudflare/workers-types@4.20241112.0)(@types/react@18.3.12)(react@18.3.1): 3722 | optionalDependencies: 3723 | '@cloudflare/workers-types': 4.20241112.0 3724 | '@types/react': 18.3.12 3725 | react: 18.3.1 3726 | 3727 | duplexify@3.7.1: 3728 | dependencies: 3729 | end-of-stream: 1.4.4 3730 | inherits: 2.0.4 3731 | readable-stream: 2.3.8 3732 | stream-shift: 1.0.3 3733 | 3734 | eastasianwidth@0.2.0: {} 3735 | 3736 | ee-first@1.1.1: {} 3737 | 3738 | electron-to-chromium@1.5.64: {} 3739 | 3740 | emoji-regex@8.0.0: {} 3741 | 3742 | emoji-regex@9.2.2: {} 3743 | 3744 | encodeurl@1.0.2: {} 3745 | 3746 | encodeurl@2.0.0: {} 3747 | 3748 | end-of-stream@1.4.4: 3749 | dependencies: 3750 | once: 1.4.0 3751 | 3752 | err-code@2.0.3: {} 3753 | 3754 | es-define-property@1.0.0: 3755 | dependencies: 3756 | get-intrinsic: 1.2.4 3757 | 3758 | es-errors@1.3.0: {} 3759 | 3760 | es-module-lexer@1.5.4: {} 3761 | 3762 | esbuild-register@3.6.0(esbuild@0.19.12): 3763 | dependencies: 3764 | debug: 4.3.7 3765 | esbuild: 0.19.12 3766 | transitivePeerDependencies: 3767 | - supports-color 3768 | 3769 | esbuild@0.17.19: 3770 | optionalDependencies: 3771 | '@esbuild/android-arm': 0.17.19 3772 | '@esbuild/android-arm64': 0.17.19 3773 | '@esbuild/android-x64': 0.17.19 3774 | '@esbuild/darwin-arm64': 0.17.19 3775 | '@esbuild/darwin-x64': 0.17.19 3776 | '@esbuild/freebsd-arm64': 0.17.19 3777 | '@esbuild/freebsd-x64': 0.17.19 3778 | '@esbuild/linux-arm': 0.17.19 3779 | '@esbuild/linux-arm64': 0.17.19 3780 | '@esbuild/linux-ia32': 0.17.19 3781 | '@esbuild/linux-loong64': 0.17.19 3782 | '@esbuild/linux-mips64el': 0.17.19 3783 | '@esbuild/linux-ppc64': 0.17.19 3784 | '@esbuild/linux-riscv64': 0.17.19 3785 | '@esbuild/linux-s390x': 0.17.19 3786 | '@esbuild/linux-x64': 0.17.19 3787 | '@esbuild/netbsd-x64': 0.17.19 3788 | '@esbuild/openbsd-x64': 0.17.19 3789 | '@esbuild/sunos-x64': 0.17.19 3790 | '@esbuild/win32-arm64': 0.17.19 3791 | '@esbuild/win32-ia32': 0.17.19 3792 | '@esbuild/win32-x64': 0.17.19 3793 | 3794 | esbuild@0.18.20: 3795 | optionalDependencies: 3796 | '@esbuild/android-arm': 0.18.20 3797 | '@esbuild/android-arm64': 0.18.20 3798 | '@esbuild/android-x64': 0.18.20 3799 | '@esbuild/darwin-arm64': 0.18.20 3800 | '@esbuild/darwin-x64': 0.18.20 3801 | '@esbuild/freebsd-arm64': 0.18.20 3802 | '@esbuild/freebsd-x64': 0.18.20 3803 | '@esbuild/linux-arm': 0.18.20 3804 | '@esbuild/linux-arm64': 0.18.20 3805 | '@esbuild/linux-ia32': 0.18.20 3806 | '@esbuild/linux-loong64': 0.18.20 3807 | '@esbuild/linux-mips64el': 0.18.20 3808 | '@esbuild/linux-ppc64': 0.18.20 3809 | '@esbuild/linux-riscv64': 0.18.20 3810 | '@esbuild/linux-s390x': 0.18.20 3811 | '@esbuild/linux-x64': 0.18.20 3812 | '@esbuild/netbsd-x64': 0.18.20 3813 | '@esbuild/openbsd-x64': 0.18.20 3814 | '@esbuild/sunos-x64': 0.18.20 3815 | '@esbuild/win32-arm64': 0.18.20 3816 | '@esbuild/win32-ia32': 0.18.20 3817 | '@esbuild/win32-x64': 0.18.20 3818 | 3819 | esbuild@0.19.12: 3820 | optionalDependencies: 3821 | '@esbuild/aix-ppc64': 0.19.12 3822 | '@esbuild/android-arm': 0.19.12 3823 | '@esbuild/android-arm64': 0.19.12 3824 | '@esbuild/android-x64': 0.19.12 3825 | '@esbuild/darwin-arm64': 0.19.12 3826 | '@esbuild/darwin-x64': 0.19.12 3827 | '@esbuild/freebsd-arm64': 0.19.12 3828 | '@esbuild/freebsd-x64': 0.19.12 3829 | '@esbuild/linux-arm': 0.19.12 3830 | '@esbuild/linux-arm64': 0.19.12 3831 | '@esbuild/linux-ia32': 0.19.12 3832 | '@esbuild/linux-loong64': 0.19.12 3833 | '@esbuild/linux-mips64el': 0.19.12 3834 | '@esbuild/linux-ppc64': 0.19.12 3835 | '@esbuild/linux-riscv64': 0.19.12 3836 | '@esbuild/linux-s390x': 0.19.12 3837 | '@esbuild/linux-x64': 0.19.12 3838 | '@esbuild/netbsd-x64': 0.19.12 3839 | '@esbuild/openbsd-x64': 0.19.12 3840 | '@esbuild/sunos-x64': 0.19.12 3841 | '@esbuild/win32-arm64': 0.19.12 3842 | '@esbuild/win32-ia32': 0.19.12 3843 | '@esbuild/win32-x64': 0.19.12 3844 | 3845 | esbuild@0.21.5: 3846 | optionalDependencies: 3847 | '@esbuild/aix-ppc64': 0.21.5 3848 | '@esbuild/android-arm': 0.21.5 3849 | '@esbuild/android-arm64': 0.21.5 3850 | '@esbuild/android-x64': 0.21.5 3851 | '@esbuild/darwin-arm64': 0.21.5 3852 | '@esbuild/darwin-x64': 0.21.5 3853 | '@esbuild/freebsd-arm64': 0.21.5 3854 | '@esbuild/freebsd-x64': 0.21.5 3855 | '@esbuild/linux-arm': 0.21.5 3856 | '@esbuild/linux-arm64': 0.21.5 3857 | '@esbuild/linux-ia32': 0.21.5 3858 | '@esbuild/linux-loong64': 0.21.5 3859 | '@esbuild/linux-mips64el': 0.21.5 3860 | '@esbuild/linux-ppc64': 0.21.5 3861 | '@esbuild/linux-riscv64': 0.21.5 3862 | '@esbuild/linux-s390x': 0.21.5 3863 | '@esbuild/linux-x64': 0.21.5 3864 | '@esbuild/netbsd-x64': 0.21.5 3865 | '@esbuild/openbsd-x64': 0.21.5 3866 | '@esbuild/sunos-x64': 0.21.5 3867 | '@esbuild/win32-arm64': 0.21.5 3868 | '@esbuild/win32-ia32': 0.21.5 3869 | '@esbuild/win32-x64': 0.21.5 3870 | 3871 | escalade@3.2.0: {} 3872 | 3873 | escape-html@1.0.3: {} 3874 | 3875 | escape-string-regexp@4.0.0: {} 3876 | 3877 | estree-walker@0.6.1: {} 3878 | 3879 | etag@1.8.1: {} 3880 | 3881 | exit-hook@2.2.1: {} 3882 | 3883 | express@4.21.1: 3884 | dependencies: 3885 | accepts: 1.3.8 3886 | array-flatten: 1.1.1 3887 | body-parser: 1.20.3 3888 | content-disposition: 0.5.4 3889 | content-type: 1.0.5 3890 | cookie: 0.7.1 3891 | cookie-signature: 1.0.6 3892 | debug: 2.6.9 3893 | depd: 2.0.0 3894 | encodeurl: 2.0.0 3895 | escape-html: 1.0.3 3896 | etag: 1.8.1 3897 | finalhandler: 1.3.1 3898 | fresh: 0.5.2 3899 | http-errors: 2.0.0 3900 | merge-descriptors: 1.0.3 3901 | methods: 1.1.2 3902 | on-finished: 2.4.1 3903 | parseurl: 1.3.3 3904 | path-to-regexp: 0.1.10 3905 | proxy-addr: 2.0.7 3906 | qs: 6.13.0 3907 | range-parser: 1.2.1 3908 | safe-buffer: 5.2.1 3909 | send: 0.19.0 3910 | serve-static: 1.16.2 3911 | setprototypeof: 1.2.0 3912 | statuses: 2.0.1 3913 | type-is: 1.6.18 3914 | utils-merge: 1.0.1 3915 | vary: 1.1.2 3916 | transitivePeerDependencies: 3917 | - supports-color 3918 | 3919 | fast-decode-uri-component@1.0.1: {} 3920 | 3921 | fast-glob@3.3.2: 3922 | dependencies: 3923 | '@nodelib/fs.stat': 2.0.5 3924 | '@nodelib/fs.walk': 1.2.8 3925 | glob-parent: 5.1.2 3926 | merge2: 1.4.1 3927 | micromatch: 4.0.8 3928 | 3929 | fast-querystring@1.1.2: 3930 | dependencies: 3931 | fast-decode-uri-component: 1.0.1 3932 | 3933 | fastq@1.17.1: 3934 | dependencies: 3935 | reusify: 1.0.4 3936 | 3937 | fill-range@7.1.1: 3938 | dependencies: 3939 | to-regex-range: 5.0.1 3940 | 3941 | finalhandler@1.3.1: 3942 | dependencies: 3943 | debug: 2.6.9 3944 | encodeurl: 2.0.0 3945 | escape-html: 1.0.3 3946 | on-finished: 2.4.1 3947 | parseurl: 1.3.3 3948 | statuses: 2.0.1 3949 | unpipe: 1.0.0 3950 | transitivePeerDependencies: 3951 | - supports-color 3952 | 3953 | foreground-child@3.3.0: 3954 | dependencies: 3955 | cross-spawn: 7.0.6 3956 | signal-exit: 4.1.0 3957 | 3958 | forwarded@0.2.0: {} 3959 | 3960 | fraction.js@4.3.7: {} 3961 | 3962 | fresh@0.5.2: {} 3963 | 3964 | fs-extra@10.1.0: 3965 | dependencies: 3966 | graceful-fs: 4.2.11 3967 | jsonfile: 6.1.0 3968 | universalify: 2.0.1 3969 | 3970 | fsevents@2.3.3: 3971 | optional: true 3972 | 3973 | function-bind@1.1.2: {} 3974 | 3975 | gensync@1.0.0-beta.2: {} 3976 | 3977 | get-intrinsic@1.2.4: 3978 | dependencies: 3979 | es-errors: 1.3.0 3980 | function-bind: 1.1.2 3981 | has-proto: 1.0.3 3982 | has-symbols: 1.0.3 3983 | hasown: 2.0.2 3984 | 3985 | get-port@5.1.1: {} 3986 | 3987 | get-source@2.0.12: 3988 | dependencies: 3989 | data-uri-to-buffer: 2.0.2 3990 | source-map: 0.6.1 3991 | 3992 | get-tsconfig@4.8.1: 3993 | dependencies: 3994 | resolve-pkg-maps: 1.0.0 3995 | 3996 | glob-parent@5.1.2: 3997 | dependencies: 3998 | is-glob: 4.0.3 3999 | 4000 | glob-parent@6.0.2: 4001 | dependencies: 4002 | is-glob: 4.0.3 4003 | 4004 | glob-to-regexp@0.4.1: {} 4005 | 4006 | glob@10.4.5: 4007 | dependencies: 4008 | foreground-child: 3.3.0 4009 | jackspeak: 3.4.3 4010 | minimatch: 9.0.5 4011 | minipass: 7.1.2 4012 | package-json-from-dist: 1.0.1 4013 | path-scurry: 1.11.1 4014 | 4015 | globals@11.12.0: {} 4016 | 4017 | globrex@0.1.2: {} 4018 | 4019 | gopd@1.0.1: 4020 | dependencies: 4021 | get-intrinsic: 1.2.4 4022 | 4023 | graceful-fs@4.2.11: {} 4024 | 4025 | gunzip-maybe@1.4.2: 4026 | dependencies: 4027 | browserify-zlib: 0.1.4 4028 | is-deflate: 1.0.0 4029 | is-gzip: 1.0.0 4030 | peek-stream: 1.1.3 4031 | pumpify: 1.5.1 4032 | through2: 2.0.5 4033 | 4034 | has-property-descriptors@1.0.2: 4035 | dependencies: 4036 | es-define-property: 1.0.0 4037 | 4038 | has-proto@1.0.3: {} 4039 | 4040 | has-symbols@1.0.3: {} 4041 | 4042 | hasown@2.0.2: 4043 | dependencies: 4044 | function-bind: 1.1.2 4045 | 4046 | hosted-git-info@6.1.3: 4047 | dependencies: 4048 | lru-cache: 7.18.3 4049 | 4050 | http-errors@2.0.0: 4051 | dependencies: 4052 | depd: 2.0.0 4053 | inherits: 2.0.4 4054 | setprototypeof: 1.2.0 4055 | statuses: 2.0.1 4056 | toidentifier: 1.0.1 4057 | 4058 | iconv-lite@0.4.24: 4059 | dependencies: 4060 | safer-buffer: 2.1.2 4061 | 4062 | inherits@2.0.4: {} 4063 | 4064 | ipaddr.js@1.9.1: {} 4065 | 4066 | is-binary-path@2.1.0: 4067 | dependencies: 4068 | binary-extensions: 2.3.0 4069 | 4070 | is-core-module@2.15.1: 4071 | dependencies: 4072 | hasown: 2.0.2 4073 | 4074 | is-deflate@1.0.0: {} 4075 | 4076 | is-extglob@2.1.1: {} 4077 | 4078 | is-fullwidth-code-point@3.0.0: {} 4079 | 4080 | is-glob@4.0.3: 4081 | dependencies: 4082 | is-extglob: 2.1.1 4083 | 4084 | is-gzip@1.0.0: {} 4085 | 4086 | is-number@7.0.0: {} 4087 | 4088 | isarray@1.0.0: {} 4089 | 4090 | isbot@5.1.17: {} 4091 | 4092 | isexe@2.0.0: {} 4093 | 4094 | itty-time@1.0.6: {} 4095 | 4096 | jackspeak@3.4.3: 4097 | dependencies: 4098 | '@isaacs/cliui': 8.0.2 4099 | optionalDependencies: 4100 | '@pkgjs/parseargs': 0.11.0 4101 | 4102 | jiti@1.21.6: {} 4103 | 4104 | js-tokens@4.0.0: {} 4105 | 4106 | jsesc@3.0.2: {} 4107 | 4108 | json-parse-even-better-errors@3.0.2: {} 4109 | 4110 | json5@2.2.3: {} 4111 | 4112 | jsonfile@6.1.0: 4113 | dependencies: 4114 | universalify: 2.0.1 4115 | optionalDependencies: 4116 | graceful-fs: 4.2.11 4117 | 4118 | lilconfig@2.1.0: {} 4119 | 4120 | lilconfig@3.1.2: {} 4121 | 4122 | lines-and-columns@1.2.4: {} 4123 | 4124 | lodash@4.17.21: {} 4125 | 4126 | loose-envify@1.4.0: 4127 | dependencies: 4128 | js-tokens: 4.0.0 4129 | 4130 | lru-cache@10.4.3: {} 4131 | 4132 | lru-cache@5.1.1: 4133 | dependencies: 4134 | yallist: 3.1.1 4135 | 4136 | lru-cache@7.18.3: {} 4137 | 4138 | lucide-react@0.460.0(react@18.3.1): 4139 | dependencies: 4140 | react: 18.3.1 4141 | 4142 | magic-string@0.25.9: 4143 | dependencies: 4144 | sourcemap-codec: 1.4.8 4145 | 4146 | media-typer@0.3.0: {} 4147 | 4148 | merge-descriptors@1.0.3: {} 4149 | 4150 | merge2@1.4.1: {} 4151 | 4152 | methods@1.1.2: {} 4153 | 4154 | micromatch@4.0.8: 4155 | dependencies: 4156 | braces: 3.0.3 4157 | picomatch: 2.3.1 4158 | 4159 | mime-db@1.52.0: {} 4160 | 4161 | mime-db@1.53.0: {} 4162 | 4163 | mime-types@2.1.35: 4164 | dependencies: 4165 | mime-db: 1.52.0 4166 | 4167 | mime@1.6.0: {} 4168 | 4169 | mime@3.0.0: {} 4170 | 4171 | miniflare@3.20241106.1: 4172 | dependencies: 4173 | '@cspotcode/source-map-support': 0.8.1 4174 | acorn: 8.14.0 4175 | acorn-walk: 8.3.4 4176 | capnp-ts: 0.7.0 4177 | exit-hook: 2.2.1 4178 | glob-to-regexp: 0.4.1 4179 | stoppable: 1.1.0 4180 | undici: 5.28.4 4181 | workerd: 1.20241106.1 4182 | ws: 8.18.0 4183 | youch: 3.3.4 4184 | zod: 3.23.8 4185 | transitivePeerDependencies: 4186 | - bufferutil 4187 | - supports-color 4188 | - utf-8-validate 4189 | 4190 | minimatch@9.0.5: 4191 | dependencies: 4192 | brace-expansion: 2.0.1 4193 | 4194 | minimist@1.2.8: {} 4195 | 4196 | minipass@7.1.2: {} 4197 | 4198 | morgan@1.10.0: 4199 | dependencies: 4200 | basic-auth: 2.0.1 4201 | debug: 2.6.9 4202 | depd: 2.0.0 4203 | on-finished: 2.3.0 4204 | on-headers: 1.0.2 4205 | transitivePeerDependencies: 4206 | - supports-color 4207 | 4208 | ms@2.0.0: {} 4209 | 4210 | ms@2.1.3: {} 4211 | 4212 | mustache@4.2.0: {} 4213 | 4214 | mz@2.7.0: 4215 | dependencies: 4216 | any-promise: 1.3.0 4217 | object-assign: 4.1.1 4218 | thenify-all: 1.6.0 4219 | 4220 | nanoid@3.3.7: {} 4221 | 4222 | negotiator@0.6.3: {} 4223 | 4224 | negotiator@0.6.4: {} 4225 | 4226 | node-fetch-native@1.6.4: {} 4227 | 4228 | node-forge@1.3.1: {} 4229 | 4230 | node-releases@2.0.18: {} 4231 | 4232 | normalize-package-data@5.0.0: 4233 | dependencies: 4234 | hosted-git-info: 6.1.3 4235 | is-core-module: 2.15.1 4236 | semver: 7.6.3 4237 | validate-npm-package-license: 3.0.4 4238 | 4239 | normalize-path@3.0.0: {} 4240 | 4241 | normalize-range@0.1.2: {} 4242 | 4243 | npm-install-checks@6.3.0: 4244 | dependencies: 4245 | semver: 7.6.3 4246 | 4247 | npm-normalize-package-bin@3.0.1: {} 4248 | 4249 | npm-package-arg@10.1.0: 4250 | dependencies: 4251 | hosted-git-info: 6.1.3 4252 | proc-log: 3.0.0 4253 | semver: 7.6.3 4254 | validate-npm-package-name: 5.0.1 4255 | 4256 | npm-pick-manifest@8.0.2: 4257 | dependencies: 4258 | npm-install-checks: 6.3.0 4259 | npm-normalize-package-bin: 3.0.1 4260 | npm-package-arg: 10.1.0 4261 | semver: 7.6.3 4262 | 4263 | object-assign@4.1.1: {} 4264 | 4265 | object-hash@3.0.0: {} 4266 | 4267 | object-inspect@1.13.3: {} 4268 | 4269 | ohash@1.1.4: {} 4270 | 4271 | on-finished@2.3.0: 4272 | dependencies: 4273 | ee-first: 1.1.1 4274 | 4275 | on-finished@2.4.1: 4276 | dependencies: 4277 | ee-first: 1.1.1 4278 | 4279 | on-headers@1.0.2: {} 4280 | 4281 | once@1.4.0: 4282 | dependencies: 4283 | wrappy: 1.0.2 4284 | 4285 | package-json-from-dist@1.0.1: {} 4286 | 4287 | pako@0.2.9: {} 4288 | 4289 | parseurl@1.3.3: {} 4290 | 4291 | path-key@3.1.1: {} 4292 | 4293 | path-parse@1.0.7: {} 4294 | 4295 | path-scurry@1.11.1: 4296 | dependencies: 4297 | lru-cache: 10.4.3 4298 | minipass: 7.1.2 4299 | 4300 | path-to-regexp@0.1.10: {} 4301 | 4302 | path-to-regexp@6.3.0: {} 4303 | 4304 | pathe@1.1.2: {} 4305 | 4306 | peek-stream@1.1.3: 4307 | dependencies: 4308 | buffer-from: 1.1.2 4309 | duplexify: 3.7.1 4310 | through2: 2.0.5 4311 | 4312 | picocolors@1.1.1: {} 4313 | 4314 | picomatch@2.3.1: {} 4315 | 4316 | pify@2.3.0: {} 4317 | 4318 | pirates@4.0.6: {} 4319 | 4320 | postcss-import@15.1.0(postcss@8.4.49): 4321 | dependencies: 4322 | postcss: 8.4.49 4323 | postcss-value-parser: 4.2.0 4324 | read-cache: 1.0.0 4325 | resolve: 1.22.8 4326 | 4327 | postcss-js@4.0.1(postcss@8.4.49): 4328 | dependencies: 4329 | camelcase-css: 2.0.1 4330 | postcss: 8.4.49 4331 | 4332 | postcss-load-config@4.0.2(postcss@8.4.49): 4333 | dependencies: 4334 | lilconfig: 3.1.2 4335 | yaml: 2.6.1 4336 | optionalDependencies: 4337 | postcss: 8.4.49 4338 | 4339 | postcss-nested@6.2.0(postcss@8.4.49): 4340 | dependencies: 4341 | postcss: 8.4.49 4342 | postcss-selector-parser: 6.1.2 4343 | 4344 | postcss-selector-parser@6.1.2: 4345 | dependencies: 4346 | cssesc: 3.0.0 4347 | util-deprecate: 1.0.2 4348 | 4349 | postcss-value-parser@4.2.0: {} 4350 | 4351 | postcss@8.4.49: 4352 | dependencies: 4353 | nanoid: 3.3.7 4354 | picocolors: 1.1.1 4355 | source-map-js: 1.2.1 4356 | 4357 | prettier@2.8.8: {} 4358 | 4359 | printable-characters@1.0.42: {} 4360 | 4361 | proc-log@3.0.0: {} 4362 | 4363 | process-nextick-args@2.0.1: {} 4364 | 4365 | promise-inflight@1.0.1: {} 4366 | 4367 | promise-retry@2.0.1: 4368 | dependencies: 4369 | err-code: 2.0.3 4370 | retry: 0.12.0 4371 | 4372 | proxy-addr@2.0.7: 4373 | dependencies: 4374 | forwarded: 0.2.0 4375 | ipaddr.js: 1.9.1 4376 | 4377 | pump@2.0.1: 4378 | dependencies: 4379 | end-of-stream: 1.4.4 4380 | once: 1.4.0 4381 | 4382 | pumpify@1.5.1: 4383 | dependencies: 4384 | duplexify: 3.7.1 4385 | inherits: 2.0.4 4386 | pump: 2.0.1 4387 | 4388 | qs@6.13.0: 4389 | dependencies: 4390 | side-channel: 1.0.6 4391 | 4392 | queue-microtask@1.2.3: {} 4393 | 4394 | range-parser@1.2.1: {} 4395 | 4396 | raw-body@2.5.2: 4397 | dependencies: 4398 | bytes: 3.1.2 4399 | http-errors: 2.0.0 4400 | iconv-lite: 0.4.24 4401 | unpipe: 1.0.0 4402 | 4403 | react-dom@18.3.1(react@18.3.1): 4404 | dependencies: 4405 | loose-envify: 1.4.0 4406 | react: 18.3.1 4407 | scheduler: 0.23.2 4408 | 4409 | react-refresh@0.14.2: {} 4410 | 4411 | react-router@7.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): 4412 | dependencies: 4413 | '@types/cookie': 0.6.0 4414 | cookie: 1.0.2 4415 | react: 18.3.1 4416 | set-cookie-parser: 2.7.1 4417 | turbo-stream: 2.4.0 4418 | optionalDependencies: 4419 | react-dom: 18.3.1(react@18.3.1) 4420 | 4421 | react@18.3.1: 4422 | dependencies: 4423 | loose-envify: 1.4.0 4424 | 4425 | read-cache@1.0.0: 4426 | dependencies: 4427 | pify: 2.3.0 4428 | 4429 | readable-stream@2.3.8: 4430 | dependencies: 4431 | core-util-is: 1.0.3 4432 | inherits: 2.0.4 4433 | isarray: 1.0.0 4434 | process-nextick-args: 2.0.1 4435 | safe-buffer: 5.1.2 4436 | string_decoder: 1.1.1 4437 | util-deprecate: 1.0.2 4438 | 4439 | readdirp@3.6.0: 4440 | dependencies: 4441 | picomatch: 2.3.1 4442 | 4443 | readdirp@4.0.2: {} 4444 | 4445 | resolve-pkg-maps@1.0.0: {} 4446 | 4447 | resolve.exports@2.0.2: {} 4448 | 4449 | resolve@1.22.8: 4450 | dependencies: 4451 | is-core-module: 2.15.1 4452 | path-parse: 1.0.7 4453 | supports-preserve-symlinks-flag: 1.0.0 4454 | 4455 | retry@0.12.0: {} 4456 | 4457 | reusify@1.0.4: {} 4458 | 4459 | rollup-plugin-inject@3.0.2: 4460 | dependencies: 4461 | estree-walker: 0.6.1 4462 | magic-string: 0.25.9 4463 | rollup-pluginutils: 2.8.2 4464 | 4465 | rollup-plugin-node-polyfills@0.2.1: 4466 | dependencies: 4467 | rollup-plugin-inject: 3.0.2 4468 | 4469 | rollup-pluginutils@2.8.2: 4470 | dependencies: 4471 | estree-walker: 0.6.1 4472 | 4473 | rollup@4.27.3: 4474 | dependencies: 4475 | '@types/estree': 1.0.6 4476 | optionalDependencies: 4477 | '@rollup/rollup-android-arm-eabi': 4.27.3 4478 | '@rollup/rollup-android-arm64': 4.27.3 4479 | '@rollup/rollup-darwin-arm64': 4.27.3 4480 | '@rollup/rollup-darwin-x64': 4.27.3 4481 | '@rollup/rollup-freebsd-arm64': 4.27.3 4482 | '@rollup/rollup-freebsd-x64': 4.27.3 4483 | '@rollup/rollup-linux-arm-gnueabihf': 4.27.3 4484 | '@rollup/rollup-linux-arm-musleabihf': 4.27.3 4485 | '@rollup/rollup-linux-arm64-gnu': 4.27.3 4486 | '@rollup/rollup-linux-arm64-musl': 4.27.3 4487 | '@rollup/rollup-linux-powerpc64le-gnu': 4.27.3 4488 | '@rollup/rollup-linux-riscv64-gnu': 4.27.3 4489 | '@rollup/rollup-linux-s390x-gnu': 4.27.3 4490 | '@rollup/rollup-linux-x64-gnu': 4.27.3 4491 | '@rollup/rollup-linux-x64-musl': 4.27.3 4492 | '@rollup/rollup-win32-arm64-msvc': 4.27.3 4493 | '@rollup/rollup-win32-ia32-msvc': 4.27.3 4494 | '@rollup/rollup-win32-x64-msvc': 4.27.3 4495 | fsevents: 2.3.3 4496 | 4497 | run-parallel@1.2.0: 4498 | dependencies: 4499 | queue-microtask: 1.2.3 4500 | 4501 | safe-buffer@5.1.2: {} 4502 | 4503 | safe-buffer@5.2.1: {} 4504 | 4505 | safer-buffer@2.1.2: {} 4506 | 4507 | scheduler@0.23.2: 4508 | dependencies: 4509 | loose-envify: 1.4.0 4510 | 4511 | selfsigned@2.4.1: 4512 | dependencies: 4513 | '@types/node-forge': 1.3.11 4514 | node-forge: 1.3.1 4515 | 4516 | semver@6.3.1: {} 4517 | 4518 | semver@7.6.3: {} 4519 | 4520 | send@0.19.0: 4521 | dependencies: 4522 | debug: 2.6.9 4523 | depd: 2.0.0 4524 | destroy: 1.2.0 4525 | encodeurl: 1.0.2 4526 | escape-html: 1.0.3 4527 | etag: 1.8.1 4528 | fresh: 0.5.2 4529 | http-errors: 2.0.0 4530 | mime: 1.6.0 4531 | ms: 2.1.3 4532 | on-finished: 2.4.1 4533 | range-parser: 1.2.1 4534 | statuses: 2.0.1 4535 | transitivePeerDependencies: 4536 | - supports-color 4537 | 4538 | serve-static@1.16.2: 4539 | dependencies: 4540 | encodeurl: 2.0.0 4541 | escape-html: 1.0.3 4542 | parseurl: 1.3.3 4543 | send: 0.19.0 4544 | transitivePeerDependencies: 4545 | - supports-color 4546 | 4547 | set-cookie-parser@2.7.1: {} 4548 | 4549 | set-function-length@1.2.2: 4550 | dependencies: 4551 | define-data-property: 1.1.4 4552 | es-errors: 1.3.0 4553 | function-bind: 1.1.2 4554 | get-intrinsic: 1.2.4 4555 | gopd: 1.0.1 4556 | has-property-descriptors: 1.0.2 4557 | 4558 | setprototypeof@1.2.0: {} 4559 | 4560 | shebang-command@2.0.0: 4561 | dependencies: 4562 | shebang-regex: 3.0.0 4563 | 4564 | shebang-regex@3.0.0: {} 4565 | 4566 | side-channel@1.0.6: 4567 | dependencies: 4568 | call-bind: 1.0.7 4569 | es-errors: 1.3.0 4570 | get-intrinsic: 1.2.4 4571 | object-inspect: 1.13.3 4572 | 4573 | signal-exit@4.1.0: {} 4574 | 4575 | source-map-js@1.2.1: {} 4576 | 4577 | source-map-support@0.5.21: 4578 | dependencies: 4579 | buffer-from: 1.1.2 4580 | source-map: 0.6.1 4581 | 4582 | source-map@0.6.1: {} 4583 | 4584 | sourcemap-codec@1.4.8: {} 4585 | 4586 | spdx-correct@3.2.0: 4587 | dependencies: 4588 | spdx-expression-parse: 3.0.1 4589 | spdx-license-ids: 3.0.20 4590 | 4591 | spdx-exceptions@2.5.0: {} 4592 | 4593 | spdx-expression-parse@3.0.1: 4594 | dependencies: 4595 | spdx-exceptions: 2.5.0 4596 | spdx-license-ids: 3.0.20 4597 | 4598 | spdx-license-ids@3.0.20: {} 4599 | 4600 | stacktracey@2.1.8: 4601 | dependencies: 4602 | as-table: 1.0.55 4603 | get-source: 2.0.12 4604 | 4605 | statuses@2.0.1: {} 4606 | 4607 | stoppable@1.1.0: {} 4608 | 4609 | stream-shift@1.0.3: {} 4610 | 4611 | stream-slice@0.1.2: {} 4612 | 4613 | streamsearch@1.1.0: {} 4614 | 4615 | string-width@4.2.3: 4616 | dependencies: 4617 | emoji-regex: 8.0.0 4618 | is-fullwidth-code-point: 3.0.0 4619 | strip-ansi: 6.0.1 4620 | 4621 | string-width@5.1.2: 4622 | dependencies: 4623 | eastasianwidth: 0.2.0 4624 | emoji-regex: 9.2.2 4625 | strip-ansi: 7.1.0 4626 | 4627 | string_decoder@1.1.1: 4628 | dependencies: 4629 | safe-buffer: 5.1.2 4630 | 4631 | strip-ansi@6.0.1: 4632 | dependencies: 4633 | ansi-regex: 5.0.1 4634 | 4635 | strip-ansi@7.1.0: 4636 | dependencies: 4637 | ansi-regex: 6.1.0 4638 | 4639 | sucrase@3.35.0: 4640 | dependencies: 4641 | '@jridgewell/gen-mapping': 0.3.5 4642 | commander: 4.1.1 4643 | glob: 10.4.5 4644 | lines-and-columns: 1.2.4 4645 | mz: 2.7.0 4646 | pirates: 4.0.6 4647 | ts-interface-checker: 0.1.13 4648 | 4649 | supports-preserve-symlinks-flag@1.0.0: {} 4650 | 4651 | tailwind-merge@2.5.4: {} 4652 | 4653 | tailwindcss-animate@1.0.7(tailwindcss@3.4.15): 4654 | dependencies: 4655 | tailwindcss: 3.4.15 4656 | 4657 | tailwindcss@3.4.15: 4658 | dependencies: 4659 | '@alloc/quick-lru': 5.2.0 4660 | arg: 5.0.2 4661 | chokidar: 3.6.0 4662 | didyoumean: 1.2.2 4663 | dlv: 1.1.3 4664 | fast-glob: 3.3.2 4665 | glob-parent: 6.0.2 4666 | is-glob: 4.0.3 4667 | jiti: 1.21.6 4668 | lilconfig: 2.1.0 4669 | micromatch: 4.0.8 4670 | normalize-path: 3.0.0 4671 | object-hash: 3.0.0 4672 | picocolors: 1.1.1 4673 | postcss: 8.4.49 4674 | postcss-import: 15.1.0(postcss@8.4.49) 4675 | postcss-js: 4.0.1(postcss@8.4.49) 4676 | postcss-load-config: 4.0.2(postcss@8.4.49) 4677 | postcss-nested: 6.2.0(postcss@8.4.49) 4678 | postcss-selector-parser: 6.1.2 4679 | resolve: 1.22.8 4680 | sucrase: 3.35.0 4681 | transitivePeerDependencies: 4682 | - ts-node 4683 | 4684 | thenify-all@1.6.0: 4685 | dependencies: 4686 | thenify: 3.3.1 4687 | 4688 | thenify@3.3.1: 4689 | dependencies: 4690 | any-promise: 1.3.0 4691 | 4692 | through2@2.0.5: 4693 | dependencies: 4694 | readable-stream: 2.3.8 4695 | xtend: 4.0.2 4696 | 4697 | to-regex-range@5.0.1: 4698 | dependencies: 4699 | is-number: 7.0.0 4700 | 4701 | toidentifier@1.0.1: {} 4702 | 4703 | ts-interface-checker@0.1.13: {} 4704 | 4705 | tsconfck@3.1.4(typescript@5.6.3): 4706 | optionalDependencies: 4707 | typescript: 5.6.3 4708 | 4709 | tslib@2.8.1: {} 4710 | 4711 | turbo-stream@2.4.0: {} 4712 | 4713 | type-is@1.6.18: 4714 | dependencies: 4715 | media-typer: 0.3.0 4716 | mime-types: 2.1.35 4717 | 4718 | typescript@5.6.3: {} 4719 | 4720 | ufo@1.5.4: {} 4721 | 4722 | undici-types@6.19.8: {} 4723 | 4724 | undici@5.28.4: 4725 | dependencies: 4726 | '@fastify/busboy': 2.1.1 4727 | 4728 | undici@6.21.0: {} 4729 | 4730 | unenv-nightly@2.0.0-20241111-080453-894aa31: 4731 | dependencies: 4732 | defu: 6.1.4 4733 | ohash: 1.1.4 4734 | pathe: 1.1.2 4735 | ufo: 1.5.4 4736 | 4737 | universalify@2.0.1: {} 4738 | 4739 | unpipe@1.0.0: {} 4740 | 4741 | update-browserslist-db@1.1.1(browserslist@4.24.2): 4742 | dependencies: 4743 | browserslist: 4.24.2 4744 | escalade: 3.2.0 4745 | picocolors: 1.1.1 4746 | 4747 | urlpattern-polyfill@10.0.0: {} 4748 | 4749 | util-deprecate@1.0.2: {} 4750 | 4751 | utils-merge@1.0.1: {} 4752 | 4753 | valibot@0.41.0(typescript@5.6.3): 4754 | optionalDependencies: 4755 | typescript: 5.6.3 4756 | 4757 | validate-npm-package-license@3.0.4: 4758 | dependencies: 4759 | spdx-correct: 3.2.0 4760 | spdx-expression-parse: 3.0.1 4761 | 4762 | validate-npm-package-name@5.0.1: {} 4763 | 4764 | vary@1.1.2: {} 4765 | 4766 | vite-node@1.6.0(@types/node@20.17.6): 4767 | dependencies: 4768 | cac: 6.7.14 4769 | debug: 4.3.7 4770 | pathe: 1.1.2 4771 | picocolors: 1.1.1 4772 | vite: 5.4.11(@types/node@20.17.6) 4773 | transitivePeerDependencies: 4774 | - '@types/node' 4775 | - less 4776 | - lightningcss 4777 | - sass 4778 | - sass-embedded 4779 | - stylus 4780 | - sugarss 4781 | - supports-color 4782 | - terser 4783 | 4784 | vite-tsconfig-paths@5.1.3(typescript@5.6.3)(vite@5.4.11(@types/node@20.17.6)): 4785 | dependencies: 4786 | debug: 4.3.7 4787 | globrex: 0.1.2 4788 | tsconfck: 3.1.4(typescript@5.6.3) 4789 | optionalDependencies: 4790 | vite: 5.4.11(@types/node@20.17.6) 4791 | transitivePeerDependencies: 4792 | - supports-color 4793 | - typescript 4794 | 4795 | vite@5.4.11(@types/node@20.17.6): 4796 | dependencies: 4797 | esbuild: 0.21.5 4798 | postcss: 8.4.49 4799 | rollup: 4.27.3 4800 | optionalDependencies: 4801 | '@types/node': 20.17.6 4802 | fsevents: 2.3.3 4803 | 4804 | which@2.0.2: 4805 | dependencies: 4806 | isexe: 2.0.0 4807 | 4808 | which@3.0.1: 4809 | dependencies: 4810 | isexe: 2.0.0 4811 | 4812 | workerd@1.20241106.1: 4813 | optionalDependencies: 4814 | '@cloudflare/workerd-darwin-64': 1.20241106.1 4815 | '@cloudflare/workerd-darwin-arm64': 1.20241106.1 4816 | '@cloudflare/workerd-linux-64': 1.20241106.1 4817 | '@cloudflare/workerd-linux-arm64': 1.20241106.1 4818 | '@cloudflare/workerd-windows-64': 1.20241106.1 4819 | 4820 | wrangler@3.89.0(@cloudflare/workers-types@4.20241112.0): 4821 | dependencies: 4822 | '@cloudflare/kv-asset-handler': 0.3.4 4823 | '@cloudflare/workers-shared': 0.7.1 4824 | '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) 4825 | '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) 4826 | blake3-wasm: 2.1.5 4827 | chokidar: 4.0.1 4828 | date-fns: 4.1.0 4829 | esbuild: 0.17.19 4830 | itty-time: 1.0.6 4831 | miniflare: 3.20241106.1 4832 | nanoid: 3.3.7 4833 | path-to-regexp: 6.3.0 4834 | resolve: 1.22.8 4835 | resolve.exports: 2.0.2 4836 | selfsigned: 2.4.1 4837 | source-map: 0.6.1 4838 | unenv: unenv-nightly@2.0.0-20241111-080453-894aa31 4839 | workerd: 1.20241106.1 4840 | xxhash-wasm: 1.1.0 4841 | optionalDependencies: 4842 | '@cloudflare/workers-types': 4.20241112.0 4843 | fsevents: 2.3.3 4844 | transitivePeerDependencies: 4845 | - bufferutil 4846 | - supports-color 4847 | - utf-8-validate 4848 | 4849 | wrap-ansi@7.0.0: 4850 | dependencies: 4851 | ansi-styles: 4.3.0 4852 | string-width: 4.2.3 4853 | strip-ansi: 6.0.1 4854 | 4855 | wrap-ansi@8.1.0: 4856 | dependencies: 4857 | ansi-styles: 6.2.1 4858 | string-width: 5.1.2 4859 | strip-ansi: 7.1.0 4860 | 4861 | wrappy@1.0.2: {} 4862 | 4863 | ws@8.18.0: {} 4864 | 4865 | xtend@4.0.2: {} 4866 | 4867 | xxhash-wasm@1.1.0: {} 4868 | 4869 | yallist@3.1.1: {} 4870 | 4871 | yaml@2.6.1: {} 4872 | 4873 | youch@3.3.4: 4874 | dependencies: 4875 | cookie: 0.7.2 4876 | mustache: 4.2.0 4877 | stacktracey: 2.1.8 4878 | 4879 | zod@3.23.8: {} 4880 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jacob-ebey/react-router-cloudflare/841b9f5eed547e105574965bbf381b4ae1626642/public/favicon.ico -------------------------------------------------------------------------------- /react-router.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "@react-router/dev/config"; 2 | 3 | export default {} satisfies Config; 4 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "tailwindcss"; 2 | 3 | export default { 4 | darkMode: ["class"], 5 | content: ["./app/**/{**,.client,.server}/**/*.{js,jsx,ts,tsx}"], 6 | theme: { 7 | extend: { 8 | borderRadius: { 9 | lg: "var(--radius)", 10 | md: "calc(var(--radius) - 2px)", 11 | sm: "calc(var(--radius) - 4px)", 12 | }, 13 | colors: { 14 | background: "hsl(var(--background))", 15 | foreground: "hsl(var(--foreground))", 16 | card: { 17 | DEFAULT: "hsl(var(--card))", 18 | foreground: "hsl(var(--card-foreground))", 19 | }, 20 | popover: { 21 | DEFAULT: "hsl(var(--popover))", 22 | foreground: "hsl(var(--popover-foreground))", 23 | }, 24 | primary: { 25 | DEFAULT: "hsl(var(--primary))", 26 | foreground: "hsl(var(--primary-foreground))", 27 | }, 28 | secondary: { 29 | DEFAULT: "hsl(var(--secondary))", 30 | foreground: "hsl(var(--secondary-foreground))", 31 | }, 32 | muted: { 33 | DEFAULT: "hsl(var(--muted))", 34 | foreground: "hsl(var(--muted-foreground))", 35 | }, 36 | accent: { 37 | DEFAULT: "hsl(var(--accent))", 38 | foreground: "hsl(var(--accent-foreground))", 39 | }, 40 | destructive: { 41 | DEFAULT: "hsl(var(--destructive))", 42 | foreground: "hsl(var(--destructive-foreground))", 43 | }, 44 | border: "hsl(var(--border))", 45 | input: "hsl(var(--input))", 46 | ring: "hsl(var(--ring))", 47 | chart: { 48 | "1": "hsl(var(--chart-1))", 49 | "2": "hsl(var(--chart-2))", 50 | "3": "hsl(var(--chart-3))", 51 | "4": "hsl(var(--chart-4))", 52 | "5": "hsl(var(--chart-5))", 53 | }, 54 | }, 55 | }, 56 | }, 57 | plugins: [require("tailwindcss-animate")], 58 | } satisfies Config; 59 | -------------------------------------------------------------------------------- /tsconfig.cloudflare.json: -------------------------------------------------------------------------------- 1 | { 2 | "include": [ 3 | ".react-router/types/**/*", 4 | "app/**/*", 5 | "app/**/.server/**/*", 6 | "app/**/.client/**/*", 7 | "database/**/*", 8 | "workers/**/*" 9 | ], 10 | "compilerOptions": { 11 | "composite": true, 12 | "strict": true, 13 | "lib": ["DOM", "DOM.Iterable", "ES2022"], 14 | "types": ["@cloudflare/workers-types", "node", "vite/client"], 15 | "target": "ES2022", 16 | "module": "ES2022", 17 | "moduleResolution": "bundler", 18 | "jsx": "react-jsx", 19 | "baseUrl": ".", 20 | "rootDirs": [".", "./.react-router/types"], 21 | "paths": { 22 | "~/database/*": ["./database/*"], 23 | "~/*": ["./app/*"] 24 | }, 25 | "esModuleInterop": true, 26 | "resolveJsonModule": true 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.node.json" }, 5 | { "path": "./tsconfig.cloudflare.json" } 6 | ], 7 | "compilerOptions": { 8 | "checkJs": true, 9 | "forceConsistentCasingInFileNames": true, 10 | "isolatedModules": true, 11 | "skipLibCheck": true, 12 | "strict": true, 13 | "noEmit": true, 14 | "baseUrl": ".", 15 | "paths": { 16 | "~/*": ["./app/*"] 17 | }, 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": ["tailwind.config.ts", "vite.config.ts"], 4 | "compilerOptions": { 5 | "composite": true, 6 | "strict": true, 7 | "types": ["node"], 8 | "lib": ["ES2022"], 9 | "target": "ES2022", 10 | "module": "NodeNext", 11 | "moduleResolution": "NodeNext" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { vitePluginViteNodeMiniflare } from "@hiogawa/vite-node-miniflare"; 2 | import { reactRouter } from "@react-router/dev/vite"; 3 | import autoprefixer from "autoprefixer"; 4 | import tailwindcss from "tailwindcss"; 5 | import { defineConfig } from "vite"; 6 | import tsconfigPaths from "vite-tsconfig-paths"; 7 | 8 | export default defineConfig(({ isSsrBuild }) => ({ 9 | build: { 10 | rollupOptions: isSsrBuild 11 | ? { 12 | input: "./workers/app.ts", 13 | } 14 | : undefined, 15 | }, 16 | css: { 17 | postcss: { 18 | plugins: [tailwindcss, autoprefixer], 19 | }, 20 | }, 21 | ssr: { 22 | target: "webworker", 23 | noExternal: true, 24 | resolve: { 25 | conditions: ["workerd", "browser"], 26 | }, 27 | optimizeDeps: { 28 | include: [ 29 | "react", 30 | "react/jsx-runtime", 31 | "react/jsx-dev-runtime", 32 | "react-dom", 33 | "react-dom/server", 34 | "react-router", 35 | ], 36 | }, 37 | }, 38 | plugins: [ 39 | vitePluginViteNodeMiniflare({ 40 | entry: "./workers/app.ts", 41 | miniflareOptions: (options) => { 42 | options.compatibilityDate = "2024-11-18"; 43 | options.compatibilityFlags = ["nodejs_compat"]; 44 | options.d1Databases = { DB: "your-database-id" }; 45 | // match where wrangler applies migrations to 46 | options.d1Persist = ".wrangler/state/v3/d1"; 47 | options.bindings = { 48 | ...options.bindings, 49 | SESSION_SECRET: "s3cr3t", 50 | }; 51 | }, 52 | }), 53 | reactRouter(), 54 | tsconfigPaths(), 55 | ], 56 | })); 57 | -------------------------------------------------------------------------------- /workers/app.ts: -------------------------------------------------------------------------------- 1 | import { drizzle } from "drizzle-orm/d1"; 2 | import { createRequestHandler, createCookieSessionStorage } from "react-router"; 3 | 4 | import { DatabaseContext } from "~/database/context"; 5 | import * as schema from "~/database/schema"; 6 | import { SessionContext } from "~/lib/session"; 7 | 8 | interface CloudflareEnvironment { 9 | DB: D1Database; 10 | SESSION_SECRET: string; 11 | } 12 | 13 | declare module "react-router" { 14 | export interface AppLoadContext { 15 | VALUE_FROM_CLOUDFLARE: string; 16 | } 17 | } 18 | 19 | const requestHandler = createRequestHandler( 20 | // @ts-expect-error - virtual module provided by React Router at build time 21 | () => import("virtual:react-router/server-build"), 22 | import.meta.env.MODE 23 | ); 24 | 25 | export default { 26 | async fetch(request, env) { 27 | const db = drizzle(env.DB, { schema }); 28 | const sessionStorage = createCookieSessionStorage({ 29 | cookie: { 30 | path: "/", 31 | sameSite: "lax", 32 | secrets: [env.SESSION_SECRET], 33 | secure: request.url.startsWith("https://"), 34 | }, 35 | }); 36 | 37 | const session = await sessionStorage.getSession( 38 | request.headers.get("Cookie") 39 | ); 40 | const lastSetCookie = await sessionStorage.commitSession(session); 41 | 42 | const response = await DatabaseContext.run(db, () => 43 | SessionContext.run(session, () => 44 | requestHandler(request, { 45 | VALUE_FROM_CLOUDFLARE: "Hello from Cloudflare", 46 | }) 47 | ) 48 | ); 49 | 50 | const setCookie = await sessionStorage.commitSession(session); 51 | if (lastSetCookie !== setCookie) { 52 | const headers = new Headers(response.headers); 53 | headers.append("Set-Cookie", setCookie); 54 | 55 | return new Response(response.body, { 56 | cf: response.cf, 57 | headers, 58 | status: response.status, 59 | statusText: response.statusText, 60 | webSocket: response.webSocket, 61 | }); 62 | } 63 | 64 | return response; 65 | }, 66 | } satisfies ExportedHandler; 67 | -------------------------------------------------------------------------------- /wrangler.toml: -------------------------------------------------------------------------------- 1 | workers_dev = true 2 | name = "my-worker" 3 | compatibility_date = "2024-11-18" 4 | compatibility_flags = ["nodejs_compat"] 5 | main = "./build/server/index.js" 6 | # assets = { directory = "./build/client/" } 7 | 8 | [[d1_databases]] 9 | binding = "DB" 10 | database_name = "your-database-name" 11 | database_id = "your-database-id" 12 | migrations_dir = "drizzle" 13 | --------------------------------------------------------------------------------