├── .eslintrc.json ├── .gitignore ├── Makefile ├── README.md ├── app ├── api │ ├── auth │ │ └── [...nextauth] │ │ │ └── route.ts │ ├── register │ │ └── route.ts │ └── session │ │ └── route.ts ├── client-side │ └── page.tsx ├── favicon.ico ├── globals.css ├── layout.tsx ├── login │ ├── login-form.tsx │ └── page.tsx ├── page.tsx ├── profile │ └── page.tsx └── register │ ├── page.tsx │ └── register-form.tsx ├── auth.ts ├── components └── header.tsx ├── docker-compose.yml ├── example.env ├── lib └── user-schema.ts ├── middleware.ts ├── next.config.mjs ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── prisma ├── migrations │ ├── 20240207160257_init │ │ └── migration.sql │ └── migration_lock.toml ├── prisma.ts ├── schema.prisma └── seed.ts ├── public ├── images │ ├── default.png │ ├── github.svg │ └── google.svg ├── next.svg └── vercel.svg ├── tailwind.config.ts └── tsconfig.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | .yarn/install-state.gz 8 | 9 | # testing 10 | /coverage 11 | 12 | # next.js 13 | /.next/ 14 | /out/ 15 | 16 | # production 17 | /build 18 | 19 | # misc 20 | .DS_Store 21 | *.pem 22 | 23 | # debug 24 | npm-debug.log* 25 | yarn-debug.log* 26 | yarn-error.log* 27 | 28 | # local env files 29 | .env*.local 30 | .env 31 | toc.txt 32 | 33 | # vercel 34 | .vercel 35 | 36 | # typescript 37 | *.tsbuildinfo 38 | next-env.d.ts 39 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | setup: 2 | pnpm create next-app nextauth-nextjs14-prisma 3 | install dependecies: 4 | pnpm add next-auth@beta @auth/prisma-adapter 5 | pnpm add @prisma/client 6 | pnpm add bcryptjs 7 | pnpm add -D prisma ts-node @types/bcryptjs 8 | 9 | pnpm add zod @hookform/resolvers react-hook-form tailwind-merge 10 | pnpm add react-hot-toast 11 | 12 | commands: 13 | docker-compose up -d 14 | docker-compose down 15 | pnpm prisma init --datasource-provider postgresql 16 | pnpm prisma migrate dev --name init 17 | 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 1. Setup and Use NextAuth.js in Next.js 14 App Directory 2 | 3 | In this tutorial, you will learn how to set up NextAuth v5 in Next.js 14. With the release of NextAuth v5, a couple of breaking changes have been introduced, and getting NextAuth up and running in a Next.js 14 project requires a bit of setup. 4 | 5 | ![Setup and Use NextAuth.js in Next.js 14 App Directory](https://codevoweb.com/wp-content/uploads/2024/02/Setup-and-Use-NextAuth.js-in-Next.js-14-App-Directory.webp) 6 | 7 | ### Topics Covered 8 | 9 | - How to Run the Next.js Application on Your Machine 10 | - Bootstrap the Next.js 14 Project 11 | - Install the Required Dependencies 12 | - Initialize NextAuth.js in Next.js 14 13 | - Set up Prisma for Database Interactions 14 | - Set up PostgreSQL with Docker 15 | - Set up Prisma and Prisma Client 16 | - Hack Around the Account Registration 17 | - Implement Credentials Authentication 18 | - Implement Google and GitHub OAuth 19 | - Three Ways of Fetching the NextAuth Session Data 20 | - Retrieving the Session in a React Server Component 21 | - Retrieving the Session in an API Route 22 | - Retrieving the Session in a React Client Component 23 | - How to Add Custom Data to the Session Data 24 | - Three Ways of Protecting Routes with NextAuth 25 | - Client-Side Route Protection 26 | - Server-Side Route Protection 27 | - Middleware Route Protection 28 | - Creating a Custom Registration Page 29 | - Create the Account Registration API Route 30 | - Create the Form Component 31 | - Create the Page Component 32 | - Conclusion 33 | 34 | Read the entire article here: [https://codevoweb.com/setup-and-use-nextauth-in-nextjs-14-app-directory/](https://codevoweb.com/setup-and-use-nextauth-in-nextjs-14-app-directory/) 35 | 36 | ## 2. Implement Authentication with NextAuth in Next.js 14 37 | 38 | In this tutorial, you'll discover how to set up NextAuth v5 in Next.js 14, configure Prisma ORM for database interactions, implement user registration and login, and secure routes using Next.js middleware with NextAuth. 39 | 40 | ![Implement Authentication with NextAuth in Next.js 14](https://codevoweb.com/wp-content/uploads/2024/02/Implement-Authentication-with-NextAuth-in-Next.js-14.webp) 41 | 42 | ### Topics Covered 43 | 44 | - Running the Project on Your Computer 45 | - Demo of the Authentication Flow 46 | - Configuring Tailwind CSS 47 | - Setting up a PostgreSQL Server with Docker Compose 48 | - Creating Prisma Models for NextAuth 49 | - Initializing NextAuth.js in Next.js 14 50 | - Implementing Credentials Authentication with NextAuth 51 | - Creating a Header Component 52 | - Creating Zod Validation Schemas 53 | - Implementing Account Registration 54 | - Creating the Account Registration API Route 55 | - Creating the Account Registration Form 56 | - Creating the Page Component 57 | - Implementing User Sign-in with NextAuth 58 | - Creating the Account Login Form 59 | - Creating the Page Component 60 | - Protecting Routes with NextAuth Middleware 61 | - Creating a Protected Page 62 | - Conclusion 63 | 64 | Read the entire article here: [https://codevoweb.com/implement-authentication-with-nextauth-in-nextjs-14/](https://codevoweb.com/implement-authentication-with-nextauth-in-nextjs-14/) 65 | 66 | ## 3. Set up Google and GitHub OAuth with NextAuth in Next.js 14 67 | 68 | In this comprehensive guide, you will learn how to set up Google and GitHub OAuth with NextAuth v5 in your Next.js 14 project. Incorporating OAuth sign-in options into your application can eliminate the need for users to sign in with their email and password. 69 | 70 | ![Set up Google and GitHub OAuth with NextAuth in Next.js 14](https://codevoweb.com/wp-content/uploads/2024/02/Set-up-Google-and-GitHub-OAuth-with-NextAuth-in-Next.js-14.webp) 71 | 72 | ### Topics Covered 73 | 74 | - How to Run the Project on Your Computer 75 | - Demo of the OAuth Flow 76 | - Obtaining Google and GitHub OAuth Credentials 77 | - Google OAuth Client ID and Secret 78 | - GitHub OAuth Client ID and Secret 79 | - Initializing NextAuth.js in Next.js 14 80 | - Adding Google and GitHub Providers to NextAuth 81 | - Modifying the JWT Payload and Session Data 82 | - Implementing Google and GitHub OAuth Sign-in Options 83 | - Protecting Routes with NextAuth Middleware 84 | - Conclusion 85 | 86 | Read the entire article here: [https://codevoweb.com/google-and-github-oauth-with-nextauth-in-nextjs-14/](https://codevoweb.com/google-and-github-oauth-with-nextauth-in-nextjs-14/) 87 | 88 | -------------------------------------------------------------------------------- /app/api/auth/[...nextauth]/route.ts: -------------------------------------------------------------------------------- 1 | import { handlers } from '@/auth'; 2 | 3 | export const { GET, POST } = handlers; 4 | -------------------------------------------------------------------------------- /app/api/register/route.ts: -------------------------------------------------------------------------------- 1 | import { hash } from "bcryptjs"; 2 | import { NextResponse } from "next/server"; 3 | import prisma from "@/prisma/prisma"; 4 | import { createUserSchema } from "@/lib/user-schema"; 5 | import { ZodError } from "zod"; 6 | 7 | export async function POST(req: Request) { 8 | try { 9 | const { name, email, password } = createUserSchema.parse(await req.json()); 10 | 11 | const hashed_password = await hash(password, 12); 12 | 13 | const user = await prisma.user.create({ 14 | data: { 15 | name, 16 | email: email.toLowerCase(), 17 | password: hashed_password, 18 | }, 19 | }); 20 | 21 | return NextResponse.json({ 22 | user: { 23 | name: user.name, 24 | email: user.email, 25 | }, 26 | }); 27 | } catch (error: any) { 28 | if (error instanceof ZodError) { 29 | return NextResponse.json( 30 | { 31 | status: "error", 32 | message: "Validation failed", 33 | errors: error.errors, 34 | }, 35 | { status: 400 } 36 | ); 37 | } 38 | 39 | if (error.code === "P2002") { 40 | return NextResponse.json( 41 | { 42 | status: "fail", 43 | message: "user with that email already exists", 44 | }, 45 | { status: 409 } 46 | ); 47 | } 48 | 49 | return NextResponse.json( 50 | { 51 | status: "error", 52 | message: error.message || "Internal Server Error", 53 | }, 54 | { status: 500 } 55 | ); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/api/session/route.ts: -------------------------------------------------------------------------------- 1 | import { auth } from "@/auth"; 2 | import { NextResponse } from "next/server"; 3 | 4 | export async function GET(_request: Request) { 5 | const session = await auth(); 6 | 7 | if (!session?.user) { 8 | return new NextResponse( 9 | JSON.stringify({ status: "fail", message: "You are not logged in" }), 10 | { status: 401 } 11 | ); 12 | } 13 | 14 | return NextResponse.json({ 15 | authenticated: !!session, 16 | session, 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /app/client-side/page.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { useSession } from "next-auth/react"; 4 | import Image from "next/image"; 5 | import { useRouter } from "next/navigation"; 6 | 7 | export default function Profile() { 8 | const router = useRouter(); 9 | const { data } = useSession({ 10 | required: true, 11 | // onUnauthenticated() { 12 | // router.push('/api/auth/signin'); 13 | // }, 14 | }); 15 | 16 | const user = data?.user; 17 | 18 | return ( 19 | <> 20 |
21 |
22 |
23 |

24 | Profile Page 25 |

