├── .vscode └── settings.json ├── .eslintrc.json ├── app ├── globals.css ├── favicon.ico ├── api │ └── trpc │ │ ├── [trpc] │ │ └── route.ts │ │ └── trpc-router.ts ├── page.tsx ├── login │ ├── page.tsx │ └── login-form.tsx ├── register │ ├── page.tsx │ └── register-form.tsx ├── layout.tsx └── profile │ └── page.tsx ├── next.config.mjs ├── postcss.config.js ├── utils ├── query-client.ts ├── trpc.ts ├── trpc-context.ts ├── get-auth-user.ts ├── trpc-server.ts └── trpc-provider.tsx ├── prisma ├── migrations │ ├── migration_lock.toml │ └── 20240120114837_init │ │ └── migration.sql └── schema.prisma ├── .env ├── docker-compose.yml ├── lib ├── prisma.ts └── user-schema.ts ├── server ├── user-controller.ts ├── auth-route.ts ├── auth-middleware.ts └── auth-controller.ts ├── .gitignore ├── public ├── vercel.svg └── next.svg ├── tsconfig.json ├── Makefile ├── tailwind.config.ts ├── components ├── auth-menu.tsx ├── form-input.tsx ├── loading-button.tsx ├── header.tsx └── spinner.tsx ├── package.json ├── README.md └── pnpm-lock.yaml /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wpcodevo/nextjs14-trpc-authentication/HEAD/app/favicon.ico -------------------------------------------------------------------------------- /next.config.mjs: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = {}; 3 | 4 | export default nextConfig; 5 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /utils/query-client.ts: -------------------------------------------------------------------------------- 1 | import { QueryClient } from '@tanstack/react-query'; 2 | 3 | const queryClient = new QueryClient(); 4 | export default queryClient; 5 | -------------------------------------------------------------------------------- /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" -------------------------------------------------------------------------------- /utils/trpc.ts: -------------------------------------------------------------------------------- 1 | import type { AppRouter } from '@/app/api/trpc/trpc-router'; 2 | import { createTRPCReact } from '@trpc/react-query'; 3 | 4 | export const trpc = createTRPCReact(); 5 | -------------------------------------------------------------------------------- /utils/trpc-context.ts: -------------------------------------------------------------------------------- 1 | import { deserializeUser } from '@/server/auth-middleware'; 2 | import { inferAsyncReturnType } from '@trpc/server'; 3 | 4 | export const createContext = async () => deserializeUser(); 5 | 6 | export type Context = inferAsyncReturnType; 7 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | POSTGRES_HOST=127.0.0.1 2 | POSTGRES_PORT=6500 3 | POSTGRES_USER=postgres 4 | POSTGRES_PASSWORD=password123 5 | POSTGRES_DB=trpc_prisma 6 | 7 | DATABASE_URL=postgresql://postgres:password123@localhost:6500/trpc_prisma?schema=public 8 | 9 | PGADMIN_DEFAULT_EMAIL=admin@admin.com 10 | PGADMIN_DEFAULT_PASSWORD=password123 11 | 12 | JWT_SECRET=my_ultra_secure_jwt_secret -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | services: 2 | postgres: 3 | image: postgres:latest 4 | container_name: postgres 5 | ports: 6 | - '6500:5432' 7 | volumes: 8 | - progresDB:/var/lib/postgresql/data 9 | env_file: 10 | - ./.env 11 | pgAdmin: 12 | image: dpage/pgadmin4 13 | container_name: pgAdmin 14 | env_file: 15 | - ./.env 16 | ports: 17 | - '5050:80' 18 | volumes: 19 | progresDB: 20 | -------------------------------------------------------------------------------- /lib/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 | if (process.env.NODE_ENV !== 'production') globalThis.prisma = prisma; 14 | 15 | export { prisma }; 16 | -------------------------------------------------------------------------------- /server/user-controller.ts: -------------------------------------------------------------------------------- 1 | import type { Context } from '@/utils/trpc-context'; 2 | import { TRPCError } from '@trpc/server'; 3 | 4 | export const getMeHandler = ({ ctx }: { ctx: Context }) => { 5 | try { 6 | const user = ctx.user; 7 | return { 8 | status: 'success', 9 | data: { 10 | user, 11 | }, 12 | }; 13 | } catch (err: any) { 14 | throw new TRPCError({ 15 | code: 'INTERNAL_SERVER_ERROR', 16 | message: err.message, 17 | }); 18 | } 19 | }; 20 | -------------------------------------------------------------------------------- /app/api/trpc/[trpc]/route.ts: -------------------------------------------------------------------------------- 1 | import { fetchRequestHandler } from '@trpc/server/adapters/fetch'; 2 | import { appRouter } from '../trpc-router'; 3 | import { createContext } from '@/utils/trpc-context'; 4 | 5 | const handler = (request: Request) => { 6 | console.log(`incoming request ${request.url}`); 7 | return fetchRequestHandler({ 8 | endpoint: '/api/trpc', 9 | req: request, 10 | router: appRouter, 11 | createContext: createContext, 12 | }); 13 | }; 14 | 15 | export { handler as GET, handler as POST }; 16 | -------------------------------------------------------------------------------- /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 tRPC in Next.js 14 11 |

12 |
13 |
14 | 15 | ); 16 | } 17 | -------------------------------------------------------------------------------- /.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 | 31 | # vercel 32 | .vercel 33 | 34 | # typescript 35 | *.tsbuildinfo 36 | next-env.d.ts 37 | -------------------------------------------------------------------------------- /utils/get-auth-user.ts: -------------------------------------------------------------------------------- 1 | 'use server'; 2 | 3 | import { createAsyncCaller } from '@/app/api/trpc/trpc-router'; 4 | import { redirect } from 'next/navigation'; 5 | 6 | export const getAuthUser = async ({ 7 | shouldRedirect = true, 8 | }: { 9 | shouldRedirect?: boolean; 10 | } = {}) => { 11 | const caller = await createAsyncCaller(); 12 | return caller 13 | .getMe(undefined) 14 | .then((result) => result.data.user) 15 | .catch((e) => { 16 | if (e.code === 'UNAUTHORIZED' && shouldRedirect) { 17 | redirect('/login'); 18 | } 19 | 20 | return null; 21 | }); 22 | }; 23 | -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /utils/trpc-server.ts: -------------------------------------------------------------------------------- 1 | import { TRPCError, initTRPC } from '@trpc/server'; 2 | import SuperJSON from 'superjson'; 3 | import { Context } from './trpc-context'; 4 | 5 | export const t = initTRPC.context().create({ 6 | transformer: SuperJSON, 7 | }); 8 | 9 | const isAuthed = t.middleware(({ next, ctx }) => { 10 | if (!ctx.user) { 11 | throw new TRPCError({ 12 | code: 'UNAUTHORIZED', 13 | message: 'You must be logged in to access this resource', 14 | }); 15 | } 16 | return next(); 17 | }); 18 | 19 | export const pubicProcedure = t.procedure; 20 | export const protectedProcedure = t.procedure.use(isAuthed); 21 | -------------------------------------------------------------------------------- /server/auth-route.ts: -------------------------------------------------------------------------------- 1 | import { createUserSchema, loginUserSchema } from '@/lib/user-schema'; 2 | import { protectedProcedure, pubicProcedure, t } from '@/utils/trpc-server'; 3 | import { 4 | loginHandler, 5 | logoutHandler, 6 | registerHandler, 7 | } from './auth-controller'; 8 | 9 | const authRouter = t.router({ 10 | registerUser: pubicProcedure 11 | .input(createUserSchema) 12 | .mutation(({ input }) => registerHandler({ input })), 13 | loginUser: pubicProcedure 14 | .input(loginUserSchema) 15 | .mutation(({ input }) => loginHandler({ input })), 16 | logoutUser: protectedProcedure.mutation(() => logoutHandler()), 17 | }); 18 | 19 | export default authRouter; 20 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /app/login/page.tsx: -------------------------------------------------------------------------------- 1 | import Header from '@/components/header'; 2 | import LoginForm from './login-form'; 3 | 4 | export default async function LoginPage() { 5 | return ( 6 | <> 7 |
8 |
9 |
10 |

11 | Welcome Back 12 |

13 |

14 | Login to have access 15 |

16 | 17 |
18 |
19 | 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /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 | Welcome to CodevoWeb! 12 |

13 |

14 | Sign Up To Get Started! 15 |