26 | {!user ? ( 27 |

Loading...

28 | ) : ( 29 |
30 |
31 | {`profile 37 |
38 |
39 |

ID: {user.id}

40 |

Name: {user.name}

41 |

Email: {user.email}

42 |
43 |
44 | )} 45 |
46 |
47 |
48 | 49 | ); 50 | } 51 | -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wpcodevo/nextauth-nextjs14-prisma/ba55c0240c13df80fdd43e553f41468da90897c7/app/favicon.ico -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import { Inter } from "next/font/google"; 3 | import "./globals.css"; 4 | import { Toaster } from "react-hot-toast"; 5 | import { SessionProvider } from "next-auth/react"; 6 | 7 | const inter = Inter({ subsets: ["latin"] }); 8 | 9 | export const metadata: Metadata = { 10 | title: "Create Next App", 11 | description: "Generated by create next app", 12 | }; 13 | 14 | export default function RootLayout({ 15 | children, 16 | }: Readonly<{ 17 | children: React.ReactNode; 18 | }>) { 19 | return ( 20 | 21 | 22 | {children} 23 | 24 | 25 | 26 | ); 27 | } 28 | -------------------------------------------------------------------------------- /app/login/login-form.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { zodResolver } from '@hookform/resolvers/zod'; 4 | import Image from 'next/image'; 5 | import { useRouter, useSearchParams } from 'next/navigation'; 6 | import { useState } from 'react'; 7 | import { SubmitHandler, useForm } from 'react-hook-form'; 8 | import toast from 'react-hot-toast'; 9 | import { signIn } from 'next-auth/react'; 10 | import { LoginUserInput, loginUserSchema } from '@/lib/user-schema'; 11 | 12 | 13 | 14 | export const LoginForm = () => { 15 | const router = useRouter(); 16 | const [error, setError] = useState(''); 17 | const [submitting, setSubmitting] = useState(false); 18 | 19 | const searchParams = useSearchParams(); 20 | const callbackUrl = searchParams.get('callbackUrl') || '/profile'; 21 | 22 | const methods = useForm({ 23 | resolver: zodResolver(loginUserSchema), 24 | }); 25 | 26 | const { 27 | reset, 28 | handleSubmit, 29 | register, 30 | formState: { errors }, 31 | } = methods; 32 | 33 | const onSubmitHandler: SubmitHandler = async (values) => { 34 | try { 35 | setSubmitting(true); 36 | 37 | const res = await signIn('credentials', { 38 | redirect: false, 39 | email: values.email, 40 | password: values.password, 41 | redirectTo: callbackUrl, 42 | }); 43 | 44 | setSubmitting(false); 45 | 46 | if (!res?.error) { 47 | toast.success('successfully logged in'); 48 | router.push(callbackUrl); 49 | } else { 50 | reset({ password: '' }); 51 | const message = 'invalid email or password'; 52 | toast.error(message); 53 | setError(message); 54 | } 55 | } catch (error: any) { 56 | toast.error(error.message); 57 | setError(error.message); 58 | } finally { 59 | setSubmitting(false); 60 | } 61 | }; 62 | 63 | const input_style = 64 | 'form-control block w-full px-4 py-5 text-sm font-normal text-gray-700 bg-white bg-clip-padding border border-solid border-gray-300 rounded transition ease-in-out m-0 focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none'; 65 | 66 | return ( 67 |
68 | {error && ( 69 |

{error}

70 | )} 71 |
72 | 78 | {errors['email'] && ( 79 | 80 | {errors['email']?.message as string} 81 | 82 | )} 83 |
84 |
85 | 91 | {errors['password'] && ( 92 | 93 | {errors['password']?.message as string} 94 | 95 | )} 96 |
97 | 105 | 106 |
107 |

OR

108 |
109 | 110 | signIn('google', { callbackUrl })} 114 | role='button' 115 | > 116 | 124 | Continue with Google 125 | 126 | signIn('github', { callbackUrl })} 130 | role='button' 131 | > 132 | 139 | Continue with GitHub 140 | 141 |
142 | ); 143 | }; 144 | -------------------------------------------------------------------------------- /app/login/page.tsx: -------------------------------------------------------------------------------- 1 | import Header from '@/components/header'; 2 | import { LoginForm } from './login-form'; 3 | import { Suspense } from 'react'; 4 | 5 | export default async function LoginPage() { 6 | return ( 7 | <> 8 |
9 | 10 |
11 |
12 |
13 | Loading...}> 14 | 15 | 16 |
17 |
18 |
19 | 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /app/page.tsx: -------------------------------------------------------------------------------- 1 | import Header from '@/components/header'; 2 | 3 | export default function Home() { 4 | return ( 5 | <> 6 |
7 |
8 |
9 |

10 | Implement Authentication with NextAuth in Next.js 14 11 |

12 |
13 |
14 | 15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /app/profile/page.tsx: -------------------------------------------------------------------------------- 1 | import { auth } from "@/auth"; 2 | import Header from "@/components/header"; 3 | import Image from "next/image"; 4 | import { redirect } from "next/navigation"; 5 | 6 | export default async function ProfilePage() { 7 | const session = await auth(); 8 | 9 | // if (!session?.user) { 10 | // return redirect("/api/auth/signin"); 11 | // } 12 | 13 | const user = session?.user; 14 | 15 | return ( 16 | <> 17 |
18 |
19 |
20 |
21 |

22 | Profile Page 23 |

24 |
25 |
26 | {`profile 32 |
33 |
34 |

ID: {user?.id}

35 |

Name: {user?.name}

36 |

Email: {user?.email}

37 |
38 |
39 |
40 |
41 |
42 | 43 | ); 44 | } 45 | -------------------------------------------------------------------------------- /app/register/page.tsx: -------------------------------------------------------------------------------- 1 | import Header from '@/components/header'; 2 | import { RegisterForm } from './register-form'; 3 | 4 | export default async function RegisterPage() { 5 | return ( 6 | <> 7 |
8 | 9 |
10 |
11 |
12 | 13 |
14 |
15 |
16 | 17 | ); 18 | } 19 | -------------------------------------------------------------------------------- /app/register/register-form.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { zodResolver } from "@hookform/resolvers/zod"; 4 | import { SubmitHandler, useForm } from "react-hook-form"; 5 | import toast from "react-hot-toast"; 6 | import { useState } from "react"; 7 | import { signIn } from "next-auth/react"; 8 | import { CreateUserInput, createUserSchema } from "@/lib/user-schema"; 9 | 10 | export const RegisterForm = () => { 11 | const [submitting, setSubmitting] = useState(false); 12 | 13 | const methods = useForm({ 14 | resolver: zodResolver(createUserSchema), 15 | }); 16 | 17 | const { 18 | handleSubmit, 19 | register, 20 | formState: { errors }, 21 | } = methods; 22 | 23 | const onSubmitHandler: SubmitHandler = async (values) => { 24 | try { 25 | setSubmitting(true); 26 | const res = await fetch("/api/register", { 27 | method: "POST", 28 | body: JSON.stringify(values), 29 | headers: { 30 | "Content-Type": "application/json", 31 | }, 32 | }); 33 | 34 | if (!res.ok) { 35 | const errorData = await res.json(); 36 | 37 | if (Array.isArray(errorData.errors) && errorData.errors.length > 0) { 38 | errorData.errors.forEach((error: any) => { 39 | toast.error(error.message); 40 | }); 41 | 42 | return; 43 | } 44 | 45 | toast.error(errorData.message); 46 | return; 47 | } 48 | 49 | signIn(undefined, { callbackUrl: "/" }); 50 | } catch (error: any) { 51 | toast.error(error.message); 52 | } finally { 53 | setSubmitting(false); 54 | } 55 | }; 56 | 57 | const input_style = 58 | "form-control block w-full px-4 py-5 text-sm font-normal text-gray-700 bg-white bg-clip-padding border border-solid border-gray-300 rounded transition ease-in-out m-0 focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none"; 59 | 60 | return ( 61 |
62 |
63 | 68 | {errors["name"] && ( 69 | 70 | {errors["name"]?.message as string} 71 | 72 | )} 73 |
74 |
75 | 81 | {errors["email"] && ( 82 | 83 | {errors["email"]?.message as string} 84 | 85 | )} 86 |
87 |
88 | 94 | {errors["password"] && ( 95 | 96 | {errors["password"]?.message as string} 97 | 98 | )} 99 |
100 |
101 | 107 | {errors["passwordConfirm"] && ( 108 | 109 | {errors["passwordConfirm"]?.message as string} 110 | 111 | )} 112 |
113 | 121 |
122 | ); 123 | }; 124 | -------------------------------------------------------------------------------- /auth.ts: -------------------------------------------------------------------------------- 1 | import NextAuth from 'next-auth'; 2 | import { PrismaAdapter } from '@auth/prisma-adapter'; 3 | import prisma from './prisma/prisma'; 4 | import github from 'next-auth/providers/github'; 5 | import google from 'next-auth/providers/google'; 6 | import CredentialsProvider from 'next-auth/providers/credentials'; 7 | import bcrypt from 'bcryptjs'; 8 | 9 | export const { handlers, auth, signIn, signOut } = NextAuth({ 10 | session: { strategy: 'jwt' }, 11 | adapter: PrismaAdapter(prisma), 12 | pages: { 13 | signIn: '/login', 14 | }, 15 | providers: [ 16 | github, 17 | google, 18 | CredentialsProvider({ 19 | name: 'Sign in', 20 | id: 'credentials', 21 | credentials: { 22 | email: { 23 | label: 'Email', 24 | type: 'email', 25 | placeholder: 'example@example.com', 26 | }, 27 | password: { label: 'Password', type: 'password' }, 28 | }, 29 | async authorize(credentials) { 30 | if (!credentials?.email || !credentials.password) { 31 | return null; 32 | } 33 | 34 | const user = await prisma.user.findUnique({ 35 | where: { 36 | email: String(credentials.email), 37 | }, 38 | }); 39 | 40 | if ( 41 | !user || 42 | !(await bcrypt.compare(String(credentials.password), user.password!)) 43 | ) { 44 | return null; 45 | } 46 | 47 | return { 48 | id: user.id, 49 | email: user.email, 50 | name: user.name, 51 | randomKey: 'Hey cool', 52 | }; 53 | }, 54 | }), 55 | ], 56 | callbacks: { 57 | authorized({ auth, request: { nextUrl } }) { 58 | const isLoggedIn = !!auth?.user; 59 | const paths = ['/profile', '/client-side']; 60 | const isProtected = paths.some((path) => 61 | nextUrl.pathname.startsWith(path) 62 | ); 63 | 64 | if (isProtected && !isLoggedIn) { 65 | const redirectUrl = new URL('/api/auth/signin', nextUrl.origin); 66 | redirectUrl.searchParams.append('callbackUrl', nextUrl.href); 67 | return Response.redirect(redirectUrl); 68 | } 69 | return true; 70 | }, 71 | jwt: ({ token, user }) => { 72 | if (user) { 73 | const u = user as unknown as any; 74 | return { 75 | ...token, 76 | id: u.id, 77 | randomKey: u.randomKey, 78 | }; 79 | } 80 | return token; 81 | }, 82 | session(params) { 83 | return { 84 | ...params.session, 85 | user: { 86 | ...params.session.user, 87 | id: params.token.id as string, 88 | randomKey: params.token.randomKey, 89 | }, 90 | }; 91 | }, 92 | }, 93 | }); 94 | -------------------------------------------------------------------------------- /components/header.tsx: -------------------------------------------------------------------------------- 1 | import { auth, signOut } from '@/auth'; 2 | import Link from 'next/link'; 3 | 4 | const Header = async () => { 5 | const session = await auth(); 6 | const user = session?.user; 7 | 8 | const logoutAction = async () => { 9 | 'use server'; 10 | await signOut(); 11 | }; 12 | 13 | return ( 14 |
15 | 60 |
61 | ); 62 | }; 63 | 64 | export default Header; 65 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | postgres: 4 | image: postgres:latest 5 | container_name: postgres 6 | ports: 7 | - '6500:5432' 8 | volumes: 9 | - progresDB:/var/lib/postgresql/data 10 | env_file: 11 | - ./.env 12 | volumes: 13 | progresDB: 14 | -------------------------------------------------------------------------------- /example.env: -------------------------------------------------------------------------------- 1 | AUTH_GITHUB_ID= 2 | AUTH_GITHUB_SECRET= 3 | 4 | AUTH_GOOGLE_ID= 5 | AUTH_GOOGLE_SECRET= 6 | 7 | AUTH_SECRET=my_ultra_secure_nextauth_secret 8 | # NEXTAUTH_URL=http://localhost:3000 this is causing a webpack error in the beta v8 of NextAuth 9 | 10 | POSTGRES_HOST=127.0.0.1 11 | POSTGRES_PORT=6500 12 | POSTGRES_USER=admin 13 | POSTGRES_PASSWORD=password123 14 | POSTGRES_DB=nextauth_prisma 15 | 16 | DATABASE_URL="postgresql://admin:password123@localhost:6500/nextauth_prisma?schema=public" -------------------------------------------------------------------------------- /lib/user-schema.ts: -------------------------------------------------------------------------------- 1 | import { TypeOf, object, string } from "zod"; 2 | 3 | export const createUserSchema = object({ 4 | name: string({ required_error: "Name is required" }).min( 5 | 1, 6 | "Name is required" 7 | ), 8 | email: string({ required_error: "Email is required" }) 9 | .min(1, "Email is required") 10 | .email("Invalid email"), 11 | photo: string().optional(), 12 | password: string({ required_error: "Password is required" }) 13 | .min(1, "Password is required") 14 | .min(8, "Password must be more than 8 characters") 15 | .max(32, "Password must be less than 32 characters"), 16 | passwordConfirm: string({ 17 | required_error: "Please confirm your password", 18 | }).min(1, "Please confirm your password"), 19 | }).refine((data) => data.password === data.passwordConfirm, { 20 | path: ["passwordConfirm"], 21 | message: "Passwords do not match", 22 | }); 23 | 24 | export const loginUserSchema = object({ 25 | email: string({ required_error: "Email is required" }) 26 | .min(1, "Email is required") 27 | .email("Invalid email or password"), 28 | password: string({ required_error: "Password is required" }).min( 29 | 1, 30 | "Password is required" 31 | ), 32 | }); 33 | 34 | export type LoginUserInput = TypeOf; 35 | export type CreateUserInput = TypeOf; 36 | -------------------------------------------------------------------------------- /middleware.ts: -------------------------------------------------------------------------------- 1 | export { auth as middleware } from './auth'; 2 | 3 | export const config = { 4 | matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'], 5 | }; 6 | -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | images: { 4 | remotePatterns: [ 5 | { 6 | protocol: 'https', 7 | hostname: 'avatars.githubusercontent.com', 8 | }, 9 | { 10 | protocol: 'https', 11 | hostname: 'lh3.googleusercontent.com', 12 | }, 13 | ], 14 | }, 15 | }; 16 | 17 | export default nextConfig; 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nextauth-nextjs14-prisma", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "dev": "next dev", 7 | "build": "next build", 8 | "start": "next start", 9 | "lint": "next lint" 10 | }, 11 | "prisma": { 12 | "seed": "ts-node --compiler-options {\"module\":\"CommonJS\"} prisma/seed.ts" 13 | }, 14 | "dependencies": { 15 | "@auth/prisma-adapter": "^1.3.3", 16 | "@hookform/resolvers": "^3.3.4", 17 | "@prisma/client": "^5.9.1", 18 | "bcryptjs": "^2.4.3", 19 | "next": "14.1.0", 20 | "next-auth": "5.0.0-beta.5", 21 | "react": "^18", 22 | "react-dom": "^18", 23 | "react-hook-form": "^7.50.1", 24 | "react-hot-toast": "^2.4.1", 25 | "tailwind-merge": "^2.2.1", 26 | "zod": "^3.22.4" 27 | }, 28 | "devDependencies": { 29 | "@types/bcryptjs": "^2.4.6", 30 | "@types/node": "^20", 31 | "@types/react": "^18", 32 | "@types/react-dom": "^18", 33 | "autoprefixer": "^10.4.17", 34 | "eslint": "^8", 35 | "eslint-config-next": "14.1.0", 36 | "postcss": "^8", 37 | "prisma": "^5.9.1", 38 | "tailwindcss": "^3.4.1", 39 | "ts-node": "^10.9.2", 40 | "typescript": "^5" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@auth/prisma-adapter': 9 | specifier: ^1.3.3 10 | version: 1.3.3(@prisma/client@5.9.1) 11 | '@hookform/resolvers': 12 | specifier: ^3.3.4 13 | version: 3.3.4(react-hook-form@7.50.1) 14 | '@prisma/client': 15 | specifier: ^5.9.1 16 | version: 5.9.1(prisma@5.9.1) 17 | bcryptjs: 18 | specifier: ^2.4.3 19 | version: 2.4.3 20 | next: 21 | specifier: 14.1.0 22 | version: 14.1.0(react-dom@18.2.0)(react@18.2.0) 23 | next-auth: 24 | specifier: 5.0.0-beta.5 25 | version: 5.0.0-beta.5(next@14.1.0)(react@18.2.0) 26 | react: 27 | specifier: ^18 28 | version: 18.2.0 29 | react-dom: 30 | specifier: ^18 31 | version: 18.2.0(react@18.2.0) 32 | react-hook-form: 33 | specifier: ^7.50.1 34 | version: 7.50.1(react@18.2.0) 35 | react-hot-toast: 36 | specifier: ^2.4.1 37 | version: 2.4.1(csstype@3.1.3)(react-dom@18.2.0)(react@18.2.0) 38 | tailwind-merge: 39 | specifier: ^2.2.1 40 | version: 2.2.1 41 | zod: 42 | specifier: ^3.22.4 43 | version: 3.22.4 44 | 45 | devDependencies: 46 | '@types/bcryptjs': 47 | specifier: ^2.4.6 48 | version: 2.4.6 49 | '@types/node': 50 | specifier: ^20 51 | version: 20.11.16 52 | '@types/react': 53 | specifier: ^18 54 | version: 18.2.55 55 | '@types/react-dom': 56 | specifier: ^18 57 | version: 18.2.18 58 | autoprefixer: 59 | specifier: ^10.4.17 60 | version: 10.4.17(postcss@8.4.34) 61 | eslint: 62 | specifier: ^8 63 | version: 8.56.0 64 | eslint-config-next: 65 | specifier: 14.1.0 66 | version: 14.1.0(eslint@8.56.0)(typescript@5.3.3) 67 | postcss: 68 | specifier: ^8 69 | version: 8.4.34 70 | prisma: 71 | specifier: ^5.9.1 72 | version: 5.9.1 73 | tailwindcss: 74 | specifier: ^3.4.1 75 | version: 3.4.1(ts-node@10.9.2) 76 | ts-node: 77 | specifier: ^10.9.2 78 | version: 10.9.2(@types/node@20.11.16)(typescript@5.3.3) 79 | typescript: 80 | specifier: ^5 81 | version: 5.3.3 82 | 83 | packages: 84 | 85 | /@aashutoshrathi/word-wrap@1.2.6: 86 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 87 | engines: {node: '>=0.10.0'} 88 | dev: true 89 | 90 | /@alloc/quick-lru@5.2.0: 91 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 92 | engines: {node: '>=10'} 93 | dev: true 94 | 95 | /@auth/core@0.21.0: 96 | resolution: {integrity: sha512-jUWYs8gjy2GvtP9dd/4S9KcwZ660Cm/IkybiAq96/2Ooku9SKk5SUG+UTEwkyLuaQ38ZgfwggfpDOgzsXEcufA==} 97 | peerDependencies: 98 | nodemailer: ^6.8.0 99 | peerDependenciesMeta: 100 | nodemailer: 101 | optional: true 102 | dependencies: 103 | '@panva/hkdf': 1.1.1 104 | '@types/cookie': 0.6.0 105 | cookie: 0.6.0 106 | jose: 5.2.1 107 | oauth4webapi: 2.10.2 108 | preact: 10.11.3 109 | preact-render-to-string: 5.2.3(preact@10.11.3) 110 | dev: false 111 | 112 | /@auth/core@0.26.3: 113 | resolution: {integrity: sha512-Ka6rMjWMdiQCvLW/CnYZxj4Rq2bhQ/ZtU32NLxmtyAaixGb0mRXQ9MxJUBZA7GHovbghdzu55p2Cb54qNlVFzw==} 114 | peerDependencies: 115 | '@simplewebauthn/browser': ^9.0.1 116 | '@simplewebauthn/server': ^9.0.1 117 | nodemailer: ^6.8.0 118 | peerDependenciesMeta: 119 | '@simplewebauthn/browser': 120 | optional: true 121 | '@simplewebauthn/server': 122 | optional: true 123 | nodemailer: 124 | optional: true 125 | dependencies: 126 | '@panva/hkdf': 1.1.1 127 | '@types/cookie': 0.6.0 128 | cookie: 0.6.0 129 | jose: 5.2.1 130 | oauth4webapi: 2.10.2 131 | preact: 10.11.3 132 | preact-render-to-string: 5.2.3(preact@10.11.3) 133 | dev: false 134 | 135 | /@auth/prisma-adapter@1.3.3(@prisma/client@5.9.1): 136 | resolution: {integrity: sha512-KVR4a6ekgVzaX2i62XgWbKThOFOhB22bEVsITbMrA9kDZM4dHOZ9QOBbzpXP/e6hSUxTdO97zy1LZ8pASR1Ybw==} 137 | peerDependencies: 138 | '@prisma/client': '>=2.26.0 || >=3 || >=4 || >=5' 139 | dependencies: 140 | '@auth/core': 0.26.3 141 | '@prisma/client': 5.9.1(prisma@5.9.1) 142 | transitivePeerDependencies: 143 | - '@simplewebauthn/browser' 144 | - '@simplewebauthn/server' 145 | - nodemailer 146 | dev: false 147 | 148 | /@babel/runtime@7.23.9: 149 | resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} 150 | engines: {node: '>=6.9.0'} 151 | dependencies: 152 | regenerator-runtime: 0.14.1 153 | 154 | /@cspotcode/source-map-support@0.8.1: 155 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 156 | engines: {node: '>=12'} 157 | dependencies: 158 | '@jridgewell/trace-mapping': 0.3.9 159 | dev: true 160 | 161 | /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): 162 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 163 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 164 | peerDependencies: 165 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 166 | dependencies: 167 | eslint: 8.56.0 168 | eslint-visitor-keys: 3.4.3 169 | dev: true 170 | 171 | /@eslint-community/regexpp@4.10.0: 172 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 173 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 174 | dev: true 175 | 176 | /@eslint/eslintrc@2.1.4: 177 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 178 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 179 | dependencies: 180 | ajv: 6.12.6 181 | debug: 4.3.4 182 | espree: 9.6.1 183 | globals: 13.24.0 184 | ignore: 5.3.1 185 | import-fresh: 3.3.0 186 | js-yaml: 4.1.0 187 | minimatch: 3.1.2 188 | strip-json-comments: 3.1.1 189 | transitivePeerDependencies: 190 | - supports-color 191 | dev: true 192 | 193 | /@eslint/js@8.56.0: 194 | resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} 195 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 196 | dev: true 197 | 198 | /@hookform/resolvers@3.3.4(react-hook-form@7.50.1): 199 | resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} 200 | peerDependencies: 201 | react-hook-form: ^7.0.0 202 | dependencies: 203 | react-hook-form: 7.50.1(react@18.2.0) 204 | dev: false 205 | 206 | /@humanwhocodes/config-array@0.11.14: 207 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} 208 | engines: {node: '>=10.10.0'} 209 | dependencies: 210 | '@humanwhocodes/object-schema': 2.0.2 211 | debug: 4.3.4 212 | minimatch: 3.1.2 213 | transitivePeerDependencies: 214 | - supports-color 215 | dev: true 216 | 217 | /@humanwhocodes/module-importer@1.0.1: 218 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 219 | engines: {node: '>=12.22'} 220 | dev: true 221 | 222 | /@humanwhocodes/object-schema@2.0.2: 223 | resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} 224 | dev: true 225 | 226 | /@isaacs/cliui@8.0.2: 227 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 228 | engines: {node: '>=12'} 229 | dependencies: 230 | string-width: 5.1.2 231 | string-width-cjs: /string-width@4.2.3 232 | strip-ansi: 7.1.0 233 | strip-ansi-cjs: /strip-ansi@6.0.1 234 | wrap-ansi: 8.1.0 235 | wrap-ansi-cjs: /wrap-ansi@7.0.0 236 | dev: true 237 | 238 | /@jridgewell/gen-mapping@0.3.3: 239 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 240 | engines: {node: '>=6.0.0'} 241 | dependencies: 242 | '@jridgewell/set-array': 1.1.2 243 | '@jridgewell/sourcemap-codec': 1.4.15 244 | '@jridgewell/trace-mapping': 0.3.22 245 | dev: true 246 | 247 | /@jridgewell/resolve-uri@3.1.1: 248 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 249 | engines: {node: '>=6.0.0'} 250 | dev: true 251 | 252 | /@jridgewell/set-array@1.1.2: 253 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 254 | engines: {node: '>=6.0.0'} 255 | dev: true 256 | 257 | /@jridgewell/sourcemap-codec@1.4.15: 258 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 259 | dev: true 260 | 261 | /@jridgewell/trace-mapping@0.3.22: 262 | resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} 263 | dependencies: 264 | '@jridgewell/resolve-uri': 3.1.1 265 | '@jridgewell/sourcemap-codec': 1.4.15 266 | dev: true 267 | 268 | /@jridgewell/trace-mapping@0.3.9: 269 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 270 | dependencies: 271 | '@jridgewell/resolve-uri': 3.1.1 272 | '@jridgewell/sourcemap-codec': 1.4.15 273 | dev: true 274 | 275 | /@next/env@14.1.0: 276 | resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} 277 | dev: false 278 | 279 | /@next/eslint-plugin-next@14.1.0: 280 | resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} 281 | dependencies: 282 | glob: 10.3.10 283 | dev: true 284 | 285 | /@next/swc-darwin-arm64@14.1.0: 286 | resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} 287 | engines: {node: '>= 10'} 288 | cpu: [arm64] 289 | os: [darwin] 290 | requiresBuild: true 291 | dev: false 292 | optional: true 293 | 294 | /@next/swc-darwin-x64@14.1.0: 295 | resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} 296 | engines: {node: '>= 10'} 297 | cpu: [x64] 298 | os: [darwin] 299 | requiresBuild: true 300 | dev: false 301 | optional: true 302 | 303 | /@next/swc-linux-arm64-gnu@14.1.0: 304 | resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} 305 | engines: {node: '>= 10'} 306 | cpu: [arm64] 307 | os: [linux] 308 | requiresBuild: true 309 | dev: false 310 | optional: true 311 | 312 | /@next/swc-linux-arm64-musl@14.1.0: 313 | resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} 314 | engines: {node: '>= 10'} 315 | cpu: [arm64] 316 | os: [linux] 317 | requiresBuild: true 318 | dev: false 319 | optional: true 320 | 321 | /@next/swc-linux-x64-gnu@14.1.0: 322 | resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} 323 | engines: {node: '>= 10'} 324 | cpu: [x64] 325 | os: [linux] 326 | requiresBuild: true 327 | dev: false 328 | optional: true 329 | 330 | /@next/swc-linux-x64-musl@14.1.0: 331 | resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} 332 | engines: {node: '>= 10'} 333 | cpu: [x64] 334 | os: [linux] 335 | requiresBuild: true 336 | dev: false 337 | optional: true 338 | 339 | /@next/swc-win32-arm64-msvc@14.1.0: 340 | resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} 341 | engines: {node: '>= 10'} 342 | cpu: [arm64] 343 | os: [win32] 344 | requiresBuild: true 345 | dev: false 346 | optional: true 347 | 348 | /@next/swc-win32-ia32-msvc@14.1.0: 349 | resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} 350 | engines: {node: '>= 10'} 351 | cpu: [ia32] 352 | os: [win32] 353 | requiresBuild: true 354 | dev: false 355 | optional: true 356 | 357 | /@next/swc-win32-x64-msvc@14.1.0: 358 | resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} 359 | engines: {node: '>= 10'} 360 | cpu: [x64] 361 | os: [win32] 362 | requiresBuild: true 363 | dev: false 364 | optional: true 365 | 366 | /@nodelib/fs.scandir@2.1.5: 367 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 368 | engines: {node: '>= 8'} 369 | dependencies: 370 | '@nodelib/fs.stat': 2.0.5 371 | run-parallel: 1.2.0 372 | dev: true 373 | 374 | /@nodelib/fs.stat@2.0.5: 375 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 376 | engines: {node: '>= 8'} 377 | dev: true 378 | 379 | /@nodelib/fs.walk@1.2.8: 380 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 381 | engines: {node: '>= 8'} 382 | dependencies: 383 | '@nodelib/fs.scandir': 2.1.5 384 | fastq: 1.17.1 385 | dev: true 386 | 387 | /@panva/hkdf@1.1.1: 388 | resolution: {integrity: sha512-dhPeilub1NuIG0X5Kvhh9lH4iW3ZsHlnzwgwbOlgwQ2wG1IqFzsgHqmKPk3WzsdWAeaxKJxgM0+W433RmN45GA==} 389 | dev: false 390 | 391 | /@pkgjs/parseargs@0.11.0: 392 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 393 | engines: {node: '>=14'} 394 | requiresBuild: true 395 | dev: true 396 | optional: true 397 | 398 | /@prisma/client@5.9.1(prisma@5.9.1): 399 | resolution: {integrity: sha512-caSOnG4kxcSkhqC/2ShV7rEoWwd3XrftokxJqOCMVvia4NYV/TPtJlS9C2os3Igxw/Qyxumj9GBQzcStzECvtQ==} 400 | engines: {node: '>=16.13'} 401 | requiresBuild: true 402 | peerDependencies: 403 | prisma: '*' 404 | peerDependenciesMeta: 405 | prisma: 406 | optional: true 407 | dependencies: 408 | prisma: 5.9.1 409 | dev: false 410 | 411 | /@prisma/debug@5.9.1: 412 | resolution: {integrity: sha512-yAHFSFCg8KVoL0oRUno3m60GAjsUKYUDkQ+9BA2X2JfVR3kRVSJFc/GpQ2fSORi4pSHZR9orfM4UC9OVXIFFTA==} 413 | 414 | /@prisma/engines-version@5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64: 415 | resolution: {integrity: sha512-HFl7275yF0FWbdcNvcSRbbu9JCBSLMcurYwvWc8WGDnpu7APxQo2ONtZrUggU3WxLxUJ2uBX+0GOFIcJeVeOOQ==} 416 | 417 | /@prisma/engines@5.9.1: 418 | resolution: {integrity: sha512-gkdXmjxQ5jktxWNdDA5aZZ6R8rH74JkoKq6LD5mACSvxd2vbqWeWIOV0Py5wFC8vofOYShbt6XUeCIUmrOzOnQ==} 419 | requiresBuild: true 420 | dependencies: 421 | '@prisma/debug': 5.9.1 422 | '@prisma/engines-version': 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 423 | '@prisma/fetch-engine': 5.9.1 424 | '@prisma/get-platform': 5.9.1 425 | 426 | /@prisma/fetch-engine@5.9.1: 427 | resolution: {integrity: sha512-l0goQOMcNVOJs1kAcwqpKq3ylvkD9F04Ioe1oJoCqmz05mw22bNAKKGWuDd3zTUoUZr97va0c/UfLNru+PDmNA==} 428 | dependencies: 429 | '@prisma/debug': 5.9.1 430 | '@prisma/engines-version': 5.9.0-32.23fdc5965b1e05fc54e5f26ed3de66776b93de64 431 | '@prisma/get-platform': 5.9.1 432 | 433 | /@prisma/get-platform@5.9.1: 434 | resolution: {integrity: sha512-6OQsNxTyhvG+T2Ksr8FPFpuPeL4r9u0JF0OZHUBI/Uy9SS43sPyAIutt4ZEAyqWQt104ERh70EZedkHZKsnNbg==} 435 | dependencies: 436 | '@prisma/debug': 5.9.1 437 | 438 | /@rushstack/eslint-patch@1.7.2: 439 | resolution: {integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==} 440 | dev: true 441 | 442 | /@swc/helpers@0.5.2: 443 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} 444 | dependencies: 445 | tslib: 2.6.2 446 | dev: false 447 | 448 | /@tsconfig/node10@1.0.9: 449 | resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} 450 | dev: true 451 | 452 | /@tsconfig/node12@1.0.11: 453 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 454 | dev: true 455 | 456 | /@tsconfig/node14@1.0.3: 457 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 458 | dev: true 459 | 460 | /@tsconfig/node16@1.0.4: 461 | resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} 462 | dev: true 463 | 464 | /@types/bcryptjs@2.4.6: 465 | resolution: {integrity: sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==} 466 | dev: true 467 | 468 | /@types/cookie@0.6.0: 469 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 470 | dev: false 471 | 472 | /@types/json5@0.0.29: 473 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 474 | dev: true 475 | 476 | /@types/node@20.11.16: 477 | resolution: {integrity: sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==} 478 | dependencies: 479 | undici-types: 5.26.5 480 | dev: true 481 | 482 | /@types/prop-types@15.7.11: 483 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} 484 | dev: true 485 | 486 | /@types/react-dom@18.2.18: 487 | resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} 488 | dependencies: 489 | '@types/react': 18.2.55 490 | dev: true 491 | 492 | /@types/react@18.2.55: 493 | resolution: {integrity: sha512-Y2Tz5P4yz23brwm2d7jNon39qoAtMMmalOQv6+fEFt1mT+FcM3D841wDpoUvFXhaYenuROCy3FZYqdTjM7qVyA==} 494 | dependencies: 495 | '@types/prop-types': 15.7.11 496 | '@types/scheduler': 0.16.8 497 | csstype: 3.1.3 498 | dev: true 499 | 500 | /@types/scheduler@0.16.8: 501 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} 502 | dev: true 503 | 504 | /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): 505 | resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} 506 | engines: {node: ^16.0.0 || >=18.0.0} 507 | peerDependencies: 508 | eslint: ^7.0.0 || ^8.0.0 509 | typescript: '*' 510 | peerDependenciesMeta: 511 | typescript: 512 | optional: true 513 | dependencies: 514 | '@typescript-eslint/scope-manager': 6.21.0 515 | '@typescript-eslint/types': 6.21.0 516 | '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) 517 | '@typescript-eslint/visitor-keys': 6.21.0 518 | debug: 4.3.4 519 | eslint: 8.56.0 520 | typescript: 5.3.3 521 | transitivePeerDependencies: 522 | - supports-color 523 | dev: true 524 | 525 | /@typescript-eslint/scope-manager@6.21.0: 526 | resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} 527 | engines: {node: ^16.0.0 || >=18.0.0} 528 | dependencies: 529 | '@typescript-eslint/types': 6.21.0 530 | '@typescript-eslint/visitor-keys': 6.21.0 531 | dev: true 532 | 533 | /@typescript-eslint/types@6.21.0: 534 | resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} 535 | engines: {node: ^16.0.0 || >=18.0.0} 536 | dev: true 537 | 538 | /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): 539 | resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} 540 | engines: {node: ^16.0.0 || >=18.0.0} 541 | peerDependencies: 542 | typescript: '*' 543 | peerDependenciesMeta: 544 | typescript: 545 | optional: true 546 | dependencies: 547 | '@typescript-eslint/types': 6.21.0 548 | '@typescript-eslint/visitor-keys': 6.21.0 549 | debug: 4.3.4 550 | globby: 11.1.0 551 | is-glob: 4.0.3 552 | minimatch: 9.0.3 553 | semver: 7.6.0 554 | ts-api-utils: 1.2.1(typescript@5.3.3) 555 | typescript: 5.3.3 556 | transitivePeerDependencies: 557 | - supports-color 558 | dev: true 559 | 560 | /@typescript-eslint/visitor-keys@6.21.0: 561 | resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} 562 | engines: {node: ^16.0.0 || >=18.0.0} 563 | dependencies: 564 | '@typescript-eslint/types': 6.21.0 565 | eslint-visitor-keys: 3.4.3 566 | dev: true 567 | 568 | /@ungap/structured-clone@1.2.0: 569 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 570 | dev: true 571 | 572 | /acorn-jsx@5.3.2(acorn@8.11.3): 573 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 574 | peerDependencies: 575 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 576 | dependencies: 577 | acorn: 8.11.3 578 | dev: true 579 | 580 | /acorn-walk@8.3.2: 581 | resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 582 | engines: {node: '>=0.4.0'} 583 | dev: true 584 | 585 | /acorn@8.11.3: 586 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 587 | engines: {node: '>=0.4.0'} 588 | hasBin: true 589 | dev: true 590 | 591 | /ajv@6.12.6: 592 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 593 | dependencies: 594 | fast-deep-equal: 3.1.3 595 | fast-json-stable-stringify: 2.1.0 596 | json-schema-traverse: 0.4.1 597 | uri-js: 4.4.1 598 | dev: true 599 | 600 | /ansi-regex@5.0.1: 601 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 602 | engines: {node: '>=8'} 603 | dev: true 604 | 605 | /ansi-regex@6.0.1: 606 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 607 | engines: {node: '>=12'} 608 | dev: true 609 | 610 | /ansi-styles@4.3.0: 611 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 612 | engines: {node: '>=8'} 613 | dependencies: 614 | color-convert: 2.0.1 615 | dev: true 616 | 617 | /ansi-styles@6.2.1: 618 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 619 | engines: {node: '>=12'} 620 | dev: true 621 | 622 | /any-promise@1.3.0: 623 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 624 | dev: true 625 | 626 | /anymatch@3.1.3: 627 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 628 | engines: {node: '>= 8'} 629 | dependencies: 630 | normalize-path: 3.0.0 631 | picomatch: 2.3.1 632 | dev: true 633 | 634 | /arg@4.1.3: 635 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 636 | dev: true 637 | 638 | /arg@5.0.2: 639 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 640 | dev: true 641 | 642 | /argparse@2.0.1: 643 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 644 | dev: true 645 | 646 | /aria-query@5.3.0: 647 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 648 | dependencies: 649 | dequal: 2.0.3 650 | dev: true 651 | 652 | /array-buffer-byte-length@1.0.1: 653 | resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} 654 | engines: {node: '>= 0.4'} 655 | dependencies: 656 | call-bind: 1.0.6 657 | is-array-buffer: 3.0.4 658 | dev: true 659 | 660 | /array-includes@3.1.7: 661 | resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} 662 | engines: {node: '>= 0.4'} 663 | dependencies: 664 | call-bind: 1.0.6 665 | define-properties: 1.2.1 666 | es-abstract: 1.22.3 667 | get-intrinsic: 1.2.4 668 | is-string: 1.0.7 669 | dev: true 670 | 671 | /array-union@2.1.0: 672 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 673 | engines: {node: '>=8'} 674 | dev: true 675 | 676 | /array.prototype.filter@1.0.3: 677 | resolution: {integrity: sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==} 678 | engines: {node: '>= 0.4'} 679 | dependencies: 680 | call-bind: 1.0.6 681 | define-properties: 1.2.1 682 | es-abstract: 1.22.3 683 | es-array-method-boxes-properly: 1.0.0 684 | is-string: 1.0.7 685 | dev: true 686 | 687 | /array.prototype.findlastindex@1.2.4: 688 | resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} 689 | engines: {node: '>= 0.4'} 690 | dependencies: 691 | call-bind: 1.0.6 692 | define-properties: 1.2.1 693 | es-abstract: 1.22.3 694 | es-errors: 1.3.0 695 | es-shim-unscopables: 1.0.2 696 | dev: true 697 | 698 | /array.prototype.flat@1.3.2: 699 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 700 | engines: {node: '>= 0.4'} 701 | dependencies: 702 | call-bind: 1.0.6 703 | define-properties: 1.2.1 704 | es-abstract: 1.22.3 705 | es-shim-unscopables: 1.0.2 706 | dev: true 707 | 708 | /array.prototype.flatmap@1.3.2: 709 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 710 | engines: {node: '>= 0.4'} 711 | dependencies: 712 | call-bind: 1.0.6 713 | define-properties: 1.2.1 714 | es-abstract: 1.22.3 715 | es-shim-unscopables: 1.0.2 716 | dev: true 717 | 718 | /array.prototype.tosorted@1.1.3: 719 | resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} 720 | dependencies: 721 | call-bind: 1.0.6 722 | define-properties: 1.2.1 723 | es-abstract: 1.22.3 724 | es-errors: 1.3.0 725 | es-shim-unscopables: 1.0.2 726 | dev: true 727 | 728 | /arraybuffer.prototype.slice@1.0.3: 729 | resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} 730 | engines: {node: '>= 0.4'} 731 | dependencies: 732 | array-buffer-byte-length: 1.0.1 733 | call-bind: 1.0.6 734 | define-properties: 1.2.1 735 | es-abstract: 1.22.3 736 | es-errors: 1.3.0 737 | get-intrinsic: 1.2.4 738 | is-array-buffer: 3.0.4 739 | is-shared-array-buffer: 1.0.2 740 | dev: true 741 | 742 | /ast-types-flow@0.0.8: 743 | resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} 744 | dev: true 745 | 746 | /asynciterator.prototype@1.0.0: 747 | resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} 748 | dependencies: 749 | has-symbols: 1.0.3 750 | dev: true 751 | 752 | /autoprefixer@10.4.17(postcss@8.4.34): 753 | resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} 754 | engines: {node: ^10 || ^12 || >=14} 755 | hasBin: true 756 | peerDependencies: 757 | postcss: ^8.1.0 758 | dependencies: 759 | browserslist: 4.22.3 760 | caniuse-lite: 1.0.30001585 761 | fraction.js: 4.3.7 762 | normalize-range: 0.1.2 763 | picocolors: 1.0.0 764 | postcss: 8.4.34 765 | postcss-value-parser: 4.2.0 766 | dev: true 767 | 768 | /available-typed-arrays@1.0.6: 769 | resolution: {integrity: sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==} 770 | engines: {node: '>= 0.4'} 771 | dev: true 772 | 773 | /axe-core@4.7.0: 774 | resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} 775 | engines: {node: '>=4'} 776 | dev: true 777 | 778 | /axobject-query@3.2.1: 779 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 780 | dependencies: 781 | dequal: 2.0.3 782 | dev: true 783 | 784 | /balanced-match@1.0.2: 785 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 786 | dev: true 787 | 788 | /bcryptjs@2.4.3: 789 | resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} 790 | dev: false 791 | 792 | /binary-extensions@2.2.0: 793 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 794 | engines: {node: '>=8'} 795 | dev: true 796 | 797 | /brace-expansion@1.1.11: 798 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 799 | dependencies: 800 | balanced-match: 1.0.2 801 | concat-map: 0.0.1 802 | dev: true 803 | 804 | /brace-expansion@2.0.1: 805 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 806 | dependencies: 807 | balanced-match: 1.0.2 808 | dev: true 809 | 810 | /braces@3.0.2: 811 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 812 | engines: {node: '>=8'} 813 | dependencies: 814 | fill-range: 7.0.1 815 | dev: true 816 | 817 | /browserslist@4.22.3: 818 | resolution: {integrity: sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==} 819 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 820 | hasBin: true 821 | dependencies: 822 | caniuse-lite: 1.0.30001585 823 | electron-to-chromium: 1.4.659 824 | node-releases: 2.0.14 825 | update-browserslist-db: 1.0.13(browserslist@4.22.3) 826 | dev: true 827 | 828 | /busboy@1.6.0: 829 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 830 | engines: {node: '>=10.16.0'} 831 | dependencies: 832 | streamsearch: 1.1.0 833 | dev: false 834 | 835 | /call-bind@1.0.6: 836 | resolution: {integrity: sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==} 837 | engines: {node: '>= 0.4'} 838 | dependencies: 839 | es-errors: 1.3.0 840 | function-bind: 1.1.2 841 | get-intrinsic: 1.2.4 842 | set-function-length: 1.2.1 843 | dev: true 844 | 845 | /callsites@3.1.0: 846 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 847 | engines: {node: '>=6'} 848 | dev: true 849 | 850 | /camelcase-css@2.0.1: 851 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 852 | engines: {node: '>= 6'} 853 | dev: true 854 | 855 | /caniuse-lite@1.0.30001585: 856 | resolution: {integrity: sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==} 857 | 858 | /chalk@4.1.2: 859 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 860 | engines: {node: '>=10'} 861 | dependencies: 862 | ansi-styles: 4.3.0 863 | supports-color: 7.2.0 864 | dev: true 865 | 866 | /chokidar@3.6.0: 867 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 868 | engines: {node: '>= 8.10.0'} 869 | dependencies: 870 | anymatch: 3.1.3 871 | braces: 3.0.2 872 | glob-parent: 5.1.2 873 | is-binary-path: 2.1.0 874 | is-glob: 4.0.3 875 | normalize-path: 3.0.0 876 | readdirp: 3.6.0 877 | optionalDependencies: 878 | fsevents: 2.3.3 879 | dev: true 880 | 881 | /client-only@0.0.1: 882 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 883 | dev: false 884 | 885 | /color-convert@2.0.1: 886 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 887 | engines: {node: '>=7.0.0'} 888 | dependencies: 889 | color-name: 1.1.4 890 | dev: true 891 | 892 | /color-name@1.1.4: 893 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 894 | dev: true 895 | 896 | /commander@4.1.1: 897 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 898 | engines: {node: '>= 6'} 899 | dev: true 900 | 901 | /concat-map@0.0.1: 902 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 903 | dev: true 904 | 905 | /cookie@0.6.0: 906 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 907 | engines: {node: '>= 0.6'} 908 | dev: false 909 | 910 | /create-require@1.1.1: 911 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 912 | dev: true 913 | 914 | /cross-spawn@7.0.3: 915 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 916 | engines: {node: '>= 8'} 917 | dependencies: 918 | path-key: 3.1.1 919 | shebang-command: 2.0.0 920 | which: 2.0.2 921 | dev: true 922 | 923 | /cssesc@3.0.0: 924 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 925 | engines: {node: '>=4'} 926 | hasBin: true 927 | dev: true 928 | 929 | /csstype@3.1.3: 930 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 931 | 932 | /damerau-levenshtein@1.0.8: 933 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 934 | dev: true 935 | 936 | /debug@3.2.7: 937 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 938 | peerDependencies: 939 | supports-color: '*' 940 | peerDependenciesMeta: 941 | supports-color: 942 | optional: true 943 | dependencies: 944 | ms: 2.1.3 945 | dev: true 946 | 947 | /debug@4.3.4: 948 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 949 | engines: {node: '>=6.0'} 950 | peerDependencies: 951 | supports-color: '*' 952 | peerDependenciesMeta: 953 | supports-color: 954 | optional: true 955 | dependencies: 956 | ms: 2.1.2 957 | dev: true 958 | 959 | /deep-is@0.1.4: 960 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 961 | dev: true 962 | 963 | /define-data-property@1.1.2: 964 | resolution: {integrity: sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==} 965 | engines: {node: '>= 0.4'} 966 | dependencies: 967 | es-errors: 1.3.0 968 | get-intrinsic: 1.2.4 969 | gopd: 1.0.1 970 | has-property-descriptors: 1.0.1 971 | dev: true 972 | 973 | /define-properties@1.2.1: 974 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 975 | engines: {node: '>= 0.4'} 976 | dependencies: 977 | define-data-property: 1.1.2 978 | has-property-descriptors: 1.0.1 979 | object-keys: 1.1.1 980 | dev: true 981 | 982 | /dequal@2.0.3: 983 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 984 | engines: {node: '>=6'} 985 | dev: true 986 | 987 | /didyoumean@1.2.2: 988 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 989 | dev: true 990 | 991 | /diff@4.0.2: 992 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 993 | engines: {node: '>=0.3.1'} 994 | dev: true 995 | 996 | /dir-glob@3.0.1: 997 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 998 | engines: {node: '>=8'} 999 | dependencies: 1000 | path-type: 4.0.0 1001 | dev: true 1002 | 1003 | /dlv@1.1.3: 1004 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1005 | dev: true 1006 | 1007 | /doctrine@2.1.0: 1008 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1009 | engines: {node: '>=0.10.0'} 1010 | dependencies: 1011 | esutils: 2.0.3 1012 | dev: true 1013 | 1014 | /doctrine@3.0.0: 1015 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1016 | engines: {node: '>=6.0.0'} 1017 | dependencies: 1018 | esutils: 2.0.3 1019 | dev: true 1020 | 1021 | /eastasianwidth@0.2.0: 1022 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1023 | dev: true 1024 | 1025 | /electron-to-chromium@1.4.659: 1026 | resolution: {integrity: sha512-sRJ3nV3HowrYpBtPF9bASQV7OW49IgZC01Xiq43WfSE3RTCkK0/JidoCmR73Hyc1mN+l/H4Yqx0eNiomvExFZg==} 1027 | dev: true 1028 | 1029 | /emoji-regex@8.0.0: 1030 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1031 | dev: true 1032 | 1033 | /emoji-regex@9.2.2: 1034 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1035 | dev: true 1036 | 1037 | /enhanced-resolve@5.15.0: 1038 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} 1039 | engines: {node: '>=10.13.0'} 1040 | dependencies: 1041 | graceful-fs: 4.2.11 1042 | tapable: 2.2.1 1043 | dev: true 1044 | 1045 | /es-abstract@1.22.3: 1046 | resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} 1047 | engines: {node: '>= 0.4'} 1048 | dependencies: 1049 | array-buffer-byte-length: 1.0.1 1050 | arraybuffer.prototype.slice: 1.0.3 1051 | available-typed-arrays: 1.0.6 1052 | call-bind: 1.0.6 1053 | es-set-tostringtag: 2.0.2 1054 | es-to-primitive: 1.2.1 1055 | function.prototype.name: 1.1.6 1056 | get-intrinsic: 1.2.4 1057 | get-symbol-description: 1.0.1 1058 | globalthis: 1.0.3 1059 | gopd: 1.0.1 1060 | has-property-descriptors: 1.0.1 1061 | has-proto: 1.0.1 1062 | has-symbols: 1.0.3 1063 | hasown: 2.0.0 1064 | internal-slot: 1.0.7 1065 | is-array-buffer: 3.0.4 1066 | is-callable: 1.2.7 1067 | is-negative-zero: 2.0.2 1068 | is-regex: 1.1.4 1069 | is-shared-array-buffer: 1.0.2 1070 | is-string: 1.0.7 1071 | is-typed-array: 1.1.13 1072 | is-weakref: 1.0.2 1073 | object-inspect: 1.13.1 1074 | object-keys: 1.1.1 1075 | object.assign: 4.1.5 1076 | regexp.prototype.flags: 1.5.1 1077 | safe-array-concat: 1.1.0 1078 | safe-regex-test: 1.0.3 1079 | string.prototype.trim: 1.2.8 1080 | string.prototype.trimend: 1.0.7 1081 | string.prototype.trimstart: 1.0.7 1082 | typed-array-buffer: 1.0.1 1083 | typed-array-byte-length: 1.0.0 1084 | typed-array-byte-offset: 1.0.0 1085 | typed-array-length: 1.0.4 1086 | unbox-primitive: 1.0.2 1087 | which-typed-array: 1.1.14 1088 | dev: true 1089 | 1090 | /es-array-method-boxes-properly@1.0.0: 1091 | resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} 1092 | dev: true 1093 | 1094 | /es-errors@1.3.0: 1095 | resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 1096 | engines: {node: '>= 0.4'} 1097 | dev: true 1098 | 1099 | /es-iterator-helpers@1.0.15: 1100 | resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} 1101 | dependencies: 1102 | asynciterator.prototype: 1.0.0 1103 | call-bind: 1.0.6 1104 | define-properties: 1.2.1 1105 | es-abstract: 1.22.3 1106 | es-set-tostringtag: 2.0.2 1107 | function-bind: 1.1.2 1108 | get-intrinsic: 1.2.4 1109 | globalthis: 1.0.3 1110 | has-property-descriptors: 1.0.1 1111 | has-proto: 1.0.1 1112 | has-symbols: 1.0.3 1113 | internal-slot: 1.0.7 1114 | iterator.prototype: 1.1.2 1115 | safe-array-concat: 1.1.0 1116 | dev: true 1117 | 1118 | /es-set-tostringtag@2.0.2: 1119 | resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} 1120 | engines: {node: '>= 0.4'} 1121 | dependencies: 1122 | get-intrinsic: 1.2.4 1123 | has-tostringtag: 1.0.2 1124 | hasown: 2.0.0 1125 | dev: true 1126 | 1127 | /es-shim-unscopables@1.0.2: 1128 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 1129 | dependencies: 1130 | hasown: 2.0.0 1131 | dev: true 1132 | 1133 | /es-to-primitive@1.2.1: 1134 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1135 | engines: {node: '>= 0.4'} 1136 | dependencies: 1137 | is-callable: 1.2.7 1138 | is-date-object: 1.0.5 1139 | is-symbol: 1.0.4 1140 | dev: true 1141 | 1142 | /escalade@3.1.2: 1143 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} 1144 | engines: {node: '>=6'} 1145 | dev: true 1146 | 1147 | /escape-string-regexp@4.0.0: 1148 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1149 | engines: {node: '>=10'} 1150 | dev: true 1151 | 1152 | /eslint-config-next@14.1.0(eslint@8.56.0)(typescript@5.3.3): 1153 | resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} 1154 | peerDependencies: 1155 | eslint: ^7.23.0 || ^8.0.0 1156 | typescript: '>=3.3.1' 1157 | peerDependenciesMeta: 1158 | typescript: 1159 | optional: true 1160 | dependencies: 1161 | '@next/eslint-plugin-next': 14.1.0 1162 | '@rushstack/eslint-patch': 1.7.2 1163 | '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) 1164 | eslint: 8.56.0 1165 | eslint-import-resolver-node: 0.3.9 1166 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) 1167 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1168 | eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) 1169 | eslint-plugin-react: 7.33.2(eslint@8.56.0) 1170 | eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) 1171 | typescript: 5.3.3 1172 | transitivePeerDependencies: 1173 | - eslint-import-resolver-webpack 1174 | - supports-color 1175 | dev: true 1176 | 1177 | /eslint-import-resolver-node@0.3.9: 1178 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1179 | dependencies: 1180 | debug: 3.2.7 1181 | is-core-module: 2.13.1 1182 | resolve: 1.22.8 1183 | transitivePeerDependencies: 1184 | - supports-color 1185 | dev: true 1186 | 1187 | /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): 1188 | resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} 1189 | engines: {node: ^14.18.0 || >=16.0.0} 1190 | peerDependencies: 1191 | eslint: '*' 1192 | eslint-plugin-import: '*' 1193 | dependencies: 1194 | debug: 4.3.4 1195 | enhanced-resolve: 5.15.0 1196 | eslint: 8.56.0 1197 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1198 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1199 | fast-glob: 3.3.2 1200 | get-tsconfig: 4.7.2 1201 | is-core-module: 2.13.1 1202 | is-glob: 4.0.3 1203 | transitivePeerDependencies: 1204 | - '@typescript-eslint/parser' 1205 | - eslint-import-resolver-node 1206 | - eslint-import-resolver-webpack 1207 | - supports-color 1208 | dev: true 1209 | 1210 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): 1211 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 1212 | engines: {node: '>=4'} 1213 | peerDependencies: 1214 | '@typescript-eslint/parser': '*' 1215 | eslint: '*' 1216 | eslint-import-resolver-node: '*' 1217 | eslint-import-resolver-typescript: '*' 1218 | eslint-import-resolver-webpack: '*' 1219 | peerDependenciesMeta: 1220 | '@typescript-eslint/parser': 1221 | optional: true 1222 | eslint: 1223 | optional: true 1224 | eslint-import-resolver-node: 1225 | optional: true 1226 | eslint-import-resolver-typescript: 1227 | optional: true 1228 | eslint-import-resolver-webpack: 1229 | optional: true 1230 | dependencies: 1231 | '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) 1232 | debug: 3.2.7 1233 | eslint: 8.56.0 1234 | eslint-import-resolver-node: 0.3.9 1235 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) 1236 | transitivePeerDependencies: 1237 | - supports-color 1238 | dev: true 1239 | 1240 | /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): 1241 | resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} 1242 | engines: {node: '>=4'} 1243 | peerDependencies: 1244 | '@typescript-eslint/parser': '*' 1245 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1246 | peerDependenciesMeta: 1247 | '@typescript-eslint/parser': 1248 | optional: true 1249 | dependencies: 1250 | '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) 1251 | array-includes: 3.1.7 1252 | array.prototype.findlastindex: 1.2.4 1253 | array.prototype.flat: 1.3.2 1254 | array.prototype.flatmap: 1.3.2 1255 | debug: 3.2.7 1256 | doctrine: 2.1.0 1257 | eslint: 8.56.0 1258 | eslint-import-resolver-node: 0.3.9 1259 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1260 | hasown: 2.0.0 1261 | is-core-module: 2.13.1 1262 | is-glob: 4.0.3 1263 | minimatch: 3.1.2 1264 | object.fromentries: 2.0.7 1265 | object.groupby: 1.0.2 1266 | object.values: 1.1.7 1267 | semver: 6.3.1 1268 | tsconfig-paths: 3.15.0 1269 | transitivePeerDependencies: 1270 | - eslint-import-resolver-typescript 1271 | - eslint-import-resolver-webpack 1272 | - supports-color 1273 | dev: true 1274 | 1275 | /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): 1276 | resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} 1277 | engines: {node: '>=4.0'} 1278 | peerDependencies: 1279 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1280 | dependencies: 1281 | '@babel/runtime': 7.23.9 1282 | aria-query: 5.3.0 1283 | array-includes: 3.1.7 1284 | array.prototype.flatmap: 1.3.2 1285 | ast-types-flow: 0.0.8 1286 | axe-core: 4.7.0 1287 | axobject-query: 3.2.1 1288 | damerau-levenshtein: 1.0.8 1289 | emoji-regex: 9.2.2 1290 | es-iterator-helpers: 1.0.15 1291 | eslint: 8.56.0 1292 | hasown: 2.0.0 1293 | jsx-ast-utils: 3.3.5 1294 | language-tags: 1.0.9 1295 | minimatch: 3.1.2 1296 | object.entries: 1.1.7 1297 | object.fromentries: 2.0.7 1298 | dev: true 1299 | 1300 | /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): 1301 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1302 | engines: {node: '>=10'} 1303 | peerDependencies: 1304 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1305 | dependencies: 1306 | eslint: 8.56.0 1307 | dev: true 1308 | 1309 | /eslint-plugin-react@7.33.2(eslint@8.56.0): 1310 | resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} 1311 | engines: {node: '>=4'} 1312 | peerDependencies: 1313 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1314 | dependencies: 1315 | array-includes: 3.1.7 1316 | array.prototype.flatmap: 1.3.2 1317 | array.prototype.tosorted: 1.1.3 1318 | doctrine: 2.1.0 1319 | es-iterator-helpers: 1.0.15 1320 | eslint: 8.56.0 1321 | estraverse: 5.3.0 1322 | jsx-ast-utils: 3.3.5 1323 | minimatch: 3.1.2 1324 | object.entries: 1.1.7 1325 | object.fromentries: 2.0.7 1326 | object.hasown: 1.1.3 1327 | object.values: 1.1.7 1328 | prop-types: 15.8.1 1329 | resolve: 2.0.0-next.5 1330 | semver: 6.3.1 1331 | string.prototype.matchall: 4.0.10 1332 | dev: true 1333 | 1334 | /eslint-scope@7.2.2: 1335 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1336 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1337 | dependencies: 1338 | esrecurse: 4.3.0 1339 | estraverse: 5.3.0 1340 | dev: true 1341 | 1342 | /eslint-visitor-keys@3.4.3: 1343 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1344 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1345 | dev: true 1346 | 1347 | /eslint@8.56.0: 1348 | resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} 1349 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1350 | hasBin: true 1351 | dependencies: 1352 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 1353 | '@eslint-community/regexpp': 4.10.0 1354 | '@eslint/eslintrc': 2.1.4 1355 | '@eslint/js': 8.56.0 1356 | '@humanwhocodes/config-array': 0.11.14 1357 | '@humanwhocodes/module-importer': 1.0.1 1358 | '@nodelib/fs.walk': 1.2.8 1359 | '@ungap/structured-clone': 1.2.0 1360 | ajv: 6.12.6 1361 | chalk: 4.1.2 1362 | cross-spawn: 7.0.3 1363 | debug: 4.3.4 1364 | doctrine: 3.0.0 1365 | escape-string-regexp: 4.0.0 1366 | eslint-scope: 7.2.2 1367 | eslint-visitor-keys: 3.4.3 1368 | espree: 9.6.1 1369 | esquery: 1.5.0 1370 | esutils: 2.0.3 1371 | fast-deep-equal: 3.1.3 1372 | file-entry-cache: 6.0.1 1373 | find-up: 5.0.0 1374 | glob-parent: 6.0.2 1375 | globals: 13.24.0 1376 | graphemer: 1.4.0 1377 | ignore: 5.3.1 1378 | imurmurhash: 0.1.4 1379 | is-glob: 4.0.3 1380 | is-path-inside: 3.0.3 1381 | js-yaml: 4.1.0 1382 | json-stable-stringify-without-jsonify: 1.0.1 1383 | levn: 0.4.1 1384 | lodash.merge: 4.6.2 1385 | minimatch: 3.1.2 1386 | natural-compare: 1.4.0 1387 | optionator: 0.9.3 1388 | strip-ansi: 6.0.1 1389 | text-table: 0.2.0 1390 | transitivePeerDependencies: 1391 | - supports-color 1392 | dev: true 1393 | 1394 | /espree@9.6.1: 1395 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1396 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1397 | dependencies: 1398 | acorn: 8.11.3 1399 | acorn-jsx: 5.3.2(acorn@8.11.3) 1400 | eslint-visitor-keys: 3.4.3 1401 | dev: true 1402 | 1403 | /esquery@1.5.0: 1404 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1405 | engines: {node: '>=0.10'} 1406 | dependencies: 1407 | estraverse: 5.3.0 1408 | dev: true 1409 | 1410 | /esrecurse@4.3.0: 1411 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1412 | engines: {node: '>=4.0'} 1413 | dependencies: 1414 | estraverse: 5.3.0 1415 | dev: true 1416 | 1417 | /estraverse@5.3.0: 1418 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1419 | engines: {node: '>=4.0'} 1420 | dev: true 1421 | 1422 | /esutils@2.0.3: 1423 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1424 | engines: {node: '>=0.10.0'} 1425 | dev: true 1426 | 1427 | /fast-deep-equal@3.1.3: 1428 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1429 | dev: true 1430 | 1431 | /fast-glob@3.3.2: 1432 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1433 | engines: {node: '>=8.6.0'} 1434 | dependencies: 1435 | '@nodelib/fs.stat': 2.0.5 1436 | '@nodelib/fs.walk': 1.2.8 1437 | glob-parent: 5.1.2 1438 | merge2: 1.4.1 1439 | micromatch: 4.0.5 1440 | dev: true 1441 | 1442 | /fast-json-stable-stringify@2.1.0: 1443 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1444 | dev: true 1445 | 1446 | /fast-levenshtein@2.0.6: 1447 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1448 | dev: true 1449 | 1450 | /fastq@1.17.1: 1451 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 1452 | dependencies: 1453 | reusify: 1.0.4 1454 | dev: true 1455 | 1456 | /file-entry-cache@6.0.1: 1457 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1458 | engines: {node: ^10.12.0 || >=12.0.0} 1459 | dependencies: 1460 | flat-cache: 3.2.0 1461 | dev: true 1462 | 1463 | /fill-range@7.0.1: 1464 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1465 | engines: {node: '>=8'} 1466 | dependencies: 1467 | to-regex-range: 5.0.1 1468 | dev: true 1469 | 1470 | /find-up@5.0.0: 1471 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1472 | engines: {node: '>=10'} 1473 | dependencies: 1474 | locate-path: 6.0.0 1475 | path-exists: 4.0.0 1476 | dev: true 1477 | 1478 | /flat-cache@3.2.0: 1479 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1480 | engines: {node: ^10.12.0 || >=12.0.0} 1481 | dependencies: 1482 | flatted: 3.2.9 1483 | keyv: 4.5.4 1484 | rimraf: 3.0.2 1485 | dev: true 1486 | 1487 | /flatted@3.2.9: 1488 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 1489 | dev: true 1490 | 1491 | /for-each@0.3.3: 1492 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1493 | dependencies: 1494 | is-callable: 1.2.7 1495 | dev: true 1496 | 1497 | /foreground-child@3.1.1: 1498 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 1499 | engines: {node: '>=14'} 1500 | dependencies: 1501 | cross-spawn: 7.0.3 1502 | signal-exit: 4.1.0 1503 | dev: true 1504 | 1505 | /fraction.js@4.3.7: 1506 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1507 | dev: true 1508 | 1509 | /fs.realpath@1.0.0: 1510 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1511 | dev: true 1512 | 1513 | /fsevents@2.3.3: 1514 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1515 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1516 | os: [darwin] 1517 | requiresBuild: true 1518 | dev: true 1519 | optional: true 1520 | 1521 | /function-bind@1.1.2: 1522 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1523 | dev: true 1524 | 1525 | /function.prototype.name@1.1.6: 1526 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 1527 | engines: {node: '>= 0.4'} 1528 | dependencies: 1529 | call-bind: 1.0.6 1530 | define-properties: 1.2.1 1531 | es-abstract: 1.22.3 1532 | functions-have-names: 1.2.3 1533 | dev: true 1534 | 1535 | /functions-have-names@1.2.3: 1536 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1537 | dev: true 1538 | 1539 | /get-intrinsic@1.2.4: 1540 | resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} 1541 | engines: {node: '>= 0.4'} 1542 | dependencies: 1543 | es-errors: 1.3.0 1544 | function-bind: 1.1.2 1545 | has-proto: 1.0.1 1546 | has-symbols: 1.0.3 1547 | hasown: 2.0.0 1548 | dev: true 1549 | 1550 | /get-symbol-description@1.0.1: 1551 | resolution: {integrity: sha512-KmuibvwbWaM4BHcBRYwJfZ1JxyJeBwB8ct9YYu67SvYdbEIlcQ2e56dHxfbobqW38GXo8/zDFqJeGtHiVbWyQw==} 1552 | engines: {node: '>= 0.4'} 1553 | dependencies: 1554 | call-bind: 1.0.6 1555 | es-errors: 1.3.0 1556 | dev: true 1557 | 1558 | /get-tsconfig@4.7.2: 1559 | resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} 1560 | dependencies: 1561 | resolve-pkg-maps: 1.0.0 1562 | dev: true 1563 | 1564 | /glob-parent@5.1.2: 1565 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1566 | engines: {node: '>= 6'} 1567 | dependencies: 1568 | is-glob: 4.0.3 1569 | dev: true 1570 | 1571 | /glob-parent@6.0.2: 1572 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1573 | engines: {node: '>=10.13.0'} 1574 | dependencies: 1575 | is-glob: 4.0.3 1576 | dev: true 1577 | 1578 | /glob@10.3.10: 1579 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 1580 | engines: {node: '>=16 || 14 >=14.17'} 1581 | hasBin: true 1582 | dependencies: 1583 | foreground-child: 3.1.1 1584 | jackspeak: 2.3.6 1585 | minimatch: 9.0.3 1586 | minipass: 7.0.4 1587 | path-scurry: 1.10.1 1588 | dev: true 1589 | 1590 | /glob@7.2.3: 1591 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1592 | dependencies: 1593 | fs.realpath: 1.0.0 1594 | inflight: 1.0.6 1595 | inherits: 2.0.4 1596 | minimatch: 3.1.2 1597 | once: 1.4.0 1598 | path-is-absolute: 1.0.1 1599 | dev: true 1600 | 1601 | /globals@13.24.0: 1602 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1603 | engines: {node: '>=8'} 1604 | dependencies: 1605 | type-fest: 0.20.2 1606 | dev: true 1607 | 1608 | /globalthis@1.0.3: 1609 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1610 | engines: {node: '>= 0.4'} 1611 | dependencies: 1612 | define-properties: 1.2.1 1613 | dev: true 1614 | 1615 | /globby@11.1.0: 1616 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1617 | engines: {node: '>=10'} 1618 | dependencies: 1619 | array-union: 2.1.0 1620 | dir-glob: 3.0.1 1621 | fast-glob: 3.3.2 1622 | ignore: 5.3.1 1623 | merge2: 1.4.1 1624 | slash: 3.0.0 1625 | dev: true 1626 | 1627 | /goober@2.1.14(csstype@3.1.3): 1628 | resolution: {integrity: sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==} 1629 | peerDependencies: 1630 | csstype: ^3.0.10 1631 | dependencies: 1632 | csstype: 3.1.3 1633 | dev: false 1634 | 1635 | /gopd@1.0.1: 1636 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1637 | dependencies: 1638 | get-intrinsic: 1.2.4 1639 | dev: true 1640 | 1641 | /graceful-fs@4.2.11: 1642 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1643 | 1644 | /graphemer@1.4.0: 1645 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1646 | dev: true 1647 | 1648 | /has-bigints@1.0.2: 1649 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1650 | dev: true 1651 | 1652 | /has-flag@4.0.0: 1653 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1654 | engines: {node: '>=8'} 1655 | dev: true 1656 | 1657 | /has-property-descriptors@1.0.1: 1658 | resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} 1659 | dependencies: 1660 | get-intrinsic: 1.2.4 1661 | dev: true 1662 | 1663 | /has-proto@1.0.1: 1664 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1665 | engines: {node: '>= 0.4'} 1666 | dev: true 1667 | 1668 | /has-symbols@1.0.3: 1669 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1670 | engines: {node: '>= 0.4'} 1671 | dev: true 1672 | 1673 | /has-tostringtag@1.0.2: 1674 | resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 1675 | engines: {node: '>= 0.4'} 1676 | dependencies: 1677 | has-symbols: 1.0.3 1678 | dev: true 1679 | 1680 | /hasown@2.0.0: 1681 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} 1682 | engines: {node: '>= 0.4'} 1683 | dependencies: 1684 | function-bind: 1.1.2 1685 | dev: true 1686 | 1687 | /ignore@5.3.1: 1688 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 1689 | engines: {node: '>= 4'} 1690 | dev: true 1691 | 1692 | /import-fresh@3.3.0: 1693 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1694 | engines: {node: '>=6'} 1695 | dependencies: 1696 | parent-module: 1.0.1 1697 | resolve-from: 4.0.0 1698 | dev: true 1699 | 1700 | /imurmurhash@0.1.4: 1701 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1702 | engines: {node: '>=0.8.19'} 1703 | dev: true 1704 | 1705 | /inflight@1.0.6: 1706 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1707 | dependencies: 1708 | once: 1.4.0 1709 | wrappy: 1.0.2 1710 | dev: true 1711 | 1712 | /inherits@2.0.4: 1713 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1714 | dev: true 1715 | 1716 | /internal-slot@1.0.7: 1717 | resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} 1718 | engines: {node: '>= 0.4'} 1719 | dependencies: 1720 | es-errors: 1.3.0 1721 | hasown: 2.0.0 1722 | side-channel: 1.0.5 1723 | dev: true 1724 | 1725 | /is-array-buffer@3.0.4: 1726 | resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} 1727 | engines: {node: '>= 0.4'} 1728 | dependencies: 1729 | call-bind: 1.0.6 1730 | get-intrinsic: 1.2.4 1731 | dev: true 1732 | 1733 | /is-async-function@2.0.0: 1734 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} 1735 | engines: {node: '>= 0.4'} 1736 | dependencies: 1737 | has-tostringtag: 1.0.2 1738 | dev: true 1739 | 1740 | /is-bigint@1.0.4: 1741 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1742 | dependencies: 1743 | has-bigints: 1.0.2 1744 | dev: true 1745 | 1746 | /is-binary-path@2.1.0: 1747 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1748 | engines: {node: '>=8'} 1749 | dependencies: 1750 | binary-extensions: 2.2.0 1751 | dev: true 1752 | 1753 | /is-boolean-object@1.1.2: 1754 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1755 | engines: {node: '>= 0.4'} 1756 | dependencies: 1757 | call-bind: 1.0.6 1758 | has-tostringtag: 1.0.2 1759 | dev: true 1760 | 1761 | /is-callable@1.2.7: 1762 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1763 | engines: {node: '>= 0.4'} 1764 | dev: true 1765 | 1766 | /is-core-module@2.13.1: 1767 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 1768 | dependencies: 1769 | hasown: 2.0.0 1770 | dev: true 1771 | 1772 | /is-date-object@1.0.5: 1773 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1774 | engines: {node: '>= 0.4'} 1775 | dependencies: 1776 | has-tostringtag: 1.0.2 1777 | dev: true 1778 | 1779 | /is-extglob@2.1.1: 1780 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1781 | engines: {node: '>=0.10.0'} 1782 | dev: true 1783 | 1784 | /is-finalizationregistry@1.0.2: 1785 | resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} 1786 | dependencies: 1787 | call-bind: 1.0.6 1788 | dev: true 1789 | 1790 | /is-fullwidth-code-point@3.0.0: 1791 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1792 | engines: {node: '>=8'} 1793 | dev: true 1794 | 1795 | /is-generator-function@1.0.10: 1796 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 1797 | engines: {node: '>= 0.4'} 1798 | dependencies: 1799 | has-tostringtag: 1.0.2 1800 | dev: true 1801 | 1802 | /is-glob@4.0.3: 1803 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1804 | engines: {node: '>=0.10.0'} 1805 | dependencies: 1806 | is-extglob: 2.1.1 1807 | dev: true 1808 | 1809 | /is-map@2.0.2: 1810 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 1811 | dev: true 1812 | 1813 | /is-negative-zero@2.0.2: 1814 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1815 | engines: {node: '>= 0.4'} 1816 | dev: true 1817 | 1818 | /is-number-object@1.0.7: 1819 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1820 | engines: {node: '>= 0.4'} 1821 | dependencies: 1822 | has-tostringtag: 1.0.2 1823 | dev: true 1824 | 1825 | /is-number@7.0.0: 1826 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1827 | engines: {node: '>=0.12.0'} 1828 | dev: true 1829 | 1830 | /is-path-inside@3.0.3: 1831 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1832 | engines: {node: '>=8'} 1833 | dev: true 1834 | 1835 | /is-regex@1.1.4: 1836 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1837 | engines: {node: '>= 0.4'} 1838 | dependencies: 1839 | call-bind: 1.0.6 1840 | has-tostringtag: 1.0.2 1841 | dev: true 1842 | 1843 | /is-set@2.0.2: 1844 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 1845 | dev: true 1846 | 1847 | /is-shared-array-buffer@1.0.2: 1848 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1849 | dependencies: 1850 | call-bind: 1.0.6 1851 | dev: true 1852 | 1853 | /is-string@1.0.7: 1854 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1855 | engines: {node: '>= 0.4'} 1856 | dependencies: 1857 | has-tostringtag: 1.0.2 1858 | dev: true 1859 | 1860 | /is-symbol@1.0.4: 1861 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1862 | engines: {node: '>= 0.4'} 1863 | dependencies: 1864 | has-symbols: 1.0.3 1865 | dev: true 1866 | 1867 | /is-typed-array@1.1.13: 1868 | resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} 1869 | engines: {node: '>= 0.4'} 1870 | dependencies: 1871 | which-typed-array: 1.1.14 1872 | dev: true 1873 | 1874 | /is-weakmap@2.0.1: 1875 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 1876 | dev: true 1877 | 1878 | /is-weakref@1.0.2: 1879 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1880 | dependencies: 1881 | call-bind: 1.0.6 1882 | dev: true 1883 | 1884 | /is-weakset@2.0.2: 1885 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 1886 | dependencies: 1887 | call-bind: 1.0.6 1888 | get-intrinsic: 1.2.4 1889 | dev: true 1890 | 1891 | /isarray@2.0.5: 1892 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1893 | dev: true 1894 | 1895 | /isexe@2.0.0: 1896 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1897 | dev: true 1898 | 1899 | /iterator.prototype@1.1.2: 1900 | resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} 1901 | dependencies: 1902 | define-properties: 1.2.1 1903 | get-intrinsic: 1.2.4 1904 | has-symbols: 1.0.3 1905 | reflect.getprototypeof: 1.0.5 1906 | set-function-name: 2.0.1 1907 | dev: true 1908 | 1909 | /jackspeak@2.3.6: 1910 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 1911 | engines: {node: '>=14'} 1912 | dependencies: 1913 | '@isaacs/cliui': 8.0.2 1914 | optionalDependencies: 1915 | '@pkgjs/parseargs': 0.11.0 1916 | dev: true 1917 | 1918 | /jiti@1.21.0: 1919 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 1920 | hasBin: true 1921 | dev: true 1922 | 1923 | /jose@5.2.1: 1924 | resolution: {integrity: sha512-qiaQhtQRw6YrOaOj0v59h3R6hUY9NvxBmmnMfKemkqYmBB0tEc97NbLP7ix44VP5p9/0YHG8Vyhzuo5YBNwviA==} 1925 | dev: false 1926 | 1927 | /js-tokens@4.0.0: 1928 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1929 | 1930 | /js-yaml@4.1.0: 1931 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1932 | hasBin: true 1933 | dependencies: 1934 | argparse: 2.0.1 1935 | dev: true 1936 | 1937 | /json-buffer@3.0.1: 1938 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1939 | dev: true 1940 | 1941 | /json-schema-traverse@0.4.1: 1942 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1943 | dev: true 1944 | 1945 | /json-stable-stringify-without-jsonify@1.0.1: 1946 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1947 | dev: true 1948 | 1949 | /json5@1.0.2: 1950 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 1951 | hasBin: true 1952 | dependencies: 1953 | minimist: 1.2.8 1954 | dev: true 1955 | 1956 | /jsx-ast-utils@3.3.5: 1957 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 1958 | engines: {node: '>=4.0'} 1959 | dependencies: 1960 | array-includes: 3.1.7 1961 | array.prototype.flat: 1.3.2 1962 | object.assign: 4.1.5 1963 | object.values: 1.1.7 1964 | dev: true 1965 | 1966 | /keyv@4.5.4: 1967 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1968 | dependencies: 1969 | json-buffer: 3.0.1 1970 | dev: true 1971 | 1972 | /language-subtag-registry@0.3.22: 1973 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 1974 | dev: true 1975 | 1976 | /language-tags@1.0.9: 1977 | resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} 1978 | engines: {node: '>=0.10'} 1979 | dependencies: 1980 | language-subtag-registry: 0.3.22 1981 | dev: true 1982 | 1983 | /levn@0.4.1: 1984 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1985 | engines: {node: '>= 0.8.0'} 1986 | dependencies: 1987 | prelude-ls: 1.2.1 1988 | type-check: 0.4.0 1989 | dev: true 1990 | 1991 | /lilconfig@2.1.0: 1992 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1993 | engines: {node: '>=10'} 1994 | dev: true 1995 | 1996 | /lilconfig@3.0.0: 1997 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} 1998 | engines: {node: '>=14'} 1999 | dev: true 2000 | 2001 | /lines-and-columns@1.2.4: 2002 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2003 | dev: true 2004 | 2005 | /locate-path@6.0.0: 2006 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2007 | engines: {node: '>=10'} 2008 | dependencies: 2009 | p-locate: 5.0.0 2010 | dev: true 2011 | 2012 | /lodash.merge@4.6.2: 2013 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2014 | dev: true 2015 | 2016 | /loose-envify@1.4.0: 2017 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2018 | hasBin: true 2019 | dependencies: 2020 | js-tokens: 4.0.0 2021 | 2022 | /lru-cache@10.2.0: 2023 | resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} 2024 | engines: {node: 14 || >=16.14} 2025 | dev: true 2026 | 2027 | /lru-cache@6.0.0: 2028 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2029 | engines: {node: '>=10'} 2030 | dependencies: 2031 | yallist: 4.0.0 2032 | dev: true 2033 | 2034 | /make-error@1.3.6: 2035 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 2036 | dev: true 2037 | 2038 | /merge2@1.4.1: 2039 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2040 | engines: {node: '>= 8'} 2041 | dev: true 2042 | 2043 | /micromatch@4.0.5: 2044 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2045 | engines: {node: '>=8.6'} 2046 | dependencies: 2047 | braces: 3.0.2 2048 | picomatch: 2.3.1 2049 | dev: true 2050 | 2051 | /minimatch@3.1.2: 2052 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2053 | dependencies: 2054 | brace-expansion: 1.1.11 2055 | dev: true 2056 | 2057 | /minimatch@9.0.3: 2058 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 2059 | engines: {node: '>=16 || 14 >=14.17'} 2060 | dependencies: 2061 | brace-expansion: 2.0.1 2062 | dev: true 2063 | 2064 | /minimist@1.2.8: 2065 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2066 | dev: true 2067 | 2068 | /minipass@7.0.4: 2069 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} 2070 | engines: {node: '>=16 || 14 >=14.17'} 2071 | dev: true 2072 | 2073 | /ms@2.1.2: 2074 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2075 | dev: true 2076 | 2077 | /ms@2.1.3: 2078 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2079 | dev: true 2080 | 2081 | /mz@2.7.0: 2082 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2083 | dependencies: 2084 | any-promise: 1.3.0 2085 | object-assign: 4.1.1 2086 | thenify-all: 1.6.0 2087 | dev: true 2088 | 2089 | /nanoid@3.3.7: 2090 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 2091 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2092 | hasBin: true 2093 | 2094 | /natural-compare@1.4.0: 2095 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2096 | dev: true 2097 | 2098 | /next-auth@5.0.0-beta.5(next@14.1.0)(react@18.2.0): 2099 | resolution: {integrity: sha512-tEYIPhm/i0byW4xf9Ldlsnh7ckBQfNvMjOA3B3eXQX9taAQWb8earravSn1fjk4fKfKvaOApFJkks0VeI7Vy/A==} 2100 | peerDependencies: 2101 | next: ^14 2102 | nodemailer: ^6.6.5 2103 | react: ^18.2.0 2104 | peerDependenciesMeta: 2105 | nodemailer: 2106 | optional: true 2107 | dependencies: 2108 | '@auth/core': 0.21.0 2109 | next: 14.1.0(react-dom@18.2.0)(react@18.2.0) 2110 | react: 18.2.0 2111 | dev: false 2112 | 2113 | /next@14.1.0(react-dom@18.2.0)(react@18.2.0): 2114 | resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} 2115 | engines: {node: '>=18.17.0'} 2116 | hasBin: true 2117 | peerDependencies: 2118 | '@opentelemetry/api': ^1.1.0 2119 | react: ^18.2.0 2120 | react-dom: ^18.2.0 2121 | sass: ^1.3.0 2122 | peerDependenciesMeta: 2123 | '@opentelemetry/api': 2124 | optional: true 2125 | sass: 2126 | optional: true 2127 | dependencies: 2128 | '@next/env': 14.1.0 2129 | '@swc/helpers': 0.5.2 2130 | busboy: 1.6.0 2131 | caniuse-lite: 1.0.30001585 2132 | graceful-fs: 4.2.11 2133 | postcss: 8.4.31 2134 | react: 18.2.0 2135 | react-dom: 18.2.0(react@18.2.0) 2136 | styled-jsx: 5.1.1(react@18.2.0) 2137 | optionalDependencies: 2138 | '@next/swc-darwin-arm64': 14.1.0 2139 | '@next/swc-darwin-x64': 14.1.0 2140 | '@next/swc-linux-arm64-gnu': 14.1.0 2141 | '@next/swc-linux-arm64-musl': 14.1.0 2142 | '@next/swc-linux-x64-gnu': 14.1.0 2143 | '@next/swc-linux-x64-musl': 14.1.0 2144 | '@next/swc-win32-arm64-msvc': 14.1.0 2145 | '@next/swc-win32-ia32-msvc': 14.1.0 2146 | '@next/swc-win32-x64-msvc': 14.1.0 2147 | transitivePeerDependencies: 2148 | - '@babel/core' 2149 | - babel-plugin-macros 2150 | dev: false 2151 | 2152 | /node-releases@2.0.14: 2153 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 2154 | dev: true 2155 | 2156 | /normalize-path@3.0.0: 2157 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2158 | engines: {node: '>=0.10.0'} 2159 | dev: true 2160 | 2161 | /normalize-range@0.1.2: 2162 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 2163 | engines: {node: '>=0.10.0'} 2164 | dev: true 2165 | 2166 | /oauth4webapi@2.10.2: 2167 | resolution: {integrity: sha512-ib0x1f4tCaZkTEEnRpkt96D8F2e38AFWzTOwpha1Wmme5kD+RFFgDVkrXyBSxBefFeQUoODVaieS/w9QmkZbnQ==} 2168 | dev: false 2169 | 2170 | /object-assign@4.1.1: 2171 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2172 | engines: {node: '>=0.10.0'} 2173 | dev: true 2174 | 2175 | /object-hash@3.0.0: 2176 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2177 | engines: {node: '>= 6'} 2178 | dev: true 2179 | 2180 | /object-inspect@1.13.1: 2181 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 2182 | dev: true 2183 | 2184 | /object-keys@1.1.1: 2185 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2186 | engines: {node: '>= 0.4'} 2187 | dev: true 2188 | 2189 | /object.assign@4.1.5: 2190 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 2191 | engines: {node: '>= 0.4'} 2192 | dependencies: 2193 | call-bind: 1.0.6 2194 | define-properties: 1.2.1 2195 | has-symbols: 1.0.3 2196 | object-keys: 1.1.1 2197 | dev: true 2198 | 2199 | /object.entries@1.1.7: 2200 | resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} 2201 | engines: {node: '>= 0.4'} 2202 | dependencies: 2203 | call-bind: 1.0.6 2204 | define-properties: 1.2.1 2205 | es-abstract: 1.22.3 2206 | dev: true 2207 | 2208 | /object.fromentries@2.0.7: 2209 | resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} 2210 | engines: {node: '>= 0.4'} 2211 | dependencies: 2212 | call-bind: 1.0.6 2213 | define-properties: 1.2.1 2214 | es-abstract: 1.22.3 2215 | dev: true 2216 | 2217 | /object.groupby@1.0.2: 2218 | resolution: {integrity: sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==} 2219 | dependencies: 2220 | array.prototype.filter: 1.0.3 2221 | call-bind: 1.0.6 2222 | define-properties: 1.2.1 2223 | es-abstract: 1.22.3 2224 | es-errors: 1.3.0 2225 | dev: true 2226 | 2227 | /object.hasown@1.1.3: 2228 | resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} 2229 | dependencies: 2230 | define-properties: 1.2.1 2231 | es-abstract: 1.22.3 2232 | dev: true 2233 | 2234 | /object.values@1.1.7: 2235 | resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} 2236 | engines: {node: '>= 0.4'} 2237 | dependencies: 2238 | call-bind: 1.0.6 2239 | define-properties: 1.2.1 2240 | es-abstract: 1.22.3 2241 | dev: true 2242 | 2243 | /once@1.4.0: 2244 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2245 | dependencies: 2246 | wrappy: 1.0.2 2247 | dev: true 2248 | 2249 | /optionator@0.9.3: 2250 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 2251 | engines: {node: '>= 0.8.0'} 2252 | dependencies: 2253 | '@aashutoshrathi/word-wrap': 1.2.6 2254 | deep-is: 0.1.4 2255 | fast-levenshtein: 2.0.6 2256 | levn: 0.4.1 2257 | prelude-ls: 1.2.1 2258 | type-check: 0.4.0 2259 | dev: true 2260 | 2261 | /p-limit@3.1.0: 2262 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2263 | engines: {node: '>=10'} 2264 | dependencies: 2265 | yocto-queue: 0.1.0 2266 | dev: true 2267 | 2268 | /p-locate@5.0.0: 2269 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2270 | engines: {node: '>=10'} 2271 | dependencies: 2272 | p-limit: 3.1.0 2273 | dev: true 2274 | 2275 | /parent-module@1.0.1: 2276 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2277 | engines: {node: '>=6'} 2278 | dependencies: 2279 | callsites: 3.1.0 2280 | dev: true 2281 | 2282 | /path-exists@4.0.0: 2283 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2284 | engines: {node: '>=8'} 2285 | dev: true 2286 | 2287 | /path-is-absolute@1.0.1: 2288 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2289 | engines: {node: '>=0.10.0'} 2290 | dev: true 2291 | 2292 | /path-key@3.1.1: 2293 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2294 | engines: {node: '>=8'} 2295 | dev: true 2296 | 2297 | /path-parse@1.0.7: 2298 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2299 | dev: true 2300 | 2301 | /path-scurry@1.10.1: 2302 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 2303 | engines: {node: '>=16 || 14 >=14.17'} 2304 | dependencies: 2305 | lru-cache: 10.2.0 2306 | minipass: 7.0.4 2307 | dev: true 2308 | 2309 | /path-type@4.0.0: 2310 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2311 | engines: {node: '>=8'} 2312 | dev: true 2313 | 2314 | /picocolors@1.0.0: 2315 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2316 | 2317 | /picomatch@2.3.1: 2318 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2319 | engines: {node: '>=8.6'} 2320 | dev: true 2321 | 2322 | /pify@2.3.0: 2323 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2324 | engines: {node: '>=0.10.0'} 2325 | dev: true 2326 | 2327 | /pirates@4.0.6: 2328 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 2329 | engines: {node: '>= 6'} 2330 | dev: true 2331 | 2332 | /postcss-import@15.1.0(postcss@8.4.34): 2333 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 2334 | engines: {node: '>=14.0.0'} 2335 | peerDependencies: 2336 | postcss: ^8.0.0 2337 | dependencies: 2338 | postcss: 8.4.34 2339 | postcss-value-parser: 4.2.0 2340 | read-cache: 1.0.0 2341 | resolve: 1.22.8 2342 | dev: true 2343 | 2344 | /postcss-js@4.0.1(postcss@8.4.34): 2345 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 2346 | engines: {node: ^12 || ^14 || >= 16} 2347 | peerDependencies: 2348 | postcss: ^8.4.21 2349 | dependencies: 2350 | camelcase-css: 2.0.1 2351 | postcss: 8.4.34 2352 | dev: true 2353 | 2354 | /postcss-load-config@4.0.2(postcss@8.4.34)(ts-node@10.9.2): 2355 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 2356 | engines: {node: '>= 14'} 2357 | peerDependencies: 2358 | postcss: '>=8.0.9' 2359 | ts-node: '>=9.0.0' 2360 | peerDependenciesMeta: 2361 | postcss: 2362 | optional: true 2363 | ts-node: 2364 | optional: true 2365 | dependencies: 2366 | lilconfig: 3.0.0 2367 | postcss: 8.4.34 2368 | ts-node: 10.9.2(@types/node@20.11.16)(typescript@5.3.3) 2369 | yaml: 2.3.4 2370 | dev: true 2371 | 2372 | /postcss-nested@6.0.1(postcss@8.4.34): 2373 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2374 | engines: {node: '>=12.0'} 2375 | peerDependencies: 2376 | postcss: ^8.2.14 2377 | dependencies: 2378 | postcss: 8.4.34 2379 | postcss-selector-parser: 6.0.15 2380 | dev: true 2381 | 2382 | /postcss-selector-parser@6.0.15: 2383 | resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} 2384 | engines: {node: '>=4'} 2385 | dependencies: 2386 | cssesc: 3.0.0 2387 | util-deprecate: 1.0.2 2388 | dev: true 2389 | 2390 | /postcss-value-parser@4.2.0: 2391 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2392 | dev: true 2393 | 2394 | /postcss@8.4.31: 2395 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 2396 | engines: {node: ^10 || ^12 || >=14} 2397 | dependencies: 2398 | nanoid: 3.3.7 2399 | picocolors: 1.0.0 2400 | source-map-js: 1.0.2 2401 | dev: false 2402 | 2403 | /postcss@8.4.34: 2404 | resolution: {integrity: sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==} 2405 | engines: {node: ^10 || ^12 || >=14} 2406 | dependencies: 2407 | nanoid: 3.3.7 2408 | picocolors: 1.0.0 2409 | source-map-js: 1.0.2 2410 | dev: true 2411 | 2412 | /preact-render-to-string@5.2.3(preact@10.11.3): 2413 | resolution: {integrity: sha512-aPDxUn5o3GhWdtJtW0svRC2SS/l8D9MAgo2+AWml+BhDImb27ALf04Q2d+AHqUUOc6RdSXFIBVa2gxzgMKgtZA==} 2414 | peerDependencies: 2415 | preact: '>=10' 2416 | dependencies: 2417 | preact: 10.11.3 2418 | pretty-format: 3.8.0 2419 | dev: false 2420 | 2421 | /preact@10.11.3: 2422 | resolution: {integrity: sha512-eY93IVpod/zG3uMF22Unl8h9KkrcKIRs2EGar8hwLZZDU1lkjph303V9HZBwufh2s736U6VXuhD109LYqPoffg==} 2423 | dev: false 2424 | 2425 | /prelude-ls@1.2.1: 2426 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2427 | engines: {node: '>= 0.8.0'} 2428 | dev: true 2429 | 2430 | /pretty-format@3.8.0: 2431 | resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==} 2432 | dev: false 2433 | 2434 | /prisma@5.9.1: 2435 | resolution: {integrity: sha512-Hy/8KJZz0ELtkw4FnG9MS9rNWlXcJhf98Z2QMqi0QiVMoS8PzsBkpla0/Y5hTlob8F3HeECYphBjqmBxrluUrQ==} 2436 | engines: {node: '>=16.13'} 2437 | hasBin: true 2438 | requiresBuild: true 2439 | dependencies: 2440 | '@prisma/engines': 5.9.1 2441 | 2442 | /prop-types@15.8.1: 2443 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2444 | dependencies: 2445 | loose-envify: 1.4.0 2446 | object-assign: 4.1.1 2447 | react-is: 16.13.1 2448 | dev: true 2449 | 2450 | /punycode@2.3.1: 2451 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2452 | engines: {node: '>=6'} 2453 | dev: true 2454 | 2455 | /queue-microtask@1.2.3: 2456 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2457 | dev: true 2458 | 2459 | /react-dom@18.2.0(react@18.2.0): 2460 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2461 | peerDependencies: 2462 | react: ^18.2.0 2463 | dependencies: 2464 | loose-envify: 1.4.0 2465 | react: 18.2.0 2466 | scheduler: 0.23.0 2467 | dev: false 2468 | 2469 | /react-hook-form@7.50.1(react@18.2.0): 2470 | resolution: {integrity: sha512-3PCY82oE0WgeOgUtIr3nYNNtNvqtJ7BZjsbxh6TnYNbXButaD5WpjOmTjdxZfheuHKR68qfeFnEDVYoSSFPMTQ==} 2471 | engines: {node: '>=12.22.0'} 2472 | peerDependencies: 2473 | react: ^16.8.0 || ^17 || ^18 2474 | dependencies: 2475 | react: 18.2.0 2476 | dev: false 2477 | 2478 | /react-hot-toast@2.4.1(csstype@3.1.3)(react-dom@18.2.0)(react@18.2.0): 2479 | resolution: {integrity: sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==} 2480 | engines: {node: '>=10'} 2481 | peerDependencies: 2482 | react: '>=16' 2483 | react-dom: '>=16' 2484 | dependencies: 2485 | goober: 2.1.14(csstype@3.1.3) 2486 | react: 18.2.0 2487 | react-dom: 18.2.0(react@18.2.0) 2488 | transitivePeerDependencies: 2489 | - csstype 2490 | dev: false 2491 | 2492 | /react-is@16.13.1: 2493 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2494 | dev: true 2495 | 2496 | /react@18.2.0: 2497 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2498 | engines: {node: '>=0.10.0'} 2499 | dependencies: 2500 | loose-envify: 1.4.0 2501 | dev: false 2502 | 2503 | /read-cache@1.0.0: 2504 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2505 | dependencies: 2506 | pify: 2.3.0 2507 | dev: true 2508 | 2509 | /readdirp@3.6.0: 2510 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2511 | engines: {node: '>=8.10.0'} 2512 | dependencies: 2513 | picomatch: 2.3.1 2514 | dev: true 2515 | 2516 | /reflect.getprototypeof@1.0.5: 2517 | resolution: {integrity: sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==} 2518 | engines: {node: '>= 0.4'} 2519 | dependencies: 2520 | call-bind: 1.0.6 2521 | define-properties: 1.2.1 2522 | es-abstract: 1.22.3 2523 | es-errors: 1.3.0 2524 | get-intrinsic: 1.2.4 2525 | globalthis: 1.0.3 2526 | which-builtin-type: 1.1.3 2527 | dev: true 2528 | 2529 | /regenerator-runtime@0.14.1: 2530 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 2531 | 2532 | /regexp.prototype.flags@1.5.1: 2533 | resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} 2534 | engines: {node: '>= 0.4'} 2535 | dependencies: 2536 | call-bind: 1.0.6 2537 | define-properties: 1.2.1 2538 | set-function-name: 2.0.1 2539 | dev: true 2540 | 2541 | /resolve-from@4.0.0: 2542 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2543 | engines: {node: '>=4'} 2544 | dev: true 2545 | 2546 | /resolve-pkg-maps@1.0.0: 2547 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2548 | dev: true 2549 | 2550 | /resolve@1.22.8: 2551 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 2552 | hasBin: true 2553 | dependencies: 2554 | is-core-module: 2.13.1 2555 | path-parse: 1.0.7 2556 | supports-preserve-symlinks-flag: 1.0.0 2557 | dev: true 2558 | 2559 | /resolve@2.0.0-next.5: 2560 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 2561 | hasBin: true 2562 | dependencies: 2563 | is-core-module: 2.13.1 2564 | path-parse: 1.0.7 2565 | supports-preserve-symlinks-flag: 1.0.0 2566 | dev: true 2567 | 2568 | /reusify@1.0.4: 2569 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2570 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2571 | dev: true 2572 | 2573 | /rimraf@3.0.2: 2574 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2575 | hasBin: true 2576 | dependencies: 2577 | glob: 7.2.3 2578 | dev: true 2579 | 2580 | /run-parallel@1.2.0: 2581 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2582 | dependencies: 2583 | queue-microtask: 1.2.3 2584 | dev: true 2585 | 2586 | /safe-array-concat@1.1.0: 2587 | resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} 2588 | engines: {node: '>=0.4'} 2589 | dependencies: 2590 | call-bind: 1.0.6 2591 | get-intrinsic: 1.2.4 2592 | has-symbols: 1.0.3 2593 | isarray: 2.0.5 2594 | dev: true 2595 | 2596 | /safe-regex-test@1.0.3: 2597 | resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} 2598 | engines: {node: '>= 0.4'} 2599 | dependencies: 2600 | call-bind: 1.0.6 2601 | es-errors: 1.3.0 2602 | is-regex: 1.1.4 2603 | dev: true 2604 | 2605 | /scheduler@0.23.0: 2606 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2607 | dependencies: 2608 | loose-envify: 1.4.0 2609 | dev: false 2610 | 2611 | /semver@6.3.1: 2612 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2613 | hasBin: true 2614 | dev: true 2615 | 2616 | /semver@7.6.0: 2617 | resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} 2618 | engines: {node: '>=10'} 2619 | hasBin: true 2620 | dependencies: 2621 | lru-cache: 6.0.0 2622 | dev: true 2623 | 2624 | /set-function-length@1.2.1: 2625 | resolution: {integrity: sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==} 2626 | engines: {node: '>= 0.4'} 2627 | dependencies: 2628 | define-data-property: 1.1.2 2629 | es-errors: 1.3.0 2630 | function-bind: 1.1.2 2631 | get-intrinsic: 1.2.4 2632 | gopd: 1.0.1 2633 | has-property-descriptors: 1.0.1 2634 | dev: true 2635 | 2636 | /set-function-name@2.0.1: 2637 | resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} 2638 | engines: {node: '>= 0.4'} 2639 | dependencies: 2640 | define-data-property: 1.1.2 2641 | functions-have-names: 1.2.3 2642 | has-property-descriptors: 1.0.1 2643 | dev: true 2644 | 2645 | /shebang-command@2.0.0: 2646 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2647 | engines: {node: '>=8'} 2648 | dependencies: 2649 | shebang-regex: 3.0.0 2650 | dev: true 2651 | 2652 | /shebang-regex@3.0.0: 2653 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2654 | engines: {node: '>=8'} 2655 | dev: true 2656 | 2657 | /side-channel@1.0.5: 2658 | resolution: {integrity: sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==} 2659 | engines: {node: '>= 0.4'} 2660 | dependencies: 2661 | call-bind: 1.0.6 2662 | es-errors: 1.3.0 2663 | get-intrinsic: 1.2.4 2664 | object-inspect: 1.13.1 2665 | dev: true 2666 | 2667 | /signal-exit@4.1.0: 2668 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2669 | engines: {node: '>=14'} 2670 | dev: true 2671 | 2672 | /slash@3.0.0: 2673 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2674 | engines: {node: '>=8'} 2675 | dev: true 2676 | 2677 | /source-map-js@1.0.2: 2678 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2679 | engines: {node: '>=0.10.0'} 2680 | 2681 | /streamsearch@1.1.0: 2682 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 2683 | engines: {node: '>=10.0.0'} 2684 | dev: false 2685 | 2686 | /string-width@4.2.3: 2687 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2688 | engines: {node: '>=8'} 2689 | dependencies: 2690 | emoji-regex: 8.0.0 2691 | is-fullwidth-code-point: 3.0.0 2692 | strip-ansi: 6.0.1 2693 | dev: true 2694 | 2695 | /string-width@5.1.2: 2696 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 2697 | engines: {node: '>=12'} 2698 | dependencies: 2699 | eastasianwidth: 0.2.0 2700 | emoji-regex: 9.2.2 2701 | strip-ansi: 7.1.0 2702 | dev: true 2703 | 2704 | /string.prototype.matchall@4.0.10: 2705 | resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} 2706 | dependencies: 2707 | call-bind: 1.0.6 2708 | define-properties: 1.2.1 2709 | es-abstract: 1.22.3 2710 | get-intrinsic: 1.2.4 2711 | has-symbols: 1.0.3 2712 | internal-slot: 1.0.7 2713 | regexp.prototype.flags: 1.5.1 2714 | set-function-name: 2.0.1 2715 | side-channel: 1.0.5 2716 | dev: true 2717 | 2718 | /string.prototype.trim@1.2.8: 2719 | resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} 2720 | engines: {node: '>= 0.4'} 2721 | dependencies: 2722 | call-bind: 1.0.6 2723 | define-properties: 1.2.1 2724 | es-abstract: 1.22.3 2725 | dev: true 2726 | 2727 | /string.prototype.trimend@1.0.7: 2728 | resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} 2729 | dependencies: 2730 | call-bind: 1.0.6 2731 | define-properties: 1.2.1 2732 | es-abstract: 1.22.3 2733 | dev: true 2734 | 2735 | /string.prototype.trimstart@1.0.7: 2736 | resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} 2737 | dependencies: 2738 | call-bind: 1.0.6 2739 | define-properties: 1.2.1 2740 | es-abstract: 1.22.3 2741 | dev: true 2742 | 2743 | /strip-ansi@6.0.1: 2744 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2745 | engines: {node: '>=8'} 2746 | dependencies: 2747 | ansi-regex: 5.0.1 2748 | dev: true 2749 | 2750 | /strip-ansi@7.1.0: 2751 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2752 | engines: {node: '>=12'} 2753 | dependencies: 2754 | ansi-regex: 6.0.1 2755 | dev: true 2756 | 2757 | /strip-bom@3.0.0: 2758 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2759 | engines: {node: '>=4'} 2760 | dev: true 2761 | 2762 | /strip-json-comments@3.1.1: 2763 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2764 | engines: {node: '>=8'} 2765 | dev: true 2766 | 2767 | /styled-jsx@5.1.1(react@18.2.0): 2768 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 2769 | engines: {node: '>= 12.0.0'} 2770 | peerDependencies: 2771 | '@babel/core': '*' 2772 | babel-plugin-macros: '*' 2773 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 2774 | peerDependenciesMeta: 2775 | '@babel/core': 2776 | optional: true 2777 | babel-plugin-macros: 2778 | optional: true 2779 | dependencies: 2780 | client-only: 0.0.1 2781 | react: 18.2.0 2782 | dev: false 2783 | 2784 | /sucrase@3.35.0: 2785 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 2786 | engines: {node: '>=16 || 14 >=14.17'} 2787 | hasBin: true 2788 | dependencies: 2789 | '@jridgewell/gen-mapping': 0.3.3 2790 | commander: 4.1.1 2791 | glob: 10.3.10 2792 | lines-and-columns: 1.2.4 2793 | mz: 2.7.0 2794 | pirates: 4.0.6 2795 | ts-interface-checker: 0.1.13 2796 | dev: true 2797 | 2798 | /supports-color@7.2.0: 2799 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2800 | engines: {node: '>=8'} 2801 | dependencies: 2802 | has-flag: 4.0.0 2803 | dev: true 2804 | 2805 | /supports-preserve-symlinks-flag@1.0.0: 2806 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2807 | engines: {node: '>= 0.4'} 2808 | dev: true 2809 | 2810 | /tailwind-merge@2.2.1: 2811 | resolution: {integrity: sha512-o+2GTLkthfa5YUt4JxPfzMIpQzZ3adD1vLVkvKE1Twl9UAhGsEbIZhHHZVRttyW177S8PDJI3bTQNaebyofK3Q==} 2812 | dependencies: 2813 | '@babel/runtime': 7.23.9 2814 | dev: false 2815 | 2816 | /tailwindcss@3.4.1(ts-node@10.9.2): 2817 | resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} 2818 | engines: {node: '>=14.0.0'} 2819 | hasBin: true 2820 | dependencies: 2821 | '@alloc/quick-lru': 5.2.0 2822 | arg: 5.0.2 2823 | chokidar: 3.6.0 2824 | didyoumean: 1.2.2 2825 | dlv: 1.1.3 2826 | fast-glob: 3.3.2 2827 | glob-parent: 6.0.2 2828 | is-glob: 4.0.3 2829 | jiti: 1.21.0 2830 | lilconfig: 2.1.0 2831 | micromatch: 4.0.5 2832 | normalize-path: 3.0.0 2833 | object-hash: 3.0.0 2834 | picocolors: 1.0.0 2835 | postcss: 8.4.34 2836 | postcss-import: 15.1.0(postcss@8.4.34) 2837 | postcss-js: 4.0.1(postcss@8.4.34) 2838 | postcss-load-config: 4.0.2(postcss@8.4.34)(ts-node@10.9.2) 2839 | postcss-nested: 6.0.1(postcss@8.4.34) 2840 | postcss-selector-parser: 6.0.15 2841 | resolve: 1.22.8 2842 | sucrase: 3.35.0 2843 | transitivePeerDependencies: 2844 | - ts-node 2845 | dev: true 2846 | 2847 | /tapable@2.2.1: 2848 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 2849 | engines: {node: '>=6'} 2850 | dev: true 2851 | 2852 | /text-table@0.2.0: 2853 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2854 | dev: true 2855 | 2856 | /thenify-all@1.6.0: 2857 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2858 | engines: {node: '>=0.8'} 2859 | dependencies: 2860 | thenify: 3.3.1 2861 | dev: true 2862 | 2863 | /thenify@3.3.1: 2864 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2865 | dependencies: 2866 | any-promise: 1.3.0 2867 | dev: true 2868 | 2869 | /to-regex-range@5.0.1: 2870 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2871 | engines: {node: '>=8.0'} 2872 | dependencies: 2873 | is-number: 7.0.0 2874 | dev: true 2875 | 2876 | /ts-api-utils@1.2.1(typescript@5.3.3): 2877 | resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} 2878 | engines: {node: '>=16'} 2879 | peerDependencies: 2880 | typescript: '>=4.2.0' 2881 | dependencies: 2882 | typescript: 5.3.3 2883 | dev: true 2884 | 2885 | /ts-interface-checker@0.1.13: 2886 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2887 | dev: true 2888 | 2889 | /ts-node@10.9.2(@types/node@20.11.16)(typescript@5.3.3): 2890 | resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} 2891 | hasBin: true 2892 | peerDependencies: 2893 | '@swc/core': '>=1.2.50' 2894 | '@swc/wasm': '>=1.2.50' 2895 | '@types/node': '*' 2896 | typescript: '>=2.7' 2897 | peerDependenciesMeta: 2898 | '@swc/core': 2899 | optional: true 2900 | '@swc/wasm': 2901 | optional: true 2902 | dependencies: 2903 | '@cspotcode/source-map-support': 0.8.1 2904 | '@tsconfig/node10': 1.0.9 2905 | '@tsconfig/node12': 1.0.11 2906 | '@tsconfig/node14': 1.0.3 2907 | '@tsconfig/node16': 1.0.4 2908 | '@types/node': 20.11.16 2909 | acorn: 8.11.3 2910 | acorn-walk: 8.3.2 2911 | arg: 4.1.3 2912 | create-require: 1.1.1 2913 | diff: 4.0.2 2914 | make-error: 1.3.6 2915 | typescript: 5.3.3 2916 | v8-compile-cache-lib: 3.0.1 2917 | yn: 3.1.1 2918 | dev: true 2919 | 2920 | /tsconfig-paths@3.15.0: 2921 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 2922 | dependencies: 2923 | '@types/json5': 0.0.29 2924 | json5: 1.0.2 2925 | minimist: 1.2.8 2926 | strip-bom: 3.0.0 2927 | dev: true 2928 | 2929 | /tslib@2.6.2: 2930 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 2931 | dev: false 2932 | 2933 | /type-check@0.4.0: 2934 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2935 | engines: {node: '>= 0.8.0'} 2936 | dependencies: 2937 | prelude-ls: 1.2.1 2938 | dev: true 2939 | 2940 | /type-fest@0.20.2: 2941 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2942 | engines: {node: '>=10'} 2943 | dev: true 2944 | 2945 | /typed-array-buffer@1.0.1: 2946 | resolution: {integrity: sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==} 2947 | engines: {node: '>= 0.4'} 2948 | dependencies: 2949 | call-bind: 1.0.6 2950 | es-errors: 1.3.0 2951 | is-typed-array: 1.1.13 2952 | dev: true 2953 | 2954 | /typed-array-byte-length@1.0.0: 2955 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} 2956 | engines: {node: '>= 0.4'} 2957 | dependencies: 2958 | call-bind: 1.0.6 2959 | for-each: 0.3.3 2960 | has-proto: 1.0.1 2961 | is-typed-array: 1.1.13 2962 | dev: true 2963 | 2964 | /typed-array-byte-offset@1.0.0: 2965 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} 2966 | engines: {node: '>= 0.4'} 2967 | dependencies: 2968 | available-typed-arrays: 1.0.6 2969 | call-bind: 1.0.6 2970 | for-each: 0.3.3 2971 | has-proto: 1.0.1 2972 | is-typed-array: 1.1.13 2973 | dev: true 2974 | 2975 | /typed-array-length@1.0.4: 2976 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 2977 | dependencies: 2978 | call-bind: 1.0.6 2979 | for-each: 0.3.3 2980 | is-typed-array: 1.1.13 2981 | dev: true 2982 | 2983 | /typescript@5.3.3: 2984 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} 2985 | engines: {node: '>=14.17'} 2986 | hasBin: true 2987 | dev: true 2988 | 2989 | /unbox-primitive@1.0.2: 2990 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 2991 | dependencies: 2992 | call-bind: 1.0.6 2993 | has-bigints: 1.0.2 2994 | has-symbols: 1.0.3 2995 | which-boxed-primitive: 1.0.2 2996 | dev: true 2997 | 2998 | /undici-types@5.26.5: 2999 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 3000 | dev: true 3001 | 3002 | /update-browserslist-db@1.0.13(browserslist@4.22.3): 3003 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 3004 | hasBin: true 3005 | peerDependencies: 3006 | browserslist: '>= 4.21.0' 3007 | dependencies: 3008 | browserslist: 4.22.3 3009 | escalade: 3.1.2 3010 | picocolors: 1.0.0 3011 | dev: true 3012 | 3013 | /uri-js@4.4.1: 3014 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3015 | dependencies: 3016 | punycode: 2.3.1 3017 | dev: true 3018 | 3019 | /util-deprecate@1.0.2: 3020 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3021 | dev: true 3022 | 3023 | /v8-compile-cache-lib@3.0.1: 3024 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 3025 | dev: true 3026 | 3027 | /which-boxed-primitive@1.0.2: 3028 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3029 | dependencies: 3030 | is-bigint: 1.0.4 3031 | is-boolean-object: 1.1.2 3032 | is-number-object: 1.0.7 3033 | is-string: 1.0.7 3034 | is-symbol: 1.0.4 3035 | dev: true 3036 | 3037 | /which-builtin-type@1.1.3: 3038 | resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} 3039 | engines: {node: '>= 0.4'} 3040 | dependencies: 3041 | function.prototype.name: 1.1.6 3042 | has-tostringtag: 1.0.2 3043 | is-async-function: 2.0.0 3044 | is-date-object: 1.0.5 3045 | is-finalizationregistry: 1.0.2 3046 | is-generator-function: 1.0.10 3047 | is-regex: 1.1.4 3048 | is-weakref: 1.0.2 3049 | isarray: 2.0.5 3050 | which-boxed-primitive: 1.0.2 3051 | which-collection: 1.0.1 3052 | which-typed-array: 1.1.14 3053 | dev: true 3054 | 3055 | /which-collection@1.0.1: 3056 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 3057 | dependencies: 3058 | is-map: 2.0.2 3059 | is-set: 2.0.2 3060 | is-weakmap: 2.0.1 3061 | is-weakset: 2.0.2 3062 | dev: true 3063 | 3064 | /which-typed-array@1.1.14: 3065 | resolution: {integrity: sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==} 3066 | engines: {node: '>= 0.4'} 3067 | dependencies: 3068 | available-typed-arrays: 1.0.6 3069 | call-bind: 1.0.6 3070 | for-each: 0.3.3 3071 | gopd: 1.0.1 3072 | has-tostringtag: 1.0.2 3073 | dev: true 3074 | 3075 | /which@2.0.2: 3076 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3077 | engines: {node: '>= 8'} 3078 | hasBin: true 3079 | dependencies: 3080 | isexe: 2.0.0 3081 | dev: true 3082 | 3083 | /wrap-ansi@7.0.0: 3084 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3085 | engines: {node: '>=10'} 3086 | dependencies: 3087 | ansi-styles: 4.3.0 3088 | string-width: 4.2.3 3089 | strip-ansi: 6.0.1 3090 | dev: true 3091 | 3092 | /wrap-ansi@8.1.0: 3093 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 3094 | engines: {node: '>=12'} 3095 | dependencies: 3096 | ansi-styles: 6.2.1 3097 | string-width: 5.1.2 3098 | strip-ansi: 7.1.0 3099 | dev: true 3100 | 3101 | /wrappy@1.0.2: 3102 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3103 | dev: true 3104 | 3105 | /yallist@4.0.0: 3106 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3107 | dev: true 3108 | 3109 | /yaml@2.3.4: 3110 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 3111 | engines: {node: '>= 14'} 3112 | dev: true 3113 | 3114 | /yn@3.1.1: 3115 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 3116 | engines: {node: '>=6'} 3117 | dev: true 3118 | 3119 | /yocto-queue@0.1.0: 3120 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3121 | engines: {node: '>=10'} 3122 | dev: true 3123 | 3124 | /zod@3.22.4: 3125 | resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} 3126 | dev: false 3127 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /prisma/migrations/20240207160257_init/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE "users" ( 3 | "id" TEXT NOT NULL, 4 | "name" TEXT NOT NULL, 5 | "email" TEXT, 6 | "password" TEXT, 7 | "email_verified" TIMESTAMP(3), 8 | "image" TEXT, 9 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 10 | "updatedAt" TIMESTAMP(3) NOT NULL, 11 | 12 | CONSTRAINT "users_pkey" PRIMARY KEY ("id") 13 | ); 14 | 15 | -- CreateTable 16 | CREATE TABLE "accounts" ( 17 | "id" TEXT NOT NULL, 18 | "user_id" TEXT NOT NULL, 19 | "type" TEXT, 20 | "provider" TEXT NOT NULL, 21 | "provider_account_id" TEXT NOT NULL, 22 | "token_type" TEXT, 23 | "refresh_token" TEXT, 24 | "access_token" TEXT, 25 | "expires_at" INTEGER, 26 | "scope" TEXT, 27 | "id_token" TEXT, 28 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 29 | "updatedAt" TIMESTAMP(3) NOT NULL, 30 | 31 | CONSTRAINT "accounts_pkey" PRIMARY KEY ("id") 32 | ); 33 | 34 | -- CreateTable 35 | CREATE TABLE "sessions" ( 36 | "id" TEXT NOT NULL, 37 | "user_id" TEXT, 38 | "session_token" TEXT NOT NULL, 39 | "access_token" TEXT, 40 | "expires" TIMESTAMP(3) NOT NULL, 41 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 42 | "updatedAt" TIMESTAMP(3) NOT NULL, 43 | 44 | CONSTRAINT "sessions_pkey" PRIMARY KEY ("id") 45 | ); 46 | 47 | -- CreateTable 48 | CREATE TABLE "VerificationRequest" ( 49 | "id" TEXT NOT NULL, 50 | "identifier" TEXT NOT NULL, 51 | "token" TEXT NOT NULL, 52 | "expires" TIMESTAMP(3) NOT NULL, 53 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 54 | "updatedAt" TIMESTAMP(3) NOT NULL, 55 | 56 | CONSTRAINT "VerificationRequest_pkey" PRIMARY KEY ("id") 57 | ); 58 | 59 | -- CreateIndex 60 | CREATE UNIQUE INDEX "users_email_key" ON "users"("email"); 61 | 62 | -- CreateIndex 63 | CREATE UNIQUE INDEX "accounts_provider_provider_account_id_key" ON "accounts"("provider", "provider_account_id"); 64 | 65 | -- CreateIndex 66 | CREATE UNIQUE INDEX "sessions_session_token_key" ON "sessions"("session_token"); 67 | 68 | -- CreateIndex 69 | CREATE UNIQUE INDEX "VerificationRequest_token_key" ON "VerificationRequest"("token"); 70 | 71 | -- CreateIndex 72 | CREATE UNIQUE INDEX "VerificationRequest_identifier_token_key" ON "VerificationRequest"("identifier", "token"); 73 | 74 | -- AddForeignKey 75 | ALTER TABLE "accounts" ADD CONSTRAINT "accounts_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; 76 | 77 | -- AddForeignKey 78 | ALTER TABLE "sessions" ADD CONSTRAINT "sessions_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; 79 | -------------------------------------------------------------------------------- /prisma/migrations/migration_lock.toml: -------------------------------------------------------------------------------- 1 | # Please do not edit this file manually 2 | # It should be added in your version-control system (i.e. Git) 3 | provider = "postgresql" -------------------------------------------------------------------------------- /prisma/prisma.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from '@prisma/client'; 2 | 3 | const prismaClientSingleton = () => { 4 | return new PrismaClient(); 5 | }; 6 | 7 | declare global { 8 | var prisma: undefined | ReturnType; 9 | } 10 | 11 | const prisma = globalThis.prisma ?? prismaClientSingleton(); 12 | 13 | export default prisma; 14 | 15 | if (process.env.NODE_ENV !== 'production') globalThis.prisma = prisma; 16 | -------------------------------------------------------------------------------- /prisma/schema.prisma: -------------------------------------------------------------------------------- 1 | // This is your Prisma schema file, 2 | // learn more about it in the docs: https://pris.ly/d/prisma-schema 3 | 4 | generator client { 5 | provider = "prisma-client-js" 6 | } 7 | 8 | datasource db { 9 | provider = "postgresql" 10 | url = env("DATABASE_URL") 11 | } 12 | 13 | model User { 14 | id String @id @default(uuid()) 15 | name String 16 | email String? @unique 17 | password String? 18 | emailVerified DateTime? @map("email_verified") 19 | image String? 20 | createdAt DateTime @default(now()) 21 | updatedAt DateTime @updatedAt 22 | accounts Account[] 23 | sessions Session[] 24 | 25 | @@map("users") 26 | } 27 | 28 | model Account { 29 | id String @id @default(cuid()) 30 | userId String @map("user_id") 31 | type String? 32 | provider String 33 | providerAccountId String @map("provider_account_id") 34 | token_type String? 35 | refresh_token String? @db.Text 36 | access_token String? @db.Text 37 | expires_at Int? 38 | scope String? 39 | id_token String? @db.Text 40 | createdAt DateTime @default(now()) 41 | updatedAt DateTime @updatedAt 42 | user User @relation(fields: [userId], references: [id], onDelete: Cascade) 43 | 44 | @@unique([provider, providerAccountId]) 45 | @@map("accounts") 46 | } 47 | 48 | model Session { 49 | id String @id @default(cuid()) 50 | userId String? @map("user_id") 51 | sessionToken String @unique @map("session_token") @db.Text 52 | accessToken String? @map("access_token") @db.Text 53 | expires DateTime 54 | user User? @relation(fields: [userId], references: [id], onDelete: Cascade) 55 | createdAt DateTime @default(now()) 56 | updatedAt DateTime @updatedAt 57 | 58 | @@map("sessions") 59 | } 60 | 61 | model VerificationRequest { 62 | id String @id @default(cuid()) 63 | identifier String 64 | token String @unique 65 | expires DateTime 66 | createdAt DateTime @default(now()) 67 | updatedAt DateTime @updatedAt 68 | 69 | @@unique([identifier, token]) 70 | } 71 | -------------------------------------------------------------------------------- /prisma/seed.ts: -------------------------------------------------------------------------------- 1 | import { PrismaClient } from '@prisma/client'; 2 | import { hash } from 'bcryptjs'; 3 | 4 | const prisma = new PrismaClient(); 5 | 6 | async function main() { 7 | const password = await hash('password123', 12); 8 | const user = await prisma.user.upsert({ 9 | where: { email: 'admin@admin.com' }, 10 | update: {}, 11 | create: { 12 | email: 'admin@admin.com', 13 | name: 'Admin', 14 | password, 15 | }, 16 | }); 17 | console.log({ user }); 18 | } 19 | main() 20 | .then(() => prisma.$disconnect()) 21 | .catch(async (e) => { 22 | console.error(e); 23 | await prisma.$disconnect(); 24 | process.exit(1); 25 | }); 26 | -------------------------------------------------------------------------------- /public/images/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wpcodevo/nextauth-nextjs14-prisma/ba55c0240c13df80fdd43e553f41468da90897c7/public/images/default.png -------------------------------------------------------------------------------- /public/images/github.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/images/google.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from 'tailwindcss'; 2 | 3 | const config: Config = { 4 | content: [ 5 | './pages/**/*.{js,ts,jsx,tsx,mdx}', 6 | './components/**/*.{js,ts,jsx,tsx,mdx}', 7 | './app/**/*.{js,ts,jsx,tsx,mdx}', 8 | ], 9 | theme: { 10 | extend: { 11 | colors: { 12 | 'ct-dark-600': '#222', 13 | 'ct-dark-200': '#e5e7eb', 14 | 'ct-dark-100': '#f5f6f7', 15 | 'ct-blue-600': '#2363eb', 16 | 'ct-yellow-600': '#f9d13e', 17 | }, 18 | fontFamily: { 19 | Poppins: ['Poppins, sans-serif'], 20 | }, 21 | container: { 22 | center: true, 23 | padding: '1rem', 24 | screens: { 25 | lg: '1125px', 26 | xl: '1125px', 27 | '2xl': '1125px', 28 | }, 29 | }, 30 | }, 31 | }, 32 | plugins: [], 33 | }; 34 | export default config; 35 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["dom", "dom.iterable", "esnext"], 4 | "allowJs": true, 5 | "skipLibCheck": true, 6 | "strict": true, 7 | "noEmit": true, 8 | "esModuleInterop": true, 9 | "module": "esnext", 10 | "moduleResolution": "bundler", 11 | "resolveJsonModule": true, 12 | "isolatedModules": true, 13 | "jsx": "preserve", 14 | "incremental": true, 15 | "plugins": [ 16 | { 17 | "name": "next" 18 | } 19 | ], 20 | "paths": { 21 | "@/*": ["./*"] 22 | } 23 | }, 24 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], 25 | "exclude": ["node_modules"] 26 | } 27 | --------------------------------------------------------------------------------