16 | 17 |
18 |
19 | 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /prisma/migrations/20240120114837_init/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateEnum 2 | CREATE TYPE "RoleEnumType" AS ENUM ('user', 'admin'); 3 | 4 | -- CreateTable 5 | CREATE TABLE "users" ( 6 | "id" TEXT NOT NULL, 7 | "name" VARCHAR(255) NOT NULL, 8 | "email" TEXT NOT NULL, 9 | "photo" TEXT DEFAULT 'default.png', 10 | "verified" BOOLEAN DEFAULT false, 11 | "password" TEXT NOT NULL, 12 | "role" "RoleEnumType" DEFAULT 'user', 13 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 14 | "updatedAt" TIMESTAMP(3) NOT NULL, 15 | "provider" TEXT DEFAULT 'local', 16 | 17 | CONSTRAINT "users_pkey" PRIMARY KEY ("id") 18 | ); 19 | 20 | -- CreateIndex 21 | CREATE UNIQUE INDEX "users_email_key" ON "users"("email"); 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | create-app: 2 | pnpm create next-app nextjs14-trpc-authentication 3 | 4 | install-dependencies: 5 | pnpm add @tanstack/react-query@4.18.0 6 | pnpm add @tanstack/react-query-devtools@4.18.0 7 | pnpm add -D @tanstack/eslint-plugin-query 8 | pnpm add react-hook-form @hookform/resolvers 9 | pnpm add tailwind-merge 10 | pnpm add react-hot-toast 11 | pnpm add @trpc/client 12 | pnpm add @trpc/react-query 13 | 14 | pnpm add @trpc/server 15 | pnpm add superjson 16 | pnpm add zod 17 | pnpm add jsonwebtoken 18 | pnpm add bcryptjs 19 | pnpm add -D @types/jsonwebtoken @types/bcryptjs 20 | pnpm add @prisma/client 21 | pnpm add -D prisma 22 | 23 | commands: 24 | pnpm prisma init --datasource-provider postgresql 25 | pnpm prisma migrate dev --name init -------------------------------------------------------------------------------- /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 @db.VarChar(255) 16 | email String @unique 17 | photo String? @default("default.png") 18 | verified Boolean? @default(false) 19 | 20 | password String 21 | role RoleEnumType? @default(user) 22 | 23 | createdAt DateTime @default(now()) 24 | updatedAt DateTime @updatedAt 25 | 26 | provider String? @default("local") 27 | 28 | @@map(name: "users") 29 | } 30 | 31 | enum RoleEnumType { 32 | user 33 | admin 34 | } -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from 'next'; 2 | import { Inter } from 'next/font/google'; 3 | import './globals.css'; 4 | import { TrpcProvider } from '@/utils/trpc-provider'; 5 | import { Toaster } from 'react-hot-toast'; 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 | 23 |
24 | {children} 25 | 26 |
27 |
28 | 29 | 30 | ); 31 | } 32 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /components/auth-menu.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import queryClient from '@/utils/query-client'; 4 | import { trpc } from '@/utils/trpc'; 5 | import Link from 'next/link'; 6 | import { useRouter } from 'next/navigation'; 7 | import toast from 'react-hot-toast'; 8 | 9 | export default function AuthMenu() { 10 | const router = useRouter(); 11 | 12 | const { mutate: logoutFn } = trpc.logoutUser.useMutation({ 13 | onError(error) { 14 | toast.error(error.message); 15 | console.log('Error message:', error.message); 16 | }, 17 | onSuccess() { 18 | queryClient.clear(); 19 | toast.success('logout successful'); 20 | router.push('/login'); 21 | }, 22 | }); 23 | 24 | return ( 25 | <> 26 |
  • 27 | 28 | Profile 29 | 30 |
  • 31 |
  • logoutFn()}> 32 | Logout 33 |
  • 34 | 35 | ); 36 | } 37 | -------------------------------------------------------------------------------- /app/api/trpc/trpc-router.ts: -------------------------------------------------------------------------------- 1 | import authRouter from '@/server/auth-route'; 2 | import { getMeHandler } from '@/server/user-controller'; 3 | import { createContext } from '@/utils/trpc-context'; 4 | import { protectedProcedure, t } from '@/utils/trpc-server'; 5 | 6 | const healthCheckerRouter = t.router({ 7 | healthchecker: t.procedure.query(() => { 8 | return { 9 | status: 'success', 10 | message: 'Welcome to trpc with Next.js 14 and React Query', 11 | }; 12 | }), 13 | }); 14 | 15 | const userRouter = t.router({ 16 | getMe: protectedProcedure.query(({ ctx }) => getMeHandler({ ctx })), 17 | }); 18 | 19 | export const appRouter = t.mergeRouters( 20 | healthCheckerRouter, 21 | authRouter, 22 | userRouter 23 | ); 24 | 25 | export const createCaller = t.createCallerFactory(appRouter); 26 | 27 | export const createAsyncCaller = async () => { 28 | const context = await createContext(); 29 | return createCaller(context); 30 | }; 31 | 32 | export type AppRouter = typeof appRouter; 33 | -------------------------------------------------------------------------------- /components/form-input.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { useFormContext } from 'react-hook-form'; 3 | 4 | type FormInputProps = { 5 | label: string; 6 | name: string; 7 | type?: string; 8 | }; 9 | 10 | const FormInput: React.FC = ({ 11 | label, 12 | name, 13 | type = 'text', 14 | }) => { 15 | const { 16 | register, 17 | formState: { errors }, 18 | } = useFormContext(); 19 | return ( 20 |
    21 | 24 | 30 | {errors[name] && ( 31 | 32 | {errors[name]?.message as string} 33 | 34 | )} 35 |
    36 | ); 37 | }; 38 | 39 | export default FormInput; 40 | -------------------------------------------------------------------------------- /app/profile/page.tsx: -------------------------------------------------------------------------------- 1 | import Header from '@/components/header'; 2 | import { getAuthUser } from '@/utils/get-auth-user'; 3 | 4 | export default async function ProfilePage() { 5 | const user = await getAuthUser(); 6 | 7 | return ( 8 | <> 9 |
    10 |
    11 |
    12 |
    13 |

    14 | Profile Page 15 |

    16 |
    17 |

    Id: {user?.id}

    18 |

    Name: {user?.name}

    19 |

    Email: {user?.email}

    20 |

    Role: {user?.role}

    21 |

    Verified: {String(user?.verified)}

    22 |
    23 |
    24 |
    25 |
    26 | 27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /components/loading-button.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { twMerge } from 'tailwind-merge'; 3 | import Spinner from './spinner'; 4 | 5 | type LoadingButtonProps = { 6 | loading: boolean; 7 | btnColor?: string; 8 | textColor?: string; 9 | children: React.ReactNode; 10 | }; 11 | 12 | export const LoadingButton: React.FC = ({ 13 | textColor = 'text-white', 14 | btnColor = 'bg-ct-yellow-600', 15 | children, 16 | loading = false, 17 | }) => { 18 | return ( 19 | 35 | ); 36 | }; 37 | -------------------------------------------------------------------------------- /server/auth-middleware.ts: -------------------------------------------------------------------------------- 1 | import { TRPCError } from '@trpc/server'; 2 | import jwt from 'jsonwebtoken'; 3 | import { prisma } from '@/lib/prisma'; 4 | import { cookies } from 'next/headers'; 5 | 6 | export const deserializeUser = async () => { 7 | const cookieStore = cookies(); 8 | try { 9 | let token; 10 | if (cookieStore.get('token')) { 11 | token = cookieStore.get('token')?.value; 12 | } 13 | 14 | const notAuthenticated = { 15 | user: null, 16 | }; 17 | 18 | if (!token) { 19 | return notAuthenticated; 20 | } 21 | 22 | const secret = process.env.JWT_SECRET!; 23 | const decoded = jwt.verify(token, secret) as { sub: string }; 24 | 25 | if (!decoded) { 26 | return notAuthenticated; 27 | } 28 | 29 | const user = await prisma.user.findUnique({ where: { id: decoded.sub } }); 30 | 31 | if (!user) { 32 | return notAuthenticated; 33 | } 34 | 35 | const { password, ...userWithoutPassword } = user; 36 | return { 37 | user: userWithoutPassword, 38 | }; 39 | } catch (err: any) { 40 | throw new TRPCError({ 41 | code: 'INTERNAL_SERVER_ERROR', 42 | message: err.message, 43 | }); 44 | } 45 | }; 46 | -------------------------------------------------------------------------------- /components/header.tsx: -------------------------------------------------------------------------------- 1 | import Link from 'next/link'; 2 | import AuthMenu from './auth-menu'; 3 | import { getAuthUser } from '@/utils/get-auth-user'; 4 | 5 | const Header = async () => { 6 | const user = await getAuthUser({ shouldRedirect: false }); 7 | 8 | return ( 9 |
    10 | 39 |
    40 | ); 41 | }; 42 | 43 | export default Header; 44 | -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/user-schema.ts: -------------------------------------------------------------------------------- 1 | import { object, string, TypeOf } 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 CreateUserInput = TypeOf; 35 | export type LoginUserInput = TypeOf; 36 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "nextjs14-trpc-authentication", 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 | "dependencies": { 12 | "@hookform/resolvers": "^3.3.4", 13 | "@prisma/client": "^5.8.1", 14 | "@tanstack/react-query": "4.18.0", 15 | "@tanstack/react-query-devtools": "4.18.0", 16 | "@trpc/client": "^10.45.0", 17 | "@trpc/react-query": "^10.45.0", 18 | "@trpc/server": "^10.45.0", 19 | "bcryptjs": "^2.4.3", 20 | "jsonwebtoken": "^9.0.2", 21 | "next": "14.1.0", 22 | "react": "^18", 23 | "react-dom": "^18", 24 | "react-hook-form": "^7.49.3", 25 | "react-hot-toast": "^2.4.1", 26 | "superjson": "^2.2.1", 27 | "tailwind-merge": "^2.2.0", 28 | "zod": "^3.22.4" 29 | }, 30 | "devDependencies": { 31 | "@tanstack/eslint-plugin-query": "^5.17.7", 32 | "@types/bcryptjs": "^2.4.6", 33 | "@types/jsonwebtoken": "^9.0.5", 34 | "@types/node": "^20", 35 | "@types/react": "^18", 36 | "@types/react-dom": "^18", 37 | "autoprefixer": "^10.0.1", 38 | "eslint": "^8", 39 | "eslint-config-next": "14.1.0", 40 | "postcss": "^8", 41 | "prisma": "^5.8.1", 42 | "tailwindcss": "^3.3.0", 43 | "typescript": "^5" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /utils/trpc-provider.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { QueryClientProvider } from '@tanstack/react-query'; 4 | import { httpBatchLink, getFetch, loggerLink } from '@trpc/client'; 5 | import { useState } from 'react'; 6 | import superjson from 'superjson'; 7 | import { trpc } from './trpc'; 8 | import queryClient from './query-client'; 9 | import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; 10 | 11 | export const TrpcProvider: React.FC<{ children: React.ReactNode }> = ({ 12 | children, 13 | }) => { 14 | const url = process.env.NEXT_PUBLIC_VERCEL_URL 15 | ? `https://${process.env.NEXT_PUBLIC_VERCEL_URL}` 16 | : 'http://localhost:3000/api/trpc/'; 17 | 18 | const [trpcClient] = useState(() => 19 | trpc.createClient({ 20 | links: [ 21 | loggerLink({ 22 | enabled: () => true, 23 | }), 24 | httpBatchLink({ 25 | url, 26 | fetch: async (input, init?) => { 27 | const fetch = getFetch(); 28 | return fetch(input, { 29 | ...init, 30 | credentials: 'include', 31 | }); 32 | }, 33 | }), 34 | ], 35 | transformer: superjson, 36 | }) 37 | ); 38 | return ( 39 | 40 | 41 | {children} 42 | 43 | 44 | 45 | ); 46 | }; 47 | -------------------------------------------------------------------------------- /components/spinner.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { twMerge } from 'tailwind-merge'; 3 | type SpinnerProps = { 4 | width?: string; 5 | height?: string; 6 | color?: string; 7 | bgColor?: string; 8 | }; 9 | const Spinner: React.FC = ({ 10 | width = '1.25rem', 11 | height = '1.25rem', 12 | color, 13 | bgColor, 14 | }) => { 15 | return ( 16 | 27 | 31 | 35 | 36 | ); 37 | }; 38 | 39 | export default Spinner; 40 | -------------------------------------------------------------------------------- /server/auth-controller.ts: -------------------------------------------------------------------------------- 1 | import { CreateUserInput, LoginUserInput } from '@/lib/user-schema'; 2 | import bcrypt from 'bcryptjs'; 3 | import { prisma } from '@/lib/prisma'; 4 | import { TRPCError } from '@trpc/server'; 5 | import jwt from 'jsonwebtoken'; 6 | import { cookies } from 'next/headers'; 7 | 8 | export const registerHandler = async ({ 9 | input, 10 | }: { 11 | input: CreateUserInput; 12 | }) => { 13 | try { 14 | const hashedPassword = await bcrypt.hash(input.password, 12); 15 | const user = await prisma.user.create({ 16 | data: { 17 | email: input.email, 18 | name: input.name, 19 | password: hashedPassword, 20 | photo: input.photo, 21 | }, 22 | }); 23 | 24 | const { password, ...userWithoutPassword } = user; 25 | return { 26 | status: 'success', 27 | data: { 28 | user: userWithoutPassword, 29 | }, 30 | }; 31 | } catch (err: any) { 32 | if (err.code === 'P2002') { 33 | throw new TRPCError({ 34 | code: 'CONFLICT', 35 | message: 'Email already exists', 36 | }); 37 | } 38 | throw err; 39 | } 40 | }; 41 | 42 | export const loginHandler = async ({ input }: { input: LoginUserInput }) => { 43 | try { 44 | const user = await prisma.user.findUnique({ 45 | where: { email: input.email }, 46 | }); 47 | 48 | if (!user || !(await bcrypt.compare(input.password, user.password))) { 49 | throw new TRPCError({ 50 | code: 'BAD_REQUEST', 51 | message: 'Invalid email or password', 52 | }); 53 | } 54 | 55 | const secret = process.env.JWT_SECRET!; 56 | const token = jwt.sign({ sub: user.id }, secret, { 57 | expiresIn: 60 * 60, 58 | }); 59 | 60 | const cookieOptions = { 61 | httpOnly: true, 62 | path: '/', 63 | secure: process.env.NODE_ENV !== 'development', 64 | maxAge: 60 * 60, 65 | }; 66 | cookies().set('token', token, cookieOptions); 67 | 68 | return { 69 | status: 'success', 70 | token, 71 | }; 72 | } catch (err: any) { 73 | throw err; 74 | } 75 | }; 76 | 77 | export const logoutHandler = async () => { 78 | try { 79 | cookies().set('token', '', { 80 | maxAge: -1, 81 | }); 82 | return { status: 'success' }; 83 | } catch (err: any) { 84 | throw err; 85 | } 86 | }; 87 | -------------------------------------------------------------------------------- /app/login/login-form.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { useForm, SubmitHandler, FormProvider } from 'react-hook-form'; 4 | import { zodResolver } from '@hookform/resolvers/zod'; 5 | import { useState } from 'react'; 6 | import Link from 'next/link'; 7 | import { useRouter } from 'next/navigation'; 8 | import { LoginUserInput, loginUserSchema } from '@/lib/user-schema'; 9 | import FormInput from '@/components/form-input'; 10 | import { LoadingButton } from '@/components/loading-button'; 11 | import { trpc } from '@/utils/trpc'; 12 | import toast from 'react-hot-toast'; 13 | 14 | export default function LoginForm() { 15 | const [submitting, setSubmitting] = useState(false); 16 | const router = useRouter(); 17 | 18 | const methods = useForm({ 19 | resolver: zodResolver(loginUserSchema), 20 | }); 21 | 22 | const { reset, handleSubmit } = methods; 23 | 24 | const { mutate: loginFn } = trpc.loginUser.useMutation({ 25 | onSettled() { 26 | setSubmitting(false); 27 | }, 28 | onMutate() { 29 | setSubmitting(true); 30 | }, 31 | onError(error) { 32 | toast.error(error.message); 33 | console.log('Error message:', error.message); 34 | reset({ password: '' }); 35 | }, 36 | onSuccess() { 37 | toast.success('login successfully'); 38 | router.push('/'); 39 | }, 40 | }); 41 | 42 | const onSubmitHandler: SubmitHandler = (values) => { 43 | loginFn(values); 44 | }; 45 | 46 | return ( 47 | 48 |
    52 | 53 | 54 | 55 |
    56 | 57 | Forgot Password? 58 | 59 |
    60 | 61 | Login 62 | 63 | 64 | Need an account?{' '} 65 | 66 | Sign Up Here 67 | 68 | 69 | 70 |
    71 | ); 72 | } 73 | -------------------------------------------------------------------------------- /app/register/register-form.tsx: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | 3 | import { useForm, SubmitHandler, FormProvider } from 'react-hook-form'; 4 | import { zodResolver } from '@hookform/resolvers/zod'; 5 | import { useState } from 'react'; 6 | import Link from 'next/link'; 7 | import { toast } from 'react-hot-toast'; 8 | import { useRouter } from 'next/navigation'; 9 | import { CreateUserInput, createUserSchema } from '@/lib/user-schema'; 10 | import { trpc } from '@/utils/trpc'; 11 | import FormInput from '@/components/form-input'; 12 | import { LoadingButton } from '@/components/loading-button'; 13 | 14 | export default function RegisterForm() { 15 | const router = useRouter(); 16 | const [submitting, setSubmitting] = useState(false); 17 | 18 | const methods = useForm({ 19 | resolver: zodResolver(createUserSchema), 20 | }); 21 | 22 | const { reset, handleSubmit } = methods; 23 | 24 | const { mutate: registerFn } = trpc.registerUser.useMutation({ 25 | onMutate() { 26 | setSubmitting(true); 27 | }, 28 | onSettled() { 29 | setSubmitting(false); 30 | }, 31 | onError(error) { 32 | reset({ password: '', passwordConfirm: '' }); 33 | toast.error(error.message); 34 | console.log('Error message:', error.message); 35 | }, 36 | onSuccess() { 37 | toast.success('registered successfully'); 38 | router.push('/login'); 39 | }, 40 | }); 41 | 42 | const onSubmitHandler: SubmitHandler = (values) => { 43 | registerFn(values); 44 | }; 45 | 46 | return ( 47 | 48 |
    52 | 53 | 54 | 55 | 60 | 61 | Already have an account?{' '} 62 | 63 | Login Here 64 | 65 | 66 | 67 | Register 68 | 69 | 70 |
    71 | ); 72 | } 73 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 1. Implement Authentication with tRPC API in Next.js 14 2 | 3 | This comprehensive guide will teach you how to implement JSON Web Token (JWT) authentication in a tRPC backend API using Next.js 14. With the release of Next.js 13 and 14, which introduces server and client components, handling authentication with tRPC to accommodate these changes also requires a bit of modification from the previous method. 4 | 5 | ![Implement Authentication with tRPC API in Next.js 14](https://codevoweb.com/wp-content/uploads/2024/01/Implement-Authentication-with-tRPC-API-in-Next.js-14.webp) 6 | 7 | ### Topics Covered 8 | 9 | - Setup the Next.js 14 Project 10 | - Install the Necessary Dependencies 11 | - Launch PostgreSQL Database with Docker Compose 12 | - Perform Database Migrations with Prisma ORM 13 | - Create the Validation Schemas with Zod 14 | - Create the tRPC Authentication Middleware 15 | - Create the tRPC Procedure Handlers 16 | - Create the tRPC Context and Routes for the Procedures 17 | - Create the tRPC and HTTP Routers 18 | - Conclusion 19 | 20 | Read the entire article here: [https://codevoweb.com/implement-authentication-with-trpc-api-in-nextjs-14/](https://codevoweb.com/implement-authentication-with-trpc-api-in-nextjs-14/) 21 | 22 | ## 2. Implement Authentication with tRPC in Next.js 14 23 | 24 | In this article, you will explore the implementation of user registration, login, and logout functionalities in Next.js 14 using tRPC (Type Remote Procedure Call). tRPC is a library designed to streamline the development of full-stack applications with a primary emphasis on type safety. 25 | 26 | ![Implement Authentication with tRPC in Next.js 14](https://codevoweb.com/wp-content/uploads/2024/01/Implement-Authentication-with-tRPC-in-Next.js-14.webp) 27 | 28 | ### Topics Covered 29 | 30 | - Demo of the tRPC Application 31 | - Setting up the Next.js 14 Project 32 | - Install the Required Dependencies 33 | - Configure Tailwind CSS 34 | - Setup the tRPC Client 35 | - Retrieve Authenticated User 36 | - Create Reusable Components 37 | - Header Component 38 | - Spinner and Button Components 39 | - Form Input Component 40 | - Create the Home Page 41 | - User Registration with tRPC 42 | - Create the Registration Form 43 | - Create the Page Component 44 | - User Login with tRPC 45 | - Create the Login Form 46 | - Create the Page Component 47 | - Display the Authenticated User's Information 48 | - Conclusion 49 | 50 | Read the entire article here: [https://codevoweb.com/implement-authentication-with-trpc-in-nextjs-14/](https://codevoweb.com/implement-authentication-with-trpc-in-nextjs-14/) 51 | 52 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@hookform/resolvers': 9 | specifier: ^3.3.4 10 | version: 3.3.4(react-hook-form@7.49.3) 11 | '@prisma/client': 12 | specifier: ^5.8.1 13 | version: 5.8.1(prisma@5.8.1) 14 | '@tanstack/react-query': 15 | specifier: 4.18.0 16 | version: 4.18.0(react-dom@18.2.0)(react@18.2.0) 17 | '@tanstack/react-query-devtools': 18 | specifier: 4.18.0 19 | version: 4.18.0(@tanstack/react-query@4.18.0)(react-dom@18.2.0)(react@18.2.0) 20 | '@trpc/client': 21 | specifier: ^10.45.0 22 | version: 10.45.0(@trpc/server@10.45.0) 23 | '@trpc/react-query': 24 | specifier: ^10.45.0 25 | version: 10.45.0(@tanstack/react-query@4.18.0)(@trpc/client@10.45.0)(@trpc/server@10.45.0)(react-dom@18.2.0)(react@18.2.0) 26 | '@trpc/server': 27 | specifier: ^10.45.0 28 | version: 10.45.0 29 | bcryptjs: 30 | specifier: ^2.4.3 31 | version: 2.4.3 32 | jsonwebtoken: 33 | specifier: ^9.0.2 34 | version: 9.0.2 35 | next: 36 | specifier: 14.1.0 37 | version: 14.1.0(react-dom@18.2.0)(react@18.2.0) 38 | react: 39 | specifier: ^18 40 | version: 18.2.0 41 | react-dom: 42 | specifier: ^18 43 | version: 18.2.0(react@18.2.0) 44 | react-hook-form: 45 | specifier: ^7.49.3 46 | version: 7.49.3(react@18.2.0) 47 | react-hot-toast: 48 | specifier: ^2.4.1 49 | version: 2.4.1(csstype@3.1.3)(react-dom@18.2.0)(react@18.2.0) 50 | superjson: 51 | specifier: ^2.2.1 52 | version: 2.2.1 53 | tailwind-merge: 54 | specifier: ^2.2.0 55 | version: 2.2.0 56 | zod: 57 | specifier: ^3.22.4 58 | version: 3.22.4 59 | 60 | devDependencies: 61 | '@tanstack/eslint-plugin-query': 62 | specifier: ^5.17.7 63 | version: 5.17.7(eslint@8.56.0)(typescript@5.3.3) 64 | '@types/bcryptjs': 65 | specifier: ^2.4.6 66 | version: 2.4.6 67 | '@types/jsonwebtoken': 68 | specifier: ^9.0.5 69 | version: 9.0.5 70 | '@types/node': 71 | specifier: ^20 72 | version: 20.11.5 73 | '@types/react': 74 | specifier: ^18 75 | version: 18.2.48 76 | '@types/react-dom': 77 | specifier: ^18 78 | version: 18.2.18 79 | autoprefixer: 80 | specifier: ^10.0.1 81 | version: 10.4.17(postcss@8.4.33) 82 | eslint: 83 | specifier: ^8 84 | version: 8.56.0 85 | eslint-config-next: 86 | specifier: 14.1.0 87 | version: 14.1.0(eslint@8.56.0)(typescript@5.3.3) 88 | postcss: 89 | specifier: ^8 90 | version: 8.4.33 91 | prisma: 92 | specifier: ^5.8.1 93 | version: 5.8.1 94 | tailwindcss: 95 | specifier: ^3.3.0 96 | version: 3.4.1 97 | typescript: 98 | specifier: ^5 99 | version: 5.3.3 100 | 101 | packages: 102 | 103 | /@aashutoshrathi/word-wrap@1.2.6: 104 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 105 | engines: {node: '>=0.10.0'} 106 | dev: true 107 | 108 | /@alloc/quick-lru@5.2.0: 109 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 110 | engines: {node: '>=10'} 111 | dev: true 112 | 113 | /@babel/runtime@7.23.8: 114 | resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==} 115 | engines: {node: '>=6.9.0'} 116 | dependencies: 117 | regenerator-runtime: 0.14.1 118 | 119 | /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): 120 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 121 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 122 | peerDependencies: 123 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 124 | dependencies: 125 | eslint: 8.56.0 126 | eslint-visitor-keys: 3.4.3 127 | dev: true 128 | 129 | /@eslint-community/regexpp@4.10.0: 130 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 131 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 132 | dev: true 133 | 134 | /@eslint/eslintrc@2.1.4: 135 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 136 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 137 | dependencies: 138 | ajv: 6.12.6 139 | debug: 4.3.4 140 | espree: 9.6.1 141 | globals: 13.24.0 142 | ignore: 5.3.0 143 | import-fresh: 3.3.0 144 | js-yaml: 4.1.0 145 | minimatch: 3.1.2 146 | strip-json-comments: 3.1.1 147 | transitivePeerDependencies: 148 | - supports-color 149 | dev: true 150 | 151 | /@eslint/js@8.56.0: 152 | resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} 153 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 154 | dev: true 155 | 156 | /@hookform/resolvers@3.3.4(react-hook-form@7.49.3): 157 | resolution: {integrity: sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==} 158 | peerDependencies: 159 | react-hook-form: ^7.0.0 160 | dependencies: 161 | react-hook-form: 7.49.3(react@18.2.0) 162 | dev: false 163 | 164 | /@humanwhocodes/config-array@0.11.14: 165 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} 166 | engines: {node: '>=10.10.0'} 167 | dependencies: 168 | '@humanwhocodes/object-schema': 2.0.2 169 | debug: 4.3.4 170 | minimatch: 3.1.2 171 | transitivePeerDependencies: 172 | - supports-color 173 | dev: true 174 | 175 | /@humanwhocodes/module-importer@1.0.1: 176 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 177 | engines: {node: '>=12.22'} 178 | dev: true 179 | 180 | /@humanwhocodes/object-schema@2.0.2: 181 | resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} 182 | dev: true 183 | 184 | /@isaacs/cliui@8.0.2: 185 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 186 | engines: {node: '>=12'} 187 | dependencies: 188 | string-width: 5.1.2 189 | string-width-cjs: /string-width@4.2.3 190 | strip-ansi: 7.1.0 191 | strip-ansi-cjs: /strip-ansi@6.0.1 192 | wrap-ansi: 8.1.0 193 | wrap-ansi-cjs: /wrap-ansi@7.0.0 194 | dev: true 195 | 196 | /@jridgewell/gen-mapping@0.3.3: 197 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 198 | engines: {node: '>=6.0.0'} 199 | dependencies: 200 | '@jridgewell/set-array': 1.1.2 201 | '@jridgewell/sourcemap-codec': 1.4.15 202 | '@jridgewell/trace-mapping': 0.3.22 203 | dev: true 204 | 205 | /@jridgewell/resolve-uri@3.1.1: 206 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 207 | engines: {node: '>=6.0.0'} 208 | dev: true 209 | 210 | /@jridgewell/set-array@1.1.2: 211 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 212 | engines: {node: '>=6.0.0'} 213 | dev: true 214 | 215 | /@jridgewell/sourcemap-codec@1.4.15: 216 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 217 | dev: true 218 | 219 | /@jridgewell/trace-mapping@0.3.22: 220 | resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} 221 | dependencies: 222 | '@jridgewell/resolve-uri': 3.1.1 223 | '@jridgewell/sourcemap-codec': 1.4.15 224 | dev: true 225 | 226 | /@next/env@14.1.0: 227 | resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} 228 | dev: false 229 | 230 | /@next/eslint-plugin-next@14.1.0: 231 | resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} 232 | dependencies: 233 | glob: 10.3.10 234 | dev: true 235 | 236 | /@next/swc-darwin-arm64@14.1.0: 237 | resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} 238 | engines: {node: '>= 10'} 239 | cpu: [arm64] 240 | os: [darwin] 241 | requiresBuild: true 242 | dev: false 243 | optional: true 244 | 245 | /@next/swc-darwin-x64@14.1.0: 246 | resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} 247 | engines: {node: '>= 10'} 248 | cpu: [x64] 249 | os: [darwin] 250 | requiresBuild: true 251 | dev: false 252 | optional: true 253 | 254 | /@next/swc-linux-arm64-gnu@14.1.0: 255 | resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} 256 | engines: {node: '>= 10'} 257 | cpu: [arm64] 258 | os: [linux] 259 | requiresBuild: true 260 | dev: false 261 | optional: true 262 | 263 | /@next/swc-linux-arm64-musl@14.1.0: 264 | resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} 265 | engines: {node: '>= 10'} 266 | cpu: [arm64] 267 | os: [linux] 268 | requiresBuild: true 269 | dev: false 270 | optional: true 271 | 272 | /@next/swc-linux-x64-gnu@14.1.0: 273 | resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} 274 | engines: {node: '>= 10'} 275 | cpu: [x64] 276 | os: [linux] 277 | requiresBuild: true 278 | dev: false 279 | optional: true 280 | 281 | /@next/swc-linux-x64-musl@14.1.0: 282 | resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} 283 | engines: {node: '>= 10'} 284 | cpu: [x64] 285 | os: [linux] 286 | requiresBuild: true 287 | dev: false 288 | optional: true 289 | 290 | /@next/swc-win32-arm64-msvc@14.1.0: 291 | resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} 292 | engines: {node: '>= 10'} 293 | cpu: [arm64] 294 | os: [win32] 295 | requiresBuild: true 296 | dev: false 297 | optional: true 298 | 299 | /@next/swc-win32-ia32-msvc@14.1.0: 300 | resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} 301 | engines: {node: '>= 10'} 302 | cpu: [ia32] 303 | os: [win32] 304 | requiresBuild: true 305 | dev: false 306 | optional: true 307 | 308 | /@next/swc-win32-x64-msvc@14.1.0: 309 | resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} 310 | engines: {node: '>= 10'} 311 | cpu: [x64] 312 | os: [win32] 313 | requiresBuild: true 314 | dev: false 315 | optional: true 316 | 317 | /@nodelib/fs.scandir@2.1.5: 318 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 319 | engines: {node: '>= 8'} 320 | dependencies: 321 | '@nodelib/fs.stat': 2.0.5 322 | run-parallel: 1.2.0 323 | dev: true 324 | 325 | /@nodelib/fs.stat@2.0.5: 326 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 327 | engines: {node: '>= 8'} 328 | dev: true 329 | 330 | /@nodelib/fs.walk@1.2.8: 331 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 332 | engines: {node: '>= 8'} 333 | dependencies: 334 | '@nodelib/fs.scandir': 2.1.5 335 | fastq: 1.16.0 336 | dev: true 337 | 338 | /@pkgjs/parseargs@0.11.0: 339 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 340 | engines: {node: '>=14'} 341 | requiresBuild: true 342 | dev: true 343 | optional: true 344 | 345 | /@prisma/client@5.8.1(prisma@5.8.1): 346 | resolution: {integrity: sha512-xQtMPfbIwLlbm0VVIVQY2yqQVOxPwRQhvIp7Z3m2900g1bu/zRHKhYZJQWELqmjl6d8YwBy0K2NvMqh47v1ubw==} 347 | engines: {node: '>=16.13'} 348 | requiresBuild: true 349 | peerDependencies: 350 | prisma: '*' 351 | peerDependenciesMeta: 352 | prisma: 353 | optional: true 354 | dependencies: 355 | prisma: 5.8.1 356 | dev: false 357 | 358 | /@prisma/debug@5.8.1: 359 | resolution: {integrity: sha512-tjuw7eA0Us3T42jx9AmAgL58rzwzpFGYc3R7Y4Ip75EBYrKMBA1YihuWMcBC92ILmjlQ/u3p8VxcIE0hr+fZfg==} 360 | 361 | /@prisma/engines-version@5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2: 362 | resolution: {integrity: sha512-f5C3JM3l9yhGr3cr4FMqWloFaSCpNpMi58Om22rjD2DOz3owci2mFdFXMgnAGazFPKrCbbEhcxdsRfspEYRoFQ==} 363 | 364 | /@prisma/engines@5.8.1: 365 | resolution: {integrity: sha512-TJgYLRrZr56uhqcXO4GmP5be+zjCIHtLDK20Cnfg+o9d905hsN065QOL+3Z0zQAy6YD31Ol4u2kzSfRmbJv/uA==} 366 | requiresBuild: true 367 | dependencies: 368 | '@prisma/debug': 5.8.1 369 | '@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 370 | '@prisma/fetch-engine': 5.8.1 371 | '@prisma/get-platform': 5.8.1 372 | 373 | /@prisma/fetch-engine@5.8.1: 374 | resolution: {integrity: sha512-+bgjjoSFa6uYEbAPlklfoVSStOEfcpheOjoBoNsNNSQdSzcwE2nM4Q0prun0+P8/0sCHo18JZ9xqa8gObvgOUw==} 375 | dependencies: 376 | '@prisma/debug': 5.8.1 377 | '@prisma/engines-version': 5.8.1-1.78caf6feeaed953168c64e15a249c3e9a033ebe2 378 | '@prisma/get-platform': 5.8.1 379 | 380 | /@prisma/get-platform@5.8.1: 381 | resolution: {integrity: sha512-wnA+6HTFcY+tkykMokix9GiAkaauPC5W/gg0O5JB0J8tCTNWrqpnQ7AsaGRfkYUbeOIioh6woDjQrGTTRf1Zag==} 382 | dependencies: 383 | '@prisma/debug': 5.8.1 384 | 385 | /@rushstack/eslint-patch@1.7.0: 386 | resolution: {integrity: sha512-Jh4t/593gxs0lJZ/z3NnasKlplXT2f+4y/LZYuaKZW5KAaiVFL/fThhs+17EbUd53jUVJ0QudYCBGbN/psvaqg==} 387 | dev: true 388 | 389 | /@swc/helpers@0.5.2: 390 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} 391 | dependencies: 392 | tslib: 2.6.2 393 | dev: false 394 | 395 | /@tanstack/eslint-plugin-query@5.17.7(eslint@8.56.0)(typescript@5.3.3): 396 | resolution: {integrity: sha512-RpKZXIuplRrUZLqqh+jTM1yJP8/Ck21FpaSB5uGyc9LY8LNwxC8AwgaRAXVOZzKVeQMunnt3HrK83HME+7jnGw==} 397 | peerDependencies: 398 | eslint: ^8.0.0 399 | dependencies: 400 | '@typescript-eslint/utils': 5.62.0(eslint@8.56.0)(typescript@5.3.3) 401 | eslint: 8.56.0 402 | transitivePeerDependencies: 403 | - supports-color 404 | - typescript 405 | dev: true 406 | 407 | /@tanstack/match-sorter-utils@8.1.1: 408 | resolution: {integrity: sha512-IdmEekEYxQsoLOR0XQyw3jD1GujBpRRYaGJYQUw1eOT1eUugWxdc7jomh1VQ1EKHcdwDLpLaCz/8y4KraU4T9A==} 409 | engines: {node: '>=12'} 410 | dependencies: 411 | remove-accents: 0.4.2 412 | dev: false 413 | 414 | /@tanstack/query-core@4.18.0: 415 | resolution: {integrity: sha512-PP4mG8MD08sq64RZCqMfXMYfaj7+Oulwg7xZ/fJoEOdTZNcPIgaOkHajZvUBsNLbi/0ViMvJB4cFkL2Jg2WPbw==} 416 | dev: false 417 | 418 | /@tanstack/react-query-devtools@4.18.0(@tanstack/react-query@4.18.0)(react-dom@18.2.0)(react@18.2.0): 419 | resolution: {integrity: sha512-L51D0AUqLTs7J+W7RypJrUEKXsS0y0eEhXAgO+rhcZH6i8jVrKLhcNZStQSnE+UpZqPm73uxt2e8TJgYfzz0nw==} 420 | peerDependencies: 421 | '@tanstack/react-query': 4.18.0 422 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 423 | react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 424 | dependencies: 425 | '@tanstack/match-sorter-utils': 8.1.1 426 | '@tanstack/react-query': 4.18.0(react-dom@18.2.0)(react@18.2.0) 427 | react: 18.2.0 428 | react-dom: 18.2.0(react@18.2.0) 429 | superjson: 1.13.3 430 | use-sync-external-store: 1.2.0(react@18.2.0) 431 | dev: false 432 | 433 | /@tanstack/react-query@4.18.0(react-dom@18.2.0)(react@18.2.0): 434 | resolution: {integrity: sha512-s1kdbGMdVcfUIllzsHUqVUdktBT5uuIRgnvrqFNLjl9TSOXEoBSDrhjsGjao0INQZv8cMpQlgOh3YH9YtN6cKw==} 435 | peerDependencies: 436 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 437 | react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 438 | react-native: '*' 439 | peerDependenciesMeta: 440 | react-dom: 441 | optional: true 442 | react-native: 443 | optional: true 444 | dependencies: 445 | '@tanstack/query-core': 4.18.0 446 | react: 18.2.0 447 | react-dom: 18.2.0(react@18.2.0) 448 | use-sync-external-store: 1.2.0(react@18.2.0) 449 | dev: false 450 | 451 | /@trpc/client@10.45.0(@trpc/server@10.45.0): 452 | resolution: {integrity: sha512-m091R1qte9rvkvL8N1e/mzrbb8S4gb+Q4ZNJnEGDgd7kic/6a8DFgSciBTiCoSp0YwOTVhyQzSrrA/sZI6PhBg==} 453 | peerDependencies: 454 | '@trpc/server': 10.45.0 455 | dependencies: 456 | '@trpc/server': 10.45.0 457 | dev: false 458 | 459 | /@trpc/react-query@10.45.0(@tanstack/react-query@4.18.0)(@trpc/client@10.45.0)(@trpc/server@10.45.0)(react-dom@18.2.0)(react@18.2.0): 460 | resolution: {integrity: sha512-MMc2pLwoaLZVwvLQyzJv3uEmdG3lORhifhVzR/drtavwDYwt+OEvH0w3s1zC7RaDdFpc6Nj2kkpHmdoU7BlAAw==} 461 | peerDependencies: 462 | '@tanstack/react-query': ^4.18.0 463 | '@trpc/client': 10.45.0 464 | '@trpc/server': 10.45.0 465 | react: '>=16.8.0' 466 | react-dom: '>=16.8.0' 467 | dependencies: 468 | '@tanstack/react-query': 4.18.0(react-dom@18.2.0)(react@18.2.0) 469 | '@trpc/client': 10.45.0(@trpc/server@10.45.0) 470 | '@trpc/server': 10.45.0 471 | react: 18.2.0 472 | react-dom: 18.2.0(react@18.2.0) 473 | dev: false 474 | 475 | /@trpc/server@10.45.0: 476 | resolution: {integrity: sha512-2Fwzv6nqpE0Ie/G7PeS0EVR89zLm+c1Mw7T+RAGtU807j4oaUx0zGkBXTu5u9AI+j+BYNN2GZxJcuDTAecbr1A==} 477 | dev: false 478 | 479 | /@types/bcryptjs@2.4.6: 480 | resolution: {integrity: sha512-9xlo6R2qDs5uixm0bcIqCeMCE6HiQsIyel9KQySStiyqNl2tnj2mP3DX1Nf56MD6KMenNNlBBsy3LJ7gUEQPXQ==} 481 | dev: true 482 | 483 | /@types/json-schema@7.0.15: 484 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 485 | dev: true 486 | 487 | /@types/json5@0.0.29: 488 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 489 | dev: true 490 | 491 | /@types/jsonwebtoken@9.0.5: 492 | resolution: {integrity: sha512-VRLSGzik+Unrup6BsouBeHsf4d1hOEgYWTm/7Nmw1sXoN1+tRly/Gy/po3yeahnP4jfnQWWAhQAqcNfH7ngOkA==} 493 | dependencies: 494 | '@types/node': 20.11.5 495 | dev: true 496 | 497 | /@types/node@20.11.5: 498 | resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==} 499 | dependencies: 500 | undici-types: 5.26.5 501 | dev: true 502 | 503 | /@types/prop-types@15.7.11: 504 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} 505 | dev: true 506 | 507 | /@types/react-dom@18.2.18: 508 | resolution: {integrity: sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==} 509 | dependencies: 510 | '@types/react': 18.2.48 511 | dev: true 512 | 513 | /@types/react@18.2.48: 514 | resolution: {integrity: sha512-qboRCl6Ie70DQQG9hhNREz81jqC1cs9EVNcjQ1AU+jH6NFfSAhVVbrrY/+nSF+Bsk4AOwm9Qa61InvMCyV+H3w==} 515 | dependencies: 516 | '@types/prop-types': 15.7.11 517 | '@types/scheduler': 0.16.8 518 | csstype: 3.1.3 519 | dev: true 520 | 521 | /@types/scheduler@0.16.8: 522 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} 523 | dev: true 524 | 525 | /@types/semver@7.5.6: 526 | resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} 527 | dev: true 528 | 529 | /@typescript-eslint/parser@6.19.0(eslint@8.56.0)(typescript@5.3.3): 530 | resolution: {integrity: sha512-1DyBLG5SH7PYCd00QlroiW60YJ4rWMuUGa/JBV0iZuqi4l4IK3twKPq5ZkEebmGqRjXWVgsUzfd3+nZveewgow==} 531 | engines: {node: ^16.0.0 || >=18.0.0} 532 | peerDependencies: 533 | eslint: ^7.0.0 || ^8.0.0 534 | typescript: '*' 535 | peerDependenciesMeta: 536 | typescript: 537 | optional: true 538 | dependencies: 539 | '@typescript-eslint/scope-manager': 6.19.0 540 | '@typescript-eslint/types': 6.19.0 541 | '@typescript-eslint/typescript-estree': 6.19.0(typescript@5.3.3) 542 | '@typescript-eslint/visitor-keys': 6.19.0 543 | debug: 4.3.4 544 | eslint: 8.56.0 545 | typescript: 5.3.3 546 | transitivePeerDependencies: 547 | - supports-color 548 | dev: true 549 | 550 | /@typescript-eslint/scope-manager@5.62.0: 551 | resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} 552 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 553 | dependencies: 554 | '@typescript-eslint/types': 5.62.0 555 | '@typescript-eslint/visitor-keys': 5.62.0 556 | dev: true 557 | 558 | /@typescript-eslint/scope-manager@6.19.0: 559 | resolution: {integrity: sha512-dO1XMhV2ehBI6QN8Ufi7I10wmUovmLU0Oru3n5LVlM2JuzB4M+dVphCPLkVpKvGij2j/pHBWuJ9piuXx+BhzxQ==} 560 | engines: {node: ^16.0.0 || >=18.0.0} 561 | dependencies: 562 | '@typescript-eslint/types': 6.19.0 563 | '@typescript-eslint/visitor-keys': 6.19.0 564 | dev: true 565 | 566 | /@typescript-eslint/types@5.62.0: 567 | resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} 568 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 569 | dev: true 570 | 571 | /@typescript-eslint/types@6.19.0: 572 | resolution: {integrity: sha512-lFviGV/vYhOy3m8BJ/nAKoAyNhInTdXpftonhWle66XHAtT1ouBlkjL496b5H5hb8dWXHwtypTqgtb/DEa+j5A==} 573 | engines: {node: ^16.0.0 || >=18.0.0} 574 | dev: true 575 | 576 | /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): 577 | resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} 578 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 579 | peerDependencies: 580 | typescript: '*' 581 | peerDependenciesMeta: 582 | typescript: 583 | optional: true 584 | dependencies: 585 | '@typescript-eslint/types': 5.62.0 586 | '@typescript-eslint/visitor-keys': 5.62.0 587 | debug: 4.3.4 588 | globby: 11.1.0 589 | is-glob: 4.0.3 590 | semver: 7.5.4 591 | tsutils: 3.21.0(typescript@5.3.3) 592 | typescript: 5.3.3 593 | transitivePeerDependencies: 594 | - supports-color 595 | dev: true 596 | 597 | /@typescript-eslint/typescript-estree@6.19.0(typescript@5.3.3): 598 | resolution: {integrity: sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==} 599 | engines: {node: ^16.0.0 || >=18.0.0} 600 | peerDependencies: 601 | typescript: '*' 602 | peerDependenciesMeta: 603 | typescript: 604 | optional: true 605 | dependencies: 606 | '@typescript-eslint/types': 6.19.0 607 | '@typescript-eslint/visitor-keys': 6.19.0 608 | debug: 4.3.4 609 | globby: 11.1.0 610 | is-glob: 4.0.3 611 | minimatch: 9.0.3 612 | semver: 7.5.4 613 | ts-api-utils: 1.0.3(typescript@5.3.3) 614 | typescript: 5.3.3 615 | transitivePeerDependencies: 616 | - supports-color 617 | dev: true 618 | 619 | /@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3): 620 | resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} 621 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 622 | peerDependencies: 623 | eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 624 | dependencies: 625 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 626 | '@types/json-schema': 7.0.15 627 | '@types/semver': 7.5.6 628 | '@typescript-eslint/scope-manager': 5.62.0 629 | '@typescript-eslint/types': 5.62.0 630 | '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) 631 | eslint: 8.56.0 632 | eslint-scope: 5.1.1 633 | semver: 7.5.4 634 | transitivePeerDependencies: 635 | - supports-color 636 | - typescript 637 | dev: true 638 | 639 | /@typescript-eslint/visitor-keys@5.62.0: 640 | resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} 641 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 642 | dependencies: 643 | '@typescript-eslint/types': 5.62.0 644 | eslint-visitor-keys: 3.4.3 645 | dev: true 646 | 647 | /@typescript-eslint/visitor-keys@6.19.0: 648 | resolution: {integrity: sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==} 649 | engines: {node: ^16.0.0 || >=18.0.0} 650 | dependencies: 651 | '@typescript-eslint/types': 6.19.0 652 | eslint-visitor-keys: 3.4.3 653 | dev: true 654 | 655 | /@ungap/structured-clone@1.2.0: 656 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 657 | dev: true 658 | 659 | /acorn-jsx@5.3.2(acorn@8.11.3): 660 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 661 | peerDependencies: 662 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 663 | dependencies: 664 | acorn: 8.11.3 665 | dev: true 666 | 667 | /acorn@8.11.3: 668 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 669 | engines: {node: '>=0.4.0'} 670 | hasBin: true 671 | dev: true 672 | 673 | /ajv@6.12.6: 674 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 675 | dependencies: 676 | fast-deep-equal: 3.1.3 677 | fast-json-stable-stringify: 2.1.0 678 | json-schema-traverse: 0.4.1 679 | uri-js: 4.4.1 680 | dev: true 681 | 682 | /ansi-regex@5.0.1: 683 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 684 | engines: {node: '>=8'} 685 | dev: true 686 | 687 | /ansi-regex@6.0.1: 688 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 689 | engines: {node: '>=12'} 690 | dev: true 691 | 692 | /ansi-styles@4.3.0: 693 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 694 | engines: {node: '>=8'} 695 | dependencies: 696 | color-convert: 2.0.1 697 | dev: true 698 | 699 | /ansi-styles@6.2.1: 700 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 701 | engines: {node: '>=12'} 702 | dev: true 703 | 704 | /any-promise@1.3.0: 705 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 706 | dev: true 707 | 708 | /anymatch@3.1.3: 709 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 710 | engines: {node: '>= 8'} 711 | dependencies: 712 | normalize-path: 3.0.0 713 | picomatch: 2.3.1 714 | dev: true 715 | 716 | /arg@5.0.2: 717 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 718 | dev: true 719 | 720 | /argparse@2.0.1: 721 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 722 | dev: true 723 | 724 | /aria-query@5.3.0: 725 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 726 | dependencies: 727 | dequal: 2.0.3 728 | dev: true 729 | 730 | /array-buffer-byte-length@1.0.0: 731 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 732 | dependencies: 733 | call-bind: 1.0.5 734 | is-array-buffer: 3.0.2 735 | dev: true 736 | 737 | /array-includes@3.1.7: 738 | resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} 739 | engines: {node: '>= 0.4'} 740 | dependencies: 741 | call-bind: 1.0.5 742 | define-properties: 1.2.1 743 | es-abstract: 1.22.3 744 | get-intrinsic: 1.2.2 745 | is-string: 1.0.7 746 | dev: true 747 | 748 | /array-union@2.1.0: 749 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 750 | engines: {node: '>=8'} 751 | dev: true 752 | 753 | /array.prototype.findlastindex@1.2.3: 754 | resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} 755 | engines: {node: '>= 0.4'} 756 | dependencies: 757 | call-bind: 1.0.5 758 | define-properties: 1.2.1 759 | es-abstract: 1.22.3 760 | es-shim-unscopables: 1.0.2 761 | get-intrinsic: 1.2.2 762 | dev: true 763 | 764 | /array.prototype.flat@1.3.2: 765 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 766 | engines: {node: '>= 0.4'} 767 | dependencies: 768 | call-bind: 1.0.5 769 | define-properties: 1.2.1 770 | es-abstract: 1.22.3 771 | es-shim-unscopables: 1.0.2 772 | dev: true 773 | 774 | /array.prototype.flatmap@1.3.2: 775 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 776 | engines: {node: '>= 0.4'} 777 | dependencies: 778 | call-bind: 1.0.5 779 | define-properties: 1.2.1 780 | es-abstract: 1.22.3 781 | es-shim-unscopables: 1.0.2 782 | dev: true 783 | 784 | /array.prototype.tosorted@1.1.2: 785 | resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} 786 | dependencies: 787 | call-bind: 1.0.5 788 | define-properties: 1.2.1 789 | es-abstract: 1.22.3 790 | es-shim-unscopables: 1.0.2 791 | get-intrinsic: 1.2.2 792 | dev: true 793 | 794 | /arraybuffer.prototype.slice@1.0.2: 795 | resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} 796 | engines: {node: '>= 0.4'} 797 | dependencies: 798 | array-buffer-byte-length: 1.0.0 799 | call-bind: 1.0.5 800 | define-properties: 1.2.1 801 | es-abstract: 1.22.3 802 | get-intrinsic: 1.2.2 803 | is-array-buffer: 3.0.2 804 | is-shared-array-buffer: 1.0.2 805 | dev: true 806 | 807 | /ast-types-flow@0.0.8: 808 | resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} 809 | dev: true 810 | 811 | /asynciterator.prototype@1.0.0: 812 | resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} 813 | dependencies: 814 | has-symbols: 1.0.3 815 | dev: true 816 | 817 | /autoprefixer@10.4.17(postcss@8.4.33): 818 | resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} 819 | engines: {node: ^10 || ^12 || >=14} 820 | hasBin: true 821 | peerDependencies: 822 | postcss: ^8.1.0 823 | dependencies: 824 | browserslist: 4.22.2 825 | caniuse-lite: 1.0.30001579 826 | fraction.js: 4.3.7 827 | normalize-range: 0.1.2 828 | picocolors: 1.0.0 829 | postcss: 8.4.33 830 | postcss-value-parser: 4.2.0 831 | dev: true 832 | 833 | /available-typed-arrays@1.0.5: 834 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 835 | engines: {node: '>= 0.4'} 836 | dev: true 837 | 838 | /axe-core@4.7.0: 839 | resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} 840 | engines: {node: '>=4'} 841 | dev: true 842 | 843 | /axobject-query@3.2.1: 844 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 845 | dependencies: 846 | dequal: 2.0.3 847 | dev: true 848 | 849 | /balanced-match@1.0.2: 850 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 851 | dev: true 852 | 853 | /bcryptjs@2.4.3: 854 | resolution: {integrity: sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==} 855 | dev: false 856 | 857 | /binary-extensions@2.2.0: 858 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 859 | engines: {node: '>=8'} 860 | dev: true 861 | 862 | /brace-expansion@1.1.11: 863 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 864 | dependencies: 865 | balanced-match: 1.0.2 866 | concat-map: 0.0.1 867 | dev: true 868 | 869 | /brace-expansion@2.0.1: 870 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 871 | dependencies: 872 | balanced-match: 1.0.2 873 | dev: true 874 | 875 | /braces@3.0.2: 876 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 877 | engines: {node: '>=8'} 878 | dependencies: 879 | fill-range: 7.0.1 880 | dev: true 881 | 882 | /browserslist@4.22.2: 883 | resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} 884 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 885 | hasBin: true 886 | dependencies: 887 | caniuse-lite: 1.0.30001579 888 | electron-to-chromium: 1.4.640 889 | node-releases: 2.0.14 890 | update-browserslist-db: 1.0.13(browserslist@4.22.2) 891 | dev: true 892 | 893 | /buffer-equal-constant-time@1.0.1: 894 | resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} 895 | dev: false 896 | 897 | /busboy@1.6.0: 898 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 899 | engines: {node: '>=10.16.0'} 900 | dependencies: 901 | streamsearch: 1.1.0 902 | dev: false 903 | 904 | /call-bind@1.0.5: 905 | resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} 906 | dependencies: 907 | function-bind: 1.1.2 908 | get-intrinsic: 1.2.2 909 | set-function-length: 1.2.0 910 | dev: true 911 | 912 | /callsites@3.1.0: 913 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 914 | engines: {node: '>=6'} 915 | dev: true 916 | 917 | /camelcase-css@2.0.1: 918 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 919 | engines: {node: '>= 6'} 920 | dev: true 921 | 922 | /caniuse-lite@1.0.30001579: 923 | resolution: {integrity: sha512-u5AUVkixruKHJjw/pj9wISlcMpgFWzSrczLZbrqBSxukQixmg0SJ5sZTpvaFvxU0HoQKd4yoyAogyrAz9pzJnA==} 924 | 925 | /chalk@4.1.2: 926 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 927 | engines: {node: '>=10'} 928 | dependencies: 929 | ansi-styles: 4.3.0 930 | supports-color: 7.2.0 931 | dev: true 932 | 933 | /chokidar@3.5.3: 934 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 935 | engines: {node: '>= 8.10.0'} 936 | dependencies: 937 | anymatch: 3.1.3 938 | braces: 3.0.2 939 | glob-parent: 5.1.2 940 | is-binary-path: 2.1.0 941 | is-glob: 4.0.3 942 | normalize-path: 3.0.0 943 | readdirp: 3.6.0 944 | optionalDependencies: 945 | fsevents: 2.3.3 946 | dev: true 947 | 948 | /client-only@0.0.1: 949 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 950 | dev: false 951 | 952 | /color-convert@2.0.1: 953 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 954 | engines: {node: '>=7.0.0'} 955 | dependencies: 956 | color-name: 1.1.4 957 | dev: true 958 | 959 | /color-name@1.1.4: 960 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 961 | dev: true 962 | 963 | /commander@4.1.1: 964 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 965 | engines: {node: '>= 6'} 966 | dev: true 967 | 968 | /concat-map@0.0.1: 969 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 970 | dev: true 971 | 972 | /copy-anything@3.0.5: 973 | resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} 974 | engines: {node: '>=12.13'} 975 | dependencies: 976 | is-what: 4.1.16 977 | dev: false 978 | 979 | /cross-spawn@7.0.3: 980 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 981 | engines: {node: '>= 8'} 982 | dependencies: 983 | path-key: 3.1.1 984 | shebang-command: 2.0.0 985 | which: 2.0.2 986 | dev: true 987 | 988 | /cssesc@3.0.0: 989 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 990 | engines: {node: '>=4'} 991 | hasBin: true 992 | dev: true 993 | 994 | /csstype@3.1.3: 995 | resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 996 | 997 | /damerau-levenshtein@1.0.8: 998 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 999 | dev: true 1000 | 1001 | /debug@3.2.7: 1002 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1003 | peerDependencies: 1004 | supports-color: '*' 1005 | peerDependenciesMeta: 1006 | supports-color: 1007 | optional: true 1008 | dependencies: 1009 | ms: 2.1.3 1010 | dev: true 1011 | 1012 | /debug@4.3.4: 1013 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1014 | engines: {node: '>=6.0'} 1015 | peerDependencies: 1016 | supports-color: '*' 1017 | peerDependenciesMeta: 1018 | supports-color: 1019 | optional: true 1020 | dependencies: 1021 | ms: 2.1.2 1022 | dev: true 1023 | 1024 | /deep-is@0.1.4: 1025 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1026 | dev: true 1027 | 1028 | /define-data-property@1.1.1: 1029 | resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} 1030 | engines: {node: '>= 0.4'} 1031 | dependencies: 1032 | get-intrinsic: 1.2.2 1033 | gopd: 1.0.1 1034 | has-property-descriptors: 1.0.1 1035 | dev: true 1036 | 1037 | /define-properties@1.2.1: 1038 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 1039 | engines: {node: '>= 0.4'} 1040 | dependencies: 1041 | define-data-property: 1.1.1 1042 | has-property-descriptors: 1.0.1 1043 | object-keys: 1.1.1 1044 | dev: true 1045 | 1046 | /dequal@2.0.3: 1047 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1048 | engines: {node: '>=6'} 1049 | dev: true 1050 | 1051 | /didyoumean@1.2.2: 1052 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1053 | dev: true 1054 | 1055 | /dir-glob@3.0.1: 1056 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1057 | engines: {node: '>=8'} 1058 | dependencies: 1059 | path-type: 4.0.0 1060 | dev: true 1061 | 1062 | /dlv@1.1.3: 1063 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1064 | dev: true 1065 | 1066 | /doctrine@2.1.0: 1067 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1068 | engines: {node: '>=0.10.0'} 1069 | dependencies: 1070 | esutils: 2.0.3 1071 | dev: true 1072 | 1073 | /doctrine@3.0.0: 1074 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1075 | engines: {node: '>=6.0.0'} 1076 | dependencies: 1077 | esutils: 2.0.3 1078 | dev: true 1079 | 1080 | /eastasianwidth@0.2.0: 1081 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1082 | dev: true 1083 | 1084 | /ecdsa-sig-formatter@1.0.11: 1085 | resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} 1086 | dependencies: 1087 | safe-buffer: 5.2.1 1088 | dev: false 1089 | 1090 | /electron-to-chromium@1.4.640: 1091 | resolution: {integrity: sha512-z/6oZ/Muqk4BaE7P69bXhUhpJbUM9ZJeka43ZwxsDshKtePns4mhBlh8bU5+yrnOnz3fhG82XLzGUXazOmsWnA==} 1092 | dev: true 1093 | 1094 | /emoji-regex@8.0.0: 1095 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1096 | dev: true 1097 | 1098 | /emoji-regex@9.2.2: 1099 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1100 | dev: true 1101 | 1102 | /enhanced-resolve@5.15.0: 1103 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} 1104 | engines: {node: '>=10.13.0'} 1105 | dependencies: 1106 | graceful-fs: 4.2.11 1107 | tapable: 2.2.1 1108 | dev: true 1109 | 1110 | /es-abstract@1.22.3: 1111 | resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} 1112 | engines: {node: '>= 0.4'} 1113 | dependencies: 1114 | array-buffer-byte-length: 1.0.0 1115 | arraybuffer.prototype.slice: 1.0.2 1116 | available-typed-arrays: 1.0.5 1117 | call-bind: 1.0.5 1118 | es-set-tostringtag: 2.0.2 1119 | es-to-primitive: 1.2.1 1120 | function.prototype.name: 1.1.6 1121 | get-intrinsic: 1.2.2 1122 | get-symbol-description: 1.0.0 1123 | globalthis: 1.0.3 1124 | gopd: 1.0.1 1125 | has-property-descriptors: 1.0.1 1126 | has-proto: 1.0.1 1127 | has-symbols: 1.0.3 1128 | hasown: 2.0.0 1129 | internal-slot: 1.0.6 1130 | is-array-buffer: 3.0.2 1131 | is-callable: 1.2.7 1132 | is-negative-zero: 2.0.2 1133 | is-regex: 1.1.4 1134 | is-shared-array-buffer: 1.0.2 1135 | is-string: 1.0.7 1136 | is-typed-array: 1.1.12 1137 | is-weakref: 1.0.2 1138 | object-inspect: 1.13.1 1139 | object-keys: 1.1.1 1140 | object.assign: 4.1.5 1141 | regexp.prototype.flags: 1.5.1 1142 | safe-array-concat: 1.1.0 1143 | safe-regex-test: 1.0.2 1144 | string.prototype.trim: 1.2.8 1145 | string.prototype.trimend: 1.0.7 1146 | string.prototype.trimstart: 1.0.7 1147 | typed-array-buffer: 1.0.0 1148 | typed-array-byte-length: 1.0.0 1149 | typed-array-byte-offset: 1.0.0 1150 | typed-array-length: 1.0.4 1151 | unbox-primitive: 1.0.2 1152 | which-typed-array: 1.1.13 1153 | dev: true 1154 | 1155 | /es-iterator-helpers@1.0.15: 1156 | resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} 1157 | dependencies: 1158 | asynciterator.prototype: 1.0.0 1159 | call-bind: 1.0.5 1160 | define-properties: 1.2.1 1161 | es-abstract: 1.22.3 1162 | es-set-tostringtag: 2.0.2 1163 | function-bind: 1.1.2 1164 | get-intrinsic: 1.2.2 1165 | globalthis: 1.0.3 1166 | has-property-descriptors: 1.0.1 1167 | has-proto: 1.0.1 1168 | has-symbols: 1.0.3 1169 | internal-slot: 1.0.6 1170 | iterator.prototype: 1.1.2 1171 | safe-array-concat: 1.1.0 1172 | dev: true 1173 | 1174 | /es-set-tostringtag@2.0.2: 1175 | resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} 1176 | engines: {node: '>= 0.4'} 1177 | dependencies: 1178 | get-intrinsic: 1.2.2 1179 | has-tostringtag: 1.0.0 1180 | hasown: 2.0.0 1181 | dev: true 1182 | 1183 | /es-shim-unscopables@1.0.2: 1184 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 1185 | dependencies: 1186 | hasown: 2.0.0 1187 | dev: true 1188 | 1189 | /es-to-primitive@1.2.1: 1190 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1191 | engines: {node: '>= 0.4'} 1192 | dependencies: 1193 | is-callable: 1.2.7 1194 | is-date-object: 1.0.5 1195 | is-symbol: 1.0.4 1196 | dev: true 1197 | 1198 | /escalade@3.1.1: 1199 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1200 | engines: {node: '>=6'} 1201 | dev: true 1202 | 1203 | /escape-string-regexp@4.0.0: 1204 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1205 | engines: {node: '>=10'} 1206 | dev: true 1207 | 1208 | /eslint-config-next@14.1.0(eslint@8.56.0)(typescript@5.3.3): 1209 | resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} 1210 | peerDependencies: 1211 | eslint: ^7.23.0 || ^8.0.0 1212 | typescript: '>=3.3.1' 1213 | peerDependenciesMeta: 1214 | typescript: 1215 | optional: true 1216 | dependencies: 1217 | '@next/eslint-plugin-next': 14.1.0 1218 | '@rushstack/eslint-patch': 1.7.0 1219 | '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3) 1220 | eslint: 8.56.0 1221 | eslint-import-resolver-node: 0.3.9 1222 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) 1223 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1224 | eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) 1225 | eslint-plugin-react: 7.33.2(eslint@8.56.0) 1226 | eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) 1227 | typescript: 5.3.3 1228 | transitivePeerDependencies: 1229 | - eslint-import-resolver-webpack 1230 | - supports-color 1231 | dev: true 1232 | 1233 | /eslint-import-resolver-node@0.3.9: 1234 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1235 | dependencies: 1236 | debug: 3.2.7 1237 | is-core-module: 2.13.1 1238 | resolve: 1.22.8 1239 | transitivePeerDependencies: 1240 | - supports-color 1241 | dev: true 1242 | 1243 | /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): 1244 | resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} 1245 | engines: {node: ^14.18.0 || >=16.0.0} 1246 | peerDependencies: 1247 | eslint: '*' 1248 | eslint-plugin-import: '*' 1249 | dependencies: 1250 | debug: 4.3.4 1251 | enhanced-resolve: 5.15.0 1252 | eslint: 8.56.0 1253 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1254 | eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1255 | fast-glob: 3.3.2 1256 | get-tsconfig: 4.7.2 1257 | is-core-module: 2.13.1 1258 | is-glob: 4.0.3 1259 | transitivePeerDependencies: 1260 | - '@typescript-eslint/parser' 1261 | - eslint-import-resolver-node 1262 | - eslint-import-resolver-webpack 1263 | - supports-color 1264 | dev: true 1265 | 1266 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): 1267 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 1268 | engines: {node: '>=4'} 1269 | peerDependencies: 1270 | '@typescript-eslint/parser': '*' 1271 | eslint: '*' 1272 | eslint-import-resolver-node: '*' 1273 | eslint-import-resolver-typescript: '*' 1274 | eslint-import-resolver-webpack: '*' 1275 | peerDependenciesMeta: 1276 | '@typescript-eslint/parser': 1277 | optional: true 1278 | eslint: 1279 | optional: true 1280 | eslint-import-resolver-node: 1281 | optional: true 1282 | eslint-import-resolver-typescript: 1283 | optional: true 1284 | eslint-import-resolver-webpack: 1285 | optional: true 1286 | dependencies: 1287 | '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3) 1288 | debug: 3.2.7 1289 | eslint: 8.56.0 1290 | eslint-import-resolver-node: 0.3.9 1291 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) 1292 | transitivePeerDependencies: 1293 | - supports-color 1294 | dev: true 1295 | 1296 | /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): 1297 | resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} 1298 | engines: {node: '>=4'} 1299 | peerDependencies: 1300 | '@typescript-eslint/parser': '*' 1301 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1302 | peerDependenciesMeta: 1303 | '@typescript-eslint/parser': 1304 | optional: true 1305 | dependencies: 1306 | '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3) 1307 | array-includes: 3.1.7 1308 | array.prototype.findlastindex: 1.2.3 1309 | array.prototype.flat: 1.3.2 1310 | array.prototype.flatmap: 1.3.2 1311 | debug: 3.2.7 1312 | doctrine: 2.1.0 1313 | eslint: 8.56.0 1314 | eslint-import-resolver-node: 0.3.9 1315 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) 1316 | hasown: 2.0.0 1317 | is-core-module: 2.13.1 1318 | is-glob: 4.0.3 1319 | minimatch: 3.1.2 1320 | object.fromentries: 2.0.7 1321 | object.groupby: 1.0.1 1322 | object.values: 1.1.7 1323 | semver: 6.3.1 1324 | tsconfig-paths: 3.15.0 1325 | transitivePeerDependencies: 1326 | - eslint-import-resolver-typescript 1327 | - eslint-import-resolver-webpack 1328 | - supports-color 1329 | dev: true 1330 | 1331 | /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): 1332 | resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} 1333 | engines: {node: '>=4.0'} 1334 | peerDependencies: 1335 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1336 | dependencies: 1337 | '@babel/runtime': 7.23.8 1338 | aria-query: 5.3.0 1339 | array-includes: 3.1.7 1340 | array.prototype.flatmap: 1.3.2 1341 | ast-types-flow: 0.0.8 1342 | axe-core: 4.7.0 1343 | axobject-query: 3.2.1 1344 | damerau-levenshtein: 1.0.8 1345 | emoji-regex: 9.2.2 1346 | es-iterator-helpers: 1.0.15 1347 | eslint: 8.56.0 1348 | hasown: 2.0.0 1349 | jsx-ast-utils: 3.3.5 1350 | language-tags: 1.0.9 1351 | minimatch: 3.1.2 1352 | object.entries: 1.1.7 1353 | object.fromentries: 2.0.7 1354 | dev: true 1355 | 1356 | /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): 1357 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1358 | engines: {node: '>=10'} 1359 | peerDependencies: 1360 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1361 | dependencies: 1362 | eslint: 8.56.0 1363 | dev: true 1364 | 1365 | /eslint-plugin-react@7.33.2(eslint@8.56.0): 1366 | resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} 1367 | engines: {node: '>=4'} 1368 | peerDependencies: 1369 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1370 | dependencies: 1371 | array-includes: 3.1.7 1372 | array.prototype.flatmap: 1.3.2 1373 | array.prototype.tosorted: 1.1.2 1374 | doctrine: 2.1.0 1375 | es-iterator-helpers: 1.0.15 1376 | eslint: 8.56.0 1377 | estraverse: 5.3.0 1378 | jsx-ast-utils: 3.3.5 1379 | minimatch: 3.1.2 1380 | object.entries: 1.1.7 1381 | object.fromentries: 2.0.7 1382 | object.hasown: 1.1.3 1383 | object.values: 1.1.7 1384 | prop-types: 15.8.1 1385 | resolve: 2.0.0-next.5 1386 | semver: 6.3.1 1387 | string.prototype.matchall: 4.0.10 1388 | dev: true 1389 | 1390 | /eslint-scope@5.1.1: 1391 | resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1392 | engines: {node: '>=8.0.0'} 1393 | dependencies: 1394 | esrecurse: 4.3.0 1395 | estraverse: 4.3.0 1396 | dev: true 1397 | 1398 | /eslint-scope@7.2.2: 1399 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1400 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1401 | dependencies: 1402 | esrecurse: 4.3.0 1403 | estraverse: 5.3.0 1404 | dev: true 1405 | 1406 | /eslint-visitor-keys@3.4.3: 1407 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1408 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1409 | dev: true 1410 | 1411 | /eslint@8.56.0: 1412 | resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} 1413 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1414 | hasBin: true 1415 | dependencies: 1416 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 1417 | '@eslint-community/regexpp': 4.10.0 1418 | '@eslint/eslintrc': 2.1.4 1419 | '@eslint/js': 8.56.0 1420 | '@humanwhocodes/config-array': 0.11.14 1421 | '@humanwhocodes/module-importer': 1.0.1 1422 | '@nodelib/fs.walk': 1.2.8 1423 | '@ungap/structured-clone': 1.2.0 1424 | ajv: 6.12.6 1425 | chalk: 4.1.2 1426 | cross-spawn: 7.0.3 1427 | debug: 4.3.4 1428 | doctrine: 3.0.0 1429 | escape-string-regexp: 4.0.0 1430 | eslint-scope: 7.2.2 1431 | eslint-visitor-keys: 3.4.3 1432 | espree: 9.6.1 1433 | esquery: 1.5.0 1434 | esutils: 2.0.3 1435 | fast-deep-equal: 3.1.3 1436 | file-entry-cache: 6.0.1 1437 | find-up: 5.0.0 1438 | glob-parent: 6.0.2 1439 | globals: 13.24.0 1440 | graphemer: 1.4.0 1441 | ignore: 5.3.0 1442 | imurmurhash: 0.1.4 1443 | is-glob: 4.0.3 1444 | is-path-inside: 3.0.3 1445 | js-yaml: 4.1.0 1446 | json-stable-stringify-without-jsonify: 1.0.1 1447 | levn: 0.4.1 1448 | lodash.merge: 4.6.2 1449 | minimatch: 3.1.2 1450 | natural-compare: 1.4.0 1451 | optionator: 0.9.3 1452 | strip-ansi: 6.0.1 1453 | text-table: 0.2.0 1454 | transitivePeerDependencies: 1455 | - supports-color 1456 | dev: true 1457 | 1458 | /espree@9.6.1: 1459 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1460 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1461 | dependencies: 1462 | acorn: 8.11.3 1463 | acorn-jsx: 5.3.2(acorn@8.11.3) 1464 | eslint-visitor-keys: 3.4.3 1465 | dev: true 1466 | 1467 | /esquery@1.5.0: 1468 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1469 | engines: {node: '>=0.10'} 1470 | dependencies: 1471 | estraverse: 5.3.0 1472 | dev: true 1473 | 1474 | /esrecurse@4.3.0: 1475 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1476 | engines: {node: '>=4.0'} 1477 | dependencies: 1478 | estraverse: 5.3.0 1479 | dev: true 1480 | 1481 | /estraverse@4.3.0: 1482 | resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1483 | engines: {node: '>=4.0'} 1484 | dev: true 1485 | 1486 | /estraverse@5.3.0: 1487 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1488 | engines: {node: '>=4.0'} 1489 | dev: true 1490 | 1491 | /esutils@2.0.3: 1492 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1493 | engines: {node: '>=0.10.0'} 1494 | dev: true 1495 | 1496 | /fast-deep-equal@3.1.3: 1497 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1498 | dev: true 1499 | 1500 | /fast-glob@3.3.2: 1501 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1502 | engines: {node: '>=8.6.0'} 1503 | dependencies: 1504 | '@nodelib/fs.stat': 2.0.5 1505 | '@nodelib/fs.walk': 1.2.8 1506 | glob-parent: 5.1.2 1507 | merge2: 1.4.1 1508 | micromatch: 4.0.5 1509 | dev: true 1510 | 1511 | /fast-json-stable-stringify@2.1.0: 1512 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1513 | dev: true 1514 | 1515 | /fast-levenshtein@2.0.6: 1516 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1517 | dev: true 1518 | 1519 | /fastq@1.16.0: 1520 | resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} 1521 | dependencies: 1522 | reusify: 1.0.4 1523 | dev: true 1524 | 1525 | /file-entry-cache@6.0.1: 1526 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1527 | engines: {node: ^10.12.0 || >=12.0.0} 1528 | dependencies: 1529 | flat-cache: 3.2.0 1530 | dev: true 1531 | 1532 | /fill-range@7.0.1: 1533 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1534 | engines: {node: '>=8'} 1535 | dependencies: 1536 | to-regex-range: 5.0.1 1537 | dev: true 1538 | 1539 | /find-up@5.0.0: 1540 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1541 | engines: {node: '>=10'} 1542 | dependencies: 1543 | locate-path: 6.0.0 1544 | path-exists: 4.0.0 1545 | dev: true 1546 | 1547 | /flat-cache@3.2.0: 1548 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1549 | engines: {node: ^10.12.0 || >=12.0.0} 1550 | dependencies: 1551 | flatted: 3.2.9 1552 | keyv: 4.5.4 1553 | rimraf: 3.0.2 1554 | dev: true 1555 | 1556 | /flatted@3.2.9: 1557 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 1558 | dev: true 1559 | 1560 | /for-each@0.3.3: 1561 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1562 | dependencies: 1563 | is-callable: 1.2.7 1564 | dev: true 1565 | 1566 | /foreground-child@3.1.1: 1567 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 1568 | engines: {node: '>=14'} 1569 | dependencies: 1570 | cross-spawn: 7.0.3 1571 | signal-exit: 4.1.0 1572 | dev: true 1573 | 1574 | /fraction.js@4.3.7: 1575 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1576 | dev: true 1577 | 1578 | /fs.realpath@1.0.0: 1579 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1580 | dev: true 1581 | 1582 | /fsevents@2.3.3: 1583 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1584 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1585 | os: [darwin] 1586 | requiresBuild: true 1587 | dev: true 1588 | optional: true 1589 | 1590 | /function-bind@1.1.2: 1591 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1592 | dev: true 1593 | 1594 | /function.prototype.name@1.1.6: 1595 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 1596 | engines: {node: '>= 0.4'} 1597 | dependencies: 1598 | call-bind: 1.0.5 1599 | define-properties: 1.2.1 1600 | es-abstract: 1.22.3 1601 | functions-have-names: 1.2.3 1602 | dev: true 1603 | 1604 | /functions-have-names@1.2.3: 1605 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1606 | dev: true 1607 | 1608 | /get-intrinsic@1.2.2: 1609 | resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} 1610 | dependencies: 1611 | function-bind: 1.1.2 1612 | has-proto: 1.0.1 1613 | has-symbols: 1.0.3 1614 | hasown: 2.0.0 1615 | dev: true 1616 | 1617 | /get-symbol-description@1.0.0: 1618 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1619 | engines: {node: '>= 0.4'} 1620 | dependencies: 1621 | call-bind: 1.0.5 1622 | get-intrinsic: 1.2.2 1623 | dev: true 1624 | 1625 | /get-tsconfig@4.7.2: 1626 | resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} 1627 | dependencies: 1628 | resolve-pkg-maps: 1.0.0 1629 | dev: true 1630 | 1631 | /glob-parent@5.1.2: 1632 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1633 | engines: {node: '>= 6'} 1634 | dependencies: 1635 | is-glob: 4.0.3 1636 | dev: true 1637 | 1638 | /glob-parent@6.0.2: 1639 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1640 | engines: {node: '>=10.13.0'} 1641 | dependencies: 1642 | is-glob: 4.0.3 1643 | dev: true 1644 | 1645 | /glob@10.3.10: 1646 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 1647 | engines: {node: '>=16 || 14 >=14.17'} 1648 | hasBin: true 1649 | dependencies: 1650 | foreground-child: 3.1.1 1651 | jackspeak: 2.3.6 1652 | minimatch: 9.0.3 1653 | minipass: 7.0.4 1654 | path-scurry: 1.10.1 1655 | dev: true 1656 | 1657 | /glob@7.2.3: 1658 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1659 | dependencies: 1660 | fs.realpath: 1.0.0 1661 | inflight: 1.0.6 1662 | inherits: 2.0.4 1663 | minimatch: 3.1.2 1664 | once: 1.4.0 1665 | path-is-absolute: 1.0.1 1666 | dev: true 1667 | 1668 | /globals@13.24.0: 1669 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1670 | engines: {node: '>=8'} 1671 | dependencies: 1672 | type-fest: 0.20.2 1673 | dev: true 1674 | 1675 | /globalthis@1.0.3: 1676 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1677 | engines: {node: '>= 0.4'} 1678 | dependencies: 1679 | define-properties: 1.2.1 1680 | dev: true 1681 | 1682 | /globby@11.1.0: 1683 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1684 | engines: {node: '>=10'} 1685 | dependencies: 1686 | array-union: 2.1.0 1687 | dir-glob: 3.0.1 1688 | fast-glob: 3.3.2 1689 | ignore: 5.3.0 1690 | merge2: 1.4.1 1691 | slash: 3.0.0 1692 | dev: true 1693 | 1694 | /goober@2.1.14(csstype@3.1.3): 1695 | resolution: {integrity: sha512-4UpC0NdGyAFqLNPnhCT2iHpza2q+RAY3GV85a/mRPdzyPQMsj0KmMMuetdIkzWRbJ+Hgau1EZztq8ImmiMGhsg==} 1696 | peerDependencies: 1697 | csstype: ^3.0.10 1698 | dependencies: 1699 | csstype: 3.1.3 1700 | dev: false 1701 | 1702 | /gopd@1.0.1: 1703 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1704 | dependencies: 1705 | get-intrinsic: 1.2.2 1706 | dev: true 1707 | 1708 | /graceful-fs@4.2.11: 1709 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1710 | 1711 | /graphemer@1.4.0: 1712 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1713 | dev: true 1714 | 1715 | /has-bigints@1.0.2: 1716 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1717 | dev: true 1718 | 1719 | /has-flag@4.0.0: 1720 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1721 | engines: {node: '>=8'} 1722 | dev: true 1723 | 1724 | /has-property-descriptors@1.0.1: 1725 | resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} 1726 | dependencies: 1727 | get-intrinsic: 1.2.2 1728 | dev: true 1729 | 1730 | /has-proto@1.0.1: 1731 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1732 | engines: {node: '>= 0.4'} 1733 | dev: true 1734 | 1735 | /has-symbols@1.0.3: 1736 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1737 | engines: {node: '>= 0.4'} 1738 | dev: true 1739 | 1740 | /has-tostringtag@1.0.0: 1741 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1742 | engines: {node: '>= 0.4'} 1743 | dependencies: 1744 | has-symbols: 1.0.3 1745 | dev: true 1746 | 1747 | /hasown@2.0.0: 1748 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} 1749 | engines: {node: '>= 0.4'} 1750 | dependencies: 1751 | function-bind: 1.1.2 1752 | dev: true 1753 | 1754 | /ignore@5.3.0: 1755 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} 1756 | engines: {node: '>= 4'} 1757 | dev: true 1758 | 1759 | /import-fresh@3.3.0: 1760 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1761 | engines: {node: '>=6'} 1762 | dependencies: 1763 | parent-module: 1.0.1 1764 | resolve-from: 4.0.0 1765 | dev: true 1766 | 1767 | /imurmurhash@0.1.4: 1768 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1769 | engines: {node: '>=0.8.19'} 1770 | dev: true 1771 | 1772 | /inflight@1.0.6: 1773 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1774 | dependencies: 1775 | once: 1.4.0 1776 | wrappy: 1.0.2 1777 | dev: true 1778 | 1779 | /inherits@2.0.4: 1780 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1781 | dev: true 1782 | 1783 | /internal-slot@1.0.6: 1784 | resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} 1785 | engines: {node: '>= 0.4'} 1786 | dependencies: 1787 | get-intrinsic: 1.2.2 1788 | hasown: 2.0.0 1789 | side-channel: 1.0.4 1790 | dev: true 1791 | 1792 | /is-array-buffer@3.0.2: 1793 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 1794 | dependencies: 1795 | call-bind: 1.0.5 1796 | get-intrinsic: 1.2.2 1797 | is-typed-array: 1.1.12 1798 | dev: true 1799 | 1800 | /is-async-function@2.0.0: 1801 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} 1802 | engines: {node: '>= 0.4'} 1803 | dependencies: 1804 | has-tostringtag: 1.0.0 1805 | dev: true 1806 | 1807 | /is-bigint@1.0.4: 1808 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1809 | dependencies: 1810 | has-bigints: 1.0.2 1811 | dev: true 1812 | 1813 | /is-binary-path@2.1.0: 1814 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1815 | engines: {node: '>=8'} 1816 | dependencies: 1817 | binary-extensions: 2.2.0 1818 | dev: true 1819 | 1820 | /is-boolean-object@1.1.2: 1821 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1822 | engines: {node: '>= 0.4'} 1823 | dependencies: 1824 | call-bind: 1.0.5 1825 | has-tostringtag: 1.0.0 1826 | dev: true 1827 | 1828 | /is-callable@1.2.7: 1829 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1830 | engines: {node: '>= 0.4'} 1831 | dev: true 1832 | 1833 | /is-core-module@2.13.1: 1834 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 1835 | dependencies: 1836 | hasown: 2.0.0 1837 | dev: true 1838 | 1839 | /is-date-object@1.0.5: 1840 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 1841 | engines: {node: '>= 0.4'} 1842 | dependencies: 1843 | has-tostringtag: 1.0.0 1844 | dev: true 1845 | 1846 | /is-extglob@2.1.1: 1847 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1848 | engines: {node: '>=0.10.0'} 1849 | dev: true 1850 | 1851 | /is-finalizationregistry@1.0.2: 1852 | resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} 1853 | dependencies: 1854 | call-bind: 1.0.5 1855 | dev: true 1856 | 1857 | /is-fullwidth-code-point@3.0.0: 1858 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1859 | engines: {node: '>=8'} 1860 | dev: true 1861 | 1862 | /is-generator-function@1.0.10: 1863 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 1864 | engines: {node: '>= 0.4'} 1865 | dependencies: 1866 | has-tostringtag: 1.0.0 1867 | dev: true 1868 | 1869 | /is-glob@4.0.3: 1870 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1871 | engines: {node: '>=0.10.0'} 1872 | dependencies: 1873 | is-extglob: 2.1.1 1874 | dev: true 1875 | 1876 | /is-map@2.0.2: 1877 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 1878 | dev: true 1879 | 1880 | /is-negative-zero@2.0.2: 1881 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 1882 | engines: {node: '>= 0.4'} 1883 | dev: true 1884 | 1885 | /is-number-object@1.0.7: 1886 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 1887 | engines: {node: '>= 0.4'} 1888 | dependencies: 1889 | has-tostringtag: 1.0.0 1890 | dev: true 1891 | 1892 | /is-number@7.0.0: 1893 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1894 | engines: {node: '>=0.12.0'} 1895 | dev: true 1896 | 1897 | /is-path-inside@3.0.3: 1898 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1899 | engines: {node: '>=8'} 1900 | dev: true 1901 | 1902 | /is-regex@1.1.4: 1903 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 1904 | engines: {node: '>= 0.4'} 1905 | dependencies: 1906 | call-bind: 1.0.5 1907 | has-tostringtag: 1.0.0 1908 | dev: true 1909 | 1910 | /is-set@2.0.2: 1911 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 1912 | dev: true 1913 | 1914 | /is-shared-array-buffer@1.0.2: 1915 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 1916 | dependencies: 1917 | call-bind: 1.0.5 1918 | dev: true 1919 | 1920 | /is-string@1.0.7: 1921 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 1922 | engines: {node: '>= 0.4'} 1923 | dependencies: 1924 | has-tostringtag: 1.0.0 1925 | dev: true 1926 | 1927 | /is-symbol@1.0.4: 1928 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 1929 | engines: {node: '>= 0.4'} 1930 | dependencies: 1931 | has-symbols: 1.0.3 1932 | dev: true 1933 | 1934 | /is-typed-array@1.1.12: 1935 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} 1936 | engines: {node: '>= 0.4'} 1937 | dependencies: 1938 | which-typed-array: 1.1.13 1939 | dev: true 1940 | 1941 | /is-weakmap@2.0.1: 1942 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 1943 | dev: true 1944 | 1945 | /is-weakref@1.0.2: 1946 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 1947 | dependencies: 1948 | call-bind: 1.0.5 1949 | dev: true 1950 | 1951 | /is-weakset@2.0.2: 1952 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 1953 | dependencies: 1954 | call-bind: 1.0.5 1955 | get-intrinsic: 1.2.2 1956 | dev: true 1957 | 1958 | /is-what@4.1.16: 1959 | resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} 1960 | engines: {node: '>=12.13'} 1961 | dev: false 1962 | 1963 | /isarray@2.0.5: 1964 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1965 | dev: true 1966 | 1967 | /isexe@2.0.0: 1968 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1969 | dev: true 1970 | 1971 | /iterator.prototype@1.1.2: 1972 | resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} 1973 | dependencies: 1974 | define-properties: 1.2.1 1975 | get-intrinsic: 1.2.2 1976 | has-symbols: 1.0.3 1977 | reflect.getprototypeof: 1.0.4 1978 | set-function-name: 2.0.1 1979 | dev: true 1980 | 1981 | /jackspeak@2.3.6: 1982 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 1983 | engines: {node: '>=14'} 1984 | dependencies: 1985 | '@isaacs/cliui': 8.0.2 1986 | optionalDependencies: 1987 | '@pkgjs/parseargs': 0.11.0 1988 | dev: true 1989 | 1990 | /jiti@1.21.0: 1991 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 1992 | hasBin: true 1993 | dev: true 1994 | 1995 | /js-tokens@4.0.0: 1996 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1997 | 1998 | /js-yaml@4.1.0: 1999 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2000 | hasBin: true 2001 | dependencies: 2002 | argparse: 2.0.1 2003 | dev: true 2004 | 2005 | /json-buffer@3.0.1: 2006 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 2007 | dev: true 2008 | 2009 | /json-schema-traverse@0.4.1: 2010 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2011 | dev: true 2012 | 2013 | /json-stable-stringify-without-jsonify@1.0.1: 2014 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2015 | dev: true 2016 | 2017 | /json5@1.0.2: 2018 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 2019 | hasBin: true 2020 | dependencies: 2021 | minimist: 1.2.8 2022 | dev: true 2023 | 2024 | /jsonwebtoken@9.0.2: 2025 | resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==} 2026 | engines: {node: '>=12', npm: '>=6'} 2027 | dependencies: 2028 | jws: 3.2.2 2029 | lodash.includes: 4.3.0 2030 | lodash.isboolean: 3.0.3 2031 | lodash.isinteger: 4.0.4 2032 | lodash.isnumber: 3.0.3 2033 | lodash.isplainobject: 4.0.6 2034 | lodash.isstring: 4.0.1 2035 | lodash.once: 4.1.1 2036 | ms: 2.1.3 2037 | semver: 7.5.4 2038 | dev: false 2039 | 2040 | /jsx-ast-utils@3.3.5: 2041 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 2042 | engines: {node: '>=4.0'} 2043 | dependencies: 2044 | array-includes: 3.1.7 2045 | array.prototype.flat: 1.3.2 2046 | object.assign: 4.1.5 2047 | object.values: 1.1.7 2048 | dev: true 2049 | 2050 | /jwa@1.4.1: 2051 | resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} 2052 | dependencies: 2053 | buffer-equal-constant-time: 1.0.1 2054 | ecdsa-sig-formatter: 1.0.11 2055 | safe-buffer: 5.2.1 2056 | dev: false 2057 | 2058 | /jws@3.2.2: 2059 | resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} 2060 | dependencies: 2061 | jwa: 1.4.1 2062 | safe-buffer: 5.2.1 2063 | dev: false 2064 | 2065 | /keyv@4.5.4: 2066 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 2067 | dependencies: 2068 | json-buffer: 3.0.1 2069 | dev: true 2070 | 2071 | /language-subtag-registry@0.3.22: 2072 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 2073 | dev: true 2074 | 2075 | /language-tags@1.0.9: 2076 | resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} 2077 | engines: {node: '>=0.10'} 2078 | dependencies: 2079 | language-subtag-registry: 0.3.22 2080 | dev: true 2081 | 2082 | /levn@0.4.1: 2083 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2084 | engines: {node: '>= 0.8.0'} 2085 | dependencies: 2086 | prelude-ls: 1.2.1 2087 | type-check: 0.4.0 2088 | dev: true 2089 | 2090 | /lilconfig@2.1.0: 2091 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 2092 | engines: {node: '>=10'} 2093 | dev: true 2094 | 2095 | /lilconfig@3.0.0: 2096 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} 2097 | engines: {node: '>=14'} 2098 | dev: true 2099 | 2100 | /lines-and-columns@1.2.4: 2101 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2102 | dev: true 2103 | 2104 | /locate-path@6.0.0: 2105 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2106 | engines: {node: '>=10'} 2107 | dependencies: 2108 | p-locate: 5.0.0 2109 | dev: true 2110 | 2111 | /lodash.includes@4.3.0: 2112 | resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} 2113 | dev: false 2114 | 2115 | /lodash.isboolean@3.0.3: 2116 | resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} 2117 | dev: false 2118 | 2119 | /lodash.isinteger@4.0.4: 2120 | resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} 2121 | dev: false 2122 | 2123 | /lodash.isnumber@3.0.3: 2124 | resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} 2125 | dev: false 2126 | 2127 | /lodash.isplainobject@4.0.6: 2128 | resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} 2129 | dev: false 2130 | 2131 | /lodash.isstring@4.0.1: 2132 | resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} 2133 | dev: false 2134 | 2135 | /lodash.merge@4.6.2: 2136 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2137 | dev: true 2138 | 2139 | /lodash.once@4.1.1: 2140 | resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} 2141 | dev: false 2142 | 2143 | /loose-envify@1.4.0: 2144 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2145 | hasBin: true 2146 | dependencies: 2147 | js-tokens: 4.0.0 2148 | 2149 | /lru-cache@10.1.0: 2150 | resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} 2151 | engines: {node: 14 || >=16.14} 2152 | dev: true 2153 | 2154 | /lru-cache@6.0.0: 2155 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2156 | engines: {node: '>=10'} 2157 | dependencies: 2158 | yallist: 4.0.0 2159 | 2160 | /merge2@1.4.1: 2161 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2162 | engines: {node: '>= 8'} 2163 | dev: true 2164 | 2165 | /micromatch@4.0.5: 2166 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2167 | engines: {node: '>=8.6'} 2168 | dependencies: 2169 | braces: 3.0.2 2170 | picomatch: 2.3.1 2171 | dev: true 2172 | 2173 | /minimatch@3.1.2: 2174 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2175 | dependencies: 2176 | brace-expansion: 1.1.11 2177 | dev: true 2178 | 2179 | /minimatch@9.0.3: 2180 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 2181 | engines: {node: '>=16 || 14 >=14.17'} 2182 | dependencies: 2183 | brace-expansion: 2.0.1 2184 | dev: true 2185 | 2186 | /minimist@1.2.8: 2187 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2188 | dev: true 2189 | 2190 | /minipass@7.0.4: 2191 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} 2192 | engines: {node: '>=16 || 14 >=14.17'} 2193 | dev: true 2194 | 2195 | /ms@2.1.2: 2196 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2197 | dev: true 2198 | 2199 | /ms@2.1.3: 2200 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2201 | 2202 | /mz@2.7.0: 2203 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2204 | dependencies: 2205 | any-promise: 1.3.0 2206 | object-assign: 4.1.1 2207 | thenify-all: 1.6.0 2208 | dev: true 2209 | 2210 | /nanoid@3.3.7: 2211 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 2212 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2213 | hasBin: true 2214 | 2215 | /natural-compare@1.4.0: 2216 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2217 | dev: true 2218 | 2219 | /next@14.1.0(react-dom@18.2.0)(react@18.2.0): 2220 | resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} 2221 | engines: {node: '>=18.17.0'} 2222 | hasBin: true 2223 | peerDependencies: 2224 | '@opentelemetry/api': ^1.1.0 2225 | react: ^18.2.0 2226 | react-dom: ^18.2.0 2227 | sass: ^1.3.0 2228 | peerDependenciesMeta: 2229 | '@opentelemetry/api': 2230 | optional: true 2231 | sass: 2232 | optional: true 2233 | dependencies: 2234 | '@next/env': 14.1.0 2235 | '@swc/helpers': 0.5.2 2236 | busboy: 1.6.0 2237 | caniuse-lite: 1.0.30001579 2238 | graceful-fs: 4.2.11 2239 | postcss: 8.4.31 2240 | react: 18.2.0 2241 | react-dom: 18.2.0(react@18.2.0) 2242 | styled-jsx: 5.1.1(react@18.2.0) 2243 | optionalDependencies: 2244 | '@next/swc-darwin-arm64': 14.1.0 2245 | '@next/swc-darwin-x64': 14.1.0 2246 | '@next/swc-linux-arm64-gnu': 14.1.0 2247 | '@next/swc-linux-arm64-musl': 14.1.0 2248 | '@next/swc-linux-x64-gnu': 14.1.0 2249 | '@next/swc-linux-x64-musl': 14.1.0 2250 | '@next/swc-win32-arm64-msvc': 14.1.0 2251 | '@next/swc-win32-ia32-msvc': 14.1.0 2252 | '@next/swc-win32-x64-msvc': 14.1.0 2253 | transitivePeerDependencies: 2254 | - '@babel/core' 2255 | - babel-plugin-macros 2256 | dev: false 2257 | 2258 | /node-releases@2.0.14: 2259 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 2260 | dev: true 2261 | 2262 | /normalize-path@3.0.0: 2263 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2264 | engines: {node: '>=0.10.0'} 2265 | dev: true 2266 | 2267 | /normalize-range@0.1.2: 2268 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 2269 | engines: {node: '>=0.10.0'} 2270 | dev: true 2271 | 2272 | /object-assign@4.1.1: 2273 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2274 | engines: {node: '>=0.10.0'} 2275 | dev: true 2276 | 2277 | /object-hash@3.0.0: 2278 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2279 | engines: {node: '>= 6'} 2280 | dev: true 2281 | 2282 | /object-inspect@1.13.1: 2283 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 2284 | dev: true 2285 | 2286 | /object-keys@1.1.1: 2287 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2288 | engines: {node: '>= 0.4'} 2289 | dev: true 2290 | 2291 | /object.assign@4.1.5: 2292 | resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} 2293 | engines: {node: '>= 0.4'} 2294 | dependencies: 2295 | call-bind: 1.0.5 2296 | define-properties: 1.2.1 2297 | has-symbols: 1.0.3 2298 | object-keys: 1.1.1 2299 | dev: true 2300 | 2301 | /object.entries@1.1.7: 2302 | resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} 2303 | engines: {node: '>= 0.4'} 2304 | dependencies: 2305 | call-bind: 1.0.5 2306 | define-properties: 1.2.1 2307 | es-abstract: 1.22.3 2308 | dev: true 2309 | 2310 | /object.fromentries@2.0.7: 2311 | resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} 2312 | engines: {node: '>= 0.4'} 2313 | dependencies: 2314 | call-bind: 1.0.5 2315 | define-properties: 1.2.1 2316 | es-abstract: 1.22.3 2317 | dev: true 2318 | 2319 | /object.groupby@1.0.1: 2320 | resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} 2321 | dependencies: 2322 | call-bind: 1.0.5 2323 | define-properties: 1.2.1 2324 | es-abstract: 1.22.3 2325 | get-intrinsic: 1.2.2 2326 | dev: true 2327 | 2328 | /object.hasown@1.1.3: 2329 | resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} 2330 | dependencies: 2331 | define-properties: 1.2.1 2332 | es-abstract: 1.22.3 2333 | dev: true 2334 | 2335 | /object.values@1.1.7: 2336 | resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} 2337 | engines: {node: '>= 0.4'} 2338 | dependencies: 2339 | call-bind: 1.0.5 2340 | define-properties: 1.2.1 2341 | es-abstract: 1.22.3 2342 | dev: true 2343 | 2344 | /once@1.4.0: 2345 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2346 | dependencies: 2347 | wrappy: 1.0.2 2348 | dev: true 2349 | 2350 | /optionator@0.9.3: 2351 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 2352 | engines: {node: '>= 0.8.0'} 2353 | dependencies: 2354 | '@aashutoshrathi/word-wrap': 1.2.6 2355 | deep-is: 0.1.4 2356 | fast-levenshtein: 2.0.6 2357 | levn: 0.4.1 2358 | prelude-ls: 1.2.1 2359 | type-check: 0.4.0 2360 | dev: true 2361 | 2362 | /p-limit@3.1.0: 2363 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2364 | engines: {node: '>=10'} 2365 | dependencies: 2366 | yocto-queue: 0.1.0 2367 | dev: true 2368 | 2369 | /p-locate@5.0.0: 2370 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2371 | engines: {node: '>=10'} 2372 | dependencies: 2373 | p-limit: 3.1.0 2374 | dev: true 2375 | 2376 | /parent-module@1.0.1: 2377 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2378 | engines: {node: '>=6'} 2379 | dependencies: 2380 | callsites: 3.1.0 2381 | dev: true 2382 | 2383 | /path-exists@4.0.0: 2384 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 2385 | engines: {node: '>=8'} 2386 | dev: true 2387 | 2388 | /path-is-absolute@1.0.1: 2389 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 2390 | engines: {node: '>=0.10.0'} 2391 | dev: true 2392 | 2393 | /path-key@3.1.1: 2394 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 2395 | engines: {node: '>=8'} 2396 | dev: true 2397 | 2398 | /path-parse@1.0.7: 2399 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 2400 | dev: true 2401 | 2402 | /path-scurry@1.10.1: 2403 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 2404 | engines: {node: '>=16 || 14 >=14.17'} 2405 | dependencies: 2406 | lru-cache: 10.1.0 2407 | minipass: 7.0.4 2408 | dev: true 2409 | 2410 | /path-type@4.0.0: 2411 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 2412 | engines: {node: '>=8'} 2413 | dev: true 2414 | 2415 | /picocolors@1.0.0: 2416 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 2417 | 2418 | /picomatch@2.3.1: 2419 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 2420 | engines: {node: '>=8.6'} 2421 | dev: true 2422 | 2423 | /pify@2.3.0: 2424 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 2425 | engines: {node: '>=0.10.0'} 2426 | dev: true 2427 | 2428 | /pirates@4.0.6: 2429 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 2430 | engines: {node: '>= 6'} 2431 | dev: true 2432 | 2433 | /postcss-import@15.1.0(postcss@8.4.33): 2434 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 2435 | engines: {node: '>=14.0.0'} 2436 | peerDependencies: 2437 | postcss: ^8.0.0 2438 | dependencies: 2439 | postcss: 8.4.33 2440 | postcss-value-parser: 4.2.0 2441 | read-cache: 1.0.0 2442 | resolve: 1.22.8 2443 | dev: true 2444 | 2445 | /postcss-js@4.0.1(postcss@8.4.33): 2446 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 2447 | engines: {node: ^12 || ^14 || >= 16} 2448 | peerDependencies: 2449 | postcss: ^8.4.21 2450 | dependencies: 2451 | camelcase-css: 2.0.1 2452 | postcss: 8.4.33 2453 | dev: true 2454 | 2455 | /postcss-load-config@4.0.2(postcss@8.4.33): 2456 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 2457 | engines: {node: '>= 14'} 2458 | peerDependencies: 2459 | postcss: '>=8.0.9' 2460 | ts-node: '>=9.0.0' 2461 | peerDependenciesMeta: 2462 | postcss: 2463 | optional: true 2464 | ts-node: 2465 | optional: true 2466 | dependencies: 2467 | lilconfig: 3.0.0 2468 | postcss: 8.4.33 2469 | yaml: 2.3.4 2470 | dev: true 2471 | 2472 | /postcss-nested@6.0.1(postcss@8.4.33): 2473 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2474 | engines: {node: '>=12.0'} 2475 | peerDependencies: 2476 | postcss: ^8.2.14 2477 | dependencies: 2478 | postcss: 8.4.33 2479 | postcss-selector-parser: 6.0.15 2480 | dev: true 2481 | 2482 | /postcss-selector-parser@6.0.15: 2483 | resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} 2484 | engines: {node: '>=4'} 2485 | dependencies: 2486 | cssesc: 3.0.0 2487 | util-deprecate: 1.0.2 2488 | dev: true 2489 | 2490 | /postcss-value-parser@4.2.0: 2491 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2492 | dev: true 2493 | 2494 | /postcss@8.4.31: 2495 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 2496 | engines: {node: ^10 || ^12 || >=14} 2497 | dependencies: 2498 | nanoid: 3.3.7 2499 | picocolors: 1.0.0 2500 | source-map-js: 1.0.2 2501 | dev: false 2502 | 2503 | /postcss@8.4.33: 2504 | resolution: {integrity: sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==} 2505 | engines: {node: ^10 || ^12 || >=14} 2506 | dependencies: 2507 | nanoid: 3.3.7 2508 | picocolors: 1.0.0 2509 | source-map-js: 1.0.2 2510 | dev: true 2511 | 2512 | /prelude-ls@1.2.1: 2513 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2514 | engines: {node: '>= 0.8.0'} 2515 | dev: true 2516 | 2517 | /prisma@5.8.1: 2518 | resolution: {integrity: sha512-N6CpjzECnUHZ5beeYpDzkt2rYpEdAeqXX2dweu6BoQaeYkNZrC/WJHM+5MO/uidFHTak8QhkPKBWck1o/4MD4A==} 2519 | engines: {node: '>=16.13'} 2520 | hasBin: true 2521 | requiresBuild: true 2522 | dependencies: 2523 | '@prisma/engines': 5.8.1 2524 | 2525 | /prop-types@15.8.1: 2526 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 2527 | dependencies: 2528 | loose-envify: 1.4.0 2529 | object-assign: 4.1.1 2530 | react-is: 16.13.1 2531 | dev: true 2532 | 2533 | /punycode@2.3.1: 2534 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2535 | engines: {node: '>=6'} 2536 | dev: true 2537 | 2538 | /queue-microtask@1.2.3: 2539 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2540 | dev: true 2541 | 2542 | /react-dom@18.2.0(react@18.2.0): 2543 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 2544 | peerDependencies: 2545 | react: ^18.2.0 2546 | dependencies: 2547 | loose-envify: 1.4.0 2548 | react: 18.2.0 2549 | scheduler: 0.23.0 2550 | dev: false 2551 | 2552 | /react-hook-form@7.49.3(react@18.2.0): 2553 | resolution: {integrity: sha512-foD6r3juidAT1cOZzpmD/gOKt7fRsDhXXZ0y28+Al1CHgX+AY1qIN9VSIIItXRq1dN68QrRwl1ORFlwjBaAqeQ==} 2554 | engines: {node: '>=18', pnpm: '8'} 2555 | peerDependencies: 2556 | react: ^16.8.0 || ^17 || ^18 2557 | dependencies: 2558 | react: 18.2.0 2559 | dev: false 2560 | 2561 | /react-hot-toast@2.4.1(csstype@3.1.3)(react-dom@18.2.0)(react@18.2.0): 2562 | resolution: {integrity: sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==} 2563 | engines: {node: '>=10'} 2564 | peerDependencies: 2565 | react: '>=16' 2566 | react-dom: '>=16' 2567 | dependencies: 2568 | goober: 2.1.14(csstype@3.1.3) 2569 | react: 18.2.0 2570 | react-dom: 18.2.0(react@18.2.0) 2571 | transitivePeerDependencies: 2572 | - csstype 2573 | dev: false 2574 | 2575 | /react-is@16.13.1: 2576 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 2577 | dev: true 2578 | 2579 | /react@18.2.0: 2580 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 2581 | engines: {node: '>=0.10.0'} 2582 | dependencies: 2583 | loose-envify: 1.4.0 2584 | dev: false 2585 | 2586 | /read-cache@1.0.0: 2587 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2588 | dependencies: 2589 | pify: 2.3.0 2590 | dev: true 2591 | 2592 | /readdirp@3.6.0: 2593 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2594 | engines: {node: '>=8.10.0'} 2595 | dependencies: 2596 | picomatch: 2.3.1 2597 | dev: true 2598 | 2599 | /reflect.getprototypeof@1.0.4: 2600 | resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} 2601 | engines: {node: '>= 0.4'} 2602 | dependencies: 2603 | call-bind: 1.0.5 2604 | define-properties: 1.2.1 2605 | es-abstract: 1.22.3 2606 | get-intrinsic: 1.2.2 2607 | globalthis: 1.0.3 2608 | which-builtin-type: 1.1.3 2609 | dev: true 2610 | 2611 | /regenerator-runtime@0.14.1: 2612 | resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 2613 | 2614 | /regexp.prototype.flags@1.5.1: 2615 | resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} 2616 | engines: {node: '>= 0.4'} 2617 | dependencies: 2618 | call-bind: 1.0.5 2619 | define-properties: 1.2.1 2620 | set-function-name: 2.0.1 2621 | dev: true 2622 | 2623 | /remove-accents@0.4.2: 2624 | resolution: {integrity: sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==} 2625 | dev: false 2626 | 2627 | /resolve-from@4.0.0: 2628 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2629 | engines: {node: '>=4'} 2630 | dev: true 2631 | 2632 | /resolve-pkg-maps@1.0.0: 2633 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 2634 | dev: true 2635 | 2636 | /resolve@1.22.8: 2637 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 2638 | hasBin: true 2639 | dependencies: 2640 | is-core-module: 2.13.1 2641 | path-parse: 1.0.7 2642 | supports-preserve-symlinks-flag: 1.0.0 2643 | dev: true 2644 | 2645 | /resolve@2.0.0-next.5: 2646 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 2647 | hasBin: true 2648 | dependencies: 2649 | is-core-module: 2.13.1 2650 | path-parse: 1.0.7 2651 | supports-preserve-symlinks-flag: 1.0.0 2652 | dev: true 2653 | 2654 | /reusify@1.0.4: 2655 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2656 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2657 | dev: true 2658 | 2659 | /rimraf@3.0.2: 2660 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2661 | hasBin: true 2662 | dependencies: 2663 | glob: 7.2.3 2664 | dev: true 2665 | 2666 | /run-parallel@1.2.0: 2667 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2668 | dependencies: 2669 | queue-microtask: 1.2.3 2670 | dev: true 2671 | 2672 | /safe-array-concat@1.1.0: 2673 | resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==} 2674 | engines: {node: '>=0.4'} 2675 | dependencies: 2676 | call-bind: 1.0.5 2677 | get-intrinsic: 1.2.2 2678 | has-symbols: 1.0.3 2679 | isarray: 2.0.5 2680 | dev: true 2681 | 2682 | /safe-buffer@5.2.1: 2683 | resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 2684 | dev: false 2685 | 2686 | /safe-regex-test@1.0.2: 2687 | resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==} 2688 | engines: {node: '>= 0.4'} 2689 | dependencies: 2690 | call-bind: 1.0.5 2691 | get-intrinsic: 1.2.2 2692 | is-regex: 1.1.4 2693 | dev: true 2694 | 2695 | /scheduler@0.23.0: 2696 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 2697 | dependencies: 2698 | loose-envify: 1.4.0 2699 | dev: false 2700 | 2701 | /semver@6.3.1: 2702 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 2703 | hasBin: true 2704 | dev: true 2705 | 2706 | /semver@7.5.4: 2707 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 2708 | engines: {node: '>=10'} 2709 | hasBin: true 2710 | dependencies: 2711 | lru-cache: 6.0.0 2712 | 2713 | /set-function-length@1.2.0: 2714 | resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==} 2715 | engines: {node: '>= 0.4'} 2716 | dependencies: 2717 | define-data-property: 1.1.1 2718 | function-bind: 1.1.2 2719 | get-intrinsic: 1.2.2 2720 | gopd: 1.0.1 2721 | has-property-descriptors: 1.0.1 2722 | dev: true 2723 | 2724 | /set-function-name@2.0.1: 2725 | resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} 2726 | engines: {node: '>= 0.4'} 2727 | dependencies: 2728 | define-data-property: 1.1.1 2729 | functions-have-names: 1.2.3 2730 | has-property-descriptors: 1.0.1 2731 | dev: true 2732 | 2733 | /shebang-command@2.0.0: 2734 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2735 | engines: {node: '>=8'} 2736 | dependencies: 2737 | shebang-regex: 3.0.0 2738 | dev: true 2739 | 2740 | /shebang-regex@3.0.0: 2741 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2742 | engines: {node: '>=8'} 2743 | dev: true 2744 | 2745 | /side-channel@1.0.4: 2746 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 2747 | dependencies: 2748 | call-bind: 1.0.5 2749 | get-intrinsic: 1.2.2 2750 | object-inspect: 1.13.1 2751 | dev: true 2752 | 2753 | /signal-exit@4.1.0: 2754 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2755 | engines: {node: '>=14'} 2756 | dev: true 2757 | 2758 | /slash@3.0.0: 2759 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2760 | engines: {node: '>=8'} 2761 | dev: true 2762 | 2763 | /source-map-js@1.0.2: 2764 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2765 | engines: {node: '>=0.10.0'} 2766 | 2767 | /streamsearch@1.1.0: 2768 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 2769 | engines: {node: '>=10.0.0'} 2770 | dev: false 2771 | 2772 | /string-width@4.2.3: 2773 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2774 | engines: {node: '>=8'} 2775 | dependencies: 2776 | emoji-regex: 8.0.0 2777 | is-fullwidth-code-point: 3.0.0 2778 | strip-ansi: 6.0.1 2779 | dev: true 2780 | 2781 | /string-width@5.1.2: 2782 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 2783 | engines: {node: '>=12'} 2784 | dependencies: 2785 | eastasianwidth: 0.2.0 2786 | emoji-regex: 9.2.2 2787 | strip-ansi: 7.1.0 2788 | dev: true 2789 | 2790 | /string.prototype.matchall@4.0.10: 2791 | resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} 2792 | dependencies: 2793 | call-bind: 1.0.5 2794 | define-properties: 1.2.1 2795 | es-abstract: 1.22.3 2796 | get-intrinsic: 1.2.2 2797 | has-symbols: 1.0.3 2798 | internal-slot: 1.0.6 2799 | regexp.prototype.flags: 1.5.1 2800 | set-function-name: 2.0.1 2801 | side-channel: 1.0.4 2802 | dev: true 2803 | 2804 | /string.prototype.trim@1.2.8: 2805 | resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} 2806 | engines: {node: '>= 0.4'} 2807 | dependencies: 2808 | call-bind: 1.0.5 2809 | define-properties: 1.2.1 2810 | es-abstract: 1.22.3 2811 | dev: true 2812 | 2813 | /string.prototype.trimend@1.0.7: 2814 | resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} 2815 | dependencies: 2816 | call-bind: 1.0.5 2817 | define-properties: 1.2.1 2818 | es-abstract: 1.22.3 2819 | dev: true 2820 | 2821 | /string.prototype.trimstart@1.0.7: 2822 | resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} 2823 | dependencies: 2824 | call-bind: 1.0.5 2825 | define-properties: 1.2.1 2826 | es-abstract: 1.22.3 2827 | dev: true 2828 | 2829 | /strip-ansi@6.0.1: 2830 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2831 | engines: {node: '>=8'} 2832 | dependencies: 2833 | ansi-regex: 5.0.1 2834 | dev: true 2835 | 2836 | /strip-ansi@7.1.0: 2837 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2838 | engines: {node: '>=12'} 2839 | dependencies: 2840 | ansi-regex: 6.0.1 2841 | dev: true 2842 | 2843 | /strip-bom@3.0.0: 2844 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 2845 | engines: {node: '>=4'} 2846 | dev: true 2847 | 2848 | /strip-json-comments@3.1.1: 2849 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2850 | engines: {node: '>=8'} 2851 | dev: true 2852 | 2853 | /styled-jsx@5.1.1(react@18.2.0): 2854 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 2855 | engines: {node: '>= 12.0.0'} 2856 | peerDependencies: 2857 | '@babel/core': '*' 2858 | babel-plugin-macros: '*' 2859 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 2860 | peerDependenciesMeta: 2861 | '@babel/core': 2862 | optional: true 2863 | babel-plugin-macros: 2864 | optional: true 2865 | dependencies: 2866 | client-only: 0.0.1 2867 | react: 18.2.0 2868 | dev: false 2869 | 2870 | /sucrase@3.35.0: 2871 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 2872 | engines: {node: '>=16 || 14 >=14.17'} 2873 | hasBin: true 2874 | dependencies: 2875 | '@jridgewell/gen-mapping': 0.3.3 2876 | commander: 4.1.1 2877 | glob: 10.3.10 2878 | lines-and-columns: 1.2.4 2879 | mz: 2.7.0 2880 | pirates: 4.0.6 2881 | ts-interface-checker: 0.1.13 2882 | dev: true 2883 | 2884 | /superjson@1.13.3: 2885 | resolution: {integrity: sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg==} 2886 | engines: {node: '>=10'} 2887 | dependencies: 2888 | copy-anything: 3.0.5 2889 | dev: false 2890 | 2891 | /superjson@2.2.1: 2892 | resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==} 2893 | engines: {node: '>=16'} 2894 | dependencies: 2895 | copy-anything: 3.0.5 2896 | dev: false 2897 | 2898 | /supports-color@7.2.0: 2899 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2900 | engines: {node: '>=8'} 2901 | dependencies: 2902 | has-flag: 4.0.0 2903 | dev: true 2904 | 2905 | /supports-preserve-symlinks-flag@1.0.0: 2906 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2907 | engines: {node: '>= 0.4'} 2908 | dev: true 2909 | 2910 | /tailwind-merge@2.2.0: 2911 | resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} 2912 | dependencies: 2913 | '@babel/runtime': 7.23.8 2914 | dev: false 2915 | 2916 | /tailwindcss@3.4.1: 2917 | resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} 2918 | engines: {node: '>=14.0.0'} 2919 | hasBin: true 2920 | dependencies: 2921 | '@alloc/quick-lru': 5.2.0 2922 | arg: 5.0.2 2923 | chokidar: 3.5.3 2924 | didyoumean: 1.2.2 2925 | dlv: 1.1.3 2926 | fast-glob: 3.3.2 2927 | glob-parent: 6.0.2 2928 | is-glob: 4.0.3 2929 | jiti: 1.21.0 2930 | lilconfig: 2.1.0 2931 | micromatch: 4.0.5 2932 | normalize-path: 3.0.0 2933 | object-hash: 3.0.0 2934 | picocolors: 1.0.0 2935 | postcss: 8.4.33 2936 | postcss-import: 15.1.0(postcss@8.4.33) 2937 | postcss-js: 4.0.1(postcss@8.4.33) 2938 | postcss-load-config: 4.0.2(postcss@8.4.33) 2939 | postcss-nested: 6.0.1(postcss@8.4.33) 2940 | postcss-selector-parser: 6.0.15 2941 | resolve: 1.22.8 2942 | sucrase: 3.35.0 2943 | transitivePeerDependencies: 2944 | - ts-node 2945 | dev: true 2946 | 2947 | /tapable@2.2.1: 2948 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 2949 | engines: {node: '>=6'} 2950 | dev: true 2951 | 2952 | /text-table@0.2.0: 2953 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2954 | dev: true 2955 | 2956 | /thenify-all@1.6.0: 2957 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2958 | engines: {node: '>=0.8'} 2959 | dependencies: 2960 | thenify: 3.3.1 2961 | dev: true 2962 | 2963 | /thenify@3.3.1: 2964 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2965 | dependencies: 2966 | any-promise: 1.3.0 2967 | dev: true 2968 | 2969 | /to-regex-range@5.0.1: 2970 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2971 | engines: {node: '>=8.0'} 2972 | dependencies: 2973 | is-number: 7.0.0 2974 | dev: true 2975 | 2976 | /ts-api-utils@1.0.3(typescript@5.3.3): 2977 | resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} 2978 | engines: {node: '>=16.13.0'} 2979 | peerDependencies: 2980 | typescript: '>=4.2.0' 2981 | dependencies: 2982 | typescript: 5.3.3 2983 | dev: true 2984 | 2985 | /ts-interface-checker@0.1.13: 2986 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2987 | dev: true 2988 | 2989 | /tsconfig-paths@3.15.0: 2990 | resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} 2991 | dependencies: 2992 | '@types/json5': 0.0.29 2993 | json5: 1.0.2 2994 | minimist: 1.2.8 2995 | strip-bom: 3.0.0 2996 | dev: true 2997 | 2998 | /tslib@1.14.1: 2999 | resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} 3000 | dev: true 3001 | 3002 | /tslib@2.6.2: 3003 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 3004 | dev: false 3005 | 3006 | /tsutils@3.21.0(typescript@5.3.3): 3007 | resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} 3008 | engines: {node: '>= 6'} 3009 | peerDependencies: 3010 | typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' 3011 | dependencies: 3012 | tslib: 1.14.1 3013 | typescript: 5.3.3 3014 | dev: true 3015 | 3016 | /type-check@0.4.0: 3017 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3018 | engines: {node: '>= 0.8.0'} 3019 | dependencies: 3020 | prelude-ls: 1.2.1 3021 | dev: true 3022 | 3023 | /type-fest@0.20.2: 3024 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3025 | engines: {node: '>=10'} 3026 | dev: true 3027 | 3028 | /typed-array-buffer@1.0.0: 3029 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} 3030 | engines: {node: '>= 0.4'} 3031 | dependencies: 3032 | call-bind: 1.0.5 3033 | get-intrinsic: 1.2.2 3034 | is-typed-array: 1.1.12 3035 | dev: true 3036 | 3037 | /typed-array-byte-length@1.0.0: 3038 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} 3039 | engines: {node: '>= 0.4'} 3040 | dependencies: 3041 | call-bind: 1.0.5 3042 | for-each: 0.3.3 3043 | has-proto: 1.0.1 3044 | is-typed-array: 1.1.12 3045 | dev: true 3046 | 3047 | /typed-array-byte-offset@1.0.0: 3048 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} 3049 | engines: {node: '>= 0.4'} 3050 | dependencies: 3051 | available-typed-arrays: 1.0.5 3052 | call-bind: 1.0.5 3053 | for-each: 0.3.3 3054 | has-proto: 1.0.1 3055 | is-typed-array: 1.1.12 3056 | dev: true 3057 | 3058 | /typed-array-length@1.0.4: 3059 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 3060 | dependencies: 3061 | call-bind: 1.0.5 3062 | for-each: 0.3.3 3063 | is-typed-array: 1.1.12 3064 | dev: true 3065 | 3066 | /typescript@5.3.3: 3067 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} 3068 | engines: {node: '>=14.17'} 3069 | hasBin: true 3070 | dev: true 3071 | 3072 | /unbox-primitive@1.0.2: 3073 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3074 | dependencies: 3075 | call-bind: 1.0.5 3076 | has-bigints: 1.0.2 3077 | has-symbols: 1.0.3 3078 | which-boxed-primitive: 1.0.2 3079 | dev: true 3080 | 3081 | /undici-types@5.26.5: 3082 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 3083 | dev: true 3084 | 3085 | /update-browserslist-db@1.0.13(browserslist@4.22.2): 3086 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 3087 | hasBin: true 3088 | peerDependencies: 3089 | browserslist: '>= 4.21.0' 3090 | dependencies: 3091 | browserslist: 4.22.2 3092 | escalade: 3.1.1 3093 | picocolors: 1.0.0 3094 | dev: true 3095 | 3096 | /uri-js@4.4.1: 3097 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3098 | dependencies: 3099 | punycode: 2.3.1 3100 | dev: true 3101 | 3102 | /use-sync-external-store@1.2.0(react@18.2.0): 3103 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} 3104 | peerDependencies: 3105 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 3106 | dependencies: 3107 | react: 18.2.0 3108 | dev: false 3109 | 3110 | /util-deprecate@1.0.2: 3111 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3112 | dev: true 3113 | 3114 | /which-boxed-primitive@1.0.2: 3115 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 3116 | dependencies: 3117 | is-bigint: 1.0.4 3118 | is-boolean-object: 1.1.2 3119 | is-number-object: 1.0.7 3120 | is-string: 1.0.7 3121 | is-symbol: 1.0.4 3122 | dev: true 3123 | 3124 | /which-builtin-type@1.1.3: 3125 | resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} 3126 | engines: {node: '>= 0.4'} 3127 | dependencies: 3128 | function.prototype.name: 1.1.6 3129 | has-tostringtag: 1.0.0 3130 | is-async-function: 2.0.0 3131 | is-date-object: 1.0.5 3132 | is-finalizationregistry: 1.0.2 3133 | is-generator-function: 1.0.10 3134 | is-regex: 1.1.4 3135 | is-weakref: 1.0.2 3136 | isarray: 2.0.5 3137 | which-boxed-primitive: 1.0.2 3138 | which-collection: 1.0.1 3139 | which-typed-array: 1.1.13 3140 | dev: true 3141 | 3142 | /which-collection@1.0.1: 3143 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 3144 | dependencies: 3145 | is-map: 2.0.2 3146 | is-set: 2.0.2 3147 | is-weakmap: 2.0.1 3148 | is-weakset: 2.0.2 3149 | dev: true 3150 | 3151 | /which-typed-array@1.1.13: 3152 | resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} 3153 | engines: {node: '>= 0.4'} 3154 | dependencies: 3155 | available-typed-arrays: 1.0.5 3156 | call-bind: 1.0.5 3157 | for-each: 0.3.3 3158 | gopd: 1.0.1 3159 | has-tostringtag: 1.0.0 3160 | dev: true 3161 | 3162 | /which@2.0.2: 3163 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 3164 | engines: {node: '>= 8'} 3165 | hasBin: true 3166 | dependencies: 3167 | isexe: 2.0.0 3168 | dev: true 3169 | 3170 | /wrap-ansi@7.0.0: 3171 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 3172 | engines: {node: '>=10'} 3173 | dependencies: 3174 | ansi-styles: 4.3.0 3175 | string-width: 4.2.3 3176 | strip-ansi: 6.0.1 3177 | dev: true 3178 | 3179 | /wrap-ansi@8.1.0: 3180 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 3181 | engines: {node: '>=12'} 3182 | dependencies: 3183 | ansi-styles: 6.2.1 3184 | string-width: 5.1.2 3185 | strip-ansi: 7.1.0 3186 | dev: true 3187 | 3188 | /wrappy@1.0.2: 3189 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 3190 | dev: true 3191 | 3192 | /yallist@4.0.0: 3193 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 3194 | 3195 | /yaml@2.3.4: 3196 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 3197 | engines: {node: '>= 14'} 3198 | dev: true 3199 | 3200 | /yocto-queue@0.1.0: 3201 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 3202 | engines: {node: '>=10'} 3203 | dev: true 3204 | 3205 | /zod@3.22.4: 3206 | resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} 3207 | dev: false 3208 | --------------------------------------------------------------------------------